Бета-редукция лямбда-исчисления

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

(λx λy . y x) z

Мне просто нужно понять, с чего начать, потому что я совершенно потерян.


person user2243435    schedule 04.04.2013    source источник


Ответы (2)


Это лямбда-выражение синтаксически неверно, я думаю, вы хотели написать:

(λx.λy.y x) z 

Or

(λxy.y x) z

Это важно, потому что допустимое лямбда-выражение имеет форму λx.M, а не λx M, или, используя синтаксический сахар, вы можете написать λxy.M, но не λxλy.M, и это (λx.λy.yx) сбивает с толку, потому что кажется как приложение.

Я уменьшу и (λx.λy.y x) z, и (λx.λy.yx) z

1) (λx.λy.y x) z
2) уменьшите (λx.λy.y x), применив x к λx.λy.y, таким образом, (λx.λy.y x) z уменьшится до λy.y z 3) уменьшите λy.y z, применив z к λy.y z, результатом будет z.

И если вы имеете в виду (λx.λy.yx) г

1) (λx.λy.yx) z 2) λx.(λy.yx) z 3) Применить z к первой абстракции: λy.yz 4) Ничто другое, чтобы уменьшить результат: λy.yz

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

Также на ранних этапах лучше использовать () и всегда писать лямбда-выражения в расширенном виде, так вы будете делать меньше ошибок.

person fsvieira    schedule 20.06.2013

Ваше лямбда-выражение может принимать два входных параметра, но получает только один вход, z. Следовательно, это приводит к частичному применению.

В вашем случае это означает, что параметру x присваивается значение z. Таким образом, все вхождения x в этом выражении заменяются на z. Однако параметру y не присваивается никакого значения, так как не осталось никаких входных данных, поэтому параметр y остается связанным.

λy.yz — правильный ответ, как сказал fsvieira.

person bookmonkie    schedule 18.03.2014