我从书中读到,教会数字的继承者的形式如下: (\ lambda n f x。f(n f x))
昨晚我想出了这个: (\ lambda a b c。(a b)(b c))
我相信它还可以执行后继功能。但是,我并非100%肯定我的减少是正确的。有人可以检查并告诉我吗?
以下是我的缩减:让教会数字为(\ lambda f x。f ^ nx),其中f ^ nx实际上是(f(f(f ...(x))的短版本)..它代表数字n。预期结果应为n + 1,即(\ lambda f x。f ^ {n + 1} x)
(\ lambda a b c。(a b)(b c))(\ lambda f x。f ^ n x)
=(\ lambda b c。((\ lambda f x。f ^ n x)b)(b c))//更换
=(\ lambda b c。((\ lambda x。b ^ n x)(b c))// f被替换
=(\ lambda b c。((\ lambda x。b ^ n x)(b c))//不是100%肯定,我可以用(b c)替换x吗?
=(\ lambda b c。(b ^ n(b c))
=(\ lambda b c。(b ^(n + 1)c)
这种减少是否正确,特别是从第3步到第4步? 谢谢!
答案 0 :(得分:1)
是的,这是正确的。将b c
替换为x
没有问题。见the substitution rule。虽然b
和c
受到约束,但它们会受到相关术语的约束,因此它们在两个地方具有相同的含义。
答案 1 :(得分:0)
理解后继函数的两个定义的方法是从总和开始:
plus = \n,m,x,y. n x (m x y)
然后我们可以定义
succ1 = \n. plus one n
succ2 = \n. plus n one
其中one = \x,y.x y
简化这两个术语,我们得到
succ1 = \n,x,y. one x (n x y)
= \n,x,y. x (n x y)
succ2 = \n,x,y. n x (one x y)
= \n,x,y. n x (x y)