定理已证明
简单类型化λ演算的强正规化定理
命题陈述
在简单类型化λ演算中,若 Γ⊢t:A,则 t 是强正规化的:从 t 出发的每一个 β 归约序列都会在有限步内终止。
为什么成立?
这正是简单类型化λ演算尽管有函数应用和类似递归的嵌套,却不是图灵完全的原因——任何良类型的项都不可能永远循环,这正是该片段中的类型检查器总能停机的原因。
证明思路
(泰特的可归约性方法。)对类型的结构做归纳,为每个类型 A 定义"可归约项"的集合 REDA:对基本类型 o,令 REDo 为所有强正规化项组成的集合 SN;对函数类型,令 REDA→B={t:for every u∈REDA, tu∈REDB}。
首先对 A 做归纳,一并证明三条技术性质:(CR1) REDA 中每个项都是强正规化的;(CR2) REDA 对 β 归约封闭(若 t∈REDA 且 t→t′,则 t′∈REDA);(CR3) 任何"中性"项(变量或应用,而非抽象),若其所有一步归约结果都已在 REDA 中,则它本身也在 REDA 中。基本情形由 SN 的定义直接得出;函数类型情形展开 REDA→B 的定义,并对更小的类型 A、B 使用归纳假设。
接着证明,在给自由变量代入可归约项后,每个良类型的项都是可归约的:对 Γ⊢t:A 的类型推导做归纳,若 σ 给 Γ 中每个变量 x 指派一个项 σ(x)∈REDΓ(x),则 tσ∈REDA。变量情形显然。应用情形直接由 REDA→B 的定义得出。抽象情形最需要小心:把 (λx.t)σ 作用于任意 u∈REDA,该项经一步 β 归约为 t(σ,x:=u),由归纳假设(应用于扩充后的代入)可知它属于 REDB;性质(CR3)——对归约结果已全部可归约的项的"展开"封闭性——由此把 (λx.t)σu 本身也纳入 REDB,于是按定义 (λx.t)σ∈REDA→B。
最后,把这应用于恒等代入:每个变量 x:A 本身就是中性的且完全没有归约结果,故由 (CR3) 它平凡地属于 REDA。于是对任意闭推导 Γ⊢t:A,取 σ 把每个 x 映到自身,得到 t=tσ∈REDA。由 (CR1),REDA⊆SN,故 t∈SN:每个良类型的项都是强正规化的。■