使用beta减少查找正常形式

时间:2013-02-24 22:50:34

标签: lambda lambda-calculus

给出以下表达式:

((λx.λx.xx) (λx.xzx)) (λy.yy)

我希望使用beta缩减找到它的正常形式。

我的计算:

((λx.λx.xx) (λx.xzx)) (λy.yy) ->
((λx.xzx)(λx.xzx)) (λy.yy) -> ((λx.xzx)z(λx.xzx)) (λy.yy) ->
(zzz (λx.xzx)) (λy.yy) -> ?

但我怎么能从这里继续:

(zzz (λx.xzx)) (λy.yy) -> ?

谢谢

1 个答案:

答案 0 :(得分:1)

使用\代表λ

((\x.\x.xx) (\x.xzx)) (\y.yy) =
= ((*\x*.\x.xx) *(\x.xzx)*) (\y.yy) =
= (\x.( (\x.xzx) (\x.xzx) )) (\y.yy) =
= (\x.( (*\x*.xzx) *(\x.xzx)* )) (\y.yy) =
= (\x.( (\x.xzx) z (\x.xzx) )) (\y.yy) =
= (\x.( ( (\x.xzx) z) (\x.xzx) )) (\y.yy) =
= (\x.( ( (*\x*.xzx) *z*) (\x.xzx) )) (\y.yy) =
= (\x.( ( (zzz) (\x.xzx) ) (\y.yy) =
= (*\x*.( ( (zzz) *(\x.xzx)* ) (\y.yy) =
= (zzz) (\x.( (\y.yy) z (\y.yy) )) =
= (zzz) (\x.( ((\y.yy) z) (\y.yy) )) =
= (zzz) (\x.( ((*\y*.yy) *z*) (\y.yy) )) =
= (zzz) (\x.( (zz) (\y.yy) )) =
= (zzz) (\x.(zz)(\y.yy))

此处没有其他应用程序 - 至少,只要您没有z的定义。

另请注意,最终扩展中存在x定义,您可能在计算过程中将其抑制。

所有变量(λxλx .xx)在表达式中有共同之处:

((*λx*.*λx*.xx) (λx.xzx)) (λy.yy)

是他们的名字。尽管如此,它们仍然是不同的变量。

相关问题