thedeemon: (office)
Dmitry Popov ([personal profile] thedeemon) wrote2013-04-18 09:19 pm
Entry tags:

not not (to be or not to be)

В классической логике есть закон исключения третьего, гласящий, что для любого утверждения А справедливо A | -A, т.е. либо оно верно, либо ложно. Однако это очень смелое утверждение, его можно трактовать так, что любое утверждение разрешимо (decidable), что тоже довольно нагло, и вообще герр Гёдель хмурится. Интуиционисткая логика высказываний и с ней конструктивная математика и прочая теория типов ведут себя скромнее, и такого смелого утверждения не делают. Но зато в них доказуемо вот такое:
--(A | -A)
Давайте его докажем, используя тот же Идрис, хотя ровно так же док-во записывается на Хаскеле. Отрицание определено как импликация в абсурд, т.е. отрицание утверждения А это функция, которая из доказательства А производит абсурд (_|_). Тогда наше утверждение записывается так:

((А | (A -> _|_) -> _|_) -> _|_

В теории типов в синтаксисе Идриса оно становится типом функции:

M : ((Either A (A -> _|_)) -> _|_) -> _|_

А конструктивным его доказательством служит тело этой функции. На выходе она должна произвести абсурд, а на входе у нее тоже функция, такого вот типа:

f : (Either A (A -> _|_)) -> _|_

Нам нужно, используя ее одну, произвести _|_. На вход она принимает либо А, либо -А. Взять значение типа А нам неоткуда, значит нужна функция типа A -> _|_. Как ее построить? Сделать лямбду, которая принимает значение А, и скармливает его f, а она уже произведет _|_. Имея такую функцию типа A -> _|_, ее можно опять же скормить f, и тогда получить _|_ "из ничего". Выглядит это так:
  M f = f (Right g) where
    g a = f (Left a)

Вот так, используя только переданную на вход f, скармливая ей использующую ее же функцию, можно произвести _|_ и так получить конструктивное доказательство --(A | -A). Что это значит? Что хоть мы в интуиционизме и конструктивизме и не утверждаем, что для всякого утверждения А верно (A | -A), мы однако со всей уверенностью его активно не_отрицаем. Дословно: считаем, что было бы абсурдным считать его ложным. Так и живем.

[identity profile] valentin budaev (from livejournal.com) 2013-04-26 09:53 pm (UTC)(link)
Я имею ввиду, что чисто логически, если у нас (A | -A) - это ни к каким ужасным вещам не приводит, ну становится логика классической, да, но существования Зевса с Кришной отсюда не получается, да и расходиться это тоже далеко не причина. Тут дело именно в патологии модели (утверждения - типы, выводимость - населенность), или с моделью тоже все хорошо, а под Кришной и абсурдом подразумевается именно тот факт что логика стала классической? Или под абсурдом подразумевается выраженное в модели несоответствие логики интуитивным принципам рассуждений?
Edited 2013-04-26 21:54 (UTC)

[identity profile] thedeemon.livejournal.com 2013-04-27 02:46 am (UTC)(link)
Стоп-стоп-стоп. Речь же не об А | -A, речь про
f : (Either A (A → ⊥)) → ⊥

Отрицание А | -A приводит к абсурду, а не утверждение.

[identity profile] valentin budaev (from livejournal.com) 2013-04-27 04:34 am (UTC)(link)
А, ясно, я просто не понял о чем речь. Спасибо большое :)

[identity profile] sassa-nf.livejournal.com 2013-04-28 09:28 am (UTC)(link)
А вот в классической логике нужно как-то уточнить, что "или" здесь исключающее.

В интуиционизме ничего странного тоже не заявляется. Всего лишь, мы можем доказать ненаселённость опровержения (A | -A) не зависимо от доказательства A и доказательства -A. Это на мой взгляд очень сильное утверждение.

И ещё замечательное свойство интуиционисткого построения доказательства - Either A B всегда "исключающее" - в том смысле, что каждое значение этого типа может содержать только одно из A и B, хотя не отрицается населённость обоих. Поэтому нужно доказать также -(A & -A), то есть, что A и -A не могут быть населены одновременно. Выходит, что -(A & -A) можно доказать с помощью пары -(-A → A) и -(A → -A), а это есть ничто иное как первый и второй закон классики: -A → -A и A → --A.

Таким образом, на пальцах понятно, что Either A (A→⊥) населён, но для consistency мы считаем это недоказанным, пока не будет построено доказательство - т.е. предоставлены конкретные стрелки Left и Right; одна из них будет ⊥→⊥, но чтобы выяснить, какая, нужно доказательство населённости второго.
Edited 2013-04-28 09:33 (UTC)

[identity profile] thedeemon.livejournal.com 2013-04-28 01:13 pm (UTC)(link)
> -(A & -A)

Тут совсем просто:
f : (a, a -> ⊥) -> ⊥
f (a, na) = na a

[identity profile] sassa-nf.livejournal.com 2013-04-28 09:04 pm (UTC)(link)
:) конечно

я хотел перевести разговор на вторые два закона.