在之前的讨论中,我们用等号=表示“可以演算得到”,并且规定等号具有自反、对称、传递的基本性质。这就意味着,我们不仅可以说(λx.xx)N能演算得到NN,根据对称性也可以说NN能演算得到(λx.xx)N。后者听上去很奇怪,因为与其说是“演算”,后者更像是一种“构造”。作为演算规则的β-conversion事实上不应该具有对称性,因为它总是倾向于将λ-term“化简”。因此我们意识到,何为“化简”还没有得到严格的定义。我们应当严格定义一个集合Λ上的二元关系,来描述“化简”。
归约(Reduction)
如果我们把α-equivalance看作语法上的设定(convention),也即我们总是避免局部变量与全局变量的重名,那么λ-calculus中唯一的演算规则就是λ-term整体的β-conversion或某一局部的β-conversion。我们定义符号→β表示“单步β-reduction”:
- 对任意的λ-term M,N和变量x,(λx.M)M→βM[x:=N];
- 对任意的λ-term M,N,Z,如果M→βN,那么ZM→βZN;
- 对任意的λ-term M,N,Z,如果M→βN,那么MZ→βNZ;
- 对任意的λ-term M,N和变量x,如果M→βN,那么λx.M→βλx.N;
基于单步β-reduction,可以定义多步β-reduction(或简称β-reduction),用符号↠β表示(多步包括0步):
- 对任意的λ-term M,M↠βM;(0步)
- 对任意的λ-term M,N,如果M→βN,那么M↠βN;(单步)
- 对任意的λ-term M,N,L,如果M↠βN,N↠βL,那么M↠βL;
多步β-reduction满足自反和传递,而不满足对称。这样的关系称为congruence关系。
下面定义符号=β,称为β-conversion:
- 对任意的λ-term M,N,如果M↠βN,那么M=βN;
- 对任意的λ-term M,N,如果M=βN,那么N=βM;(单步)
- 对任意的λ-term M,N,L,如果M=βN,N=βL,那么M=βL;
可以看到,β-conversion满足自反、对称、传递,是Λ上的等价关系。这其实就是原先“=”的含义,只不过原先我们把α-equivalence也看作演算。
下面的图片清晰展示了β-reduction和β-conversion之间的区别:图中一个箭头表示单步β-reduction,同一直线上的箭头可以连成一个多步β-reduction。而在忽略掉箭头的有向性只关注两个点之间的连通,就表示β-conversion。
Church-Rosser定理
每一步β-reduction会消去一个形如(λx.M)N的subterm,所以随着β-reduction的进行一个term中的λ会越来越少直到无法再进行任何β-reduction。自然的问题是,在λ-calculus这个形式系统中,对于任何term,β-reduction是否会在有限步内结束,如果采取不同的顺序做β-reduction是否会导出唯一的“化简结果”?也就是我们要研究β-reduction的性质。
人们发现,β-reduction的性质很大程度上基于Church-Rosser定理。这个定理表述如下:对于λ-term M,N1,N2,如果有M↠βN1,M↠βN2,那么一定存在λ-term N3满足N1↠βN3,N2↠βN3。Church-Rosser定理可以用下面的图片清晰地展示:
Church-Rosser定理的证明
为了方便讨论,我们把形如(λxM)N的λ-term称为一个λ-redex(“形如”的意思是如果λ-term Z满足:存在λ-term M,N使得Z≡(λxM)N)。如果一个λ-term不存在任何λ-redex作为subterm就称它为一个β-normal form(简称β-nf)。
容易理解,一个λ-redex会被β-reduction“化简”,而β-normal form不能再继续化简。一个β-nf已经是“最简式”了:如果M是β-nf,那么对任意N,如果M↠βN,则M≡N(归纳证明:如果M≡N显然;M走一个单步根据定义依然得到M,因此根据归纳假设走剩余的步依然得到M)。
(待续)
Church-Rosser定理的推论
根据Church-Rosser定理我们可以得到以下结论:如果M=βN,那么存在L满足M↠βL,N↠βL。
证明如下:依据=β的定义归纳。若M=βN是因为M↠βN,那么取L≡N即可;若M=βN是因为N=βM,那么由归纳假设可证;若M=βN是因为存在N′使得M=βN′,N′=βN,那么由归纳假设可以找到L1满足M↠βL1,N′↠βL1,L2满足N′↠βL2,N↠βL2。根据N′↠βL1,N′↠βL2,由Church Rosser定理可知存在L满足L1↠βL,L2↠βL。。因此M↠βL,N↠βL。证毕。该证明可以由下面的图片清晰展示:
下面我们证明,一个λ-term至多只能“化简”得到一个β-nf:如果M=βN1,M=βN2且N1,N2都是β-nf,那么N1≡N2。证明:由β-conversion的对称性与传递性可知N1=βN2,那么由上面的推论可知存在L使得N1↠βL,N2↠βL。而N1,N2是β-nf意味着它们已经是“最简式”,不能再由β-reduction箭头向下到达一个与其不相同的term,因此N1≡L,N2≡L,也即N1≡N2。证毕。
这样就回答了我们的问题,无论采取什么样的归约顺序我们都会得到一个唯一的最简式。如果两个λ-term之间能够做β-conversion(=β),那么它们最终能β-reduce到同一个β-nf(根据上面的推论它们能归约到同一个term,这个term会被reduce到一个唯一的β-nf)。
从逻辑系统的角度看,这还能用来说明λ-calculus是一个一致(consistent)的系统:证明一致性,只需证明该系统存在一个无法证明的命题。由于存在不同的两个β-nf,比如真和假,λxy.x和λxy.y,一定有λxy.x=βλxy.y。否则它们能reduce到同一个β-nf,矛盾。
Normalization Theorem
然而,一个λ-term的β-reduction有可能是不终止的(无穷次reduce)。仿照不动点定理的构造,可以令Ω=(λx.xx)(λx.xx),我们有Ω→βΩ,而Ω按照定义并不是一个β-nf,因此Ω无法reduce到某个β-nf。
另一方面,每一步选择哪一个subterm做β-reduction是一个关键的问题。存在这样的情况,如果按照某一策略归约会无穷进行下去,而按照另一策略却是有穷的。例如,考虑KIΩ≡(λxy.x)(λx.x)((λx.xx)(λx.xx))。如果选择归约K,那么我们将一步得到KIΩ→βI;如果选择归约Ω,那么KIΩ→βKIΩ,归约会无穷进行下去。所以在寻找β-nf时选择一个恰当的顺序是重要的,这通常称为归约的strategy(策略)。
可以证明,对于λ-term M,如果存在β-nf N满足M=βN,那么只需在每一步都选择对最左侧的β-redex做归约就可以由M归约得到N。这称为Normalization Theorem(归一化定理)。(证明略)。我们因此把λ-term的最左归约称为normalizing。