证明SKK和II是β等价的,lambda演算

时间:2011-04-26 01:45:33

标签: functional-programming lambda-calculus proof-of-correctness k-combinator s-combinator

我是lambda演算的新手并努力证明以下内容。

SKK和II是等效的。

,其中

S = lambda xyz.xz(yz) K = lambda xy.x I = lambda x.x

我尝试通过打开它来测试减少SKK,但无处可去,它变得凌乱。不要认为SKK可以在不扩大S,K的情况下进一步减少。

2 个答案:

答案 0 :(得分:5)

  SKK
= (λxyz.xz(yz))KK
→ λz.Kz(Kz)        (in two steps actually, for the two parameters)

  Kz
= (λxy.x)z
→ λy.z

  λz.Kz(Kz)
→ λz.(λy.z)(λy.z)  (again, several steps)
→ λz.z
= I

(您应该能够证明II → I

答案 1 :(得分:3)

;采用更少步骤的另一种方法,首先将SK减少到λyz.z;

SKK
= (λxyz.xz(yz))KK
→ λyz.Kz(yz) K
→ λyz.(λxy.x)z(yz) K
→ λyz.(λy.z)(yz) K
→ λyz.z K
→ λz.z
= I