2.5. Семейства вычислений; следствие Гёделя — Тьюринга

К оглавлению1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 
51 52 53 54 55 56 57 58 59 60 61 62 

Для того, чтобы понять, каким образом из теоремы Гёделя (в моей упрощенной формулировке, навеянной отчасти идеями Тьюринга) следует все вышесказанное, нам необходимо будет сделать небольшое обобщение для типов утверждений, относя­щихся к рассмотренным в предыдущем разделе вычислениям. Вместо того чтобы решать проблему завершаемое™ для каж­дого отдельного вычисления ((А), (В), (С), (D) или (Е)), нам следует рассмотреть некоторое общее вычисление, кото­рое зависит от натурального числа n (либо как-то воздей­ствует на него). Таким образом, обозначив такое вычисление через C(n), мы можем рассматривать его как целое семей­ство вычислений, где для каждого натурального числа (0, 1, 2, 3, 4,...) выполняется отдельное вычисление (соответственно, (C(0), С(1), С(2), С(3), С(4), ...), а сам принцип, в соответ­ствии с которым вычисление зависит от n, является целиком и полностью вычислительным.

В терминах машин Тьюринга это всего лишь означает, что C(n) есть действие, производимое некоей машиной Тьюринга над числом п. Иными словами, число n наносится на ленту и подается на вход машины, после чего машина самостоятельно выполня­ет вычисления. Если вас почему-либо не устраивает концепция «машины Тьюринга», вообразите себе самый обыкновенный уни­версальный компьютер и считайте n «данными», необходимыми для работы какой-нибудь программы. Нас в данном случае инте­ресует лишь одно: при любом ли значении n может завершиться работа такого компьютера.

Для того чтобы пояснить, что именно понимается под вы­числением, зависящим от натурального числа п, рассмотрим два примера.

(F)        Найти число, не являющееся суммой квадратов n чисел,

 и

(G)       Найти нечетное число, являющееся суммой n четных чисел.

Припомнив, о чем говорилось выше, мы без особого труда убе­димся, что вычисление (F) завершается только при n = 0, 1, 2 и 3 (давая в результате, соответственно, 1, 2, 3 и 7), тогда как вычисление (G) вообще не завершается ни при каком значе­нии n. Вздумай мы действительно доказать, что вычисление (F) не завершается при n, равном или большем 4, нам понадобилась бы более или менее серьезная математическая подготовка (по крайней мере, знакомство с доказательством Лагранжа); с другой стороны, тот факт, что ни при каком n не завершается вычисле­ние (G), вполне очевиден. Какими же процедурами располагают математики для установления незавершаемой природы таких вы­числений в общем случае? Можно ли сами эти процедуры пред­ставить в вычислительной форме?

Предположим, что у нас имеется некая вычислительная про­цедура А, которая по своем завершении дает нам исчерпыва­ющее доказательство того, что вычисление С(n) действитель­но никогда не заканчивается. Ниже мы попробуем вообразить, что А включает в себя все известные математикам процедуры, посредством которых можно убедительно доказать, что то или иное вычисление никогда не завершается. Соответственно, если в каком-то конкретном случае завершается процедура А, то мы получаем, в рамках доступного человеку знания, доказательство того, что рассматриваемое конкретное вычисление никогда не заканчивается. Большая часть последующих рассуждений не по­требует участия процедуры А именно в такой роли, так как они посвящены, в основном, математическим умопостроениям. Од­нако для получения окончательного заключения У нам придется таки придать процедуре А соответствующий статус.

Я, разумеется, не требую, чтобы посредством процедуры А всегда можно было однозначно установить, что вычисление С(n) нельзя завершить (в случае, если это действительно так); однако я настаиваю на том, что неверных ответов А не дает, т. е. если мы с ее помощью пришли к выводу, что вычисление С(n) не заверша­ется, значит, так оно и есть. Процедуру А, которая и в самом деле всегда дает верный ответ, мы будем называть обоснованной. Следует отметить, что если процедура А оказывается в дей­ствительности необоснованной, то этот факт, в принципе, можно установить с помощью прямого вычисления — иными словами, необоснованную процедуру А можно опровергнуть вычислитель­ными методами. Так, если А ошибочно утверждает, что вычис­ление С(n) нельзя завершить, тогда как в действительности это не так, то выполнение самого вычисления С(n) в конечном счете приведет к опровержению А. (Возможность практического вы­полнения такого вычисления представляет собой отдельный во­прос, его мы рассмотрим в ответе на возражение Q8.)

Для того чтобы процедуру А можно было применять к вы­числениям в общем случае, нам потребуется какой-нибудь спо­соб маркировки различных вычислений С(n), допускаемый А. Все возможные вычисления С можно, вообще говоря, предста­вить в виде простой последовательности

, , , , , ,…,

т. е. q-е вычисление при этом получит обозначение Сq. В случае применения такого вычисления к конкретному числу п будем за­писывать

С0 (n), Ci (п), С2 (п), С3 (п), С4 (п), С5 (п), .... ,

Можно представить, что эта последовательность задается, ска­жем, как некий пронумерованный ряд компьютерных программ. (Для большей ясности мы могли бы, при желании, рассматри­вать такую последовательность как ряд пронумерованных машин Тьюринга, описанных в НРК; в этом случае вычисление Cq(n) представляет собой процедуру, выполняемую q-й машиной Тью­ринга Тq над числом n.) Здесь важно учитывать следующий тех­нический момент: рассматриваемая последовательность являет­ся вычислимой — иными словами, существует одно-единствен­ное вычисление С., которое, будучи выполнено над числом q, да­ет в результате Сq, или, если точнее, выполнение вычисления С, над парой чисел q, n (именно в таком порядке) дает в результа­те Cq (n).

Можно полагать, что процедура А представляет собой некое особое вычисление, выполняя которое над парой чисел q, n, мож­но однозначно установить, что вычисление Cq (n), в конечном итоге, никогда не завершится. Таким образом, когда заверша­ется вычисление А, мы имеем достаточное доказательство то­го, что вычисление Cq (n) завершить невозможно. Хотя, как уже говорилось, мы и попытаемся вскоре представить себе такую процедуру А, которая формализует все известные современной математике процедуры, способные достоверно установить невоз­можность завершения вычисления, нет никакой необходимости придавать А такой смысл прямо сейчас. Пока же процедурой А мы будем называть любой обоснованный набор вычислитель­ных правил, с помощью которого можно установить, что то или иное вычисление Cq (n) никогда не завершается. Поскольку вы­полняемое процедурой А вычисление зависит от двух чисел q и п, его можно обозначить как A (q, n) и записать следующее утверждение:

(Н)    Если завершается A (q, n), то Cq (n) не завершается.

Рассмотрим частный случай утверждения (Н), положив q рав­ным п. Такой шаг может показаться странным, однако он вполне допустим. (Он представляет собой первый этап мощного «диа­гонального доказательства» — процедуры, открытой в высшей степени оригинальным и влиятельным датско-русско-немецким математиком девятнадцатого века Георгом Кантором; эта проце­дура лежит в основе рассуждений и Гёделя, и Тьюринга.) При q, равном п, наше утверждение принимает следующий вид:

(I)      Если завершается А (п, п), то Сп (п) не завершается.

Отметим, что А(n, n) зависит только от одного числа (n), а не от двух, так что данное вычисление должно принадлежать ря­ду , , , , … (по n), поскольку предполагается, что этот ряд содержит все вычисления, которые можно выполнить над од­ним натуральным числом n. Обозначив это вычисление через Ck, запишем:

(J)        A(n,n) = Ck(n).

Рассмотрим теперь частный случай п = k. (Второй этап диаго­нального доказательства Кантора.) Из равенства (J) получаем:

(К)    A(k,k) = Ck(k),

утверждение же (I) при n = k принимает вид:   

(L)     Если завершается A (k, k), то Ck (k) не завершается.

Подставляя (К) в (L), находим:

(М)   Если завершается Ck (k), то Ck (k) не завершается.

Из этого следует заключить, что вычисление Ck (k) в действи­тельности не завершается. (Ибо, согласно (М), если оно завер­шается, то оно не завершается!) Невозможно завершить и вычис­ление A (k, k), поскольку, согласно (К), оно совпадает с Ck (k). То есть, наша процедура А оказывается не в состоянии показать, что данное конкретное вычисление Ck (k) не завершается, даже если оно и в самом деле не завершается.

Более того, если нам известно, что процедура А обосно­вана, то, значит, нам известно и то, что вычисление Ck (k) не завершается. Иными словами, нам известно нечто, о чем посред­ством процедуры А мы узнать не могли. Следовательно, сама процедура А с нашим пониманием никак не связана.

В этом месте осторожный читатель, возможно, пожелает пе­речесть все вышеприведенное доказательство заново, дабы убе­диться в том, что он не пропустил какой-нибудь «ловкости рук» с моей стороны. Надо признать, что, на первый взгляд, это до­казательство и в самом деле смахивает на фокус, и все же оно полностью допустимо, а при более тщательном изучении лишь выигрывает в убедительности. Мы обнаружили некое вычисле­ние Ck (k), которое, насколько нам известно, не завершается; однако установить этот факт с помощью имеющейся в нашем распоряжении вычислительной процедуры А мы не в состоянии. Это, собственно, и есть теорема Гёделя(—Тьюринга) в необходи­мом мне виде. Она применима к любой вычислительной проце­дуре А, предназначенной для установления невозможности за­вершить вычисление, — коль скоро нам известно, что упо­мянутая процедура обоснована. Можно заключить, что для однозначного установления факта незавершаемости вычисления не будет вполне достаточным ни один из заведомо обоснованных наборов вычислительных правил (такой, например, как проце­дура А), поскольку существуют незавершающиеся вычисления (например, Ck (k)), на которые эти правила не распространяются. Более того, поскольку на основании того, что нам известно о процедуре А и об ее обоснованности, мы действительно можем составить вычисление Ck (k}, которое, очевидно, никогда не за­вершается, мы вправе заключить, что процедуру А никоим об­разом нельзя считать формализацией процедур, которыми рас­полагают математики для установления факта незавершаемости вычисления, вне зависимости от конкретной природы А. Вывод:

          Для установления математической истины математики не применяют заведомо обоснованные алгоритмы.

Мне представляется, что к такому выводу неизбежно должен прийти всякий логически рассуждающий человек. Однако мно­гие до сих пор предпринимают попытки этот вывод опровергнуть (выдвигая возражения, обобщенные мною под номерами Q1 — Q20 в §2.6 и §2.10), и, разумеется, найдется ничуть не меньше желающих оспорить вывод более строгий, суть которого сводится к тому, что мыслительная деятельность непременно оказывается связана с некими феноменами, носящими фундаментально невы­числительный характер. Вы, возможно, уже спрашиваете себя, каким же это образом подобные математические рассуждения об абстрактной природе вычислений могут способствовать объяс­нению принципов функционирования человеческого мозга. Какое такое отношение имеет все вышесказанное к проблеме осмыс­ленного осознания? Дело в том, что, благодаря этим математи­ческим рассуждениям, мы и впрямь можем прояснить для себя некие весьма важные аспекты такого свойства мышления, как понимание — в терминах общей вычислимости, — а, как было показано в § 1.12, свойство понимания связано с осмысленным осознанием самым непосредственным образом. Предшествую­щее рассуждение действительно носит в основном математиче­ский характер, и связано это с необходимостью подчеркнуть одно очень существенное обстоятельство: алгоритм А участвует здесь на двух совершенно различных уровнях. С одной стороны, это просто некий алгоритм, обладающий определенными свойствами, с другой стороны, получается, что на самом-то деле А можно рассматривать как «алгоритм, которым пользуемся мы сами» в процессе установления факта незавершаемости того или ино­го вычисления. Так что в вышеприведенном рассуждении речь идет не только и не столько о вычислениях. Речь идет также и о том, каким образом мы используем нашу способность к осмысленному пониманию для составления заключения об ис­тинности какого-либо математического утверждения — в дан­ном случае утверждения о незавершаемости вычисления Ck (k). Именно взаимодействие между двумя различными уровнями рас­смотрения алгоритма А — в качестве гипотетического способа функционирования сознания и собственно вычисления — поз­воляет нам сделать вывод, выражающий фундаментальное про­тиворечие между такой сознательной деятельностью и простым вычислением.

Существуют, однако, всевозможные лазейки и контраргу­менты, на которые необходимо обратить самое пристальное вни­мание. Для начала, в оставшейся части этой главы, я тщательно разберу все важные контраргументы против вывода ^, которые когда-либо попадались мне на глаза — см. возражения Q1-Q20 и комментарии к ним в §§2.6 и 2.10; там, кроме того, мож­но найти и несколько дополнительных возражений моего соб­ственного изобретения. Каждое из возражений будет разобрано со всей обстоятельностью, на какую я только способен. Пройдя через это испытание, вывод , как мы убедимся, существенно не пострадает. Далее, в главе 3, я рассмотрю следствия уже из утверждения . Мы обнаружим, что оно и в самом деле спо­собно послужить прочным фундаментом для построения весь­ма убедительного доказательства абсолютной невозможности точного моделирования сознательного математического понима­ния посредством вычислительных процедур, будь то восходящих, нисходящих или любых их сочетаний. Многие сочтут такой вывод весьма неприятным, поскольку если он справедлив, то нам, полу­чается, просто некуда двигаться дальше. Во второй части книги я выберу более позитивный курс. Я приведу правдоподобные, на мой взгляд, научные доводы в пользу справедливости результа­тов моих размышлений о физических процессах, которые могут, предположительно, лежать в основе деятельности мозга — вро­де той, что осуществляется при нашем восприятии приведенных выше рассуждений, — и о причинах недоступности этой деятель­ности для какого бы то ни было вычислительного описания.

Для того, чтобы понять, каким образом из теоремы Гёделя (в моей упрощенной формулировке, навеянной отчасти идеями Тьюринга) следует все вышесказанное, нам необходимо будет сделать небольшое обобщение для типов утверждений, относя­щихся к рассмотренным в предыдущем разделе вычислениям. Вместо того чтобы решать проблему завершаемое™ для каж­дого отдельного вычисления ((А), (В), (С), (D) или (Е)), нам следует рассмотреть некоторое общее вычисление, кото­рое зависит от натурального числа n (либо как-то воздей­ствует на него). Таким образом, обозначив такое вычисление через C(n), мы можем рассматривать его как целое семей­ство вычислений, где для каждого натурального числа (0, 1, 2, 3, 4,...) выполняется отдельное вычисление (соответственно, (C(0), С(1), С(2), С(3), С(4), ...), а сам принцип, в соответ­ствии с которым вычисление зависит от n, является целиком и полностью вычислительным.

В терминах машин Тьюринга это всего лишь означает, что C(n) есть действие, производимое некоей машиной Тьюринга над числом п. Иными словами, число n наносится на ленту и подается на вход машины, после чего машина самостоятельно выполня­ет вычисления. Если вас почему-либо не устраивает концепция «машины Тьюринга», вообразите себе самый обыкновенный уни­версальный компьютер и считайте n «данными», необходимыми для работы какой-нибудь программы. Нас в данном случае инте­ресует лишь одно: при любом ли значении n может завершиться работа такого компьютера.

Для того чтобы пояснить, что именно понимается под вы­числением, зависящим от натурального числа п, рассмотрим два примера.

(F)        Найти число, не являющееся суммой квадратов n чисел,

 и

(G)       Найти нечетное число, являющееся суммой n четных чисел.

Припомнив, о чем говорилось выше, мы без особого труда убе­димся, что вычисление (F) завершается только при n = 0, 1, 2 и 3 (давая в результате, соответственно, 1, 2, 3 и 7), тогда как вычисление (G) вообще не завершается ни при каком значе­нии n. Вздумай мы действительно доказать, что вычисление (F) не завершается при n, равном или большем 4, нам понадобилась бы более или менее серьезная математическая подготовка (по крайней мере, знакомство с доказательством Лагранжа); с другой стороны, тот факт, что ни при каком n не завершается вычисле­ние (G), вполне очевиден. Какими же процедурами располагают математики для установления незавершаемой природы таких вы­числений в общем случае? Можно ли сами эти процедуры пред­ставить в вычислительной форме?

Предположим, что у нас имеется некая вычислительная про­цедура А, которая по своем завершении дает нам исчерпыва­ющее доказательство того, что вычисление С(n) действитель­но никогда не заканчивается. Ниже мы попробуем вообразить, что А включает в себя все известные математикам процедуры, посредством которых можно убедительно доказать, что то или иное вычисление никогда не завершается. Соответственно, если в каком-то конкретном случае завершается процедура А, то мы получаем, в рамках доступного человеку знания, доказательство того, что рассматриваемое конкретное вычисление никогда не заканчивается. Большая часть последующих рассуждений не по­требует участия процедуры А именно в такой роли, так как они посвящены, в основном, математическим умопостроениям. Од­нако для получения окончательного заключения У нам придется таки придать процедуре А соответствующий статус.

Я, разумеется, не требую, чтобы посредством процедуры А всегда можно было однозначно установить, что вычисление С(n) нельзя завершить (в случае, если это действительно так); однако я настаиваю на том, что неверных ответов А не дает, т. е. если мы с ее помощью пришли к выводу, что вычисление С(n) не заверша­ется, значит, так оно и есть. Процедуру А, которая и в самом деле всегда дает верный ответ, мы будем называть обоснованной. Следует отметить, что если процедура А оказывается в дей­ствительности необоснованной, то этот факт, в принципе, можно установить с помощью прямого вычисления — иными словами, необоснованную процедуру А можно опровергнуть вычислитель­ными методами. Так, если А ошибочно утверждает, что вычис­ление С(n) нельзя завершить, тогда как в действительности это не так, то выполнение самого вычисления С(n) в конечном счете приведет к опровержению А. (Возможность практического вы­полнения такого вычисления представляет собой отдельный во­прос, его мы рассмотрим в ответе на возражение Q8.)

Для того чтобы процедуру А можно было применять к вы­числениям в общем случае, нам потребуется какой-нибудь спо­соб маркировки различных вычислений С(n), допускаемый А. Все возможные вычисления С можно, вообще говоря, предста­вить в виде простой последовательности

, , , , , ,…,

т. е. q-е вычисление при этом получит обозначение Сq. В случае применения такого вычисления к конкретному числу п будем за­писывать

С0 (n), Ci (п), С2 (п), С3 (п), С4 (п), С5 (п), .... ,

Можно представить, что эта последовательность задается, ска­жем, как некий пронумерованный ряд компьютерных программ. (Для большей ясности мы могли бы, при желании, рассматри­вать такую последовательность как ряд пронумерованных машин Тьюринга, описанных в НРК; в этом случае вычисление Cq(n) представляет собой процедуру, выполняемую q-й машиной Тью­ринга Тq над числом n.) Здесь важно учитывать следующий тех­нический момент: рассматриваемая последовательность являет­ся вычислимой — иными словами, существует одно-единствен­ное вычисление С., которое, будучи выполнено над числом q, да­ет в результате Сq, или, если точнее, выполнение вычисления С, над парой чисел q, n (именно в таком порядке) дает в результа­те Cq (n).

Можно полагать, что процедура А представляет собой некое особое вычисление, выполняя которое над парой чисел q, n, мож­но однозначно установить, что вычисление Cq (n), в конечном итоге, никогда не завершится. Таким образом, когда заверша­ется вычисление А, мы имеем достаточное доказательство то­го, что вычисление Cq (n) завершить невозможно. Хотя, как уже говорилось, мы и попытаемся вскоре представить себе такую процедуру А, которая формализует все известные современной математике процедуры, способные достоверно установить невоз­можность завершения вычисления, нет никакой необходимости придавать А такой смысл прямо сейчас. Пока же процедурой А мы будем называть любой обоснованный набор вычислитель­ных правил, с помощью которого можно установить, что то или иное вычисление Cq (n) никогда не завершается. Поскольку вы­полняемое процедурой А вычисление зависит от двух чисел q и п, его можно обозначить как A (q, n) и записать следующее утверждение:

(Н)    Если завершается A (q, n), то Cq (n) не завершается.

Рассмотрим частный случай утверждения (Н), положив q рав­ным п. Такой шаг может показаться странным, однако он вполне допустим. (Он представляет собой первый этап мощного «диа­гонального доказательства» — процедуры, открытой в высшей степени оригинальным и влиятельным датско-русско-немецким математиком девятнадцатого века Георгом Кантором; эта проце­дура лежит в основе рассуждений и Гёделя, и Тьюринга.) При q, равном п, наше утверждение принимает следующий вид:

(I)      Если завершается А (п, п), то Сп (п) не завершается.

Отметим, что А(n, n) зависит только от одного числа (n), а не от двух, так что данное вычисление должно принадлежать ря­ду , , , , … (по n), поскольку предполагается, что этот ряд содержит все вычисления, которые можно выполнить над од­ним натуральным числом n. Обозначив это вычисление через Ck, запишем:

(J)        A(n,n) = Ck(n).

Рассмотрим теперь частный случай п = k. (Второй этап диаго­нального доказательства Кантора.) Из равенства (J) получаем:

(К)    A(k,k) = Ck(k),

утверждение же (I) при n = k принимает вид:   

(L)     Если завершается A (k, k), то Ck (k) не завершается.

Подставляя (К) в (L), находим:

(М)   Если завершается Ck (k), то Ck (k) не завершается.

Из этого следует заключить, что вычисление Ck (k) в действи­тельности не завершается. (Ибо, согласно (М), если оно завер­шается, то оно не завершается!) Невозможно завершить и вычис­ление A (k, k), поскольку, согласно (К), оно совпадает с Ck (k). То есть, наша процедура А оказывается не в состоянии показать, что данное конкретное вычисление Ck (k) не завершается, даже если оно и в самом деле не завершается.

Более того, если нам известно, что процедура А обосно­вана, то, значит, нам известно и то, что вычисление Ck (k) не завершается. Иными словами, нам известно нечто, о чем посред­ством процедуры А мы узнать не могли. Следовательно, сама процедура А с нашим пониманием никак не связана.

В этом месте осторожный читатель, возможно, пожелает пе­речесть все вышеприведенное доказательство заново, дабы убе­диться в том, что он не пропустил какой-нибудь «ловкости рук» с моей стороны. Надо признать, что, на первый взгляд, это до­казательство и в самом деле смахивает на фокус, и все же оно полностью допустимо, а при более тщательном изучении лишь выигрывает в убедительности. Мы обнаружили некое вычисле­ние Ck (k), которое, насколько нам известно, не завершается; однако установить этот факт с помощью имеющейся в нашем распоряжении вычислительной процедуры А мы не в состоянии. Это, собственно, и есть теорема Гёделя(—Тьюринга) в необходи­мом мне виде. Она применима к любой вычислительной проце­дуре А, предназначенной для установления невозможности за­вершить вычисление, — коль скоро нам известно, что упо­мянутая процедура обоснована. Можно заключить, что для однозначного установления факта незавершаемости вычисления не будет вполне достаточным ни один из заведомо обоснованных наборов вычислительных правил (такой, например, как проце­дура А), поскольку существуют незавершающиеся вычисления (например, Ck (k)), на которые эти правила не распространяются. Более того, поскольку на основании того, что нам известно о процедуре А и об ее обоснованности, мы действительно можем составить вычисление Ck (k}, которое, очевидно, никогда не за­вершается, мы вправе заключить, что процедуру А никоим об­разом нельзя считать формализацией процедур, которыми рас­полагают математики для установления факта незавершаемости вычисления, вне зависимости от конкретной природы А. Вывод:

          Для установления математической истины математики не применяют заведомо обоснованные алгоритмы.

Мне представляется, что к такому выводу неизбежно должен прийти всякий логически рассуждающий человек. Однако мно­гие до сих пор предпринимают попытки этот вывод опровергнуть (выдвигая возражения, обобщенные мною под номерами Q1 — Q20 в §2.6 и §2.10), и, разумеется, найдется ничуть не меньше желающих оспорить вывод более строгий, суть которого сводится к тому, что мыслительная деятельность непременно оказывается связана с некими феноменами, носящими фундаментально невы­числительный характер. Вы, возможно, уже спрашиваете себя, каким же это образом подобные математические рассуждения об абстрактной природе вычислений могут способствовать объяс­нению принципов функционирования человеческого мозга. Какое такое отношение имеет все вышесказанное к проблеме осмыс­ленного осознания? Дело в том, что, благодаря этим математи­ческим рассуждениям, мы и впрямь можем прояснить для себя некие весьма важные аспекты такого свойства мышления, как понимание — в терминах общей вычислимости, — а, как было показано в § 1.12, свойство понимания связано с осмысленным осознанием самым непосредственным образом. Предшествую­щее рассуждение действительно носит в основном математиче­ский характер, и связано это с необходимостью подчеркнуть одно очень существенное обстоятельство: алгоритм А участвует здесь на двух совершенно различных уровнях. С одной стороны, это просто некий алгоритм, обладающий определенными свойствами, с другой стороны, получается, что на самом-то деле А можно рассматривать как «алгоритм, которым пользуемся мы сами» в процессе установления факта незавершаемости того или ино­го вычисления. Так что в вышеприведенном рассуждении речь идет не только и не столько о вычислениях. Речь идет также и о том, каким образом мы используем нашу способность к осмысленному пониманию для составления заключения об ис­тинности какого-либо математического утверждения — в дан­ном случае утверждения о незавершаемости вычисления Ck (k). Именно взаимодействие между двумя различными уровнями рас­смотрения алгоритма А — в качестве гипотетического способа функционирования сознания и собственно вычисления — поз­воляет нам сделать вывод, выражающий фундаментальное про­тиворечие между такой сознательной деятельностью и простым вычислением.

Существуют, однако, всевозможные лазейки и контраргу­менты, на которые необходимо обратить самое пристальное вни­мание. Для начала, в оставшейся части этой главы, я тщательно разберу все важные контраргументы против вывода ^, которые когда-либо попадались мне на глаза — см. возражения Q1-Q20 и комментарии к ним в §§2.6 и 2.10; там, кроме того, мож­но найти и несколько дополнительных возражений моего соб­ственного изобретения. Каждое из возражений будет разобрано со всей обстоятельностью, на какую я только способен. Пройдя через это испытание, вывод , как мы убедимся, существенно не пострадает. Далее, в главе 3, я рассмотрю следствия уже из утверждения . Мы обнаружим, что оно и в самом деле спо­собно послужить прочным фундаментом для построения весь­ма убедительного доказательства абсолютной невозможности точного моделирования сознательного математического понима­ния посредством вычислительных процедур, будь то восходящих, нисходящих или любых их сочетаний. Многие сочтут такой вывод весьма неприятным, поскольку если он справедлив, то нам, полу­чается, просто некуда двигаться дальше. Во второй части книги я выберу более позитивный курс. Я приведу правдоподобные, на мой взгляд, научные доводы в пользу справедливости результа­тов моих размышлений о физических процессах, которые могут, предположительно, лежать в основе деятельности мозга — вро­де той, что осуществляется при нашем восприятии приведенных выше рассуждений, — и о причинах недоступности этой деятель­ности для какого бы то ни было вычислительного описания.