7.9. *
––
Математическое доказательство существования свободной человеческой воли *
––
Изложить здесь доказательство теоремы Геделя о неполноте совершенно невозможно, оно слишком сложное. Вместо этого я приведу популярное доказательство того, что не любая истина в нашем мире доказуема.
Гедель доказал свою теорему о неполноте в 1931 году. В середине 30-х годов Тьюринг доказал эту теорему с помощью его "теории машин Тьюринга". Приводимое здесь доказательство основано на доказательстве Геделя-Тьюринга.
Как и доказательство теоремы Геделя о неполноте, популярное доказательство использует "диагональный метод", с помощью которого Кантор доказал несчетность множества точек отрезка прямой. Поэтому для начала полезно ознакомиться с доказательством теоремы Кантора: "Множество точек отрезка прямой невозможно пронумеровать натуральными числами."
Доказательство. Возьмем для примера отрезок оси X, соответствующий интервалу действительных чисел
0 <= x < 1
Как известно, каждое число в этом интервале изображается бесконечной десятичной дробью с нолем целых. При этом дроби, заканчивающиеся бесконечной последовательностью числа 9, не рассматриваются, т.к. если в такой дроби заменить хвост из девяток нолями и прибавить 1 к разряду, непосредственно предшествующему хвосту из девяток, то величина дроби не изменится.
И наоборот, каждой бесконечной десятичной дроби с нолем целых (с только что указанным ограничением) соответствует точка интервала
0 <= x < 1
Теперь допустим, что удалось пронумеровать все эти бесконечные десятичные дроби с нолем целых натуральными числами. Изобразим эти дроби (без ноля целых) в виде матрицы. Дробь, пронумерованная натуральным числом 1, будет 1-й строкой этой матрицы, дробь, пронумерованная натуральным числом 2, будет 2-й строкой, и т.д.
_______A11__A12__A13__A14__A15__A16__A17________________
_______A21__A22__A23__A24__A25__A26__A27________________
_______A31__A32__A33__A34__A35__A36__A37________________
_______A41__A42__A43__A44__A45__A46__A47________________
_______A51__A52__A53__A54__A55__A56__A57________________
_______________________________________________________
_______________________________________________________
_______________________________________________________
Все Aik – это цифры от 0 до 9.
i – это номер строки матрицы, т.е. то натуральное число, которым пронумерована эта бесконечная десятичная дробь.
k – это порядковый номер цифры в десятичной дроби. 1 соответствует первому знаку после запятой, 2 – второму знаку после запятой, и т.д. до бесконечности.
Теперь составим бесконечную десятичную дробь с нолем целых и десятичными знаками, находящимися на диагонали матрицы:
_______A11__A22__A33__A44__A55__A66_A77________________
и преобразуем ее в дробь Bm:
_______Bm1__Bm2__Bm3__Bm4__Bm5__Bm6__Bm7____________
из цифр, вычисленных по формулам:
______________________Bm1=9-A11
______________________Bm2=9-A22
______________________Bm3=9-A33
______________________Bm4=9-A44
_______________________________
и т.д. Т.е. заменим в диагональной дроби все цифры на их дополнение до 9. Получится новая бесконечная дробь с нолем целых. Попробуем найти ее в матрице, т.к по предположению в этой матрице должны быть все бесконечные десятичные дроби с нолем целых.
Строка Bm не совпадает с первой строкой матрицы, т.к. отличается от нее в первом знаке после запятой:
Bm1=9-A11, значит Bm1 не равно A11
Строка Bm не совпадает со второй строкой матрицы, т.к. отличается от нее во втором знаке после запятой:
Bm2=9-A22, значит Bm2 не равно A22
Строка Bm не совпадает с третьей строкой матрицы, т.к. отличается от нее в третьем знаке после запятой:
Bm3=9-A33, значит Bm3 не равно A33
и т.д. до бесконечности. Значит, строки Bm нет в матрице. Значит, предположение, что ВСЕ бесконечные десятичные дроби были пронумерованы натуральными числами и помещены в матрицу, оказывается неверным.
––
Теперь можно приступать к доказательству утверждения, близкого к теореме Геделя о неполноте:
"Существуют недоказуемые истины"
Сначала надо дать некоторые определения.
––
Я предполагаю известным, что такое "компьютерная программа", и буду называть ее просто "программа". Замечу только, что программу можно считать чисто логико-математической конструкцией лишь пока она находится в голове программиста или записана на бумаге. Но выполнение программы компьютером – это уже чисто физический процесс.
––
"Программа с входным параметром" – в данном случае это программа, которая в начале работы запрашивает у человека-оператора только одно целое число большее или равное единице, ждет ответа оператора, и после получения целого числа от оператора (в данном случае это число называется "значение параметра") молча выполняет заложенные в ней команды над числами до самого конца. При этом: