Новый ум короля: О компьютерах, мышлении и законах физики
Шрифт:
х . [ fх ] = f .
Сказанное выше требует определенного осмысления. Это одна из тех математических тонкостей, которые на первый взгляд кажутся настолько педантичными и тривиальными, что их смысл часто совершенно ускользает от понимания. Рассмотрим пример из знакомой всем школьной математики. Примем за f тригонометрическую функцию — синус угла. Тогда абстрактная функция «sin» будет определяться выражением
х . [ sin х ] = sin .
(Не
Тогда мы могли бы ввести определение
Можно было поступить еще проще и определить, например, операцию «одна шестая куба», для которой не существует стандартного «функционального» обозначения:
Тогда, например,
К обсуждаемым проблемам большее отношение имеют выражения, составленные просто из элементарных функциональных операций Черча, таких как
f.[f (fx)]
Это функция, которая, действуя на другую функцию, скажем g , дает дважды итерированную g , действующую на x
(f.[f (fx)])g = g(gx) .
Мы могли бы сначала «абстрагироваться» от x и рассмотреть выражение
f. [х. [f (fх)]] ,
которое можно сократить до
fx. [f (fx)] .
Это и есть операция, применение которой к g дает функцию «вторая итерация g ». По сути, это та самая функция, которую Черч обозначил номером 2 :
2 = fx.[f (fx)] ,
так что (2g) y = g (gy) . Аналогичным образом он определил:
3 = fx. [f (f (fx))] ,
4 = fх. [f (f (f (fx)))] , и т. д.,
а также
1 = fх. [fх] и 0 = fx.
[x] .
Видно, что 2 Черча больше похоже на «дважды», 3 — на «трижды» и т. д. Значит, действие 3 на функцию f , т. е. 3f равносильно операции «применить f три раза», поэтому 3f при
действии на у превращается в(3f)y = f (f (f (y))) –
Посмотрим, как в схеме Черча можно представить очень простую математическую операцию — прибавление 1 к некоторому числу. Определим операцию
S = abc. [b ((аb)с)] .
Чтобы убедиться, что S действительно прибавляет 1 к числу в обозначениях Черча, проверим ее действие на 3 :
поскольку (3b)с = b (b (bc)) . Очевидно, эта операция с таким же успехом может быть применена к любому другому натуральному числу Черча. (В действительности, операция
аbс. [(аb)(bс)] приводит к тому же результату, что и S .)
А как насчет удвоения числа? Удвоение числа может быть получено с помощью операции
что легко видеть на примере ее действия на 3 :
Фактически, основные арифметические операции — сложение, умножение и возведение в степень могут быть определены, соответственно, следующим образом:
А = fgxy. [((fx)(gx))y],
М = fgx. [f (gx)],
P = fg. [fg]
Читатель может самостоятельно убедиться (или же принять на веру), что
(Am) n = m + n ,
(Mm) n = m x n ,
(Pm) n = n m ,
где m и n — функции Черча для двух натуральных чисел, m + n — функция, выражающая их сумму, и т. д. Последняя из этих функций поражает больше всего. Посмотрим, например, что она дает в случае m = 2, n = 3 :
Операции вычитания и деления определяются не так легко (на самом деле нам потребуется соглашение о том, что делать с ( m — n ), когда m меньше n , и с ( m/n ), когда m не делится на n ). Решающий шаг в развитии этого метода был сделан в начале 1930-х годов, когда Клини удалось найти выражение для операции вычитания в рамках схемы Черча! Затем были описаны и другие операции. Наконец, в 1937 году Черч и Тьюринг независимо друг от друга показали, что всякая вычислимая (или алгоритмическая) операция — теперь уже в смысле машин Тьюринга — может быть получена в терминах одного из выражений Черча (и наоборот).