Утверждение G вполне способно потрясти воображение и не слишком впечатлительного читателя, особенно если учесть достаточно простой характер составных элементов рассуждения, из которого мы это утверждение вывели. Прежде чем перейти к рассмотрению (в главе 3) его следствий применительно к возможности создания разумного робота- математика с компьютерным разумом, необходимо очень тщательно исследовать некоторое количество формальных моментов, связанных с получением вывода G. Если подобные возможные формальные «лазейки» вас не смущают и вы готовы принять на веру утверждение G (согласно которому, напомним, математики при установлении математической истины не применяют заведомо обоснованные алгоритмы), то вы, вероятно, предпочтете пропустить (или хотя бы на некоторое время отложить) нижеследующие рассуждения и перейти непосредственно к главе 3. Более того, если вы готовы принять на веру и несколько более серьезный вывод, в соответствии с которым принципиально невозможно алгоритмически объяснить ни математическое, ни какое-либо иное понимание, то вам, возможно, стоит перейти сразу ко второй части книги — задержавшись разве что на воображаемом диалоге в §3.23 (обобщающем наиболее важные аргументы главы 3) и выводах в §3.28.
Существует несколько математических моментов, связанных с приведенным в §2.5 гёделевским доказательством, которые не дают людям покоя. Попытаемся с этими моментами разобраться.
Q1. Я понимаю так, что процедура А является единичной, тогда как во всевозможных математических обоснованиях мы. несомненно, применяем много разных способов рассуждения. Не следует ли нам принять во внимание возможность существования целого ряда возможных «процедур A»?
В действительности, использование мною такой формулировки вовсе не влечет за собой потери общего характера рассуждений в целом. Любой конечный ряд A1, A2, A3, …, Ar алгоритмических процедур всегда можно выразить в виде единичного алгоритма A, причем таким образом, что A окажется незавершаемым только в том случае, если не завершаются все отдельные алгоритмы A1, …, Ar. (Процедура A может протекать, например, следующим образом: «Выполнить первые 10 шагов алгоритма A1 запомнить результат; выполнить первые 10 шагов алгоритма A2; запомнить результат; выполнить первые 10 шагов алгоритма A3; запомнить результат; и так далее вплоть до Ar; затем вернуться к A1 и выполнить следующие 10 шагов; запомнить результат и т.д.; затем перейти к третьей группе из 10 шагов и т.п. Завершить процедуру, как только завершится любой из алгоритмов Ar».) Если же ряд алгоритмов А бесконечен, то для того, чтобы его можно было считать алгоритмической процедурой, необходимо найти способ порождения всей совокупности алгоритмов A1, A2, A3, … алгоритмическим путем. Тогда мы сможем получить единичный алгоритм А, который заменяет весь ряд алгоритмов и выглядит приблизительно следующим образом:
«первые 10 этапов A1;
вторые 10 этапов A1, первые 10 этапов A2;
третьи 10 этапов A1 вторые 10 этапов A2, первые 10 этапов A3;
… и т.д.»…
Завершается такой алгоритм лишь после успешного завершения любого алгоритма из ряда, и никак не раньше.
С другой стороны, можно представить себе ситуацию, когда ряд A1, A2, A3, …, предположительно бесконечный, заранее не задан даже в принципе. Время от времени к такому ряду добавляется следующая алгоритмическая процедура, однако изначально весь ряд в целом не определен. В этом случае, ввиду отсутствия какой-либо предварительно заданной алгоритмической процедуры для порождения такого ряда, единичный замкнутый алгоритм нам получить никак не удастся.
Q2. Мы, безусловно, должны допустить, что алгоритм A может оказаться и не фиксированным. Люди, в конце концов, обладают способностью к обучению, а значит, применяемый ими при этом алгоритм вполне может претерпевать непрерывные изменения.
Для описания изменяющегося алгоритма необходимо каким-то образом задать правила, согласно которым он, собственно, изменяется. Если сами по себе эти правила являются полностью алгоритмическими, то мы уже включили их в описание нашей гипотетической процедуры «A», иначе говоря, такой «изменяющийся алгоритм» на деле представляет собой всего-навсего еще один пример единичного алгоритма, и на наши рассуждения подобное допущение никак не влияет. С другой стороны, можно вообразить средства для изменения алгоритма, предположительно не являющиеся алгоритмическими: такие, например, как введение в алгоритм каких-то случайных составляющих или неких процедур взаимодействия его с окружением. «Неалгоритмический» статус подобных средств изменения алгоритма мы еще будем рассматривать несколько позднее (см. §§3.9, 3.10); можно также вернуться к §1.9, где было показано, что ни одно из этих средств не позволяет сколько-нибудь убедительно избавиться от алгоритмизма[11] (как того требует точка зрения C) В данном случае, т.е. в рамках чисто математических рассуждений, нас занимает лишь возможность того, что такое изменение действительно будет носить алгоритмический характер. Если же предположить, что алгоритмическим оно быть никак не может, то мы, безусловно, придем к полному согласию с выводом G.
Пожалуй, следует немного подробнее остановиться на том, что может обозначать определение «алгоритмически изменяющийся» применительно к алгоритму A. Допустим, что алгоритм A зависит не только от q и n, но и еще от одного параметра t, который можно рассматривать как «время», а можно как просто количество предшествующих настоящему моменту случаев активации нашего алгоритма. Как бы то ни было, мы можем также предположить, что параметр t является натуральным числом, и записать следующий ряд алгоритмов At(q, n):
A0(q, n), A1(q, n), A2(q, n), A3(q, n), …,