2. Поскольку есть три символа, теперь возьмем по порядку три первых простых числа: 2, 3, 5.
3. Тогда код следующий: 29 · З7 · 59 = 2187 000 000 000. (Заметьте, что простые числа — это основания степеней, а коды символов — показатели степеней.)
Для вычисления числа Гёделя конечной последовательности высказываний поступают похожим образом, только на шаге 1 берутся по порядку коды высказываний, образующих последовательность, а на последнем шаге они становятся показателями степеней простых чисел.
Конечно же, как и в предыдущих случаях, должен существовать механический способ, указывающий, как вычислить код последовательности высказываний, и другой, обратный способ, который при заданном коде позволил бы восстановить последовательность соответствующих ему высказываний. Наше правило вычисления кода последовательности как произведения индивидуальных кодов неверно, потому что игнорируется порядок высказываний (при перестановке высказываний местами код конечной последовательности остается тем же самым, но этого не должно происходить, так как при перестановке на самом деле получается другая последовательность). Однако, поскольку речь идет только о гипотетическом примере, мы не будем останавливаться на этом вопросе.
ПОНЯТИЕ ДОКАЗУЕМОСТИ МОЖНО ВЫРАЗИТЬ
Коды, или числа Гёделя, приводят не только к тому, что арифметическое высказывание можно связать с другим высказыванием, но и к возможности говорить о доказуемости этого высказывания. Например, при заданном утверждении Р мы можем записать арифметическое высказывание, в котором говорилось бы, что "Р недоказуемо". Посмотрим, как достичь этой цели.
Как только выбрано множество аксиом, можно без ошибки определить, какие высказывания доказуемы, а какие нет (хотя это может быть и очень сложно на практике). Каждому доказуемому высказыванию, в свою очередь, соответствует число Гёделя. Итак, у нас есть множество чисел, образованное кодами доказуемых высказываний.
Гёдель доказал, что оно характеризуется четко определенным арифметическим свойством. Другими словами, "быть кодом доказуемого высказывания" — свойство, выраженное на языке арифметики (который использует в качестве базовых элементов сложение, умножение и логические операции). Другими словами, свойство "х — это код доказуемого высказывания" может сводиться к числовому свойству, выраженному в терминах сумм, произведений и логических операций. Как обычно говорят, понятие доказуемости можно выразить.
Подчеркнем: именно эта часть аргументации Гёделя зависит в основном от того факта, что программа Гильберта допускает только доказательства, проверяемые алгоритмически. Если бы были разрешены другие методы рассуждения (поговорим о них в следующей главе), то не было бы возможности гарантировать, что свойство "х — это код доказуемого высказывания" может быть выражено в арифметических терминах.
Все принципы математики сводятся к принципам логики.
Уиллард ван Орман Куайн. "С точки зрения логики"
Как Гёдель доказал, что понятие доказуемости можно выразить? Для начала он доказал, что любое числовое свойство, проверяемое алгоритмически (например, "быть простым числом", "быть четным" или "делиться на 9"), всегда можно выразить с помощью сумм, произведений и логических операций.
Итак, то, что высказывание Р доказуемо, означает, что существует доказательство (принимаемое программой Гильберта), в котором Р — это конечное высказывание. В качестве примера мы уже приводили доказательство того, что "4 = 2 + 2" на основе аксиом "S(x + у) = х + S(y)" и "х + 1 = S(x)". Вспомним, что этому доказательству, с учетом последовательности высказываний, соответствует число Гёделя 2414871965597. Вспомним также, что "4 = 2 + 2" соответствует число 67. В переводе на язык кодов доказуемость "4 = 2 + 2" означает, что существует конечная последовательность высказываний (ее код 2414871965597), являющаяся доказательством, в котором конечное высказывание имеет код 67.
"Быть кодом доказательства" — это свойство, проверяемое алгоритмически, поскольку при заданном коде для осуществления проверки компьютер сначала использовал бы программу, восстанавливающую последовательность высказываний, соответствующую этому коду, а затем применил бы к этой последовательности высказываний алгоритм, который определяет, идет ли речь о доказательстве:
Код последовательности → Последовательность высказываний → Это доказательство?
НАЙТИ ИЛИ ПРОВЕРИТЬ
Теория доказательства ставит две проблемы, которые хоть и схожи, но не должны смешиваться. Первая заключается в том, чтобы при данном высказывании Р найти его доказательство (или доказать, что его не существует). Вторая — в том, чтобы определить, верно ли предложенное доказательство. Вторая проблема может быть сложной, но первая намного сложнее. Если методы доказательства подходящие, то вторая проблема может быть решена алгоритмически. Проблема нахождения доказательства, наоборот, неразрешима таким образом.
Британский математик Эндрю Уайлс.
Последняя теорема Ферма
В качестве примера можно рассмотреть последнюю теорему Ферма.
В 1637 году Пьер Ферма записал, что если n > 2, то уравнение хn + уn = zn не имеет решений для натуральных чисел. Ферма уверял, что у него есть доказательство этого факта, но так и не привел его. Проблема нахождения доказательства последней теоремы Ферма стала широко известной и в конце концов была решена Эндрю Уайлсом в 1996 году (он представил первое доказательство в 1995 году, но выяснилось, что в нем содержится ошибка, которая была исправлена почти через год). Определение правильности доказательства Уайлса потребовало несколько дней усилий; но для нахождения доказательства понадобилось более 350 лет.
Каждый шаг может осуществляться алгоритмически.
Следовательно, при заданных х и у свойство "у — это код доказательства, которое заканчивается высказыванием с кодом х" также является свойством, проверяемым алгоритмически, поскольку к предыдущей процедуре надо добавить только проверку того, что последовательность заканчивается высказыванием, соответствующим числу Гёделя х. Поскольку свойство проверяется алгоритмически, пропозициональную функцию "у — это код доказательства, которое заканчивается высказыванием с кодом х" можно выразить в терминах сумм, произведений и логических операций.
Наконец, делаем вывод, что выражение "существует некое у у являющееся кодом доказательства, заканчивающегося высказыванием с кодом х" также можно выразить арифметическими терминами. Фактически в этом утверждении говорится, что существует некое доказательство высказывания с кодом ху другими словами — что высказывание с кодом х доказуемо. Так мы приходим к выводу, что пропозициональную функцию "х — это код доказуемого высказывания" можно выразить арифметическими терминами.
Обычно этот арифметический перевод так сложен, что его явная структура может занять десятки страниц. Поэтому, чтобы понять идею доказательства Гёделя, предположим в качестве гипотетического примера, что свойство, характеризующее коды доказуемых высказываний, — это свойство "быть простым числом, которое может быть записано как сумма или разность трех последовательных простых чисел". Тогда мы допускаем, что "х — это код доказуемого высказывания" равносильно "х — это простое число, которое может быть записано как сумма или разность трех последовательных простых чисел".