Карта → событие

Принстон «An unsolvable problem…» — апрель 1936, «A note on the Entscheidungsproblem» — 1936

Чёрч: вычисление как подстановка

Математическая логика Мечта Лейбница

Язык из трёх строчек

Около 1932 года Алонзо Чёрч, тридцатилетний преподаватель Принстона, строит формальную систему для оснований математики. Основаниями она не стала — в 1935 году его ученики Клини и Россер доказали, что система противоречива. Но внутри неё был кусок, который выжил и оказался важнее целого.

Число как счётчик повторов: нумералы Чёрча и вычисление 1 + 1 подстановкойнумералы: число — это счётчик повторов
$\bar{0} = \lambda f.\lambda x.\,x$
0 раз
$\bar{1} = \lambda f.\lambda x.\,f\,(x)$
1 раз
$\bar{2} = \lambda f.\lambda x.\,f\,(f\,(x))$
2 раза
$\bar{3} = \lambda f.\lambda x.\,f\,(f\,(f\,(x)))$
3 разасложение — «повторить, потом ещё раз»
$\mathrm{plus} = \lambda m.\lambda n.\lambda f.\lambda x.\; m\,f\,(n\,f\,x)$
и тогда 1 + 1 приводится в две подстановки:
$\mathrm{plus}\ \bar{1}\ \bar{1} \;\to\; \lambda f.\lambda x.\ f\,(f\,x) \;=\; \bar{2}$
Ни чисел, ни сложения в языке нет — есть функции и подстановка. Этого хватает на всю арифметику.Из этого языка выросли LISP, Haskell и системы проверки доказательств.
Нумералы Чёрча — счётчики повторов; «единица плюс единица» приводится к двойке одной подстановкойMathLocus · построено для этого сайта

Это $\lambda$-исчисление, и его грамматика умещается в три строки. Выражение — это:

Правило вычисления одно, называется $\beta$-редукцией:

$$(\lambda x.\,M)\,N \;\longrightarrow\; M[x := N]$$

— «применили функцию к аргументу — подставьте аргумент вместо переменной». Всё. Ни чисел, ни сложения, ни условных операторов, ни памяти. Только функции и подстановка.

Замечательно, что этого хватает.

Как в этом языке появляются числа

Числа не постулируются, а строятся. Число $n$ — это «применить функцию $n$ раз»:

$$\bar 0 = \lambda f.\lambda x.\,x, \qquad \bar 1 = \lambda f.\lambda x.\,f\,x, \qquad \bar 2 = \lambda f.\lambda x.\,f\,(f\,x), \qquad \bar 3 = \lambda f.\lambda x.\,f\,(f\,(f\,x)).$$

Это нумералы Чёрча. Сложение теперь — «примени $f$ сперва $n$ раз, потом ещё $m$ раз»:

$$\mathrm{plus} = \lambda m.\lambda n.\lambda f.\lambda x.\; m\,f\,(n\,f\,x).$$

Проверим на $\bar 1 + \bar 1$. Подставляем и редуцируем:

$$\mathrm{plus}\ \bar1\ \bar1 \;\to\; \lambda f.\lambda x.\ \bar1\,f\,(\bar1\,f\,x) \;\to\; \lambda f.\lambda x.\ f\,(f\,x) \;=\; \bar 2 .$$

Три подстановки — и «$1+1=2$» доказано. Расселу и Уайтхеду на это потребовалось полтора тома; правда, они доказывали другое утверждение и в другой системе.

Умножение выходит ещё короче: $\mathrm{mult} = \lambda m.\lambda n.\lambda f.\ m\,(n\,f)$. Логические значения, пары, списки, рекурсия — всё строится тем же способом, из ничего.

Ответ ГильбертуДавид Гильбертнемецкий математик · 1862–1943Человек, сделавший Гёттинген столицей математики и задавший ей повестку на весь XX век — двадцатью тремя проблемами и одной программой, которую сам же и не смог спасти.

Дальше Чёрч делает три шага.

Определение. Функция называется $\lambda$-определимой, если её можно записать $\lambda$-выражением, работающим на нумералах. Тезис Чёрча: $\lambda$-определимость — это и есть «вычислимость» в интуитивном смысле.

Совпадение. Клини доказывает: класс $\lambda$-определимых функций в точности совпадает с классом общерекурсивных функций, введённых Гёделем и Эрбраном по совершенно другим соображениям. Два независимых определения дали одно и то же — довод в пользу того, что пойман правильный класс.

Неразрешимость. В статье «Неразрешимая задача элементарной теории чисел» (апрель 1936) Чёрч показывает: нет алгоритма, который по двум $\lambda$-выражениям определяет, приводятся ли они к одному виду. А в короткой заметке того же года — «A note on the Entscheidungsproblem» — выводит отсюда главное следствие:

Проблема разрешения Гильберта неразрешима. Нет процедуры, которая по любой формуле логики первого порядка отвечает, доказуема ли она.

Это первый по времени ответ на Entscheidungsproblem, и он опередил ТьюрингаАлан Тьюринганглийский математик и криптоаналитик · 1912–1954Определил, что значит «вычислить», за десять лет до появления компьютеров, взломал «Энигму» и был осуждён за то, кем он был. примерно на семь месяцев.

Почему помнят Тьюринга

И всё же в учебниках стоит машина, а не $\lambda$-выражение. Причина не в несправедливости.

Чёрч предложил определение и подкрепил его совпадением с рекурсивными функциями. Тьюринг обосновал своё — разбором того, что вообще может делать человек, производящий вычисление. Первое убеждает математика, второе убеждает всякого.

Показателен свидетель. ГёдельКурт Гёдельавстрийский и американский логик · 1906–1978Доказал, что в любой достаточно богатой формальной системе есть истинные утверждения, которые она не может доказать, — и тем закрыл программу Гильберта в двадцать пять лет., которому в 1934 году Чёрч изложил своё определение, счёл его совершенно неудовлетворительным: почему именно эти правила, а не другие? После работы Тьюринга Гёдель переменил мнение и писал, что понятие вычислимости стало абсолютным именно благодаря анализу Тьюринга.

Сам Тьюринг, узнав о работе Чёрча, когда своя статья была уже закончена, дописал приложение с доказательством эквивалентности обоих подходов — и осенью 1936 года приехал в Принстон, где написал под руководством Чёрча диссертацию об ординальных логиках (1938).

Отсюда и двойное имя — тезис Чёрча — Тьюринга.

Что из этого выросло

Судьба $\lambda$-исчисления оказалась удивительнее судьбы машины Тьюринга. Машина осталась инструментом теории. $\lambda$-исчисление стало языком программирования — и не одним.

Алонзо Чёрч (1903–1995) проработал в Принстоне тридцать девять лет, основал в 1936 году «Journal of Symbolic Logic» и редактировал его сорок лет. У него был тридцать один аспирант, среди них Тьюринг, Клини, Россер, Дейна Скотт, Майкл Рабин, Мартин Дэвис, Рэймонд Смаллиан. Логику второй половины XX века делали в основном его ученики и ученики его учеников.

Для класса

Проверьте вычислением, что $\mathrm{mult} = \lambda m.\lambda n.\lambda f.\ m\,(n\,f)$ действительно умножает: приведите $\mathrm{mult}\ \bar2\ \bar3$ к нумералу.

(Ответ: $\mathrm{mult}\ \bar2\ \bar3 \to \lambda f.\ \bar2\,(\bar3\,f)$. Внутри $\bar 3\,f$ — это «применить $f$ трижды»; $\bar 2$ применяет свой аргумент дважды, значит получаем «применить трижды, потом ещё трижды» — то есть $\lambda f.\lambda x.\ f^6(x) = \bar 6$. Идея всей конструкции: число — это счётчик повторов, умножение — повтор повторов.)

Следующая точка: Кембридж — где то же самое получат, разобрав по косточкам человека с карандашом.

Открыть на карте