Чтобы доказать, что почти никакие функции не являются вычислимыми, Алан Тьюринг использовал хитроумный вариант диагонального метода Кантора, рассмотренный в главе 2. В ней мы рассказали, что не существует способа упорядочить список последовательностей, состоящих из нулей и единиц. Когда мы предполагали, что можем расположить одну последовательность после другой, изменяя значения элементов по диагонали, нам удалось сформировать последовательность из нулей и единиц, которая не совпадала ни с одной последовательностью в списке. Аналогичным образом можно показать, что множество функций не является счетным.
Мы указали, что функция — это отображение, сопоставляющее 0 и f(0), 1 и f(1), 2 и f(2) и т. д. до бесконечности. Следовательно, вся информация f содержится в последовательности чисел f(0), f(1), f(2), f(3)… Для простоты будем рассматривать только функции, которые принимают значения 0 и 1, например функцию f, значение которой равно 0 для четных чисел и 1 — для нечетных. В этом случае вся информация f содержится в последовательности 0101010101…, так как если мы хотим найти отображение
Каждая машина Тьюринга вычисляет значение единственной функции, поэтому утверждать, что все функции являются вычислимыми, можно, лишь доказав, что существует по меньшей мере столько же машин, сколько и функций, значения которых мы хотим вычислить. Однако Тьюринг установил, что бесконечное множество его машин намного меньше. Чтобы показать, что множество функций не является счетным, сначала следовало записать их в виде последовательностей из нулей и единиц. Мы можем записать в виде символов любую машину Тьюринга, поскольку она представляет собой конечную последовательность инструкций, и каждую из них можно записать несколькими символами. Как вы уже увидели, (#1,1,
Больший интерес для нас будет иметь процесс «гёделизации», рассмотренный в главе 4. Он заключается в присвоении огромных натуральных чисел каждой формуле логики первого порядка так, что по известному числу можно восстановить исходную формулу. Этот метод, примененный к машинам Тьюринга, позволяет свести всю информацию, содержащуюся в программе, к одному числу. Как и в случае с «гёделизацией», машины Тьюринга соответствуют не всем числам, а только тем, которые обладают определенными свойствами. Хотя существует бесконечное множество машин Тьюринга, его размеры не могут превышать размеры множества натуральных чисел, так как всякая машина Тьюринга кодируется с помощью натуральных чисел.
Таким образом, мы доказали, что множество машин Тьюринга является счетным, следовательно, счетным является и множество вычислимых функций, которые по сравнению со множеством всех функций подобны иголке в стоге сена.
Лейбниц, а в начале XX века и Давид Гильберт — мечтали создать машину, способную отличать истинные высказывания от ложных. Как мы отметили в главе 3, программа Гильберта по «очистке» математики от парадоксов заключалась не только в формировании ее устойчивого фундамента — с этим справились древние начиная с Евклида, и пока что основы математики стояли прочно. Для абсолютной уверенности в том, что в будущем никакой Рассел не вытащит из рукава новый парадокс, помимо укрепления логической структуры математики, требовалось рассчитать метаматематические структуры, чтобы доказать, что они способны выдержать вес всего здания науки. Первые два вопроса, которыми задался Гильберт, звучали так: является ли математика полной и непротиворечивой, иными словами, совпадает ли истинное и доказуемое, и нет ли риска столкнуться с противоречиями в математике. За три года до того, как Гёдель доказал, что для арифметики эти требования несовместимы, Давид Гильберт и его ученик
Проблема разрешения (