TRUE =λxy。 x
FALSE =λxy。 y
IF =λbtf。 b t f
AND =λxy。如果x y为假
OR =λxy。如果x是y
NOT =λx。如果x假为真
如何使用lambda演算来beta减少表达式或FALSE TRUE?我不确定从哪里开始。我的讲师没有通过。这是我的尝试
(\xy.IF x TRUE y)(\xy.y)(\xy.x)
= (\xy.IF x TRUE y)[x := (\xy.y))(\xy.x)
= (\y. IF (\xy.y) TRUE y)(\xy.x)
= (IF (\xy.y) TRUE y)[y := (\xy.x))
= IF (\xy.y) TRUE (\xy.x)
答案 0 :(得分:1)
在使用Church-encodings时,我认为最好保持尽可能抽象,即,您不应该展开TRUE
,FALSE
,IF
和{{1 }}渴望,但只有在需要的时候。
相反,您首先想证明有关其行为的基本结果,这也有助于进行健全性检查。
对于NOT
,您要检查IF
和IF TRUE t f = t
。
IF FALSE t f = f
与IF TRUE t f = TRUE t f (IF returns its arguments directly)
= t (TRUE returns its first argument)
相同。
现在
IF FALSE
并且通过应用您已经证明的身份,您应该可以得出结论。