Сокращение лямбда-выражения до NF - PullRequest
0 голосов
/ 29 мая 2019

Мне нужно уменьшить следующие лямбда-выражения в обычную форму, используя нормальный порядок. Это мои сокращения, но они не имеют смысла для меня:

//First expression
(λf.λx.f(fx))(λy.+y1)(+ 2 3)
(λx.fx)(λy.+y1)(+ 2 3)
f(λy.+y1)(+ 2 3)
f(+(+ 2 3) 1)
f(+ 5 1)
f 6

//Second expression
λx. + ((λy.((λx.∗ xy) 2)) x) y)
+((λy.((λw.* wy) 2) w)
+((λw.* ww) 2)
+(* 2 2)
+ 4

Оба НФ, которые я получил, не имеют смысла. Вторая функция +, которая требует 2 переменные, но заканчивается только одной.

Буду признателен за любые предложения и исправления.

1 Ответ

0 голосов
/ 23 июня 2019

1.

//First expression
(λf.λx.f(fx))(λy.+y1)(+ 2 3)

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

2

//Second expression
λx. (+ ((λy.((λx.∗ xy) 2)) x) y)  

Чтобы уменьшить это начало, применив самый внутренний термин и переименовав последний y, вы получите:

λx. (+ ((λy.(∗ 2y)) x) w)

Тогда продолжайте:)

...