16. Найти два различных операционных числа М и N, для которых M(N) = N(M).
17. Не могли бы вы отыскать два операционных числа М и N, для которых
18. Что можно сказать по поводу двух операционных чисел М и N, для которых M(N) = N(M) + 492?
19. Найти два различных операционных числа М и N, для которых выполняются условия M(N) = MМ и N(M) = NN.
— Ты так и не рассказал мне, в чем же состоит твой принцип, — сказал Мак-Каллох, когда друзья покончили с чаем. — Полагаю, что об операционных числах и операциях мы заговорили именно в связи с этим принципом?
— Ну, конечно, — отвечал Крейг. — Теперь, я думаю, ты легко сможешь понять идею этого принципа. Помнишь задачи, которые ты предлагал мне раньше? Ну, например, найти число X, которое порождает повторение самого себя. Иначе говоря, мы искали некое число X, которое порождает 5(Х). Или, пытаясь найти некоторое число X, которое порождает свой собственный ассоциат, мы искали число X, порождающее число 3(Х). Далее в свою очередь вспомним, что число X, порождающее обращение числа X, есть число, которое порождает 4(Х). Вместе с тем все эти задачи представляют собой частные случаи одного общего принципа, который заключается в следующем: для любого операционного числа М должно существовать некое число X, которое порождает М(Х). Другими словами, для любой заданной операции F, которую может выполнять твоя машина, — то есть для любой операции F, описываемой определенным операционным числом, — должно существовать число X, которое порождает F(X).
Более того, — продолжал Крейг, — если задано какое-то операционное число М, то существует очень простой способ найти такое X, которое порождает М(Х). Зная этот общий способ, можно найти, например, число X, которое порождает 543(X), — то есть решить задачу нахождения числа X, порождающего повторение обращения ассоциата этого X; или найти такое X, которое порождает 354(Х), — то есть решить задачу нахождения числа, порождающего ассоциат повторения своего собственного обращения. Или, как я уже упоминал, можно найти такое X, которое порождает повторение обращения двойного ассоциата X, — другими слова ми, найти X, порождающее 5433 (X). Если не знаешь этого способа, то решать эти задачи оказывается крайне затруднительным, если же воспользоваться моим принципом — то это будут не задачи, а детские игрушки.
— Я — весь внимание, — сказал Мак-Каллох. — Но что же это за такой замечательный способ?
— Сейчас объясню, — ответил Крейг, — но сначала давай разберем поподробнее одно вполне элементарное обстоятельство, а именно: для любого операционного числа М и для любых чисел У и Z, если число У порождает число Z, то МУ порождает M(Z). Например если У порождает Z, то 3У порождает 3(Z), то есть ассоциат Z; 4 У порождает 4(Z); 5 У порождает 5(Z); 34 У порождает 34(Z) и т. д. Точно так же для любого операционного числа М, если У порождает Z, то МУ порождает М(Z). В частности, если такое У, порождающее Z, оказывается равным 2Z, тогда всегда справедливо утверждение, что M2Z порождает M(Z). Например, число 32Z порождает число 3(Z) — ассоциат Z; число 42Z порождает число 4(Z), то есть при любом операционном числе М число M2Z порождает число M(Z). Собственно говоря, мы даже могли бы определить M(Z) как число, порождаемое числом M2Z.
— Это все понятно, — сказал Мак-Каллох.
— Прекрасно, — сказал Крейг, — однако этот факт легко забывается, поэтому разреши мне повторить его еще раз, с тем чтобы он хорошенько отложился у тебя в голове. Итак, утверждение 1: для любого операционного числа М и для любых чисел У и Z, если число У порождает число Z, число МУ порождает число M(Z). В частности, число M2Z порождает число M(Z).
— Отсюда, — продолжал Крейг, — а также из того факта, который ты обнаружил для своей первой машины и который справедлив и для нынешней, очевидно следует, что для любого заданного операционного числа М должно существовать некое число X, порождающее М(Х), — то есть в данном случае число X порождает результат применения операции М к числу X. При этом, зная число М, такое X можно легко найти с помощью простого и вполне общего правила.
20. Итак, Крейг открыл важное правило, которое мы в дальнейшем будем называть принципом Крейга, а именно: для любого операционного числа М всегда существует некоторое число X, такое, что оно порождает М(Х). Как же доказать принцип Крейга и как при заданном числе М найти число X? Например, какое число X порождает 543 (Х)? Или какое число X порождает повторение обращения ассоциата X? Или, наконец, какое X порождает ассоциат повторения обращения X — то есть какое X порождает 354 (Х)
— Я приготовил для тебя еще несколько задачек, — сказал Мак-Каллох, — однако сегодня уже поздно. Оставайся-ка ночевать у меня. А завтра мы с тобой поговорим подробнее.
У Крейга как раз было несколько свободных дней, и поэтому он с удовольствием принял приглашение Мак-Каллоха.
Наутро после плотного завтрака — а хозяин оказался человеком очень гостеприимным — Мак-Каллох предложил Крейгу следующие задачи.
21. Найти число X, которое порождает число 7Х7Х.
22. Найти число X, которое порождает обращение числа 9Х.
23. Найти число X, которое порождает ассоциат числа 89х.
— Очень мило! — воскликнул Крейг, после того как покончил с решением последней задачи. — Ни одну из их задач нельзя решить с помощью того принципа, о котором я тебе рассказывал вчера.
— Вот именно! — рассмеялся Мак-Каллох.
— И все-таки, — возразил Крейг, — решение всех грех задач подчиняется некой общей идее: во-первых, конкретные числа 7, 5 и 89 не играют никакой роли; для любого данного числа А существует определенное число X, которое порождает повторение числа АХ, еще какое-то X порождает обращение АХ; наконец, есть X, порождающее ассоциат числа АХ. Кроме того, существует также некое число X, которое порождает повторение обращения числа АХ или, например, обращение ассоциата АХ. Фактически это означает, что для любого операционного числа М и для любого заданного числа А должно существовать некоторое число X, которое порождает М(АХ), то есть число, полученное в результате применения операции М к числу АХ.
24. Крейг, разумеется, был прав: для любого операционного числа М и для любого заданного числа А должно найтись некоторое число X, которое порождает число М(АХ). Будем называть это правило вторым принципом Крейга. Как же доказать этот принцип? И как при заданном операционном числе М и заданном А найти в явном виде такое число X, которое порождает М(АХ)?
25. — Мне только что пришел в голову еще один вопрос, — сказал Мак-Каллох. — Пусть для любого числа X величина X обозначает обращение этого X. Можешь ли ты найти такое число X, которое порождает Х67? (Иначе, существует ли такое число X, которое порождает обращение числа X, за которым следует число 67?) В общем виде этот вопрос можно сформулировать так: действительно ли для любого числа А существует некоторое число X, которое порождает ХА?
26. — Мне в голову пришел еще один вопрос, — сказал Мак-Каллох. — Существует ли такое число X, которое порождает повторение числа Х67? Или, в более общем виде: действительно ли для любого числа А существует такое число X, которое порождает повторение числа ХА? Или, если задать вопрос в еще более общем виде: действительно ли для любого числа А и для любого операционного числа М должно существовать некоторое число X, которое порождает м(ХА)?
Принцип Крейга справедлив не только для второй машины Мак-Каллоха, но и для первой — а в сущности и для любой машины, в которую заложены правила 1 и 2. Это означает, что, как бы мы ни расширяли первую машину Мак-Каллоха, вводя в нее новые правила, работа результирующего устройства все равно будет подчиняться принципу Крейга (а фактически обоим его принципам).
Первый принцип Крейга связан с одним из знаменитых результатов теории вычислимых функций, известным под названием теоремы о рекурсии (или, как ее иногда называют, теоремы о неподвижной точке). С помощью правил 1 и 2, предложенных Мак-Каллохом, этот результат получается, пожалуй, наиболее простым способом. Кроме того, эти правила обладают еще одним занятным свойством (связанным уже с другим знаменитым результатом теории вычислимых функций, известным под названием теоремы о двойной рекурсии), о котором пойдет речь в следующей главе. Наконец, все эти сведения имеют отношение к теории самовоспроизводящихся машин и теории клонирования.