обоснованной.
Следует отметить, что если процедура A оказывается в действительности необоснованной, то этот факт, в принципе, можно установить с помощью прямого вычисления — иными словами, необоснованную процедуру A можно опровергнуть вычислительными методами: если А ошибочно утверждает, что вычисление C(n) нельзя завершить, тогда как в действительности это не так, то выполнение самого вычисления C(n) в конечном счете приведет к опровержению А. (Возможность практического выполнения такого вычисления представляет собой отдельный вопрос, его мы рассмотрим в ответе на возражение Q8.)
Для того чтобы процедуру A можно было применять к вычислениям в общем случае, нам потребуется какой-нибудь способ маркировки различных вычислений C(n), допускаемый A. Все возможные вычисления C можно, вообще говоря, представить в виде простой последовательности
C0, C1, C2, C3, C4, C5, …,
т.е. q-e вычисление при этом получит обозначение Cq. В случае применения такого вычисления к конкретному числу n будем записывать
C0(n), C1(n), C2(n), C3(n), C4(n), C5(n), ….
Можно представить, что эта последовательность задается, скажем, как некий пронумерованный ряд компьютерных программ. (Для большей ясности мы могли бы, при желании, рассматривать такую последовательность как ряд пронумерованных машин Тьюринга, описанных в НРК; в этом случае вычисление Cq(n) представляет собой процедуру, выполняемую q-й машиной Тьюринга Tq над числом n.) Здесь важно учитывать следующий технический момент: рассматриваемая последовательность является вычислимой — иными словами, существует одно-единственное[10] вычисление C•, которое, будучи выполнено над числом q, дает в результате Cq, или, если точнее, выполнение вычисления C• над парой чисел q, n (именно в таком порядке) дает в результате Cq(n).
Можно полагать, что процедура A представляет собой некое особое вычисление, выполняя которое над парой чисел q, n, можно однозначно установить, что вычисление Cq(n), в конечном итоге, никогда не завершится. Таким образом, когда завершается вычисление A, мы имеем достаточное доказательство того, что вычисление Cq(n) завершить невозможно. Хотя, как уже говорилось, мы и попытаемся вскоре представить себе такую процедуру A, которая формализует все известные современной математике процедуры, способные достоверно установить невозможность завершения вычисления, нет никакой необходимости придавать A такой смысл прямо сейчас. Пока же процедурой A мы будем называть любой обоснованный набор вычислительных правил, с помощью которого можно установить, что то или иное вычисление Cq(n) никогда не завершается. Поскольку выполняемое процедурой А вычисление зависит от двух чисел q и n, его можно обозначить как A (q, n) и записать следующее утверждение:
(H) Если завершается A(q, n), то Cq(n) не завершается.
Рассмотрим частный случай утверждения (H), положив q равным n. Такой шаг может показаться странным, однако он вполне допустим. (Он представляет собой первый этап мощного «диагонального доказательства» — процедуры, открытой в высшей степени оригинальным и влиятельным датско-русско-немецким математиком девятнадцатого века Георгом Кантором; эта процедура лежит в основе рассуждений и Гёделя, и Тьюринга.) При q, равном n, наше утверждение принимает следующий вид:
(I) Если завершается A(n, n), то Cn(n) не завершается.
Отметим, что A(n, n) зависит только от одного числа (n), а не от двух, так что данное вычисление должно принадлежать ряду C0, C1, C2, C3, C4, C5, … (по n), поскольку предполагается, что этот ряд содержит все вычисления, которые можно выполнить над одним натуральным числом n. Обозначив это вычисление через Ck, запишем:
(J) A(n, n) = Ck(n).
Рассмотрим теперь частный случай n = k. (Второй этап диагонального доказательства Кантора.) Из равенства (J) получаем:
(K) A(k, k) = Ck(k),
утверждение же (I) при n = k принимает вид: