Anatoly Vorobey (avva) wrote,
Anatoly Vorobey
avva

Category:

доказательство Крипке

Вот набросок доказательства Крипке первой теоремы о неполноте Гёделя, о котором я писал несколько дней назад. К сожалению, дать полностью законченное доказательство, не предполагающее знание формальной логики, выше моих сил (нет времени и терпения на это). Поэтому это доказательство, скорее всего, будет непонятно тем, кто не знает, что такое: формальная логика, структура, модель, формальная теория, язык арифметики, PA (формальная теория арифметики Пеано), стандартная модель PA, нестандартная модель PA.

Мы начинаем с формальной системы T, насчёт которой известно:
1) Она расширяет арифметику Пеано PA (в частности возможно T=PA)
2) У неё есть рекурсивная аксиоматизация
3) Она Σ2 - корректна. Это значит, что все Σ2 утверждения, которые она доказывает, истинны.


Напомню, опуская некоторые технические подробности, что любое утверждение на языке арифметики можно записать в виде (forall x)(exist y)(forall z)(exist t).....R(x,y,z,t...) , где R(...) — формула, в которой нет нетривиальных кванторов. Эта нормальная форма позволяет приписать каждую формулу к одной из ступеней иерархии Σnn, где n — количество кванторов, и если первый из них — квантор существования, то это Σ, а если всеобщности, то Π. Например, Σ00 — все формулы без (нетривиальных, здесь и далее) кванторов; Σ1 — формулы вида (exist x)R(x,...), где в R нет кванторов, Π2 — формулы вида (forall x)(exist y)R(x,y,....), итд. Каждая ступень в иерархии включает в себя все предыдущие с меньшими номерами, как Σ, так и Π (т.к. можно бесплатно увеличивать n, добавляя ничего не значащие кванторы по неиспользующимся переменным).

Требование Σ2-корректности T гораздо сильнее, чем требование непротиворечивости в каноническом доказательстве теоремы о неполноте Гёделя, но гораздо слабее, чем требование корректности в “простом”, “семантическом” варианте этой теоремы, который часто используют. В доказательстве Крипке T может быть некорректной (т.е. доказывать ложные утверждения), но эта некорректность должна проявляться только на достаточно сложных формулах.


Исходя из этих условий, мы докажем следующее: T неполна. То есть, существует утверждение φ такое, что T не доказывает его и не опровергает (т.е. не доказывает ¬φ).



Update: я сменил значки кванторов (∀x) и (∃x) на выражения типа (forall x) и (exist x), т.к. символы кванторов (перевёрнутые буквы А и E) не у всех видны. Везде, где написано что-то вроде (forall x), следует читать квантор всеобщности "для каждого x", а везде, где написано (exist x), следует читать квантор существования "существует x".


Доказательство будет полу-семантическое. После того, как мы построим φ, легко будет увидеть, что T не может опровергнуть φ, т.к. ¬φ будет ложным Σ2-утверждением, а T не может доказывать такое утверждение по условию. А вот для того, чтобы показать, что T не доказывает φ, мы построим модель T, в которой φ окажется ложным утверждением.

Предположим, у нас есть некоторая конечная или бесконечная возрастающая последовательность натуральных чисел S. Например, S=(7, 15, 25, 80), или любая другая. Пусть нам также дано некоторое утверждение вида ψ=(forall x)(exist y)(forall z)(exist t)R(x,y,z,t), где в R нет кванторов. Определим некую абстрактную игру между двумя игроками A и B. A выбирает любое место в последовательности S (например, первое), и любое число, меньшее, чем член S на выбранном месте (в данном случае 7; скажем, A выбирает 5). Тогда B смотрит на следующий за выбранным A член S и его значение (второй член, 15) и выбирает какое-то число, меньшее его, например, 12. Потом A опять выбирает любой член S, правее тех, что уже было использованы (но необязательно следующий за тем, что использовал B), и какое-то число меньше его; скажем, 20. B опять выбирает какое-то число меньшее следующего члена, скажем, 75. Так они продолжают столько раз, сколько есть кванторов в формуле ψ — в нашем примере, четыре раза, по два выбора на каждого. Всякий раз первый игрок волен выбрать следующее место в последовательности (но не самое последнее, чтобы оставить хоть одно место второму игроку) и число меньше его, а второй игрок место выбрать не волен — оно всегда сразу следует за выбранным первым игроком — но волен выбрать число меньше того, что на его месте. Вот они, в нашем примере, выбрали четыре числа, и вместе у них получилась последовательность (5,12,20,75). Теперь мы смотрим, истинно или ложно утверждение R(5,12,20,75), где вместо переменных x,y,z,t мы подставили выбранные игроками числа. Если истинно — выиграл второй игрок; если ложно — первый. Да, и ещё, если последовательность “закончилась” до того, как закончились кванторы, то выигрывает тоже второй.

Скажем, что “последовательность S удовлетворяет формулу ψ”, если в этой игре у второго игрока есть выигрышная стратегия. Что это значит, по сути дела? Если бы не было никакой последовательности S, а мы бы просто позволяли первому игроку выбирать любое число для первого квантора, потом второму — число для второго, потом опять первому — число для третьего, и так далее, то в такой игре у второго игрока есть выигрышная стратегия тогда и только тогда, когда исходное утверждение истинно. Потому что именно это оно по сути дела и утверждает: (forall x) — для любого выбора x — (exist y) — есть какой-то выбор y — так что теперь для любого выбора z есть какой-то выбор t, так что со всеми этими выборами R(...) оказывается истинным. В нашем варианте, с последовательностью S, мы ограничиваем возможность выбора для игроков, тем не менее сохраняя немалую степень свободы (особенно для первого игрока, который выбирает не только число, но и место в последовательности, задающее ему предел для выбора). Например, если наша формула вот какая: (forall x)(exist y)(x+y=7) , то очевидно, что это утверждение ложно (наши переменные могут принимать только натуральные значения, отрицательных чисел нет), но тем не менее последовательность (3,8) его удовлетворяет.

Предыдущее определение работает для любой формулы ψ с любым количеством кванторов; пример с четырьмя приведен просто для того, чтобы легко было понять суть. Если формула начинается с квантора существования, мы можем всегда добавить фальшивый квантор всеобщности на неиспользуемую переменную, и всё равно подвести её под это определение.

Далее, скажем, что последовательность S длиной n хорошая, если она также удовлетворяет двум дополнительным условиям:
1) первый член S больше n. Т.е. длина последовательности меньше первого члена (и всех остальных поэтому)
2) для каждого члена Si выполняется Si+1 >= Si*Si . То есть, каждый член больше предыдущего в квадрате.

Из сказанного выше должно быть ясно следующее:

(1) Если утверждение ψ истинно, то для любого n существует хорошая последовательность S длиной n, так, что S удовлетворяет ψ .

Вот почему это верно. В качестве первого члена S мы можем выбрать любое число большее n. Далее, дано (используя пример выше), что ψ=(forall x)(exist y)(forall z)(exist t)R(x,y,z,t) истинно, т.е. для любого выбора x действительно есть какой-то выбор y, который делает истинным всё остальное. Возьмём все возможные выборы x, меньшие нашего первого члена, пройдёмся по ним, возьмём все соответствующие им y, возьмём наибольший из них, ещё увеличим его в случае надобности, чтобы был больше квадрата первого члена, и назовём вторым членом S. Третий член S выберем аналогичным образом, чтобы всё “работало”, если вдруг первый игрок начинает с нашего второго члена, а не с первого. Четвёртый член S выберем, используя все возможные комбинации значений первого, второго и третьего кванторов, выбранных из S соглансо правилам игры; истинность ψ гарантирует нам существование подходящего значения для четвётого квантора в каждом из таких случаев, возьмём максимум их всех и квадрата предыдущего. Продолжая так далее, мы можем построить S любой желаемой длины — на каждом шагу нам нужно будет учитывать только конечное количество возможных разбросок значений предыдущих переменных, поэтому мы всегда сможем взять максимум и определить следующий член S.

С другой стороны, в будущем нам пригодится следующее простое утверждение:

(1*) Если бесконечная хорошая последовательность S удовлетворяет ψ, то ψ истинное утверждение.

Это верно просто потому, что бесконечная возрастающая последовательность S не накладывает никаких ограничений на первого игрока. Он может выбрать любое значение для каждого из своих кванторов, нужно только зайти достаточно далеко внутрь S. Если при этом всё же второму игроку всегда удаётся найти значения для своих кванторов, обеспечивающие победу, то ясно, что утверждение попросту верно так, как оно написано: для каждого x можно найти такой y, что для каждого z можно найти такой t, что R(x,y,z,t).

Теперь построим то утверждение, которое окажется независимым от T. Оно выглядит так:

(2) (forall n)(exist S)(S — хорошая последовательность длиной n, удовлетворяющая конъюнкцию первых n аксиом T)

Это не вполне формальная запись, поэтому нужно пояснить, как это собственно будет выглядеть в формальной записи. В PA (а значит и в T, которая расширяет PA) можно формализовать последовательности чисел; иными словами, кодировать последовательность чисел одним числом, так, что из него можно получить обратно длину и составляющие члены последовательности, и все эти свойства доказуемы в PA. Например, часто используют такую простую кодировку: (x,y,z,t,...) кодируется числом 2x3y5z7t... и так далее, используя степени простых чисел для гарантированной однозначности представления. Можно определить формулы типа seq(n), member(x,i,n), length(x,n), такие, что seq(n) верна, только если n кодирует последовательность, member(x,i,n) верна, только если в последовательности n на i-ом месте стоит число x, length(x,n) верна, только если n кодирует последовательность длиной x. Причём все эти свойства будут не только верны как утверждения о числах, но и доказуемы внутри T, т.е. например есть формальное доказательство формулы member(x,i,n) из T, только если действительно n кодирует последовательность, в которой на i-ом месте стоит x, и так далее. Это позволяет говорить о последовательностях и их членах “внутри” T. Далее, условие “хорошести” последовательности тоже, как легго видеть, можно записать формально, используя вышеупомянутое кодирование последовательностей. Наконец, дано, что у T есть рекурсивная аксиоматизация, а из этого следует, что существует Σ1 формула, какая-нибудь T(n,x), которая верна тогда и только тогда, когда x кодирует n-ную аксиому T (здесь мы неявно предполагаем, что ввели нумерацию логических символов, и подходящую кодировку формул из T с помощью чисел). Из формулы, дающей n-ую аксиому, легко перейти к формуле, дающей конъюнкцию первых n аксиом.

Наконец, определить формально понятие “S удовлетворяет ψ”, для S и ψ, заданных их кодами, тоже можно. Например, потому, что это вообще говоря разрешимый вопрос, т.е. можно построить алгоритм, который это проверяет для заданных S и ψ, и всегда верно отвечает — т.к. перебирать ему нужно только конечное число вариантов (конечное, пусть и очень большое, число разных выборов мест в S и чисел, меньших членов S, двумя игроками; именно потому, что вопрос “S удовлетворяет ψ” оказывается разрешимым, в отличие от более сложного вопроса “ψ истинное утверждение”, нам понадобилась вся эта волокита с игрой, S, и понятием удовлетворения). А любой алгоритм можно перевести в Σ1 формулу, которая его воплощает; такая формула — какая-нибудь F(x,y) — будет истинной, только если x кодирует последовательность, удовлетворяющую формулу, которую кодирует y (причём T этот факт сможет доказать).

В результате (опуская технические подробности), мы видим, что (2) действительно можно записать внутри T, причём та часть, которая после кванторов, после приведения к нормальной форме сама по себе будет не более чем Σ1. Её квантор существования объединяется с (exist S) (повторения кванторов одного вида можно “схлопнуть” в один, уровень иерархии меняют только переходы между видами кванторов), и вместе получается, что (2) — утверждение вида Π2. Запишем его в следующем виде:

(3) (forall n)(exist S) P(S,n,An)

где P(S,n,A) — предикат, выражающий следующий смысл: “S хорошая последовательность длиной n, удовлетворяющая формулу A”, а An — конъюнкция первых n аксиом T.

Мы хотим теперь доказать, что для каждого отдельного натурального числа n в T можно доказать

(4) (exist S) P(S,n,An)

(здесь n входит в формулу в качестве “синтаксического” числа, например, в виде термина (1+1+1....+1), где число слагаемых равно n, а каждое из них — константный символ 1. Или можно использовать термин вида SSSSSSSS...SS0, где каждая S — функция, увеличивающая аргумент на 1, а всего их n штук. Или можно заранее договориться, что в нашем языке есть константный символ n* для каждого натурального числа n, и использовать его здесь)

Для всех n сразу это доказать нельзя (как мы покажем в дальнейшем), а для каждого конкретного можно. Для любого n (4) приобретает вид
(exist S) P(S,n,An), где An — конъюнкция первых n аксиом T; это какое-то конкретное утверждение. Это, в свою очередь, будет очевидным, если мы докажем в T, что для любой заданной заранее формулы A, и для любого заданного заранее n

(5) A => (exist S) P(S,n,A)

Выше мы показали, что если ψ истинное утверждение, то (forall n)(exist S) P(S,n,ψ)— тоже верно. Но в (5) A не обязано быть истинным утверждением. С другой стороны, мы показываем сейчас не истинность, а доказуемость внутри T утверждения (exist S) P(S,n,A). Доказывается это просто путём формализации внутри T аргумента, приведенного выше, согласно которому из истинности A для любого n следует истинность (exist S) P(S,n,A). Вся цепочка рассуждений выше, о том, как именно мы можем выбирать члены во время построения последовательности S, формализуются внутри T с помощью сколемовских функций. Например, если A оказывается чем-то вроде
(forall x)(exist y)(forall z)(exist t).....R(x,y,z,t...) , то нам нужно доказать, внутри T, например для n=4, следующее (я несколько упрощаю и опускаю некоторые технические подробности)

( (forall x)(exist y)(forall z)(exist t).....R(x,y,z,t...) ) => [ (exist s1)(exist s2)(exist s3)(exist s4)(s1>4 && s2>s1*s1 && s3>s2*s2 && s4>s3*s3 && (forall x<s1)(exist y<s2)(forall z<s3)(forall t<s4)R(x,y,z,t,...) ]

А это легко формально доказать внутри PA (и следовательно T), например, вводя новые функции F1(x), F2(x,y,z), так, чтобы их результаты были больше всех возможных y и t, гарантированных кванторами в формуле A, стоящей в условии (это примеры так называемых сколемовских функций).

Итак, мы можем доказать внутри T, что из A следует (exist S) P(S,n,A) , для любого n. В частности, если вместо A мы подставим An, конъюнкцию первых n аксиом T, то очевидно, что T доказывает An (это его аксиомы), и мы показали, что T доказывает “An => (exist S)P(S,n,An)”, и следовательно,

(6) T доказывает (exist S)P(S,n,An), для каждого n в отдельности.

Каждая (exist S)P(S,n,An) в отдельности — Σ1 - формула, значит, в частности, и Σ2 - формула тоже. Дано, что T Σ2 корректна; отсюда следует, что каждое утверждение (exist S)P(S,n,An) является истинным утверждением. Следовательно, (forall n)(exist S) P(S,n,An) , т.е. то утверждение, независимость которого от T мы хотим доказать, тоже является истинным утверждением (для каждого отдельного натурального n оно верно, а для истинности большего и не нужно). Поэтому его отрицание: (exist n)(forall S) ¬P(S,n,An) — или, словами, “существует такое n, для которого не найдётся хорошей последовательности S, удовлетворяющей первые n аксиом T” — является ложным Σ2 утверждением. Но это значит, что Σ2-корректная система T не может его доказать. Следовательно, T не может опровергнуть исходное утверждение.

Мы сделали пол-дела — показали, что опровергнуть наше утверждение T не может. Осталось доказать, что T не может его доказать, и для этого мы построим нестандартную модель T, в которой оно будет неверным.

Возьмём любую нестандартную модель T, которая будет также нестадартной моделью PA. Назовём её M. Как выглядит нестандартная модель PA? В ней есть точная копия натуральных чисел N, а “после неё” идёт какое-то количество копий Z (целых чисел). Числа в начальной копии N называют конечными или стандартными, а члены множества копий Z , которые все больше стандартных чисел (согласно интепретации символа < внутри M), называют бесконечными или нестандартными.

Мы доказали выше, что для каждого натурального числа n Т доказывает утверждение (exist S)P(S,n,An) . Значит, эти утверждения верны и в M (M модель T). Но “общее” утверждение (forall n)(exist S) P(S,n,An) уже вовсе необязательно верно в M: ведь теперь квантор всеобщности (forall n) пробегает не только по натуральным числам, но и по всем другим членам M, о которых мы ничего не знаем. Тем не менее, мы можем доказать следующее: существует бесконечное число N, для которого верно утверждение (exist S) P(S,N,AN).

(Небольшое пояснение. Мы почти ничего не знаем о том, что происходит в "бесконечной" части модели M. Для всех членов там, конечно определены операции сложения, умножения, отношения <, и так далее, и тому подобное. Но мы не знаем, как они "устроены". Всё, что мы знаем, это то, что они автоматически оказываются устроены каким-то таким образом, чтобы все утверждения, доказуемые внутри T, оказывались верными в M, в том числе для "бесконечных" членов. Например, что означает P(S,N,AN), когда S и N бесконечные числа? Когда S было конечным числом, оно кодировало какую-то последовательность длиной n; сейчас это какое-то бесконечное число, которое “кодирует” “последовательность” “длиной” N, в том смысле, что внутри M истинными оказываются формулы seq(S), length(N,S), итп. S, будучи бесконечным числом, не является уже произведением вида 2x3y5z7t... Оно является чем-то другим, неизвестно чем; но нас не интересует его природа, коль скоро нам гарантировано, что можно из этого S получить длину с помощью length(N,S), и отдельные члены с помощью member(X, I, S) — а всё это нам гарантировано, потому что в M продолжают выполняться свойства этий формул, доказанные внутри T). То же верно насчёт AN — внутри M An для стандартных членов остаётся тем же, чем и было, а что такое AN для бесконечного N? Бесконечная конъюнкция аксиом? но в нашей логике такого не бывает. Но нас это не волнует; чем бы ни была “формула” AN, главное, что “последовательность” S “длиной” N её “удовлетворяет” или не удовлетворяет (т.е. формула P(S,N,AN) верна с формальной точки зрения в модели M верна или неверна). Когда мы работаем в М, нам хватает формальных свойств, гарантированных формулами, в "бесконечной" части, плюс мы пользуемся тем, что в "конечной" части всё выглядит так же, как и раньше)

Так вот: мы можем доказать, что (exist S) P(S,N,AN) верно хотя бы для одного бесконечного числа N. Почему? Данное утверждение верно для всех стандартных чисел n. Если оно неверно хотя бы для одного члена M (конечного или бесконечного, неважно), то существует минимальное число X, для которого оно неверно (это следует из принципа индукции, являющегося одной из аксиом PA, значит и T, и значит, выполняющегося в M: если какое-то свойство выполняется хотя бы для одного числа, то есть минимальное число, для которого оно выполняется. В данном случае таким свойством является отрицание нашего (exist S) P(S,N,AN) ). Минимальным числом, для которого наше утверждение неверно, может быть только бесконечное число, т.к. для всех конечных оно верно. Но если X бесконечно, то всегда существует X-1 (бесконечные числа представляют собой множество копий Z, целых чисел; только в стандартной части M есть число без предшественника, а именно 0), и из минимальности X следует, что для X-1 утверждение верно.

Итак, есть какое-то N, для которого существует такое S, что P(S,N,AN) верно в M. S — хорошая последовательность длиной N; из определения хорошести следует, что все члены S больше N, следовательно, они тоже бесконечные числа. И само S тоже бесконечное число (из свойств формул для кодировки последовательностей следует, что код последовательности больше любого члена последовательности, и T это доказывает, значит, в M это верно). Мы можем построить последовательность S0, S1, S2, ... состоящую из членов S с конечными индексами (мы просто вынимаем их из S с помощью формулы member(X,i,S), для всех конечных i). Это будет не "вся" S, т.к. длина S бесконечное число N, поэтому в ней есть также бесконечные индексы, но нам этого хватит. Обозначим эту последовательность S*. Все её члены — бесконечные числа.

Для нашего N могли быть разные S, для которых верно P(S,N,AN), необязательно одно. Наложим сейчас ещё одно дополнительное условие: из всех них мы выбрали наименьшее (всегда возможно в M, опять же в связи с индукцией). Так что если какое-то другое число меньше S, то для него P(S,N,AN) не выполняется. Для этого нашего S мы строим последовательность S*, описанную выше. Наконец, определим следующее множество: H = { X | X<Sn для какого-то n }. Иными словами, H — начальный сегмент модели M, включающий все конечные числа и какие-то бесконечные, но только те, которые меньше какого-либо члена S*. Если мы сузим M до множества H, то получим структуру, которую тоже можно обозначить H. Для того, чтобы H была настоящей структурой, нужно, чтобы определения + и * были замкнуты внутри неё, и тут как раз нам помогает свойство "хорошести" S, согласно которому каждый член больше квадрата предыдущего. Если, например, x и y два члена внутри H, то оба они меньше какого-то Sn, и, значит, x*y меньше Sn в квадрате, а это меньше Sn+1, и поэтому x*y тоже входит в H по определению H. Со сложением то же самое (его результат меньше умножения на интересующих нас числах). Значит, H действительно структура, подструктура M. В этой структуре (мы ещё не знаем, является ли она моделью T, в отличие от M!) есть только те числа, которые меньше чего-нибудь в S*.

Нам осталось доказать, что H является моделью T, и что наше утверждение (forall n)(exist S) P(S,n,An) в ней неверно.

T доказывает (это почти тривиально), что если m < n, и P(S,n,An), то также P(S,n,Am). То есть, если S удовлетворяет конъюнкцию n аксиом T, то конъюнкцию части из них она удовлетворяет тем более. Кроме того, T доказывает, что если S* — начальный сегмент последовательности S, и S удовлетворяет какую-то формулу, то S* тоже её удовлетворяет (оставляя начальный сегмент, мы только усложняем игру для первого игрока, стратегия второго игрока остаётся в силе). Раз T доказывает оба эти факта, то они верны и в M, в том числе для бесконечных чисел. Значит, из данного нам P(S,N,AN) мы получаем P(S*,N,An) для любого конечного n (все конечные числа меньше бесконечных, а S* — начальный сегмент S, состоящий только из конечных индексов). Иными словами, бесконечная последовательность S* внутри H удовлетворяет An для любого n. Вспомним теперь (1*) в начале доказательства (там в стандартной модели из того факта, что бесконечная последовательность удовлетворяет формулу, следовала истинность формулы). То же самое доказательство проходит здесь внутри H, потому что S* кофинальна в H (то есть для любого члена H есть какой-то член S* больше его, по определению H). То есть, An обязательно истинно в H, потому что S* не накладывает никаких ограничений на первого игрока: он может выбрать любые члены H для своих кванторов, достаточно продвинувшись внутри S*. Раз все формулы вида An верны в H, значит, все аксиомы T верны в H, и H — модель T.

С другой стороны, утверждение (forall n)(exist S) P(S,n,An) неверно в H для n=N, нашей длины S (заметим, что N находится внутри модели H, потому что N меньше членов S согласно определению хорошей последовательности). Почему? Дело в том, что число S, которое внутри модели N выполняло для нас P(S,n,An), не входит в H. Ведь это число, код последовательности, больше каждого из чисел внутри S, а значит и каждого из чисел внутри S*, а в H вошли только те числа, которые меньше чего-нибудь в S*. Число S оказалось слишком большим и осталось снаружи. Но может быть, внутри H есть какое-то другое S', которое выполняет P(S',N,AN)? Нет. Дело в том, что P(S',N,AN) — Σ1-утверждение, а Σ1-утверждение “истинны вверх”: если они верны в под-структуре, то верны и в самой структуре (действительно, ведь они имеют вид (exist x)R(x), где в R нет кванторов; если такое утверждение верно в подструктуре, т.е. имеется какой-то элемент x, для которого выполняется R(x), то и в начальной структуре для того же самого элемента всё то же самое будет выполняться. Для того, чтобы утверждение, верное в подструктуре, оказалось неверным в начальной структуре, нужен квантор всеобщности — вот тогда может оказаться, что (forall x) верно в каком-нибудь маленьком мирке, но для некоторых членов большого мира выходит неверным). Поэтому если бы было такое S', то и в структуре M было бы верно P(S',N,AN), причём S'<S (т.к. S' находится в H, а S не вошло туда и больше всех членов H). Но это противоречит минимальности S, которое мы выбрали так, чтобы оно было наименьшим в M, для которого верно P(S,N,AN). Значит, никакая “последовательность” внутри H не выполняет формулу P(S,N,AN), и, следовательно, утверждение (forall n)(exist S) P(S,n,An) неверно в H, являющейся моделью T, и значит, это утверждение невозможно доказать в T. Мы уже доказали раньше, что и опровергнуть его в T тоже невозможно, значит, T неполная теория. Q.E.D.
Tags: logic
Subscribe
  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 54 comments
Previous
← Ctrl ← Alt
Next
Ctrl → Alt →
Previous
← Ctrl ← Alt
Next
Ctrl → Alt →