《计算模型导引》(2019)课后习题答案(三):λ-演算

个人答案,仅供参考。

查看全部

页面含有超多数学公式,打开后需要等待很长时间才能彻底完成渲染和排版,尤其是移动设备。

3.1 证明括号引理:对于任何MΛ,在M中出现的左括号个数等于在M中出现的右括号个数。

证明:l(M)表示M的左括号数目,r(M)M的右括号数,以下即证l(M)=r(M)

只需对M的结构做归纳:

  • M=xl(M)=0=r(M)
  • M=(N1N2)l(M)=1+l(N1)+l(N2)=1+r(N1)+r(N2)=r(M)
  • M=λx.Nl(M)=l(N)=r(N)=r(M)

3.2 试求SSSSβ-nf

解: 为了使得λ-项与变量间能互相区分,下文约定可以对其添加下标作为记号,如λxiyizi.xizi(yizi)

S1S2=β(λx1y1z1.x1z1(y1z1))S2=βλy1z1.S2z1(y1z1)=βλy1z1.((λx2y2z2.x2z2(y2z2))z1(y1z1))=βλy1z1.(λz2.z1z2(y1z1z2))=βλy1z1z2.z1z2(y1z1z2)

可记S=SS=λxyz.yz(xyz),且S1S2S3S4=βS2S4(S3S4),所以SSSS=βS(S)

SSSS=βS1(S2)=β(λx1y1z1.y1z1(x1y1z1))S2=βλy1z1.y1z1(S2y1z1)=βλy1z1.y1z1((λx2y2z2.y2z2(x2y2z2))y1z1)=βλy1z1.y1z1(λz2.z1z2(y1z1z2))

所以SSSS=βλxy.xy(λz.yz(xyz))

3.3 证明:(λx.xxx)(λx.xxx)没有β-nf

证明:简记t=λx.xxx

ttα(λx.xxx)t=βtttα(λx.xxx)tt=βtttt=β

其具有唯一的β归约分支:无穷β-化归链。

3.4FΛ呈形λx.M,证明:

(1)λz.Fz=βF

(2)λz.yzβy

注意,对于一般的Fλz.FzβF,但λz.Fz=ηF

证明: (1)λz.Fzλz.(λx.M)z=βλz.M[x:=z]αλx.MFλz.Fz=βF

(2)反证法,假设λz.yz=βy,不妨取y,z,此时yz就不能进行归约,并且λz.yzβ-nf,yβ-nf,由命题3.14定理3.20

TΛ,yβTλz.yzβTTΛ,yTλz.yzTyλz.yzyλz.yzy

λz.yz的事实矛盾。

3.5 证明二元不动点定理:对于任何F,GΛ,存在X,YΛ,满足

FXY=X,GXY=Y.

证明: 存在组合子YΛ可以使得MΛ,M(YM)=YM

Y=Y(GX)即可保证GXY=Y

然后第一个公式可写为FX(Y(GX))=X,取X=Y(λx.Fx(Y(Gx)))即可。

3.6 证明:对任何M,NΛ,方程xN=Mx对于x有解。

证明:x=λr.R,其中RΛ,则xN(λr.R)N=βR

原命题转化为R=M(λr.R)有解,直接由不动点定理得,取R=Y(λs.M(λr.s)),其中YΛ为不动点组合子。

并且Y,MΛ,所以RΛ验证通过。

因此,x=λt.Y(λs.M(λr.s))便是方程解。

3.7 证明:对于任意的P,QΛ,若PβQ,则存在n0以及P0,,PnΛ,满足

(1)PP0

(2)QPn

(3)对任何i<nPiβPi+1

证明:ββ的自反和传递闭包,即β=k=0(β)k,其中k=0时表示自反的情况。

数学归纳法证明之:

  • k=0时,显然取PP0Q,原命题成立

  • 若已知P(β)kQ,原命题成立,对P(β)k+1Q的情况进行分析

    必然存在(不必唯一)一个中间项M使得P(β)kMβQ

    又因为存在PP0ββPkM,显然取Pk+1M可使PP0ββPkβPk+1Q成立

综上,原命题得证。

3.8 证明:对于任意P,QΛ,若PβQ,则λz.Pβλz.Q

证明:题3.7,存在归约链PP0ββPnQ

由于β是合拍闭包的,因此有λz.Pλz.P0ββλz.Pnλz.Q,因此λz.Pβλz.Q

3.9 证明:对于任意P,QΛ,若P=βQ,则存在nN以及P0,,PnΛ,满足

(1)PP0

(2)QPn

(3)对任何i<nPiβPi+1Pi+1βP1

证明:=ββ的自反、传递和对称闭包,即(=β)=k=0(ββ)k

题3.7类似完成证明,唯一不同在于该“链条”有允许两个方向。

3.10 证明定理3.12

对于任何M,NΛM=βNλβM=N

证明:二元关系β{((λx.M)N,M[x:=N]):M,NΛx}=ββ的合拍、自反、对称和传递闭包。

=β有且只有以下几种形式:

(记号约定L,M,NΛ,x

(β)二元关系定义(λx.M)N=βM[x:=N](ρ)自反闭包M=βM(σ)对称闭包N=βMM=βN(τ)传递闭包M=βLL=βNM=βN(μ)合拍闭包-1M=βNLM=βLN(ν)合拍闭包-2M=βNML=βNL(ξ)合拍闭包-3M=βNλx.M=βλx.N

显而易见,上述=β的形式与形式理论λβ中的公理或者规则互相等价,如ββ,rhoρ,,既无遗漏也无多余。

因此M=βNλβM=N

3.11 证明定理3.13

对于任何M,NΛM=βηNλβηM=N

证明:同题3.10=βηβη的合拍、自反、对称和传递闭包,因此类似地,再引入一条表现形式:

(η)二元关系定义λx.Mx=βηM

且有ηη,即该条转换形式与λβη形式理论中的公理η等价,同理原命题亦得证。

3.12 证明:对于任何的M,nΛ,若M=βN,则存在T使MβTNβT。这就是对于=β的CR性质。

证明:已知,β具有CR性质

利用题3.9中的结论,即M=βN时有M(ββ)kN,对其长度k应用数学归纳法:

  • k=0,即MN,由自反性MβM,MβN,则存在TΛ使MβTNβT

  • k=i时结论成立,试验证k=i+1时结论成立,即考虑M(ββ)kL(ββ)N的情况

    故存在T使得MβT,LβT

    • LβN,即LβN,LβT,故存在T使得NβT,TβT,进而NβT,MβT
    • LβN,利用β的传递性,MβT,NβT

综上,原命题成立。

3.13 证明:若在系统λβ中加入下述公理

(A)λxy.x=λxy.y,

则对任何的M,NΛ,λβ+(A)M=N

证明:

M,NΛλxy.x=λxy.y(λxy.x)MN=(λxy.y)MNM=NM,NΛ,λβ+(A)M=N

3.14 证明命题3.14

RΛ上的一个二元关系,MNFR,则

(1)不存在NΛ使得MRN

(2)MβNMN

证明:(1)反证法,假设存在NΛ使得MRN,即(M,N)R,与MNFR矛盾

(2)反证法,因为β=k=0(β)k,假设MN,即排除k=0的情况,则存在项L使得MβL,同样也导致矛盾

3.15 证明引理3.16

MmcdMNmcdN,则MNmcdMN

证明:MmcdM,所以有M通过依次收缩M1,M2,,Mm可以得到M

同理N通过依次收缩N1,N2,,Nn可以得到N

构造收缩过程M1,M2,,Mm,N1,N2,,Nn,显然其可以将MN归约到MN,以下要证明这个过程是一个mcd

  • 1ijm,由MmcdM可知MiMj
  • 1ijn,由NmcdN可知NiNj
  • 1im,1jnMiNj因为二者来自不同的λ-项

所以,MNmcdMN

3.16 试找出AΛ使A λ-定义函数f(x,y)=x+y

解:A=λwxyz.wy(xyz)即可

Amn(λwxyz.wy(xyz))mn=βλyz.my(nyz)λyz.ym(ynz)λyz.ym+nzm+n

3.17 试找出FΛ使F λ-定义函数f(x)=3x

解:F=λxyz.xy(xy(xyz))即可

Fn(λxyz.xy(xy(xyz)))n=βλyz.ny(ny(nyz))λyz.yn(yn(ynz))λyz.y3nz3n

3.18Dλxyz.z(Ky)x,证明:对于任意的X,YΛ

DXY0=X,DXYn+1=Y.

这里,Kλxy.x,nλfx.fnx

证明:容易证明第一个等式成立,

DXY0=β0(KY)X=βX

接下来证明第二个等式,

DXYn+1=βn+1(KY)X=β(KY)n+1X=βKY((KY)nX)=βY

3.19Expλxy.yx,证明:对于任意的nNmN

Expnm=βnm

证明:先代入并归约,

Expnm(λab.ba)nm=βmn(λfx.fmx)n=βλx.nmxλx.(λyz.ynz)mx

数学归纳法:

  • m=1时,Expn1=βλx.(λyz.ynz)x=βλx.λz.xnzλxz.xnzn

  • 若假设有Expnm=βnm(λyz.ynz)mx=βλz.xnmz

    (λyz.ynz)m+1x(λyz.ynz)((λyz.ynz)mx)=β(λyz.ynz)(λw.xnmw)=βλz.(λw.xnmw)nz=βλz.xn×nmzλz.xnm+1zExpnm+1=βλx.λz.xnm+1zλxz.xnm+1znm+1

综上,原命题得证。

3.20 构造FΛ使得对于任何nN

Fn=β2n

解:亦即寻找FΛ λ-定义2n,由题3.19,取Fλx.Exp2x=βλx.x2即可。

3.21f,g:NN,f=Itw[g],即

f(0)=0f(n+1)=g(f(n))

GΛ λ-定义函数g,试求FΛ使得F λ-定义函数f

解: 亦即寻找F使Fn=βgn(0)成立

Fn=βgn(0)g(gn1(0))=βGgn1(0)=β=βGn0nG0

所以,取Fλx.xG0即可。

3.22 证明引理3.39

存在一般递归函数var,app,abs,num:NN使得:

  1. nN,var(n)=(v(n))
  2. M,NΛ,app(M,N)=(M,N)
  3. x,MΛ,abs(x,M)=(λx.M)
  4. nN,num(n)=n

证明:

  1. var(n)=[0,n]GRF

  2. app(M,N)=[1,[M,N]]app(m.n)=[1,[m,n]]GRF

  3. abs(x,M)=[2,[x,M]]abs(x,m)=[2,[x,m]]GRF

  4. (fnx)=[1,[f,fn1x]]]==[1,[f,[1,[f,[1,[f,x]]]]]]GRF

    n=λfx.fnx=λf.λx.fnx,可得num(n)=n=[2,[f,[2,[x,(fnx)]]]]GRF

3.23f(n)习题1.16中定义的函数,试构造FΛ使Fn=f(n)nN+成立。

(该函数定义如下)

f(0)=0,f(1)=1,f(2)=22,f(3)=333,f(n)=nnnn,

解:先定义原始递归函数h(x,y)如下:

h(x,0)=N2(x)h(x,y+1)=xh(x,y)

然后构造HΛ λ-定义了h(x,y)

{Hx0=βDx01Hxy+1=βxh(x,y)=βExpx(Hxy)Hxy=βDy(Dx01)(Expx(Hx(predy)))HY(λzxy.Dy(Dx01)(Expx(zx(predy))))

(其中,Y定义见定理3.23pred定义见引理3.31D的定义参考引理3.33Exp定义见题3.19

nN+,f(n)=h(n,n),所以应该使Fn=βHnnF=λw.Hww

综上,

Fλw.Y(λzxy.Dy(Dx01)(Expx(zx(predy))))ww

3.24 构造HΛ,使得对于任意nN,x1,,xnΛ,有

Hnx1xn=βλz.zx1xn

解:等价于构造Hn=Hn=βλx1xnz.zx1xn

h(n)=Hn=[2,[x1,((zx1xn))]]=[2,[x1,,[1,[xn1,xn]],]]

显然h(n)的可以通过递归与复合的方式计算,当然也就是说hRF,故存在G使得Gn=βh(n)=βHnHn

定理3.41,存在枚举子EΛ使得HnΛ,EHn=βHn

所以取Hλx.E(Gx)即可。验证之,Hn=βE(Gn)=βE(Hn)=βHn,满足条件。

3.25 证明:存在Θ2Λ,使得对于任意FΛ

Θ2F=βFΘ2F

证明:定理3.41,已知存在枚举子EΛ,使得对于任何MΛ,有EM=βM

因此,构造Aλxy.Ey(xxy),Θ2AA即可,以下验证之,

Θ2FAAF=βEF(AAF)=βF(AAF)=βF(Θ2F)

验证通过,总是存在Θ2(λxy.Ey(xxy))(λxy.Ey(xxy))符合条件。