《计算模型导引》第三章习题¶
12¶
习题3.12
证明:对于任何 M,N\in \Lambda,若 M =_{\beta} N,则存在 T 使 M\twoheadrightarrow_{\beta} T 且 N \twoheadrightarrow_{\beta} T. 这就是对于 =_{\beta} 的CR性质.
证:
设 M=_{\beta} N,由习题3.9知,存在 P_0,\cdots, P_n\in\nabla 使得 M\equiv P_0 且 N\equiv P_n 且 \forall i < n, P_i\rightarrow_{\beta} P_{i+1} 或 P_i\leftarrow_{\beta} P_{i+1}.
以下对 i 归纳证明,存在 T_i 使得 P_0\twoheadrightarrow_{\beta} T_i 且 P_n\twoheadrightarrow_{\beta} T_i.
奠基:i=0,取 T_0 为 M 即可.
假设 i=k 时结论成立.
i=k+1 < n 时,由归纳假设,P_0\twoheadrightarrow_{\beta} T_k 且 P_k\twoheadrightarrow_{\beta} T_k.
当 P_k\rightarrow_{\beta} P_{k+1},从而由CR性质,存在 T_{k+1} 使得 T_k\twoheadrightarrow_{\beta} T_{k+1} 且 P_{k+1}\twoheadrightarrow_{\beta} T_{k+1},从而结论成立.
当 P_k\leftarrow_{\beta} P_{k+1},取 T_{k+1} 为 P_k 即可,这时结论成立。
综上,有 T_n 使得 P_0\twoheadrightarrow_{\beta} T_n 且 P_n\twoheadrightarrow_{\beta} T_n. 取 T 为 T_0,即有 M\twoheadrightarrow_{\beta} T 且 N \twoheadrightarrow_{\beta} T.
13¶
习题3.13
证明:若在系统 \lambda\beta 中加入下述公理 $$ (A)\qquad \lambda xy. x = \lambda xy. y, $$ 则对任何M,N\in \Lambda,\lambda\beta + (A) \vdash M = N.
证:
对任何 M,N\in\Lambda,
14¶
习题3.14
证明命题3.14:
设 R 是 \nabla 上的一个二元关系,M\in NF_R,则
(1) 不存在 N\in\nabla 使得 M\rightarrow_R N;
(2) M\twoheadrightarrow_R N \Rightarrow M\equiv N.
证:
(1)
若存在 N\in\nabla, M\rightarrow_R N,则由定义知 M 为 R-可约式,矛盾.
(2)
假设 M\not\equiv N,M\twoheadrightarrow_R N 表示存在 M = P_0\rightarrow_R P_1\rightarrow_R\cdots\rightarrow_R P_n = N,使得对于 i < n,P_i\rightarrow_R P_{i+1}. 因为 M\not\equiv N,我们有 n\geq 1,但是这样存在 N,使得 M\rightarrow_R N,与(1)结论矛盾.
15¶
习题3.15
证明引理3.16:
若 M\vartriangleright_{mcd} M' 且 N\vartriangleright_{mcd} N',则 M'N' \vartriangleright_{mcd} M'N'.
证:
设 M 通过 P_1, P_2, \cdots, P_{n1} 收缩到 M′, N 通过 R_1, R_2, \cdots, R_{n2} 收缩到 N′, 如果将这种极小规约过程看成大小关系的话, 那么 P_1,P_2,\cdots, P_{n1} 与 R_1, R_2, \cdots, R_{n2} 都可以视为按照非降序来排列. 那么现在只需要用任意一种排序算法将 P_1, P_2, \cdots, P_{n2}, R_1, R_2, \cdots, R_{n2}, 按照非降序排列, 则可以通过该序列将 MN 收缩到 M′N′.
16¶
习题3.16
试找出 A\in\Lambda^{\circ}使A \lambda-定义函数 f(x,y)=x+y.
解:
解法一:
其中 S 为后继函数,定义在引理3.30,为\lambda xyz.y(xyz).
解法二:
解法三:
故定义 F\in\Lambda^{\circ}为
故 F=\mathbb{Y}(\lambda zxy. D(y)x(z(Sx)(\text{pred } y)))
17¶
习题3.17
试找出 F\in\Lambda^{\circ}使F \lambda-定义函数 f(x)=3x.
解:
18¶
习题3.18
令 D\equiv \lambda xyz.z(Ky)x,证明:对于任意的 X,Y\in\Lambda, $$ \begin{align} DXY\ulcorner 0\urcorner &= X,\\ DXY\ulcorner n+1\urcorner &= Y. \end{align} $$ 这里K\equiv \lambda xy.x, \ulcorner n\urcorner\equiv \lambda fx.f^n x.
证: