DennyQi's Log

03 λ-calculus的归约

在之前的讨论中,我们用等号==表示“可以演算得到”,并且规定等号具有自反、对称、传递的基本性质。这就意味着,我们不仅可以说(λx.xx)N(\lambda x.xx)N能演算得到NNNN,根据对称性也可以说NNNN能演算得到(λx.xx)N(\lambda x.xx)N。后者听上去很奇怪,因为与其说是“演算”,后者更像是一种“构造”。作为演算规则的β\beta-conversion事实上不应该具有对称性,因为它总是倾向于将λ\lambda-term“化简”。因此我们意识到,何为“化简”还没有得到严格的定义。我们应当严格定义一个集合Λ\Lambda上的二元关系,来描述“化简”。

归约(Reduction)

如果我们把α\alpha-equivalance看作语法上的设定(convention),也即我们总是避免局部变量与全局变量的重名,那么λ\lambda-calculus中唯一的演算规则就是λ\lambda-term整体的β\beta-conversion或某一局部的β\beta-conversion。我们定义符号β\rightarrow_\beta表示“单步β\beta-reduction”:

  • 对任意的λ\lambda-term M,NM,N和变量xx(λx.M)MβM[x:=N](\lambda x.M)M\rightarrow_\beta M[x:=N]
  • 对任意的λ\lambda-term M,N,ZM,N,Z,如果MβNM\rightarrow_\beta N,那么ZMβZNZM\rightarrow_\beta ZN
  • 对任意的λ\lambda-term M,N,ZM,N,Z,如果MβNM\rightarrow_\beta N,那么MZβNZMZ\rightarrow_\beta NZ
  • 对任意的λ\lambda-term M,NM,N和变量xx,如果MβNM\rightarrow_\beta N,那么λx.Mβλx.N\lambda x.M\rightarrow_\beta \lambda x.N

基于单步β\beta-reduction,可以定义多步β\beta-reduction(或简称β\beta-reduction),用符号β\twoheadrightarrow_\beta表示(多步包括0步):

  • 对任意的λ\lambda-term MMMβMM\twoheadrightarrow_\beta M;(0步)
  • 对任意的λ\lambda-term M,NM,N,如果MβNM\rightarrow_\beta N,那么MβNM\twoheadrightarrow_\beta N;(单步)
  • 对任意的λ\lambda-term M,N,LM,N,L,如果MβN,NβLM\twoheadrightarrow_\beta N,N\twoheadrightarrow_\beta L,那么MβLM\twoheadrightarrow_\beta L

多步β\beta-reduction满足自反和传递,而不满足对称。这样的关系称为congruence关系。

下面定义符号=β=_\beta,称为β\beta-conversion:

  • 对任意的λ\lambda-term M,NM,N,如果MβNM\twoheadrightarrow_\beta N,那么M=βNM=_\beta N
  • 对任意的λ\lambda-term M,NM,N,如果M=βNM =_\beta N,那么N=βMN=_\beta M;(单步)
  • 对任意的λ\lambda-term M,N,LM,N,L,如果M=βN,N=βLM=_\beta N,N=_\beta L,那么M=βLM=_\beta L

可以看到,β\beta-conversion满足自反、对称、传递,是Λ\Lambda上的等价关系。这其实就是原先“==”的含义,只不过原先我们把α\alpha-equivalence也看作演算。

下面的图片清晰展示了β\beta-reduction和β\beta-conversion之间的区别:图中一个箭头表示单步β\beta-reduction,同一直线上的箭头可以连成一个多步β\beta-reduction。而在忽略掉箭头的有向性只关注两个点之间的连通,就表示β\beta-conversion。

image-20250205014522060

Church-Rosser定理

每一步β\beta-reduction会消去一个形如(λx.M)N(\lambda x.M)N的subterm,所以随着β\beta-reduction的进行一个term中的λ\lambda会越来越少直到无法再进行任何β\beta-reduction。自然的问题是,在λ\lambda-calculus这个形式系统中,对于任何term,β\beta-reduction是否会在有限步内结束,如果采取不同的顺序做β\beta-reduction是否会导出唯一的“化简结果”?也就是我们要研究β\beta-reduction的性质。

人们发现,β\beta-reduction的性质很大程度上基于Church-Rosser定理。这个定理表述如下:对于λ\lambda-term M,N1,N2M,N_1,N_2,如果有MβN1,MβN2M\twoheadrightarrow_\beta N_1,M\twoheadrightarrow_\beta N_2,那么一定存在λ\lambda-term N3N_3满足N1βN3,N2βN3N_1\twoheadrightarrow_\beta N_3,N_2\twoheadrightarrow_\beta N_3。Church-Rosser定理可以用下面的图片清晰地展示:

image-20250205015736469

Church-Rosser定理的证明

为了方便讨论,我们把形如(λxM)N(\lambda x M)Nλ\lambda-term称为一个λ\lambda-redex(“形如”的意思是如果λ\lambda-term ZZ满足:存在λ\lambda-term M,NM,N使得Z(λxM)NZ\equiv (\lambda xM)N)。如果一个λ\lambda-term不存在任何λ\lambda-redex作为subterm就称它为一个β\beta-normal form(简称β\beta-nf)。

容易理解,一个λ\lambda-redex会被β\beta-reduction“化简”,而β\beta-normal form不能再继续化简。一个β\beta-nf已经是“最简式”了:如果MMβ\beta-nf,那么对任意NN,如果MβNM\twoheadrightarrow_\beta N,则MNM\equiv N(归纳证明:如果MNM\equiv N显然;MM走一个单步根据定义依然得到MM,因此根据归纳假设走剩余的步依然得到MM)。

(待续)

Church-Rosser定理的推论

根据Church-Rosser定理我们可以得到以下结论:如果M=βNM=_\beta N,那么存在LL满足MβL,NβLM\twoheadrightarrow_\beta L,N\twoheadrightarrow_\beta L

证明如下:依据=β=_\beta的定义归纳。若M=βNM=_\beta N是因为MβNM\twoheadrightarrow_\beta N,那么取LNL\equiv N即可;若M=βNM=_\beta N是因为N=βMN=_\beta M,那么由归纳假设可证;若M=βNM=_\beta N是因为存在NN'使得M=βN,N=βNM=_\beta N',N'=_\beta N,那么由归纳假设可以找到L1L_1满足MβL1,NβL1M\twoheadrightarrow_\beta L_1,N'\twoheadrightarrow_\beta L_1L2L_2满足NβL2,NβL2N'\twoheadrightarrow_\beta L_2,N\twoheadrightarrow_\beta L_2。根据NβL1,NβL2N'\twoheadrightarrow_\beta L_1,N'\twoheadrightarrow_\beta L_2,由Church Rosser定理可知存在LL满足L1βL,L2βLL_1\twoheadrightarrow_\beta L,L_2\twoheadrightarrow_\beta L。。因此MβL,NβLM\twoheadrightarrow_\beta L,N\twoheadrightarrow_\beta L。证毕。该证明可以由下面的图片清晰展示:

image-20250205022431151

下面我们证明,一个λ\lambda-term至多只能“化简”得到一个β\beta-nf:如果M=βN1,M=βN2M=_\beta N_1,M=_\beta N_2N1,N2N_1,N_2都是β\beta-nf,那么N1N2N_1\equiv N_2。证明:由β\beta-conversion的对称性与传递性可知N1=βN2N_1=_\beta N_2,那么由上面的推论可知存在LL使得N1βL,N2βLN_1\twoheadrightarrow_\beta L,N_2\twoheadrightarrow_\beta L。而N1,N2N_1,N_2β\beta-nf意味着它们已经是“最简式”,不能再由β\beta-reduction箭头向下到达一个与其不相同的term,因此N1L,N2LN_1\equiv L,N_2\equiv L,也即N1N2N_1\equiv N_2。证毕。

这样就回答了我们的问题,无论采取什么样的归约顺序我们都会得到一个唯一的最简式。如果两个λ\lambda-term之间能够做β\beta-conversion(=β=_\beta),那么它们最终能β\beta-reduce到同一个β\beta-nf(根据上面的推论它们能归约到同一个term,这个term会被reduce到一个唯一的β\beta-nf)。

从逻辑系统的角度看,这还能用来说明λ\lambda-calculus是一个一致(consistent)的系统:证明一致性,只需证明该系统存在一个无法证明的命题。由于存在不同的两个β\beta-nf,比如真和假,λxy.x\lambda xy.xλxy.y\lambda xy.y,一定有λxy.x̸=βλxy.y\lambda xy.x\not=_\beta \lambda xy.y。否则它们能reduce到同一个β\beta-nf,矛盾。

Normalization Theorem

然而,一个λ\lambda-term的β\beta-reduction有可能是不终止的(无穷次reduce)。仿照不动点定理的构造,可以令Ω=(λx.xx)(λx.xx)\Omega=(\lambda x.xx)(\lambda x.xx),我们有ΩβΩ\Omega\rightarrow_\beta \Omega,而Ω\Omega按照定义并不是一个β\beta-nf,因此Ω\Omega无法reduce到某个β\beta-nf。

另一方面,每一步选择哪一个subterm做β\beta-reduction是一个关键的问题。存在这样的情况,如果按照某一策略归约会无穷进行下去,而按照另一策略却是有穷的。例如,考虑KIΩ(λxy.x)(λx.x)((λx.xx)(λx.xx))\textsf{KI}\Omega\equiv (\lambda xy.x)(\lambda x.x)((\lambda x.xx)(\lambda x.xx))。如果选择归约K\textsf{K},那么我们将一步得到KIΩβI\textsf{KI}\Omega\rightarrow_\beta \textsf{I};如果选择归约Ω\Omega,那么KIΩβKIΩ\textsf{KI}\Omega\rightarrow_\beta \textsf{KI}\Omega,归约会无穷进行下去。所以在寻找β\beta-nf时选择一个恰当的顺序是重要的,这通常称为归约的strategy(策略)。

可以证明,对于λ\lambda-term MM,如果存在β\beta-nf NN满足M=βNM=_\beta N,那么只需在每一步都选择对最左侧的β\beta-redex做归约就可以由MM归约得到NN。这称为Normalization Theorem(归一化定理)。(证明略)。我们因此把λ\lambda-term的最左归约称为normalizing。