Вспомним, что каждое высказывание должно либо быть аксиомой, либо выводиться из предыдущих высказываний. В нашем примере машина убедилась бы, что первое высказывание — это одна из аксиом в списке (первое высказывание должно быть аксиомой, его нельзя вывести из предыдущих высказываний, просто потому что их нет). Компьютер, конечно же, не понимает значения аксиомы, он только проверяет, что первое высказывание присутствует в списке, предварительно в него загруженном.
После первой проверки машина переходит ко второму высказыванию, S(2 + 1) = 2 + S(1), и проверяет, что это не аксиома (поскольку ее нет в списке). Тогда это второе высказывание должно сводиться к первому с помощью какого-либо логического правила. Чтобы осуществить эту проверку, в память компьютера должен быть загружен список правил логики, то есть правил, которые показывают, какие выводы можно сделать из определенных предпосылок (см. схему).
В случае нашего доказательства правило, позволяющее перейти от шага 1 к шагу 2, заключается в том, что если высказывание начинается с «какими бы ни были числа х и y...», то в следующем выражении буквы х и у могут быть свободно заменены любыми числами. В нашем примере буква х заменена числом 2, а у — числом 1.
Эти логические правила находятся вне арифметики, они справедливы для любой области математики, поэтому выражающие их высказывания называются универсально справедливыми высказываниями (или логическими аксиомами, поскольку они выражают правила логических рассуждений).
Мы уже упомянули одно из этих правил. Другие примеры: «если х = у, то у = х» и «если два числовых выражения равны, то любое из них может быть заменено на другое». Именно это — последнее — правило оправдывает переход от шага 2 к шагу 3, где S(1) заменяется на 2.
Но когда существует потенциально бесконечное число универсально справедливых высказываний, как мы можем загрузить их все в память компьютера? Если это нельзя сделать, то компьютер неспособен проверить справедливость любого рассуждения, и, следовательно, программа Гильберта оказывается неосуществимой. При этом ни один компьютер не способен содержать бесконечное число высказываний.
К счастью, в теореме о полноте Гёдель доказал, что хотя количество логических правил потенциально бесконечно, любое рассуждение можно осуществить, используя только 12 из них. Если загрузить в память компьютера эти 12 правил, он будет способен проверить правильность любого доказательства.
Когда в начале 1930 года эта теорема была опубликована, казалось, что необходимая логическая основа для программы Гильберта обеспечена: можно механически проверить правильность арифметических доказательств. Проблема, которую оставалось решить, состояла в том, чтобы найти множество аксиом, которое (на основе этих 12 правил) позволило бы доказать все арифметические истины.
Теорема о полноте не произвела на математический мир большого эффекта. Считалось, что Гёдель просто подробно описал доказательство того, что все и так считали верным, — такой большой была вера в успешную реализацию программы Гильберта. Оставалась только проблема нахождения аксиом арифметики.