第 14 章 指出核心系统是一致的:没有闭项具有类型 Π ( P : S o r t 0 ) . P \tPi{P}{\Sort{0}}{P} Π ( P : Sort 0 ) . P (定理 14.5)。本附录给出完整证明,包括论证所用到的关于定型和转换的标准事实。它针对的是核心系统:图 3.1 的规则加上第 13 章 的宇宙,不含第二部分的常量。
思路
这个证明把一条深刻的定理与一个初等论证结合起来。深刻的定理是强规范化,即每个良类型项都归约到一个范式;再加上类型保持性,它意味着:若有任何闭项具有类型 Π ( P : S o r t 0 ) . P \tPi{P}{\Sort{0}}{P} Π ( P : Sort 0 ) . P ,就会有一个范式 闭项也具有该类型。初等论证则是一次情形分析,表明没有范式闭项能具有这个类型。
情形分析分两轮。第一轮:范式必须是一个 λ \lambda λ ,因为封闭且为范式的项中,再没有别的形状能具有 Π \Pi Π 类型。第二轮:它的体必须是上下文 P : S o r t 0 P : \Sort{0} P : Sort 0 中类型为 P P P 的项,而没有范式项能做到,因为作用域中唯一的变量类型是 S o r t 0 \Sort{0} Sort 0 ,它既不是 P P P ,也不是函数类型。
要让情形分析严格,我们需要知道各种形状的项的类型长什么样(生成 引理),以及形状不同的项绝不可转换(合流性 的推论)。先把这些事实收集起来。
关于类型系统的事实
除了第 14 章的类型保持性和强规范化,证明还用到纯类型系统(Pure Type Systems)的下列标准性质 [Barendregt 1992]。类型保持性通过对步数归纳,从一步推广到任意多步。
引理 D.1(标准性质)。
(a) 生成。 若 Γ ⊢ t : T \Gamma \vdash t : T Γ ⊢ t : T ,则按 t t t 的形状分别有:
若 t = x t = x t = x ,则对某个 A A A 有 ( x : A ) ∈ Γ (x : A) \in \Gamma ( x : A ) ∈ Γ 且 T ≡ A T \conv A T ≡ A ;
若 t = S o r t u t = \Sort{u} t = Sort u ,则 T ≡ S o r t ( u + 1 ) T \conv \Sort{(u+1)} T ≡ Sort ( u + 1 ) ;
若 t = Π ( x : A ) . B t = \tPi{x}{A}{B} t = Π ( x : A ) . B ,则对某个 w w w 有 T ≡ S o r t w T \conv \Sort{w} T ≡ Sort w ;
若 t = λ ( x : A ) . s t = \tLam{x}{A}{s} t = λ ( x : A ) . s ,则对某个 B B B 有 Γ , x : A ⊢ s : B \Gamma, x : A \vdash s : B Γ , x : A ⊢ s : B 且 T ≡ Π ( x : A ) . B T \conv \tPi{x}{A}{B} T ≡ Π ( x : A ) . B ;
若 t = f a t = f\;a t = f a ,则对某些 x x x 、A A A 和 B B B 有 Γ ⊢ f : Π ( x : A ) . B \Gamma \vdash f : \tPi{x}{A}{B} Γ ⊢ f : Π ( x : A ) . B 且 Γ ⊢ a : A \Gamma \vdash a : A Γ ⊢ a : A 。
(b) 合流性。 若 s ≡ t s \conv t s ≡ t ,则 s s s 和 t t t 归约到同一个项。由此:Π ( x : A ) . B ≡ Π ( y : A ′ ) . B ′ \tPi{x}{A}{B} \conv \tPi{y}{A'}{B'} Π ( x : A ) . B ≡ Π ( y : A ′ ) . B ′ 蕴含 A ≡ A ′ A \conv A' A ≡ A ′ ,以及对新鲜的 z z z 有 B [ x ↦ z ] ≡ B ′ [ y ↦ z ] \subst{B}{x}{z} \conv \subst{B'}{y}{z} B [ x ↦ z ] ≡ B ′ [ y ↦ z ] ;并且变量、宇宙和 Π \Pi Π 三者之中任意两个都不可转换。
(c) 替换。 若 s ≡ t s \conv t s ≡ t ,则 s [ z ↦ a ] ≡ t [ z ↦ a ] \subst{s}{z}{a} \conv \subst{t}{z}{a} s [ z ↦ a ] ≡ t [ z ↦ a ] 。
生成引理就是把类型规则倒过来读:它说,给某种形状的项定型,唯一的办法就是该形状对应的规则,之后可能再用若干次 T-Conv。这就是为什么每种情形写的是“T ≡ … T \conv \ldots T ≡ … ”而不是“T = … T = \ldots T = … ”。
(b) 中的推论成立,是因为变量和宇宙根本不归约,Π \Pi Π 只会归约到 Π \Pi Π (归约发生在它的注解或体内部,绝不在根部),所以两个有公共归约结果的项必然具有相同的最外层形状。
范式的形状
回忆第 12 章 :每个项都是一个脊 h a 1 ⋯ a n h\;a_1 \cdots a_n h a 1 ⋯ a n ,其头部 h h h 不是应用。下面的引理按头部对范式项分类,它的作用是让主证明中的范式只剩四种可能,然后逐一排除。
引理 D.2(范式)。 设 n n n 是范式项且 Γ ⊢ n : T \Gamma \vdash n : T Γ ⊢ n : T 。则 n n n 是一个宇宙、一个 Π \Pi Π 、一个 λ \lambda λ ,或者一个中性 (neutral)项 x a 1 ⋯ a k x\;a_1 \cdots a_k x a 1 ⋯ a k (k ≥ 0 k \ge 0 k ≥ 0 ),其头部 x x x 是 d o m ( Γ ) \dom(\Gamma) dom ( Γ ) 中的变量。并且若 k ≥ 1 k \ge 1 k ≥ 1 ,则存在可转换为 Π \Pi Π 的某个 C C C 使得 Γ ⊢ x : C \Gamma \vdash x : C Γ ⊢ x : C 。
写 n = h a 1 ⋯ a k n = h\;a_1 \cdots a_k n = h a 1 ⋯ a k ,其中 h h h 不是应用。
若 k = 0 k = 0 k = 0 ,则 n = h n = h n = h 是宇宙、Π \Pi Π 、λ \lambda λ 或变量,因为除应用之外只有这几种形状。由生成引理,变量属于 d o m ( Γ ) \dom(\Gamma) dom ( Γ ) 。
设 k ≥ 1 k \ge 1 k ≥ 1 。由外向内对应用使用 k k k 次生成引理,可知每个前缀 h a 1 ⋯ a i h\;a_1 \cdots a_i h a 1 ⋯ a i 都可定型,特别地,从最内层的应用 h a 1 h\;a_1 h a 1 得到:对某些 y y y 、A A A 和 B B B 有 Γ ⊢ h : Π ( y : A ) . B \Gamma \vdash h : \tPi{y}{A}{B} Γ ⊢ h : Π ( y : A ) . B 。现在考虑 h h h 的形状。它不是 λ \lambda λ ,否则 h a 1 h\;a_1 h a 1 就是范式项 n n n 内部的一个 β \beta β 可归约式;它也不是宇宙或 Π \Pi Π :由生成引理,它的类型将可转换为某个宇宙,而由合流性,宇宙不可转换为 Π ( y : A ) . B \tPi{y}{A}{B} Π ( y : A ) . B 。所以 h h h 是某个变量 x x x ,由生成引理它属于 d o m ( Γ ) \dom(\Gamma) dom ( Γ ) ,且 Γ ⊢ x : Π ( y : A ) . B \Gamma \vdash x : \tPi{y}{A}{B} Γ ⊢ x : Π ( y : A ) . B ,这就是所需的 C C C 。
定理 14.5 的证明
定理 14.5(一致性)。 不存在闭项 t t t 使得 ⋅ ⊢ t : Π ( P : S o r t 0 ) . P \cdot \vdash t : \tPi{P}{\Sort{0}}{P} ⋅ ⊢ t : Π ( P : Sort 0 ) . P 。
假设 ⋅ ⊢ t : Π ( P : S o r t 0 ) . P \cdot \vdash t : \tPi{P}{\Sort{0}}{P} ⋅ ⊢ t : Π ( P : Sort 0 ) . P 。由强规范化,t t t 归约到某个范式项 n n n ;由类型保持性,⋅ ⊢ n : Π ( P : S o r t 0 ) . P \cdot \vdash n : \tPi{P}{\Sort{0}}{P} ⋅ ⊢ n : Π ( P : Sort 0 ) . P 。我们两次使用引理 D.2,证明这样的 n n n 不存在。
范式是一个 λ \lambda λ 。 由引理 D.2,n n n 是宇宙、Π \Pi Π 、λ \lambda λ 或中性项。
它不是中性项,因为其头部必须是空上下文中的变量,而空上下文没有变量。
它不是宇宙或 Π \Pi Π ,因为生成引理将使 Π ( P : S o r t 0 ) . P \tPi{P}{\Sort{0}}{P} Π ( P : Sort 0 ) . P 可转换为某个宇宙,而合流性排除了这一点。
所以 n = λ ( x : A ) . s n = \tLam{x}{A}{s} n = λ ( x : A ) . s 。由生成引理,对某个 B B B 有 x : A ⊢ s : B x : A \vdash s : B x : A ⊢ s : B 且 Π ( P : S o r t 0 ) . P ≡ Π ( x : A ) . B \tPi{P}{\Sort{0}}{P} \conv \tPi{x}{A}{B} Π ( P : Sort 0 ) . P ≡ Π ( x : A ) . B 。由合流性,A ≡ S o r t 0 A \conv \Sort{0} A ≡ Sort 0 ,并且对新鲜的 z z z 有 P [ P ↦ z ] ≡ B [ x ↦ z ] \subst{P}{P}{z} \conv \subst{B}{x}{z} P [ P ↦ z ] ≡ B [ x ↦ z ] ,即 z ≡ B [ x ↦ z ] z \conv \subst{B}{x}{z} z ≡ B [ x ↦ z ] 。两边同时用 x x x 替换 z z z ,由引理 D.1 的 (c),这保持可转换性,于是得到 x ≡ B x \conv B x ≡ B 。体 s s s 是范式,因为它是范式项 n n n 的子项。简言之:x : A ⊢ s : B x : A \vdash s : B x : A ⊢ s : B ,其中 A ≡ S o r t 0 A \conv \Sort{0} A ≡ Sort 0 且 B ≡ x B \conv x B ≡ x 。
这个体不可能存在。 令 Γ = x : A \Gamma = x : A Γ = x : A 。由引理 D.2,s s s 是宇宙、Π \Pi Π 、λ \lambda λ 或中性项。
若 s s s 是宇宙或 Π \Pi Π ,生成引理使 B B B 可转换为某个宇宙;若 s s s 是 λ \lambda λ ,则使 B B B 可转换为某个 Π \Pi Π 。但 B ≡ x B \conv x B ≡ x ,而由合流性,变量与两者都不可转换。
若 s s s 是中性项,其头部是 d o m ( Γ ) = { x } \dom(\Gamma) = \{x\} dom ( Γ ) = { x } 中的变量,所以 s = x a 1 ⋯ a k s = x\;a_1 \cdots a_k s = x a 1 ⋯ a k 。若 k = 0 k = 0 k = 0 ,则 s = x s = x s = x ,生成引理给出 B ≡ A B \conv A B ≡ A 。于是 x ≡ B ≡ A ≡ S o r t 0 x \conv B \conv A \conv \Sort{0} x ≡ B ≡ A ≡ Sort 0 ,但变量不可转换为宇宙。若 k ≥ 1 k \ge 1 k ≥ 1 ,引理 D.2 给出 Γ ⊢ x : C \Gamma \vdash x : C Γ ⊢ x : C ,其中 C C C 可转换为某个 Π \Pi Π ,而对变量 x x x 用生成引理得到 C ≡ A ≡ S o r t 0 C \conv A \conv \Sort{0} C ≡ A ≡ Sort 0 。于是一个 Π \Pi Π 可转换为一个宇宙,这被合流性排除。
每种情形都导出矛盾,所以没有闭项具有类型 Π ( P : S o r t 0 ) . P \tPi{P}{\Sort{0}}{P} Π ( P : Sort 0 ) . P 。
用文字来说:λ \lambda λ 内部唯一可用的变量是 x x x ,其类型为 S o r t 0 \Sort{0} Sort 0 ,它既不能被直接返回,因为 S o r t 0 \Sort{0} Sort 0 不是 x x x ;也不能应用于任何东西,因为 S o r t 0 \Sort{0} Sort 0 不是函数类型。其余每种范式项的类型都是宇宙或 Π \Pi Π ,而 x x x 两者都不是。论证依靠强规范化把问题归结到范式项上;全部难点都在这一步。
证明的后半部分,即对范式项的分析,不使用强规范化,也不依赖宇宙结构,因此原封不动地适用于带 T y p e : T y p e \mathsf{Type} : \mathsf{Type} Type : Type 的系统。第 13 章正是据此得出结论:Hurkens 的项(附录 C )在该系统中具有类型 Π ( P : T y p e ) . P \tPi{P}{\mathsf{Type}}{P} Π ( P : Type ) . P ,它不可能有范式,因为如果有,上述分析就会把它排除。所以在那个不一致的系统里,失效的是强规范化,而不是生成引理或合流性。
加入第二部分的归纳类型后,范式还包括卡住的递归子应用,例如 n n n 为变量时的 N a t . r e c u M z s n \NatRec{u}\;M\;z\;s\;n Nat.rec u M z s n ,上面这个简短的情形分析就不再单独够用了。归纳构造演算(Calculus of Inductive Constructions)的一致性,由强规范化加上对范式更细致的分析得出,而扩展后的系统是它的一个片段 [Werner 1994]。
要点回顾
一致性的证明,把强规范化与类型保持性(用来过渡到范式)同对范式项形状的情形分析结合起来。
情形分析用到两个标准事实:生成引理(把类型规则倒过来读)和合流性(最外层形状不同的项绝不可转换)。
类型为 Π ( P : S o r t 0 ) . P \tPi{P}{\Sort{0}}{P} Π ( P : Sort 0 ) . P 的闭范式项必须是一个 λ \lambda λ ,其体在上下文 x : S o r t 0 x : \Sort{0} x : Sort 0 中具有类型 x x x ,而没有范式项能做到。
难点在强规范化;仅凭形状分析也适用于 T y p e : T y p e \mathsf{Type} : \mathsf{Type} Type : Type ,并表明 Hurkens 的项没有范式。