Как именно лямбда-исчисление охватывает интуитивное понятие вычислимости?

12

Я пытался обернуть голову вокруг того, что, почему и как вычислить, но я не могу понять, «почему это работает»?λ

«Интуитивно» я получаю модель вычислимости машин Тьюринга (ТМ). Но эта абстракция просто оставляет меня в замешательстве.λ

Давайте предположим, что ТМ не существуют - тогда как можно «интуитивно» убедиться в способности калькулятора уловить это понятие вычислимости. Как наличие множества функций для всего и их сочетаемость подразумевают вычислимость? Что мне здесь не хватает? Я читал статью Алонзо Черча об этом, но я все еще в замешательстве и ищу более «тупое» понимание того же самого.λ

кандидат наук
источник
У вас есть такая же проблема с переписыванием систем и грамматик? В лямбда-исчислении основные операции довольно просты: абстракция функции, применение функции путем подстановки и вычисление - это бета-нормализация. Другими словами, я не вижу, в чем ваша проблема с разумной моделью вычислений.
Каве
2
Я не видел ни у кого сомнений в том, что функции, определяемые лямбда-исчислением, вычислимы. Исторически вопрос заключался в том, являются ли это единственными интуитивно вычислимыми функциями, что совершенно не похоже на то, что вы задаете.
Каве
1
Одной вещью, которая мне показалась полезной, была книга Раймонда Смалляна «Насмехаться над пересмешником», которая заменяет функции птицами в волшебном лесу (и это хорошо читается)
dspyz
1
Книга Smullyans о комбинаторной логике
Trismegistos

Ответы:

21

λ

λλ

Андрей Бауэр
источник
4
Если огнехождение так же весело, как вы говорите, тогда я должен попробовать.
Раду GRIGore
Андрей, ты знаешь какую-нибудь ссылку на них? Годель не воспринимал модель Чруха как захват всех коммутируемых функций, но я не помню, чтобы где-нибудь видел, что он критиковал модель гораздо дальше, чем это. Насколько я знаю, его критика модели церковного исчисления лямбад соответствовала его критике его собственных общерекурсивных функций Годеля-Хербранда.
Каве
3
Я думаю, что вы хотите, чтобы К. Годел: «Несколько замечаний о результатах неразрешимости», В Соломон Феферман, Джон Доусон и Стивен Клин (ред.), Курт Гедель: Собрание сочинений Vol. Ii. Издательство Оксфордского университета. 305-306 (1972). Смотрите books.google.si/…
Андрей Бауэр
6

Вы программируете это! Посмотрите на церковные кодировки . Вы можете видеть, как практически вся арифметика может быть выполнена, что, вероятно, должно убедить вас, что она чрезвычайно мощная. Однако мне нравится смотреть на операции со списками. Вы можете определить практически любую структуру данных в терминах функции, которая выполняет самую важную операцию над ней.

Например, кодировка списка - это функция свертывания, которая сворачивает его. Обратите внимание, что это не кодировка Черча, а та, которую я получил от типов Перси и языков программирования. Парные кодировки Черча не дают нам рекурсии, мы должны добавить это обратно в себя с помощью своего рода комбинатора рекурсии.

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

cons x xs = lam f. lam a. f x (xs f a)
nil       = lam f. lam a. a

теперь мы можем определить суммирование с помощью функции добавления (см. церковные кодировки сверху)

sum xs = xs add 0

мы можем сделать больше и определить функцию карты

consApply f x xs = cons (f x) xs
map f xs = xs (consApply f) nil

если вы все еще не уверены в том, что здесь происходят вычисления, и хотите убедиться, что вы можете выполнить любое вычисление, то посмотрите комбинатор с фиксированной точкой . Однако иногда мне больно думать об этом, поэтому я не уверен, что назвал бы это интуитивным, но если вы оцените это вручную с некоторыми аргументами, вы сможете увидеть, что происходит.

Джейк
источник