Однажды вечером Крейг случайно повстречал Мак-Каллоха и Фергюссона. Они давно не виделись, все трое очень обрадовались встрече и решили вместе пойти куда-нибудь поужинать.
— А знаете,— сказал Мак-Каллох, когда ужин подходил к концу,— меня уже давно занимает одна интересная проблема.
— Это какая же? — поинтересовался Фергюссон.
— Дело вот в чем,— продолжал Мак-Каллох.— Когда я занимался изучением различных числовых машин, то столкнулся с тем, что практически в каждой машине одни числа оказываются для нее приемлемыми, а другие нет. Допустим, я ввожу в машину какое-то приемлемое число X. Тогда число Y, которое порождается этим X, вновь оказывается либо приемлемым, либо неприемлемым. Если Y неприемлемо, то на этом весь процесс заканчивается. Если же Y оказывается приемлемым числом, то я опять ввожу его в машину и смотрю, какое число Z выдаст мне машина на этот раз. Если теперь число Z оказывается неприемлемым, то на этом процесс останавливается; если же оно приемлемо, то я вновь ввожу это число в машину и процесс продолжается как минимум еще один цикл. Если я буду повторять такую процедуру снова и снова, то при этом возможны два варианта: либо я в конце концов получу неприемлемое число, либо описанный процесс будет длиться бесконечно. В первом случае я называю число X отмирающим относительно данной конкретной машины, во втором случае число X я называю вечным. Конечно, любое число может быть отмирающим для одной машины и вечным для другой.
— Давай возьмем твою первую машину,— предложил Крейг.— Я могу придумать кучу отмира-
Стр. 202
ющих чисел, а не можешь ли ты привести мне пример вечного числа?
--Ну хотя бы число 323,— ответил Мак-Каллох.— Ведь число 323 порождает самое себя и поэтому, сколько бы раз я не вводил его в машину, я всегда буду получать 323. Так что в данном случае процесс явно оказывается бесконечным.
-А ведь верно!—засмеялся Крейг.— Ну хорошо, а существуют ли другие вечные числа?
1.—Тогда,— продолжал Мак-Каллох,— что ты скажешь по поводу числа 3223? Отмирающее оно или вечное?
2. — А как насчет числа 32223?—спросил Фергюссон.— Оно для вашей первой машины — отмирающее или вечное ?
Мак-Каллох на некоторое время задумался.
— Это не так трудно определить,— ответил он наконец — Однако я думаю, вам будет интересно разобраться в этом самому.
3.—Можете попробовать еще число 3232,—в свою очередь предложил Мак-Каллох,— попытайтесь определить— отмирающее оно или вечное.
4 — А если взять число 32323?—спросил Крейг.— Отомрет оно или нет?
5 — Все это очень интересно,— сказал Мак-Каллох,— но я еще не добрался до самого главного. А дело вот в чем: один мой приятель придумал весьма хитроумную числовую машину. Он утверждает, будто его машина может выполнять любые операции, на которые только способна числовая машина вообще. Мой друг назвал ее универсальной машиной. И вот оказывается, что есть несколько таких чисел, про которые ни я, ни он не можем сказать—отмирающие они или вечные. Поэтому мне хотелось бы разработать какой-нибудь чисто механический тест, чтобы определять, какие числа отмирающие, а какие — вечные. Правда, пока У меня ничего не выходит. Конкретнее, я пытаюсь найти такое число Н, которое для любого приемлемого числа X
Стр. 203
давало бы вечное число НХ, если X—отмирающее, и отмирающее число НХ, если X—вечное. Если бы мне это удалось, то я сразу смог бы определить, отмирающее ли или вечное любое приемлемое число X.
— А как именно это определить с помощью числа Н? — спросил Крейг.
— Если бы я нашел число Н, — объяснил Мак - Каллох,— то сначала построил бы такую же машину, как у моего приятеля. Потом, взяв произвольное приемлемое число X, я ввел бы его в одну из машин; одновременно мой приятель ввел бы число НХ в другую машину. Понятно, что описанный процесс может прекратиться только в одной из машин; если это произойдет в моей машине, я буду знать, что число X—отмирающее; если в машине моего приятеля, то я сразу пойму, что число X—вечное.
— Да ведь вам незачем строить вторую машину,— сказал Фергюссон.— Это можно сделать и на одной машине, просто переключая ее с одного процесса на другой.
— Верно,— согласился Мак-Каллох.— Но только все это пустые рассуждения, пока я не сумел найти число Н. Вполне возможно, что моя машина просто не способна решить задачу о своей собственной «выживаемости», то есть, я хочу сказать, что, быть может, такого числа Н вообще не существует. А может, это я не способен найти такое число. Вот эту то проблему, джентльмены, я и хотел бы обсудить вместе с вами.
- Ну что ж,— сказал Фергюссон,— прежде всего мы должны знать, по каким правилам работает данная машина.
— Всего в ней используется 25 правил,— начал было Мак-Каллох.— Первые два из них—те же самые, что и в моей первой машине.
- Минуточку,— прервал его Фергюссон.— Вы хотите сказать, что машина вашего приятеля подчиняется правилам 1 и 2?
— Вот именно,— ответил Мак-Каллох.
- Тогда мне все ясно,— заявил Фергюссон.— Ни одна машина, в которой действуют правила 1 и 2, не может решить задачу о своей собственной «выживаемости».
Стр. 204
— Как же вы сумели так быстро об этом догадаться?— спросил Крейг.
— Я уже сталкивался с подобного рода вещами,— объяснил Фергюссон.— Не так давно в моей работе возникла аналогичная проблема.
И все же, как именно Фергюссон определил, что машина, подчиняющаяся правилам 1 и 2, не может решить задачу о своей собственной «выживаемости»?
Решени
1. Напомним, что число 3223 порождает число 23223, а число 23223 в свою очередь порождает число 3223. Значит, у нас есть два числа, 3223 и 23223, которые порождают друг друга. Отсюда следует, что оба они вечны: ведь если ввести в машину одно из них, то получится второе, а если ввести второе, то получится первое. Ясно, что такой процесс бесконечен.
2. Возьмем два любых числа X и У. Мы будем говорить, что число X приводит к числу У, если X порождает У, или если X порождает какое-то число, которое порождает У, или если X порождает какое-то число, которое порождает другое число, которое в свою очередь порождает У, и т. д. Иначе говоря, если, введя в машину число X, мы на каком-то этапе нашего процесса получим число У, то будем говорить, что число X приводит к числу У. Так, например, число 22222278 приводит к числу 78 фактически на шестом этапе. В более общем виде: если число Т представляет собой произвольную цепочку двоек, то для любого числа X число ТХ в конце концов приводит к X.
Далее, число 32223 не порождает самое себя, но приводит к самому себе, потому что оно порождает число 2232223, которое порождает затем число 232223, а это число в свою очередь вновь порождает 32223. Но раз число 32223 приводит к самому себе, то, стало быть, оно должно быть вечным.
Читатель, по-видимому, уже обратил внимание на следующую закономерность: если число Т состоит целиком из одних двоек, то число ЗТЗ должно приводить к самому себе и, следовательно, будет вечным.
Стр. 205
3. Мне известен только один способ решения этой задачи: доказать в общем виде, что если число Т состоит целиком из одних двоек, то число ЗТ32 вечно и, следовательно, частный его случай—число 3232 — тоже является вечным. Этот факт служит иллюстрацией некоторого еще более общего принципа, который используется нами в решении следующей задачи.
Предположим, что у нас имеется определенный класс чисел (неважно, конечный или бесконечный), причем такой, что каждое число из этого класса приводит к некоторому числу из этого же класса (либо к самому себе, либо к другому числу). Тогда все числа, входящие в этот класс, должны быть вечными.
Попробуем воспользоваться этим принципом применительно к нашей задаче. Рассмотрим класс чисел вида ЗТ32, где Т—произвольная цепочка двоек. Покажем, что число ЗТ32 должно приводить к другому числу из этого же класса.
Возьмем сначала число 3232. Оно порождает число 32232, то есть элемент того же класса. Теперь, что нам дает число 32232? Оно порождает число 2322232, которое в свою очередь порождает число 322232, то есть элемент того же класса. А что получается с числом 322232? Оно порождает число 223222232, которое порождает число 23222232, а оно в свою очередь дает нам число 3222232, так что мы опять возвращаемся в указанный класс. В более общем виде: для любой цепочки двоек Т число 32Т32 порождает число Т322Т32, которое приводит к числу 322Т32, опять представляющему собой элемент данного класса. Итак, все числа, входящие в указанный класс, являются вечными.
4. Число 32323 порождает число 3232323, которое порождает число 32323232323, а это последнее в свою очередь порождает число 3232323232323232323. Дальнейшая схема представляется очевидной: любое число, состоящее из повторенного несколько раз числа 32 с тройкой на конце, порождает другое число того же вида (только более длинное), причем все эти числа будут вечными.
Стр.206
5. Прежде всего обратим внимание на следующее обстоятельство: пусть у нас имеются два числа X и Y, такие, что число X порождает число Y. Тогда если Y—отмирающее число, то X тоже должно быть отмирающим, поскольку если Y через какие-то n этапов приводит к неприемлемому числу Z, то X приводит к тому же самому числу Z через n +1 этапов. Кроме того, если Y вечно, то оно никогда не приведет к неприемлемому числу; стало быть, и число X не может привести к неприемлемому числу, поскольку X вообще может приводить к любому числу только через Y. Таким образом, если число X порождает число Y, то «выживаемость» числа X (то есть вечное оно или отмирающее) будет такой же, как и «выживаемость» числа Y, то есть либо оба они оказываются вечными, либо отмирающими.
Рассмотрим теперь произвольную машину, которая подчиняется правилам 1 и 2 (и, возможно, еще каким-то правилам). Возьмем некоторое число Н. Мы знаем, что, согласно правилам 1 и 2, должно существовать такое число X, которое порождает число НХ (напомним, кстати, что одним из таких чисел является число Н32НЗ). Поскольку число X порождает число НХ, то оба они должны быть либо отмирающими, либо вечными (ведь, как мы только что убедились, их «выживаемость» одинакова). Значит, не может существовать такого числа Н, для которого в случае произвольного X одно из пары чисел Н и НХ было бы отмирающим, а другое — вечным, поскольку для конкретного числа вида Х=Н32НЗ это оказывается совсем не так. Следовательно, ни одна машина, подчиняющаяся правилам 1 и 2, не может решить задачу о своей собственной «выживаемости».
Отметим по ходу дела, что полученный результат оказывается справедливым также для любой машины, которая подчиняется правилам 1 и 4, а в сущности, и для любой машины, которая подчиняется закону Мак-Каллоха. (Кстати говоря, вся эта проблема тесно связана с известной «проблемой останова» для машин Тьюринга, решение которой, как известно, тоже отрицательно.)
Стр. 207
18 Машина, которая так и не была создана
Как-то днем, вскоре после описанных событий, Крейг спокойно сидел дома, в своем кабинете. В дверь робко постучали — это оказалась его квартирная хозяйка.
— Входите, пожалуйста, миссис Хоффман,— пригласил Крейг.
— Простите, мистер Крейг, там вас спрашивает какой-то джентльмен. Только больно уж чудаковато он выглядит,— сказала миссис Хоффман.— Говорит, будто он на пороге величайшего открытия в математике! И еще утверждает, что вас это необычайно заинтересует, и потому он хочет видеть вас немедленно. Что ему сказать?
— Ну что ж,— несколько помедлив, ответил Крейг.— Проведите его ко мне. У меня как раз найдется полчасика.
Через несколько секунд дверь кабинета распахнулась и в комнату влетел безумного вида человек, смахивавший на изобретателя (это и был изобретатель). Он швырнул свой портфель на диван и, вскинув руки кверху, начал приплясывать, как сумасшедший, приговаривая:
— Нашел! Нашел! Еще чуть-чуть и я стану самым великим математиком на свете! Евклид, Архимед, Гаусс— все канут в Лету! А Ньютон, Лобачевский, Бойаи, Риман — разве...
— Спокойно, спокойно,— не повышая голоса, но достаточно твердо прервал его Крейг.— Что же именно вы нашли?
— Еще не совсем нашел,— отвечал незнакомец уже не так возбужденно.— Но вот-вот найду и, когда найду, стану самым великим математиком всех времен и народов! Имена Галуа, Коши, Дирихле, Кантора...
— Ну хватит! — решительно сказал Крейг.— Может быть, вы все же расскажете мне, что именно вы хотите найти?
Стр. 208
— Хочу найти?—воскликнул незнакомец с обидой.— Говорю вам, я почти нашел! Я почти придумал универсальную машину, которая сможет решать любые математические задачи! Имея такую машину, я буду знать все! Я смогу...
— А, мечта Лейбница! — сказал Крейг.—Лейбниц ведь тоже мечтал о такой машине. Боюсь только, что мечта эта неосуществима.
— Лейбниц!—презрительно усмехнулся незнакомец.—Лейбниц! Да он просто не знал, с чего начать! А у меня практически уже есть такая машина! Не хватает только нескольких мелочей... Но давайте я вам лучше поподробней расскажу о своих идеях.
— Я хочу построить некую машину М,—начал объяснения незнакомец (как выяснилось, звали его Уолтон),—с вполне определенными свойствами: сначала вы вводите в машину натуральное число х, потом натуральное число у —и тут машина начинает работать и выдает некоторое новое число, которое мы будем обозначать как М(х, у). Итак, М(х, у)—это результат, который мы имеем на выходе машины М в том случае, если на ее входе в качестве первого числа задать число х, а в качестве второго — число у.
— Пока все ясно,— сказал Крейг.
— Кроме того,— продолжал Уолтон,— под словом «число» я понимаю произвольное положительное целое число, поскольку только эти числа я и буду рассматривать в дальнейшем. Как вам, должно быть, известно, обычно говорят, что два натуральных числа имеют одинаковую четность, если они одновременно либо оба четны, либо оба нечетны; если же одно из них четно, а другое нечетно, то их называют числами с различной четностью.
Теперь для любого числа х мы будем обозначать через х* число вида М(х, х). Так вот, я хочу, чтобы моя машина обладала следующими тремя свойствами.
Свойство 1. Для любого числа a должно существовать некоторое число b, такое, что при любом х число М(х,b) будет иметь ту же самую четность, что и число М(х*, а).
Свойство 2. Для любого числа b должно существовать некоторое число а, такое, что при любом х число
Стр. 209
М(х, а) будет иметь другую четность по сравнению с числом М(х, b).
Свойство 3. Должно существовать число h, такое, что при любом х число М(х, h) будет иметь ту же самую четность, что и само х.
— Вот такими свойствами должна обладать моя машина,— заключил Уолтон.
Инспектор Крейг некоторое время молчал, размышляя.
— Ну и в чем же дело?—спросил он наконец.
— Увы!—отвечал Уолтон.—Сначала я построил машину со свойствами 1 и 2, потом — машину со свойствами 1 и 3, наконец, я сконструировал машину со свойствами 2 и 3. Все три машины прекрасно работают—вон там, в портфеле, у меня подробные схемы... Но когда я пытаюсь объединить все три свойства в одной машине, у меня ничего не получается.
— Что же именно у вас не получается?— поинтересовался Крейг.
— Да она вообще не работает!—воскликнул Уолтон с отчаянием.— Когда я ввожу в нее пару чисел (х, у), то вместо того, чтобы выдать мне результат, машина вдруг начинает странно гудеть, как будто в ней происходит нечто вроде короткого замыкания. Как вы думаете, отчего это может быть?
— Да-а,— покачал головой Крейг.— Здесь есть над чем подумать. Правда, сейчас мне надо уйти, меня ждут, но если вы оставите мне свою визитную карточку или просто фамилию и адрес, то я немедленно дам знать, как только во всем этом разберусь.
Через несколько дней инспектор Крейг написал Уолтону письмо. Начиналось оно так:
Дорогой мистер Уолтон!
Благодарю Вас за то, что вы посетили меня и рассказали о машине, которую пытались построить. Честно говоря, я не совсем понимаю, каким образом ваша машина, даже если бы вам действительно удалось ее создать, могла бы решать любые математические задачи,— хотя вы, несомненно, разбираетесь в этом лучше меня. Однако должен вам
Стр. 210
сказать, что ваш замысел напоминает мне попытку создания вечного двигателя—он также неосуществим! Фактически же дело обстоит гораздо хуже, чем с вечным двигателем. Ведь последний, несмотря на то что он невозможен в нашем физическом мире, все же не является логически невозможным. Машина же, которую хотите создать вы, невозможна не только физически, но и логически, поскольку те три свойства, о которых вы упоминали, содержат в себе определенное логическое противоречие.
Дальше Крейг объяснял, почему существование подобной машины логически невозможно. Можете ли вы сообразить, почему?
Полезно разбить решение этой задачи на три этапа:
1) показать, что для любой машины, обладающей свойством 1, при любом числе а должно существовать по крайней мере одно число х, такое, что число М(х, а) будет иметь ту же самую четность, что и само х;
2) показать, что для любой машины, обладающей свойствами 1 и 2, при любом числе b найдется некоторое число х, такое, что число М(х, b) будет иметь иную четность по сравнению с этим х;
3) ни одна машина не может объединить в себе свойства 1, 2 и 3.
Решение
а) Рассмотрим машину, обладающую свойством 1. Возьмем произвольное число а; тогда, согласно свойству 1, найдется число b, такое, что при любом х число М(х, b) будет иметь ту же самую четность, что и число М(х* а). В частности, если положить х равным b, то число M(b, b) будет обладать той же самой четностью, что и число М(b*, а). Однако число М(b, b)—это просто b*, и, значит, число b* должно иметь ту же самую четность, что и число М(b*, а). Таким образом, положив х равным числу b*, мы видим, что число М(х, а) имеет ту же самую четность, что и само число х.
б) Рассмотрим теперь некоторую машину, обладающую свойствами 1 и 2. Возьмем произвольное число b; тогда, согласно свойству 2, обязательно найдетс
Стр. 211
число a, такое, что при любом х число М(х, а) будет иметь другую четность по сравнению с числом М(х, b). Но, согласно свойству 1, существует по крайней мере одно х, при котором число М(х, а) имеет ту же самую четность, что и само х, — мы только что доказали это в пункте а. Такое число х должно иметь другую четность по сравнению с числом М(х, a), поскольку оно одинаково по четности с числом М(х, а), а М(х, а) в свою очередь имеет иную четность по сравнению с числом М(х, b).
в) Рассмотрим вновь машину со свойствами 1 и 2. Возьмем произвольное число h; тогда, согласно пункту «б» нашего решения (если положить b равным h), существует по крайней мере одно число х, такое, что число М(х, h) будет отличаться по четности от числа х. Значит, число М(х, h) не может иметь ту же самую четность, что и число х для всех х; другими словами, свойство 3 оказывается невыполнимым. Таким образом, свойства 1, 2 и 3, если воспользоваться словцом Амброза Бирса*, «несосуществимы».
Примечание. Невозможность построения машины Уолтона тесно связана с теоремой Тарского (гл. 15). Поэтому для доказательства этой теоремы и для доказательства невозможности существования подобной машины можно использовать одни и те же рассуждения.
19 Мечта Лейбница
Фергюссон (да, по-своему, как и чудаковатый Уолтон) пытался создать нечто такое, что в случае успеха можно было бы считать осуществлением самой страстной мечты Лейбница; ведь Лейбниц серьезно размышлял о возможности создания счетной машины, которая могла бы решить все математические проблемы, а заодно и философские! Однако мечта Лейбница о машине, решающей любые математические задачи (а философские проблемы тем более), оказалась недостижи-
* Амброз Бирс (1842—1914) — американский писатель. На русский язык неоднократно переводились его рассказы.— Прим. Персе.
Стр.212
мой. Этот вывод следует из результатов. полученных Гёделем, Россером, Черчем, Клини, Тьюрингом, Постом. К их работам мы сейчас и обратимся.
Существует определенный класс счетных машин. назначение которых состоит в том, чтобы производить, те или иные математические операции над положительными целыми числами. Мы подаем на вход такой машины некое число х и получаем на выходе новое число у. Например, можно легко представить себе машину (не очень, понятно, интересную), которая при подаче на ее вход числа х дает нам на выходе число х + 1. Обычно говорят, что такая машина выполняет операцию прибавления единицы. Можно сделать машину, которая выполняет, скажем, операцию сложения двух чисел. В такой машине мы сначала подаем на вход число х, потом число у, затем нажимаем кнопку и через какое-то время получаем на выходе число х + у. (Для таких машин имеется свое техническое название — их, по-моему, называют суммирующими машинами!)
Существует и другой тип машин, которые можно назвать генерирующими, или перечисляющими, машинами Такие машины будут играть более важную роль в наших последующих рассуждениях (где мы следуем теориям Поста). Эти машины не имеют входов; они запрограммированы на генерирование множества положительных целых чисел. Например, одна машина может генерировать у нас множество четных чисел, другая — генерировать множество нечетных чисел, третья — множество простых чисел, и т. д. При этом типичная машинная программа для генерирования четных чисел может выглядеть так.
Мы задаем машине две команды (1) напечатать число 2; (2) если напечатано число n, то напечатать число n+2. (Разрешается задавать вспомогательные правила, которые определяют порядок выполнения команд таким способом, чтобы машина в конечном счете выполнила все, что она может выполнить.) Такая машина, подчиняясь команде (1), рано или поздно напечатает число 2, а напечатав 2 она в конце концов, подчиняясь команде (2), напечатает число 4, затем, напечатав 4, она, опять же руководствуясь командой (2), напечатает число 6, потом числа 8, 10 и т. д. Тем
Стр. 213
самым наша машина будет генерировать множество четных чисел. (Отметим, что без введения дополнительных команд она никогда не сможет произвести нам числа 1, 3, 5 или любое другое нечетное число.) Чтобы запрограммировать машину на генерирование нечетных чисел, нам следует просто заменить первую команду на команду «напечатать число 1». Иногда объединяют вместе две или несколько машин, с тем чтобы информация на выходе одной машины могла быть использована в другой. Пусть, например, у нас имеются две машины, А и В, программу для которых мы составим следующим образом. Машине А мы зададим две команды: (1) напечатать число 1; (2) если машина В напечатала число n, то напечатать число n +1. Машине В мы задаем только одну команду: (1) если машина А напечатала число n, то напечатать число n +1. Какие числа будет генерировать машина А, а какие — машина В? Ответ: машина А будет генерировать множество нечетных чисел, а машина В — множество четных чисел.
Теперь представим себе, что программа для генерирующей машины записывается не на естественном языке, а кодируется в виде некоторого целого числа (представляющего собой цепочку цифр); кодирование можно осуществить так, чтобы каждое положительное целое число представляло собой номер определенной программы. Пусть Мn—это машина, программа которой имеет кодовый номер n. Расположим теперь все генерирующие машины в виде бесконечной последовательности М1, М2, ... , Мn ... (М1 — это машина с номером программы 1, М2 — машина с номером программы 2 и т. д.)
Для любого множества чисел А (естественно, имеется в виду множество положительных целых чисел) и для любой машины М мы будем говорить, что машина М генерирует множество А, или, иначе, машина М перечисляет множество А, если каждое число, входящее в множество А, в конце концов будет напечатано машиной М, и в то же время ни одно число, не входящее в А, этой машиной напечатано не будет. Множество А мы будем называть эффективно перечислимым (иногда говорят — рекурсивно перечислимым), если существует хотя бы одна машина Мi котора
Стр. 214
перечисляет множество А. Кроме того, мы будем говорить, что множество А разрешимо (или рекурсивно), если существуют одна машина Мi, которая перечисляет само множество А, и другая машина Мj которая перечисляет множество всех чисел, не входящих в А. Таким образом, множество А является разрешимым том и только том случае, если и A, и его дополнение А являются эффективно перечислимыми.
Предположим, что множество А — разрешимо и у нас имеются машина Мi, которая генерирует А, и машина Мj которая генерирует дополнение А. Тогда оказывается, что существует эффективный способ, позволяющий определять, входит ли некоторое число n в множество А или нет. Допустим, к примеру, нас интересует, входит ли в множество А число 10. Мы приводим в действие обе машины одновременно и ждем. Если число 10 принадлежит множеству А, то рано или поздно это число будет напечатано машиной Mi, так что мы сразу узнаем, что число 10 входит в А. Если же число 10 не принадлежит множеству А, то в конце концов это число напечатает машина Mj—тем самым мы сразу узнаем, что число 10 не входит в А. Таким образом, в конечном итоге мы обязательно выясним, принадлежит ли число 10 множеству А или нет. (Понятно, что сказать заранее, сколько нам придется ждать, невозможно; нам известно лишь, что через какой-то конечный промежуток времени мы непременно узнаем ответ.)
Предположим теперь, что множество А эффективно перечислимо, но неразрешимо. В таком случае у нас имеется машина Мi, которая генерирует множество А, но не окажется машины, которая генерировала бы дополнение А. Допустим, что мы опять хотим узнать, входит ли в А некоторое заданное число — скажем, число 10. Лучшее, что мы можем сделать в таком случае — запустить машину Mi, и надеяться на удачу! Теперь наши шансы узнать ответ составляют лишь 50%. Если число 10 действительно входит в множество А, то в конце концов мы обязательно это узнаем, поскольку рано или поздно машина М, напечатает это число. Если же число 10 в А не входит, то машина Мi, никогда этого числа не напечатает, однако сколько бы
Стр. 215
мы ни ждали, у нас никогда не будет уверенности, что через какое-то время машина все-таки не напечатает число 10. Итак, если число 10 принадлежит множеству А, то рано или поздно мы узнаем об этом; если же число 10 не принадлежит А, то мы никогда не будем знать об этом наверняка (во всяком случае, если ограничимся наблюдением за машиной М,). Такое множество А можно с основанием называть полуразрешимым.
Первое важное свойство генерирующих машин заключается в том, что можно сконструировать так называемую универсальную машину U, назначение к торой — систематически наблюдать за поведением во машин m1, М2, М3, ... , Мn, ... и, как только машина Мх напечатает число у, сразу же сообщить нам об этом. Но каким образом это сделать? Очень просто— напечатать некоторое число, скажем для данных х и у напечатать х* у, то есть число, как и ранее, состоящее из цепочки единиц длиной х, за которой следует цепочка нулей длиной у. Итак, основная команда для машины U такова: когда машина М* напечатает число у, то напечатать число х* у.
Допустим, например, что машина Ма запрограммирована на генерирование множества нечетных чисел, а машина Мb—на генерирование множества четных чисел. Тогда машина U будет печатать числа а*1, а*3, а*5 и т.д., а также числа b*2, b*4, b*8 и т.д., однако она никогда не напечатает число а*4 (поскольку машина Ма никогда не напечатает число 4) или число b*3 (поскольку машина Мb никогда не напечатаем число 3).
Далее, поскольку машина U имеет свою собственную программу, то, следовательно, она входит в семейство программируемых машин М1 М2, ..., Мn, ... . Это значит, что существует некоторая машина Мь номер программы которой k совпадает с номером программы машины U, причем машина М* и есть сама машина U! (В строгой научной статье я указал бы, что это за число k.)
Можно заметить, что наша универсальная машина Mk наблюдает в числе прочих и за своим собственным поведением. Поэтому, как только машина Мk напечата
Стр. 216
ет число n, она должна напечатать число k* n, а значит, и число k* (k* n), а также и число k* [k* (k* n)] и т. д.
Другой важной особенностью этих машин является то, что, имея произвольную машину Мa, мы всегда можем запрограммировать другую машину Mb, таким образом, чтобы она печатала в точности такие числа х, при которых машина Мa, печатает числа х * х. (Машина Mb, так сказать, «следит» за машиной Мa и действует но такой команде: напечатать число х после того, как машина Мa напечатает число х* х.) Можно, наконец, закодировать программы так, что для каждого а таким числом b окажется число 2а; тогда для каждого а машина М2а будет печатать в точности такие числа х, при которых машина Мa печатает числа х*х. Представим себе, что мы так и устроили, и запишем два основных утверждения, на которые будем опираться в дальнейшем.
Утверждение 1. Универсальная машина U печатает число x* у, если и только если машина Мx печатает число у.
Утверждение 2. Для каждого числа а машина М2a, печатает число х, если и только если машина Ма печатает число х* х.
Вот теперь мы подходим к самому главному. Оказывается, что любую формальную математическую задачу можно сформулировать в виде вопроса: напечатает машина М„ число b или не напечатает? Иначе говоря, для любой данной формальной системы аксиом можно всем утверждениям системы приписать определенные гёделевы номера, после чего найти такое число а, при котором машина Мa будет печатать гёделевы номера всех доказуемых утверждений данной системы и никаких других номеров печатать не будет. Поэтому, для того чтобы узнать, доказуемо или недоказуемо данное утверждение в исходной системе аксиом, мы берем его гёделев номер b и задаемся вопросом: напечатает ли машина Мa число b или не напечатает? Значит, если бы у нас существовал какой-то эффективный алгоритм, позволяющий определять, какие машины печатают те или иные числа, то мы вполне могли бы решить, какие утверждения доказуемы в той или иной системе аксиом. В этом, собственно, и заключалось бы осуществле-
Стр. 217
ние мечты Лейбница. Более того, вопрос—какие машины печатают те или иные числа, может быть сведен к вопросу — какие числа печатает универсальная машина! U, потому что вопрос, напечатает ли машина Мa число! b, равносилен вопросу, напечатает ли машина U число а* b. Поэтому полное познание машины U означает полное познание всех машин, а следовательно, и всея математических систем. И наоборот, любой вопрос том, напечатает ли некая машина заданное число; может быть сведен к вопросу о том, доказуемо ли тo или иное утверждение в определенной математической системе. Таким образом, полное познание всех формальных математических систем означает полное познание нашей универсальной машины.
Итак, главный вопрос, стоящий перед нами, можно сформулировать следующим образом. Пусть V—множество чисел, которые может напечатать универсальная машина U (это множество иногда называют универсальным множеством). Разрешимо множество V или нет? Если оно разрешимо, то мечта Лейбница осуществима; если же нет, то его стремления никогда не смогут быть реализованы. Поскольку V эффективно перечислимо (ведь оно генерируется машиной U), то вопрос сводится к тому, существует ли некая машина Ма, которая сможет напечатать дополнение V, а именно множество V'. Иначе говоря, существует ли такая машина Ма, которая печатает те и только те числа, которые машина U не печатает? На этот вопрос можно дать исчерпывающий ответ лишь на основании утверждений 1 и 2, о которых мы упоминали выше.
Теорема L. Множество V' не является эффективно перечислимым: для любой заданной машины Ма либо существует какое-то число, принадлежащее множеству V, которое машина Ма не может напечатать, либо машина Ма напечатает по крайней мере одно число, которое принадлежит не множеству V', а множеству V.
Сумеет ли читатель доказать теорему L?
Рассмотрим также следующий частный случай. Пусть у нас имеется утверждение о том, что машина М5 перечислила множество V'. Чтобы опровергнуть это утверждение, достаточно отыскать некоторое число n,
Стр. 218
показав при этом, что либо оно принадлежит множеству V', но не может быть напечатано машиной М5 , либо оно не принадлежит множеству V, но машина М5 может его напечатать. Сумеете ли вы найти такое число n?.
Я приведу решение этой задачи сразу, а не в конце главы, — по существу, это решение просто повторяет доказательство Гёделя.
Итак, возьмем произвольное число а. Согласно утверждению 2, машина Ма напечатает число х*х, если и только если машина М2а напечатает число х. Но, согласно утверждению 1 , машина М2а напечатает число х, если и только если универсальная машина U напечатает число 2а*х, или, что то же самое, если число 2а*х принадлежит множеству V. Следовательно, машина Ма напечатает число х*х, если и только если число 2а*х входит в V. В частности (положив х равным 2а), машина Ма напечатает число 2а*2а, если и только если число 2а*2а принадлежит множеству V. Итак, либо (1): машина Ма напечатает число 2а*2а, и число 2а*2а принадлежит множеству V; либо (2): машина Ма не напечатает число 2а*2а, и число 2а*2а принадлежит множеству V.
Если выполнено условие (1), то машина Ма напечатает число 2а*2а, которое входит не в V, а в V; это означает, что машина Ма не генерирует множество V, потому что она может напечатать по крайней мере одно число 2а*2а, которое не входит в множество V. Если же выполняется (2), то мы опять получаем, что машина Ма не генерирует множество V поскольку число 2а*2а принадлежит множеству V, а машина Ма это число напечатать не может. Итак, в обоих случаях машина Ма не генерирует множество V. В силу произвольности выбора а это означает, что никакая машина не может перечислить множество V , и, следовательно, это множество не является эффективно перечислимым.
Конечно, в частном случае а =5 число n окажется равным 10*10.
Но все же какое это имеет отношение к мечтам Лейбница? Строго говоря, мы не можем ни доказать, ни опровергнуть возможность осуществления лейбницевых
Стр. 219
надежд, поскольку они никогда точно не формулировались. Ведь во времена Лейбница не существовало строгого определения понятий «вычислительная машина» или «генерирующая машина»; соответствующие точные определения были получены лишь в нашем веке. Подобных определений имеется много (их вводили Гёдель, Эрбран, Клини, Черч, Тьюринг, Пост, Смаллиан, Марков и многие другие), однако было проверено, что все они эквивалентны между собой. И если под словом «разрешимо» понимать разрешимость в соответствии с любым из этих эквивалентных определений, то мечта Лейбница оказывается неосуществимо! по той простой причине, что сами машины можно перенумеровать таким образом, что утверждения 1 и 2 обязательно будут выполняться. Тогда по теореме L множество V, генерируемое универсальной машиной, оказывается неразрешимым — оно будет лишь полу разрешимо. Следовательно, не существует никакой «чисто механической» процедуры, с помощью которой можно было бы узнать, какие утверждения доказуемы в той или иной системе аксиом, а какие нет. Таким образом, любая попытка изобрести некий хитроумный «механизм» для решения всех математических задач обречена на провал.
Это означает, что, выражаясь пророческими словами известного логика Эмиля Поста (1944), математическое мышление является и всегда будет оставаться по сути своей сугубо творческим процессом. Или, как остроумно заметил математик Пол Розенблум,— человеку никогда не избавиться от необходимости пользоваться своим умом, сколько бы ума он не приложил к этому.
Стр. 220
Содержание:
От редактора перевода................................................ 5