Lambda calculus引论(五): 简单类型

121 阅读10分钟
原文链接: zhuanlan.zhihu.com

在之前的章节中介绍的λ-calculus是无类型的, 即若把一个λ-term理解为映射, 则该映射的定义域(Domain)与值域(range)为全集(universe). 在很多时候域将会揭示很多有意义的信息, 为λ-calculus明确指定定义域与值域(类型)是很有意义的, 类型可以理解为对域进行符号化并提供了一系列的操作工具. 这节开始介绍λ-calculus与类型系统.


本节将介绍简单带类型的λ-calculus, 即Simply typed lambda calculus(STLC).



Simply typed λ-calculus à la Curry

下面给出了Curry风格简单带类型的λ-calculus的定义, 其为在无类型的λ-calculus的表达式尾部添加入了类型项.

类型标识符(type variables):

U=\{\tau _0,\tau_1,\cdots\}

U为可数标识符集合, \tau _0,\tau_1,\cdots为类型标识符.

类型(types):

\begin{align} &\Pi_1:=U\\ &\Pi_{n}:=U\;|\;(\Pi_{n-1}\to\Pi_{n-1})\\ &\Pi=\bigcup_{i=1}^{} \Pi_{i} \end{align}

\Pi亦或定义为满足:

\Pi=U\;|\;(\Pi\to\Pi)

的最小集合.

\Pi为所有类型的集合

类型一些例子:

\tau, \tau \to \sigma, \tau_1 \to \tau_2 \to \sigma, (\tau_1 \to \tau_2) \to \sigma

一般地, 使用\tau_1 \to \cdots \to \tau_n \to \sigma表示\tau_1 \to (\cdots \to (\tau_n \to \sigma)).
上下文环境(contexts):

\mathcal{C}为所有序列x_1:\tau_1,\dots, x_n:\tau_n\quad(x_i\in S,\ \tau_i\in \Pi,\ x_i\ne x_j\ for\ i\ne j)的集合:

\mathcal{C}=\{(x_1:\tau_1,\dots, x_n:\tau_n),\cdots\}其中x_1,\dots,x_n\in S(S为λ-calculus中的标识符) \tau_1,\dots,\tau_n\in \Pi.
前提(assumption):

\Gamma =\{x_1:\tau_1,\dots, x_n:\tau_n\}\in \mathcal{C}

另一种表示方式是将前提\Gamma作为一个有限部分函数(finite partial function)

\begin{align} &\Gamma : S\to\Pi\\ &\Gamma(x_i)=\tau_i \end{align}

在这种表示下下文的域(domain)值域(range)便是非常自然的概念.

域(domain)

dom(\Gamma)=\{x\;|\;(x:\tau)\in\Gamma\}

值域(range):

\left| \Gamma \right| = \{\tau\in \Pi\;|\;(x:\tau)\in\Gamma\}

一般地, 使用x:\tau代表\{x:\tau\}, 若dom(\Gamma) \cap dom(\Gamma^{'})=\emptyset使用\Gamma , \Gamma ^{'}代表\Gamma \cup \Gamma^{'}.

表达式:

\Lambda^{\to}=\Lambda^{-}:\Pi

\Lambda^{-}为无类型λ表达式, 定义可参见第一节. 可以理解为在无类型λ-calculus的表达式尾部添加入了类型项.
自由名称(free variables):

自由名称的定义与无类型λ-calculus类似. 一个Curry风格简单带类型表达式的自由名称为忽略类型项后无类型表达式的自由名称.

\begin{align} &FV:\Lambda^{\to}\rightarrow \wp(S)\\ &FV(M:\tau)=FV_\Lambda^{-}(M)\\ \end{align}

其中FV_\Lambda^{-}为无类型λ-表达式的自由名称.

如果FV(E)=\{\}, 则称E为闭合的(closed).

类型性推导规则:

类型性规则(typability)为定义在\mathcal{C}\times \Lambda^{\to} \times \Pi上的关系\vdash, 满足以下推导规则

\begin{matrix} (\rm{Var})&\Gamma ,x:\tau\vdash x:\tau&(x\notin dom(\Gamma))\\[1.2em] (\rm{Abs})&\dfrac{\Gamma ,x:\sigma\vdash M:\tau}{\Gamma \vdash (\lambda x.M):\sigma\to\tau}&(x\notin dom(\Gamma))\\[2em] (\rm{App})&\dfrac{\Gamma \vdash M:\sigma\to\tau\quad\Gamma \vdash N:\sigma}{\Gamma \vdash MN:\tau} \end{matrix}

注: 更一般地, 在\rm{Var}\rm{Abs}规则中若有x\in dom(\Gamma)情况可以对符号x进行重命名, 如\lambda x.\lambda x. x

重命名为\lambda y.\lambda x. x进而推导出类型\sigma \to \tau \to \tau.

一些例子:

\sigma,\tau,\rho为任意类型. 定义

\begin{aligned} \textbf{S} &= \lambda f .( \lambda g .( \lambda x. f x ( g x ) ) ) \\ \textbf{K} &= \lambda x . \lambda y. x \\ \textbf{I} &= \lambda x.x \\ \end{aligned}

\begin{align} &\vdash\textbf{S}: (\sigma \to\tau \to\rho)\to(\sigma \to \tau)\to\sigma \to\rho \\ &\vdash\textbf{K}:\sigma \to \tau \to\sigma \\ &\vdash\textbf{I}: \sigma \to\sigma \end{align}


定义: 若有\Gamma \vdash M:\tau, 则称表达式M在前提\Gamma下拥有类型\tau, 若对于表达式M\in \Lambda存在一个前提\Gamma使得\Gamma \vdash M:\tau\quad(\tau\in\Pi), 则称表达式M为可类型化的(typable)


定义: 具有以上形式(三元组\langle \Lambda, \Pi, \vdash \rangle)的λ-calculus系统称之为simply typed λ-calculus à la Curry或\lambda_{\to} à la Curry.


引理1: 自由名称引理(Free variables lemma)\Gamma \vdash M:\tau则有:

  • \Gamma \subseteq \Gamma^{'}\Gamma^{'} \vdash M:\tau.
  • FV(M)\subseteq dom(\Gamma).
  • \Gamma^{'}\subseteq \GammaFV(M)\subseteq dom(\Gamma^{'})\Gamma^{'} \vdash M:\tau.

证明:

1. 对\Gamma \vdash M:\tau的推导做结构归纳.

若推导为\frac{}{\Delta, x:\tau\vdash x:\tau}, 其中\Gamma =\Delta ,x:\tau, M=x, x\notin dom(\Delta ). 由\Gamma \subseteq \Gamma^{'}\Gamma^{'}=\Delta^{'}, x:\tau, x\notin dom(\Delta^{'} ), 那么显然有\Gamma^{'} \vdash M:\tau.

若推导为\dfrac{\Gamma ,x:\tau_1\vdash N:\tau_2}{\Gamma \vdash (\lambda x.N):\tau_1\to\tau_2}, 其中x\notin dom(\Gamma ), \tau=\tau_1 \to \tau_2, M=\lambda x.N. 不妨设x\notin dom(\Gamma^{'} )根据归纳假设有\Gamma^{'} ,x:\tau_1\vdash N:\tau_2, 则有\Gamma^{'} \vdash (\lambda x.N):\tau_1\to\tau_2.

若推导为\dfrac{\Gamma \vdash P:\sigma\to\tau\quad\Gamma \vdash Q:\sigma}{\Gamma \vdash PQ:\tau}, 其中M=PQ, 根据归纳假设有\Gamma^{'} \vdash P:\sigma\to\tau\Gamma^{'} \vdash Q:\sigma, 则有\Gamma^{'} \vdash PQ:\tau.

故由归纳得\Gamma^{'} \vdash M:\tau.

2. 3. 类似与证明1, 对\Gamma \vdash M:\tau的推导做结构归纳.

以3.中若推导为\dfrac{\Gamma ,x:\tau_1\vdash N:\tau_2}{\Gamma \vdash (\lambda x.N):\tau_1\to\tau_2}的情况为例, 其中x\notin dom(\Gamma ), \tau=\tau_1 \to \tau_2, M=\lambda x.N. \Gamma^{'}\subseteq \Gammax\notin dom(\Gamma^{'} ), 且FV(\lambda x.N)=FV(N)/\{x\}\subseteq dom(\Gamma^{'}), 故有FV(N)\subseteq dom(\Gamma^{'},x:\tau_1), 由归纳假设有\Gamma^{'} ,x:\tau_1\vdash N:\tau_2, 则有\Gamma^{'} \vdash (\lambda x.N):\tau_1\to\tau_2.

证毕.


引理2: 生成引理(Generation lemma)

  • \Gamma \vdash x:\tau, x\notin dom(\Delta ), 则x:\tau\in\Gamma.
  • \Gamma \vdash PQ:\tau, 则存在\sigma \in \Pi使得\Gamma \vdash P:\sigma\to\tau\Gamma \vdash Q:\sigma.
  • \Gamma \vdash \lambda x.P:\tau, x\notin dom(\Gamma), 则存在\sigma,\rho \in \Pi使得\Gamma, x:\sigma\vdash P:\rho\tau =\sigma\to\rho.

证明:

1. 由推导规则\frac{}{\Delta, x:\tau\vdash x:\tau}, 其中\Gamma =\Delta, x:\tau, x\notin dom(\Delta ), 显然.

2. 由推导规则\dfrac{\Gamma \vdash P:\sigma\to\tau\quad\Gamma \vdash Q:\sigma}{\Gamma \vdash PQ:\tau}, 显然.

3. 由推导规则\dfrac{\Gamma ,x:\sigma\vdash N:\rho}{\Gamma \vdash (\lambda x.N):\sigma \to\rho }, 其中x\notin dom(\Gamma ), 显然.

证毕.


定义: \sigma [\alpha / \tau ]表示将类型\sigma中所有类型标识符\tau替换为类型\alpha.

类型的替换规则如下:

\begin{align} &\beta[\alpha/\beta]=\alpha\\ &\tau[\alpha/\beta]=\tau\\ &(\tau_1\to\tau_2)[\alpha/\beta]=\tau_1[\alpha/\beta] \to \tau_2[\alpha/\beta]\\ \end{align}

其中\beta为类型标识符, \tau,\tau_1,\tau_2,\alpha为类型.

使用记号\Gamma[\tau/\alpha]表示\{(x:\sigma[\tau/\alpha])\;|\;(x:\sigma) \in \Gamma\}.


引理3: 替换引理(Substitution lemma)

  • \Gamma \vdash M:\sigma则有\Gamma[\tau/\alpha] \vdash M:\sigma[\tau/\alpha].
  • \Gamma, x:\tau \vdash M:\sigma\Gamma \vdash N:\tau则有\Gamma \vdash M[N/x]:\sigma.

证明:

1. 对\Gamma \vdash M:\tau的推导做结构归纳.

以推导为\dfrac{\Gamma ,x:\tau_1\vdash N:\tau_2}{\Gamma \vdash (\lambda x.N):\tau_1\to\tau_2}的情况为例, 其中x\notin dom(\Gamma ), \sigma=\tau_1 \to \tau_2, M=\lambda x.N. 由归纳假设有\Gamma[\tau/\alpha] ,x:\tau_1[\tau/\alpha]\vdash N:\tau_2[\tau/\alpha], 则有\Gamma[\tau/\alpha] \vdash (\lambda x.N):\tau_1[\tau/\alpha]\to\tau_2[\tau/\alpha], 又由(\tau_1\to\tau_2)[\tau/\alpha]=\tau_1[\tau/\alpha] \to \tau_2[\tau/\alpha], 故有\Gamma[\tau/\alpha] \vdash (\lambda x.N):(\tau_1\to\tau_2)[\tau/\alpha]\Gamma[\tau/\alpha] \vdash (\lambda x.N):\sigma[\tau/\alpha].

2. 对\Gamma, x:\tau \vdash M:\sigma的推导做结构归纳.

若推导为\frac{}{\Gamma, x:\tau\vdash x:\tau}, 其中\tau=\sigma, M=x, 那么显然有\Gamma \vdash M[N/x]:\sigma.

若推导为\dfrac{\Gamma ,x:\tau,y:\tau_1\vdash P:\tau_2}{\Gamma ,x:\tau\vdash (\lambda y.P):\tau_1\to\tau_2}, 其中y\notin dom(\Gamma ), \sigma=\tau_1 \to \tau_2, M=\lambda y.P. 不妨设x\ne y,\ y\notin FV(N) (若非则对名称y进行重命名), 又有\Gamma \vdash N:\tau, 根据归纳假设有\Gamma ,y:\tau_1\vdash P[N/x]:\tau_2, 那么有\Gamma \vdash (\lambda y.P[N/x]):\tau_1\to\tau_2, 同时(\lambda y.P)[N/x]=(\lambda y.P[N/x])\Gamma \vdash M[N/x]:\sigma.

若推导为\dfrac{\Gamma, x:\tau\vdash P:\rho\to\sigma\quad\Gamma, x:\tau\vdash Q:\rho}{\Gamma, x:\tau\vdash PQ:\sigma}, 其中M=PQ, 又有\Gamma \vdash N:\tau, 根据归纳假设\Gamma \vdash P[N/x]:\rho\to\sigma\Gamma \vdash Q[N/x]:\rho, 则有\Gamma \vdash P[N/x]Q[N/x]:\sigma, 同时(PQ)[N/x]=P[N/x]Q[N/x], 故\Gamma \vdash M[N/x]:\sigma.

故由归纳得\Gamma \vdash M[N/x]:\sigma.

证毕.


定理1: Subject reduction theorem

\Gamma \vdash M:\tau并且M\;\triangleright_{\beta}^{*}\;N, 那么有\Gamma \vdash N:\tau.

该定理表明在\lambda_{\to} à la Curry系统中β-规约将保留表达式的类型.

证明:

M\;\triangleright_{\beta}\;N的规约规则做结构归纳.

归纳基础: 当M为β-可约式时, 即M=(\lambda x.P)Q, 对M进行β-规约:

(\lambda x.P)Q\;\triangleright_{\beta}\;P[Q/x]

得到N=P[Q/x]. 由引理2(生成引理, Generation lemma)得由\Gamma \vdash (\lambda x.P)Q:\tau可得\Gamma ,x:\sigma\vdash P:\tau\Gamma \vdash Q:\sigma (\sigma\in \Pi, x\notin dom(\Gamma)), 根据引理3(替换引理, Substitution lemma)第二部分得\Gamma \vdash P[Q/x]:\tau, 即\Gamma \vdash N:\tau.

归纳步骤: 对于β-规约规则

\begin{align} &P\;\triangleright_{\beta}\;P^{'}&&\Rightarrow\;\lambda x.P\;\triangleright_{\beta}\;\lambda x.P^{'}\\ &P\;\triangleright_{\beta}\;P^{'}&&\Rightarrow\;PQ\;\triangleright_{\beta}\;P^{'}Q\\ &P\;\triangleright_{\beta}\;P^{'}&&\Rightarrow\;QP\;\triangleright_{\beta}\;QP^{'}\\ \end{align}

由归纳假设有若\Gamma \vdash P:\tau\Gamma \vdash P^{'}:\tau, 显然根据类型性推导规可证.

故由归纳得\Gamma \vdash M:\tauM\;\triangleright_{\beta}\;N, 那么有\Gamma \vdash N:\tau.

对于\Gamma \vdash M:\tau, 同时多步β-规约M\;\triangleright_{\beta}^{*}\;N可表示为M\;\triangleright_{\beta}^{n}\;N\quad (\exists\;n\in \mathbb{N}), 对于每一步β-规约均保留类型, 即\Gamma \vdash P:\tauP\;\triangleright_{\beta}\;Q那么有\Gamma \vdash Q:\tau, 可得\Gamma \vdash N:\tau.

证毕.

注: 一个与之方向相反的命题: 若\Gamma \vdash M:\tau并且N\;\triangleright_{\beta}^{*}\;M, 那么\Gamma \vdash N:\tau(称之为subject expansion)并不成立. 一个简单的反例是取N=(\lambda x.\lambda y.y)\Omega, 其中\Omega =(\lambda x.x\;x)(\lambda x.x\;x), 显然N\;\triangleright_{\beta}^{*}\;M, M=\lambda y.y, 并且\vdash \lambda y.y:\tau\to\tau, 但\Omega是非可类型化(untypable)的. 证明将在下一节给出.



Simply typed λ-calculus à la Church

Simply typed λ-calculus à la Church系统与simply typed λ-calculus à la Curry类似, 在类型表示上稍微不同, 其将类型项嵌入了表达式之中.

Simply typed λ-calculus à la Church系统中的: 类型标识符(type variables), 类型(types), 上下文环境(contexts), 前提(assumption), 域(domain), 值域(range) 与Curry风格系统相同.

表达式:

\begin{align} &\Lambda^{\to}_{1}:=S\\ &\Lambda^{\to}_{n}:=S\;|\;\Lambda^{\to}_{n-1}\Lambda^{\to}_{n-1}\;|\;\lambda s:\tau.\Lambda^{\to}_{n-1}\quad(s\in S,\tau\in\Pi)\\ &\Lambda^{\to}=\bigcup_{i=1}^{} \Lambda^{\to}_{i} \end{align}

\Lambda^{-}亦或定义为满足:

\Lambda^{\to}=S\;|\;\Lambda^{\to}\Lambda^{\to}\;|\;\lambda s:\tau.\ \Lambda^{\to}\quad(s\in S,\tau\in\Pi)

的最小集合.

自由名称(free variables):

\begin{align} &FV:\Lambda^{-}\rightarrow \wp(S)\\ &FV(x)={x}\\ &FV(\lambda x:\tau.P)=FV(P)/\{x\}\\ &FV(PQ)=FV(P)\cup FV(Q) \end{align}

如果FV(E)=\{\}, 则称E为闭合的(closed).

替换(substitution):

替换的定义与无类型λ-calculus类似.

定义替换规则如下:

\begin{align} &(PQ)[N/x]:=P[N/x]Q[N/x]\\ &(\lambda x:\tau.P)[N/x]:=\lambda x:\tau.P\\ &(\lambda y:\tau.P)[N/x]:=\lambda y:\tau.P[N/x]\quad(y\notin FV(N)\ or\ x\notin FV(P))\\ &(\lambda y:\tau.P)[N/x]:=\lambda z:\tau.P[z/y][N/x]\quad(z\ is\ a\ fresh\ variable, y\in FV(N)\ and\ x\in FV(P))\\ \end{align}

无类型λ-calculus替换的推论同样适用.

类型性推导规则:

类型性规则(typability)为定义在\mathcal{C}\times \Lambda^{\to} \times \Pi上的关系\vdash, 满足以下推导规则

\begin{matrix} (\rm{Var})&\Gamma ,x:\tau\vdash x:\tau&(x\notin dom(\Gamma))\\[1.2em] (\rm{Abs})&\dfrac{\Gamma ,x:\sigma\vdash M:\tau}{\Gamma \vdash (\lambda x:\sigma.M):\sigma\to\tau}&(x\notin dom(\Gamma))\\[2em] (\rm{App})&\dfrac{\Gamma \vdash M:\sigma\to\tau\quad\Gamma \vdash N:\sigma}{\Gamma \vdash MN:\tau} \end{matrix}

一些例子:

\sigma,\tau,\rho为任意类型. 类似于Curry风格系统中的\textbf{S}, \textbf{K}, \textbf{I}:

\begin{align} &\vdash \lambda f:(\sigma \to\tau \to\rho) .( \lambda g:(\sigma \to \tau) .( \lambda x:\sigma. f x ( g x ) ) ): (\sigma \to\tau \to\rho)\to(\sigma \to \tau)\to\sigma \to\rho \\ &\vdash (\lambda x:\sigma . \lambda y:\tau. x):\sigma \to \tau \to\sigma \\ &\vdash (\lambda x:\sigma.x): \sigma \to\sigma \end{align}

β规约(β-reduction):

单步β-reduction为\Lambda^{\to}之上的最小二元关系, 记作\triangleright_{\beta}, 定义为:

(\lambda x:\tau.P)Q\;\triangleright_{\beta}\;P[Q/x]

在推导规则下闭合:

\begin{align} &P\;\triangleright_{\beta}\;P^{'}&&\Rightarrow\;\lambda x.P\;\triangleright_{\beta}\;\lambda x:\sigma.P^{'}\\ &P\;\triangleright_{\beta}\;P^{'}&&\Rightarrow\;PQ\;\triangleright_{\beta}\;P^{'}Q\\ &P\;\triangleright_{\beta}\;P^{'}&&\Rightarrow\;QP\;\triangleright_{\beta}\;QP^{'}\\ \end{align}

多步β-reductionβ-等价(β-equality)

与无类型λ-calculus中的定义相同, \triangleright_{\beta}^{*}\triangleright_{\beta}的传递自反闭包, =_{\beta}\triangleright_{\beta}的传递自反对称闭包, 参见第一节.


定义: 具有以上形式(三元组\langle \Lambda, \Pi, \vdash \rangle)的λ-calculus系统称之为simply typed λ-calculus à la Church或\lambda_{\to} à la Church.


引理4: 自由名称引理(Free variables lemma)\Gamma \vdash M:\tau则有:

  • \Gamma \subseteq \Gamma^{'}\Gamma^{'} \vdash M:\tau.
  • FV(M)\subseteq dom(\Gamma).
  • \Gamma^{'}\subseteq \GammaFV(M)\subseteq dom(\Gamma^{'})\Gamma^{'} \vdash M:\tau.

证明:

类似于\lambda_{\to} à la Curry中的自由变量引理证明, 参见引理1.

证毕.


引理5: 生成引理(Generation lemma)

  • \Gamma \vdash x:\tau, x\notin dom(\Delta ), 则x:\tau\in\Gamma.
  • \Gamma \vdash PQ:\tau, 则存在\sigma \in \Pi使得\Gamma \vdash P:\sigma\to\tau\Gamma \vdash Q:\sigma.
  • \Gamma \vdash \lambda x:\sigma.P:\tau, x\notin dom(\Gamma), 则存在\sigma,\rho \in \Pi使得\Gamma, x:\sigma\vdash P:\rho\tau =\sigma\to\rho.

证明:

类似于\lambda_{\to} à la Curry中的生成引理证明, 参见引理2.

证毕.


引理6: 替换引理(Substitution lemma)

  • \Gamma \vdash M:\tau则有\Gamma[\tau/\alpha] \vdash M:\tau[\tau/\alpha].
  • \Gamma, x:\tau \vdash M:\sigma\Gamma \vdash N:\tau则有\Gamma \vdash M[N/x]:\sigma.

证明:

类似于\lambda_{\to} à la Curry中的生成引理证明, 参见引理3.

证毕.


定理2: Subject reduction theorem

\Gamma \vdash M:\tau并且M\;\triangleright_{\beta}^{*}\;N, 那么有\Gamma \vdash N:\tau.

该定理表明在\lambda_{\to} à la Church系统中β-规约将保留表达式的类型.

证明:

类似于\lambda_{\to} à la Curry中的Subject reduction theorem证明, 参见定理1.

证毕.


引理7: 类型唯一性(Uniqueness of types)

  • \Gamma \vdash M:\tau\Gamma \vdash M:\sigma, 则有\tau=\sigma.
  • \Gamma \vdash M:\tau\Gamma \vdash N:\sigma, 且M=_{\beta}N, 则有\tau=\sigma.

证明:

1. 对\Gamma \vdash M:\tau的推导做结构归纳. 显然.

2. 由M=_{\beta}N及Church-Rosser property(证明将在下文给出, 定理4), 存在L\in \Lambda^{\to}满足M\;\triangleright_{\beta}^{*}\;LN\;\triangleright_{\beta}^{*}\;L, 由定理2(Subject reduction theorem)得\Gamma \vdash L:\tau\Gamma \vdash L:\sigma, 又由引理第一部分得\tau=\sigma.

证毕.

注: 该性质在\lambda_{\to} à la Curry不成立, 典型的例子如对于\textbf{I}=\lambda x.x\lambda_{\to} à la Curry中有\vdash \textbf{I}:\tau\to\tau\vdash \textbf{I}:(\tau\to\tau)\to(\tau\to\tau).


定义: 擦除映射(erasure map)为\Lambda^{\to}\Lambda^{-}的映射.

\begin{align} &\left| \;\bullet\; \right| \;:\;\Lambda^{\to}\to\Lambda^{-}\\ &\left| \;x\; \right|\;=\;x\\ &\left| \;MN\; \right|\;=\;\left| \;M\; \right|\left| \;N\; \right|\\ &\left| \;\lambda x:\sigma.M\; \right|\;=\;\lambda x.\left| \;M\; \right|\\ \end{align}

该映射将\lambda_{\to} à la Church表达式中的类型擦除, 映射至对应的无类型λ-表达式.


引理8: 擦除引理(Erasing lemma) 对于M,N\in \Lambda^{\to}

  • M\;\triangleright_{\beta}\;N那么有|M|\;\triangleright_{\beta}\;|N|.
  • 若在\lambda_{\to} à la Church有\Gamma \vdash M:\tau那么在\lambda_{\to} à la Curry中有\Gamma \vdash |M|:\tau.

擦除引理揭示了可将\lambda_{\to} à la Church表达式擦除为\lambda_{\to} à la Curry表达式.

证明:

1. 第一步证明|M[N/x]|=|M|[|N|/x].

M做结构归纳

M=y, y为任意标识符, 则显然成立;

M=PQ, 根据归纳假设有|P[N/x]|=|P|[|N|/x]|Q[N/x]|=|Q|[|N|/x], 那么|PQ[N/x]|=|P[N/x]|\;|Q[N/x]|=|P|[|N|/x]|Q|[|N|/x]成立;

M=\lambda y:\sigma. P, 根据归纳假设有|P[N/x]|=|P|[|N|/x], 不妨设y\ne x, y\notin FV(N), 那么|(\lambda y:\sigma. P)[N/x]|=|\lambda y:\sigma. (P[N/x])|=\lambda y. |P[N/x]|=\lambda y. |P|[|N|/x]=|\lambda y:\sigma. P|[|N|/x]成立.

根据归纳法得|M[N/x]|=|M|[|N|/x].

第二步证明若M\;\triangleright_{\beta}\;N那么有|M|\;\triangleright_{\beta}\;|N|.

M\;\triangleright_{\beta}\;N的规约规则做结构归纳.

归纳基础: 当M为β-可约式时, 即M=(\lambda x:\sigma.P)Q, 对M进行β-规约:

(\lambda x:\sigma.P)Q\;\triangleright_{\beta}\;P[Q/x]

得到N=P[Q/x]. 由第一步证明有|N|=|P[Q/x]|=|P|[|Q|/x], 则|M|=|(\lambda x:\sigma.P)Q|=(\lambda x:\sigma.|P|)|Q|, 那么显然|M|\;\triangleright_{\beta}\;|N|成立.

归纳步骤: 显然.

根据归纳法得|M|\;\triangleright_{\beta}\;|N|.


2. 对\Gamma \vdash M:\tau的推导做结构归纳.

若推导为\frac{}{\Delta, x:\tau\vdash x:\tau}, 其中\Gamma =\Delta ,x:\tau, M=x, x\notin dom(\Delta ). 在\lambda_{\to} à la Curry中显然有\Gamma \vdash |x|:\tau.

若推导为\dfrac{\Gamma ,x:\tau_1\vdash N:\tau_2}{\Gamma \vdash (\lambda x:\tau_1.N):\tau_1\to\tau_2}, 其中x\notin dom(\Gamma ), \tau=\tau_1 \to \tau_2, M=\lambda x:\tau_1.N. 不妨设x\notin dom(\Gamma^{'} ), 根据归纳假设在\lambda_{\to} à la Curry中有\Gamma ,x:\tau_1\vdash |N|:\tau_2, 又有|\lambda x:\tau_1.N|=\lambda x.|N|, 那么有\Gamma \vdash |\lambda x:\tau_1.N|:\tau_1\to\tau_2.

若推导为\dfrac{\Gamma \vdash P:\sigma\to\tau\quad\Gamma \vdash Q:\sigma}{\Gamma \vdash PQ:\tau}, 其中M=PQ, 根据归纳假设在\lambda_{\to} à la Curry中有\Gamma \vdash |P|:\sigma\to\tau\Gamma \vdash |Q|:\sigma, 那么有\Gamma \vdash |PQ|:\tau.

故由归纳得在\lambda_{\to} à la Curry中有\Gamma \vdash |M|:\tau.

证毕.


引理9: 抬升引理(Lifting lemma) 对于M,N\in \Lambda^{-}

  • M\;\triangleright_{\beta}\;N那么对于任意M^{'}\in \Lambda^{\to}满足|M^{'}|=M均存在N^{'}\in \Lambda^{\to}满足|N^{'}|=NM^{'}\;\triangleright_{\beta}\;N^{'}.
  • 若在\lambda_{\to} à la Curry有\Gamma \vdash M:\tau那么在\lambda_{\to} à la Church中有|M^{'}|=M\Gamma \vdash M^{'}:\tau.

抬升引理揭示了可将\lambda_{\to} à la Curry表达式抬升为\lambda_{\to} à la Church表达式.

证明:

1. 对M\;\triangleright_{\beta}\;N的规约规则做结构归纳.

归纳基础: 当M为β-可约式时, 即M=(\lambda x.P)Q, 对M进行β-规约:

(\lambda x.P)Q\;\triangleright_{\beta}\;P[Q/x]

得到N=P[Q/x]. 对于M^{'}\in \Lambda^{\to}满足|M^{'}|=M, M^{'}=(\lambda x:\sigma.P^{'})Q^{'}其中P,Q\in \Lambda^{\to}, |P^{'}|=P,\;|Q^{'}|=Q. 那么有(\lambda x:\sigma.P^{'})Q^{'}\;\triangleright_{\beta}\;P^{'}[Q^{'}/x]且由|X[Y/x]|=|X|[|Y|/x],\ X,Y\in\Lambda^{\to}(参见引理8证明1)得|P^{'}[Q^{'}/x]|=|P^{'}|[|Q^{'}|/x]=P[Q/x]|N^{'}|=N.

归纳步骤: 显然.

根据归纳法得M^{'}\;\triangleright_{\beta}\;N^{'}.


2. 对\Gamma \vdash M:\tau的推导做结构归纳.

类似于引理8证明2.

证毕.


\lambda_{\to} à la Curry与\lambda_{\to} à la Church为单带类型λ-calculus的两种不同的形式, Curry风格系统将类型项放置在表达式后, 修饰整个表达式, Church风格系统将类型嵌入表达式中, 类型项修饰参数, 整个表达式的类型则由类型性推导规则给出. 这两种系统本质上相同, 但由于表现形式的不同有一些细微的差异(参见引理7注与定理4注).



Church-Rosser property(for simply typed λ-calculus)

定理3: Church-Rosser property(for Curry style)

\lambda_{\to} à la Curry中, 对于某一M\in\Lambda^{-}, \Gamma \vdash M:\tau若有:

M\;\triangleright_{\beta}^{*}\;M_1M\;\triangleright_{\beta}^{*}\;M_2.

则存在一N\in \Lambda^{-}满足:

M_1\;\triangleright_{\beta}^{*}\;NM_2\;\triangleright_{\beta}^{*}\;N\Gamma \vdash N:\tau.

证明: M\;\triangleright_{\beta}^{*}\;M_1M\;\triangleright_{\beta}^{*}\;M_2, 由无类型λ-calculus Church-Rosser Theorem(参见第一节)得存在N\in \Lambda^{-}满足M_1\;\triangleright_{\beta}^{*}\;NM_2\;\triangleright_{\beta}^{*}\;N, 又由Subject reduction theorem(定理1)得\Gamma \vdash M_1:\tau,\;\Gamma \vdash M_2:\tau\Gamma \vdash N:\tau.

证毕.


引理10: Newman's lemma

若二元关系具有强规范性与WCR(weak Church-Rosser property), 则其具有CR(Church-Rosser property).

(关于WCR与CR的定义参见上一节)

证明: 设该在集合A上的二元关系为\to, 满足SN(strong normalization)与WCR. 其传递自反闭包记作\twoheadrightarrow.

若某一项x\in A为normal form, 则不存在另一项y\in A使得x\to y. 由于关系\to满足SN, 故对于任意项x\in A均会规约至某一normal form上. 若存在某一项x\in A规约至两个或以上的不同的normal form上, 则称其为二义的(ambiguous). 显然, 若关系\to满足CR则A中不存在二义项.

对于二义项a, 存在另一二义项a^{'}满足a\to a^{'}. 由于a是二义的, 即存在不同的两个normal formb_1,b_2满足a\twoheadrightarrow b_1a\twoheadrightarrow b_2, 由于b_1 \ne b_2则至少在存在一步不相同规约, 即可写作a\to a_1\twoheadrightarrow b_1a\to a_2\twoheadrightarrow b_2, 若a_1=a_2则取a^{'}=a_1=a_2, 否则由WCR得存在b_3满足a_1\twoheadrightarrow b_3a_2\twoheadrightarrow b_3. 不妨令b_3为normal form(若不是由SN可得能规约直到normal form), 由于b_1 \ne b_2, 故有b_1\ne b_3b_2 \ne b_3, 那么可取a^{'}=a_1a^{'}=a_2.

A中存在二义项, 则取二义项a, 其二义规约序列a\to a^{'}\to a^{''}\to \cdots为无穷规约序列, 与SN矛盾. 故A中不存在二义项, 即该二元关系具有CR.

证毕.


定理4: Church-Rosser property(for Church style)

\lambda_{\to} à la Church中, 对于某一M\in\Lambda^{\to}, \Gamma \vdash M:\tau若有:

M\;\triangleright_{\beta}^{*}\;M_1M\;\triangleright_{\beta}^{*}\;M_2.

则存在一N\in \Lambda^{\to}满足:

M_1\;\triangleright_{\beta}^{*}\;NM_2\;\triangleright_{\beta}^{*}\;N\Gamma \vdash N:\tau.

证明:

很显然, \lambda_{\to} à la Church中β-规约\triangleright_{\beta}具有WCR(β-规约不相交则交叉规约, 若一个β-规约的可约式包含另外一个β-规约则对β-规约产生的新的可约式进行规约, 具体严格的证明可对β-规约进行归纳). 另外\lambda_{\to} à la Church具有强规范性(证明将在下节给出), 由引理10(Newman's lemma)可得\triangleright_{\beta}具有CR. 并由Subject reduction theorem(定理2)得\Gamma \vdash N:\tau.

证毕.

注: Church风格中的CR证明与Curry风格不同在于\lambda_{\to} à la Church表达式中类型项是嵌入在表达式中的, 而不像\lambda_{\to} à la Curry表达式中可以很好的分离从而利用无类型的CR theorem.



本节介绍的是关于简单带类型λ-calculus的最基础的概念和性质, 可能略有点无趣, 下一节将会介绍正规化证明和类型重建, 非常有趣的呢, 不要走开喔~

另外这个系列的文章我拖了不短的一段时间呢, 接下来的内容我会尽快补上的, 有什么想看的或有什么问题也请告诉我哦, 谢谢大家的支持啦喵.