Что такое λ-исчисление по существу?


11

У меня есть то, что я бы назвал философским вопросом о λ-исчислении.

Когда вы изучите λ-исчисление, вы будете удивлены, увидев все, что вы можете сделать там. Вы можете определять целые числа, арифметические операции, логические значения, операторы if-then-else, циклы, рекурсивные функции и т. Д. Я считаю, что это было доказано в вычислительном отношении завершено.

Но с другой стороны, если вы подумаете о том, что вы можете делать с функциями в λ-исчислении, вы поймете, что единственное, что вы можете сделать, - это передать ему функцию, и она вернет другую функцию. И этот процесс никогда не заканчивается.

Итак, как вы можете извлечь результат из вычислений?

Предположим, что результатом выражения является функция f. Вы хотите проверить, fявляется ли то, что вы ожидали. Вы можете проверить это, взять функцию, которую вы знаете, применить fк ней и получить g. Но чтобы проверить gправильность, теперь вам нужно проверить, что gделает. И вы начинаете все сначала. Так как вы можете рассказать что-нибудь о f?

Мне кажется, что вы можете заменить все функции в λ-исчислении одной функцией - функцией тождества I = λx.x, и все будет работать, как описано в λ-исчислении. Церковная цифра, 3когда дано fи xвозвращается f(f(f(x))). Но поскольку fи xможет быть только так I, то возвращается I. Iприменяется Iи Iтакже возвращает I. Так что Iудовлетворяет определению 3. «Булевы значения» (λxy.x)и (λxy.y)нужно 2 аргумента, которые будут, Iи Iпоэтому оба булевых значения вернутся I. Каждый эквивалент идентичности, даже если они ведут себя точно в соответствии с их определениями.

Так как ты делаешь разницу? Как вы показываете, что λ-исчисление имеет дело не только с одной функцией?

Есть ли концепция идентичности? Можете ли вы определить функцию сразу, не оценив ее? Я считаю, что было доказано, что нет способа проверить 2 функции на равенство.

Или λ-исчисление не о функциях, а о формальном описании того, что они делают? Это означало бы, что выражения λ не только определяют, что делают функции, но также являются данными, которыми функции манипулируют. Поэтому , когда вы пишете A B, не применяется Aк B, но вы применяете функцию , описанная в строке Aдля формального определения функции , содержащейся в Bвозвращая формальное определение.

Что на самом деле происходит в λ-исчислении? С какими математическими объектами он имеет дело?


Следовать за:

Итак, из приведенного ниже ответа кажется, что λ-исчисление не столько о функциях в математическом смысле, сколько о подмножестве функций, которые могут быть выражены в виде выражений λ. Или даже больше о манипуляции выражениями.


2
Не могли бы вы перефразировать последний вопрос к чему-то менее ориентированному на мнение? На это должен быть твердый неумышленный ответ.
Теластин

Из моего образования λ-исчисление существует исключительно для того, чтобы причинить боль моему мозгу. Я до сих пор не уверен, как я прошел через этот класс нетронутым.

Ответы:


9

Действительно, невозможно определить семантическую эквивалентность терминов лямбда-исчисления. Это одно из применений теоремы Райс. Однако синтаксически легко сравнивать термины , то есть проверять, имеют ли они точно такую ​​же структуру (эквивалентно, если их «строковое представление» одинаково). Это действительно все, что вам нужно, чтобы получить результаты.

Например, чтобы вычислить функции n = f(i)от натуральных чисел до натуральных, вы предоставляете кодировку церкви iкак параметр для своей функции лямбда-исчисления, применяете правила сокращения до тех пор, пока не остановитесь, и не проверяете полученный термин. Если оно соответствует структуре церковных цифр, извлеките число, nкоторое оно кодирует. Это твой результат. Если полученный термин не похож на церковную цифру или сокращение не останавливается, функция не определена i.

Термины эффективно вытягивают двойную обязанность как «код» и «данные». В этом нет ничего особенного: лента машины Тьюринга (строка над некоторым алфавитом) может - и часто - интерпретируется как кодировка машины Тьюринга или некоторого ее аспекта. Аналогично, биты в основной памяти машины фон Неймана могут быть либо кодировкой программы, либо кодировкой чего-то другого. Или даже оба сразу. Отличается только «перспектива по умолчанию».


Будет ли выражение результата вычисления с использованием церковных чисел всегда принимать каноническую форму, например (λfx.f (f (fx)))? Или вы можете получить разные эквивалентные выражения одной и той же цифры?
Флориан Ф

@FlorianF Я почти уверен, что есть такие неканонические (с точностью до альфа-эквивалентности) термины, но если это так, их можно избежать путем тщательного конструирования программы.
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.