h5i
本中文版由作者借助 AI 翻译而成。作者并非中文母语者,译文未经人工逐句校对,可能存在错误。如发现问题,请在 GitHub 上提交 issue。

附录 D

一致性的证明

第 14 章指出核心系统是一致的:没有闭项具有类型 Π(P:Sort 0). P\tPi{P}{\Sort{0}}{P}(定理 14.5)。本附录给出完整证明,包括论证所用到的关于定型和转换的标准事实。它针对的是核心系统:图 3.1 的规则加上第 13 章的宇宙,不含第二部分的常量。

思路

这个证明把一条深刻的定理与一个初等论证结合起来。深刻的定理是强规范化,即每个良类型项都归约到一个范式;再加上类型保持性,它意味着:若有任何闭项具有类型 Π(P:Sort 0). P\tPi{P}{\Sort{0}}{P},就会有一个范式闭项也具有该类型。初等论证则是一次情形分析,表明没有范式闭项能具有这个类型。

情形分析分两轮。第一轮:范式必须是一个 λ\lambda,因为封闭且为范式的项中,再没有别的形状能具有 Π\Pi 类型。第二轮:它的体必须是上下文 P:Sort 0P : \Sort{0} 中类型为 PP 的项,而没有范式项能做到,因为作用域中唯一的变量类型是 Sort 0\Sort{0},它既不是 PP,也不是函数类型。

要让情形分析严格,我们需要知道各种形状的项的类型长什么样(生成引理),以及形状不同的项绝不可转换(合流性的推论)。先把这些事实收集起来。

关于类型系统的事实

除了第 14 章的类型保持性和强规范化,证明还用到纯类型系统(Pure Type Systems)的下列标准性质 [Barendregt 1992]。类型保持性通过对步数归纳,从一步推广到任意多步。

引理 D.1(标准性质)。

(a) 生成。 若 Γ⊢t:T\Gamma \vdash t : T,则按 tt 的形状分别有:

  • 若 t=xt = x,则对某个 AA 有 (x:A)∈Γ(x : A) \in \Gamma 且 T≡AT \conv A;
  • 若 t=Sort ut = \Sort{u},则 T≡Sort (u+1)T \conv \Sort{(u+1)};
  • 若 t=Π(x:A). Bt = \tPi{x}{A}{B},则对某个 ww 有 T≡Sort wT \conv \Sort{w};
  • 若 t=λ(x:A). st = \tLam{x}{A}{s},则对某个 BB 有 Γ,x:A⊢s:B\Gamma, x : A \vdash s : B 且 T≡Π(x:A). BT \conv \tPi{x}{A}{B};
  • 若 t=f  at = f\;a,则对某些 xx、AA 和 BB 有 Γ⊢f:Π(x:A). B\Gamma \vdash f : \tPi{x}{A}{B} 且 Γ⊢a:A\Gamma \vdash a : A。

(b) 合流性。 若 s≡ts \conv t,则 ss 和 tt 归约到同一个项。由此:Π(x:A). B≡Π(y:A′). B′\tPi{x}{A}{B} \conv \tPi{y}{A'}{B'} 蕴含 A≡A′A \conv A',以及对新鲜的 zz 有 B[x↦z]≡B′[y↦z]\subst{B}{x}{z} \conv \subst{B'}{y}{z};并且变量、宇宙和 Π\Pi 三者之中任意两个都不可转换。

(c) 替换。 若 s≡ts \conv t,则 s[z↦a]≡t[z↦a]\subst{s}{z}{a} \conv \subst{t}{z}{a}。

生成引理就是把类型规则倒过来读:它说,给某种形状的项定型,唯一的办法就是该形状对应的规则,之后可能再用若干次 T-Conv。这就是为什么每种情形写的是“T≡…T \conv \ldots”而不是“T=…T = \ldots”。

(b) 中的推论成立,是因为变量和宇宙根本不归约,Π\Pi 只会归约到 Π\Pi(归约发生在它的注解或体内部,绝不在根部),所以两个有公共归约结果的项必然具有相同的最外层形状。

范式的形状

回忆第 12 章:每个项都是一个脊 h  a1⋯anh\;a_1 \cdots a_n,其头部 hh 不是应用。下面的引理按头部对范式项分类,它的作用是让主证明中的范式只剩四种可能,然后逐一排除。

引理 D.2(范式)。 设 nn 是范式项且 Γ⊢n:T\Gamma \vdash n : T。则 nn 是一个宇宙、一个 Π\Pi、一个 λ\lambda,或者一个中性(neutral)项 x  a1⋯akx\;a_1 \cdots a_k(k≥0k \ge 0),其头部 xx 是 dom(Γ)\dom(\Gamma) 中的变量。并且若 k≥1k \ge 1,则存在可转换为 Π\Pi 的某个 CC 使得 Γ⊢x:C\Gamma \vdash x : C。

写 n=h  a1⋯akn = h\;a_1 \cdots a_k,其中 hh 不是应用。

若 k=0k = 0,则 n=hn = h 是宇宙、Π\Pi、λ\lambda 或变量,因为除应用之外只有这几种形状。由生成引理,变量属于 dom(Γ)\dom(\Gamma)。

设 k≥1k \ge 1。由外向内对应用使用 kk 次生成引理,可知每个前缀 h  a1⋯aih\;a_1 \cdots a_i 都可定型,特别地,从最内层的应用 h  a1h\;a_1 得到:对某些 yy、AA 和 BB 有 Γ⊢h:Π(y:A). B\Gamma \vdash h : \tPi{y}{A}{B}。现在考虑 hh 的形状。它不是 λ\lambda,否则 h  a1h\;a_1 就是范式项 nn 内部的一个 β\beta 可归约式;它也不是宇宙或 Π\Pi:由生成引理,它的类型将可转换为某个宇宙,而由合流性,宇宙不可转换为 Π(y:A). B\tPi{y}{A}{B}。所以 hh 是某个变量 xx,由生成引理它属于 dom(Γ)\dom(\Gamma),且 Γ⊢x:Π(y:A). B\Gamma \vdash x : \tPi{y}{A}{B},这就是所需的 CC。

定理 14.5 的证明

定理 14.5(一致性)。 不存在闭项 tt 使得 ⋅⊢t:Π(P:Sort 0). P\cdot \vdash t : \tPi{P}{\Sort{0}}{P}。

假设 ⋅⊢t:Π(P:Sort 0). P\cdot \vdash t : \tPi{P}{\Sort{0}}{P}。由强规范化,tt 归约到某个范式项 nn;由类型保持性,⋅⊢n:Π(P:Sort 0). P\cdot \vdash n : \tPi{P}{\Sort{0}}{P}。我们两次使用引理 D.2,证明这样的 nn 不存在。

范式是一个 λ\lambda。 由引理 D.2,nn 是宇宙、Π\Pi、λ\lambda 或中性项。

  • 它不是中性项,因为其头部必须是空上下文中的变量,而空上下文没有变量。
  • 它不是宇宙或 Π\Pi,因为生成引理将使 Π(P:Sort 0). P\tPi{P}{\Sort{0}}{P} 可转换为某个宇宙,而合流性排除了这一点。

所以 n=λ(x:A). sn = \tLam{x}{A}{s}。由生成引理,对某个 BB 有 x:A⊢s:Bx : A \vdash s : B 且 Π(P:Sort 0). P≡Π(x:A). B\tPi{P}{\Sort{0}}{P} \conv \tPi{x}{A}{B}。由合流性,A≡Sort 0A \conv \Sort{0},并且对新鲜的 zz 有 P[P↦z]≡B[x↦z]\subst{P}{P}{z} \conv \subst{B}{x}{z},即 z≡B[x↦z]z \conv \subst{B}{x}{z}。两边同时用 xx 替换 zz,由引理 D.1 的 (c),这保持可转换性,于是得到 x≡Bx \conv B。体 ss 是范式,因为它是范式项 nn 的子项。简言之:x:A⊢s:Bx : A \vdash s : B,其中 A≡Sort 0A \conv \Sort{0} 且 B≡xB \conv x。

这个体不可能存在。 令 Γ=x:A\Gamma = x : A。由引理 D.2,ss 是宇宙、Π\Pi、λ\lambda 或中性项。

  • 若 ss 是宇宙或 Π\Pi,生成引理使 BB 可转换为某个宇宙;若 ss 是 λ\lambda,则使 BB 可转换为某个 Π\Pi。但 B≡xB \conv x,而由合流性,变量与两者都不可转换。
  • 若 ss 是中性项,其头部是 dom(Γ)={x}\dom(\Gamma) = \{x\} 中的变量,所以 s=x  a1⋯aks = x\;a_1 \cdots a_k。若 k=0k = 0,则 s=xs = x,生成引理给出 B≡AB \conv A。于是 x≡B≡A≡Sort 0x \conv B \conv A \conv \Sort{0},但变量不可转换为宇宙。若 k≥1k \ge 1,引理 D.2 给出 Γ⊢x:C\Gamma \vdash x : C,其中 CC 可转换为某个 Π\Pi,而对变量 xx 用生成引理得到 C≡A≡Sort 0C \conv A \conv \Sort{0}。于是一个 Π\Pi 可转换为一个宇宙,这被合流性排除。

每种情形都导出矛盾,所以没有闭项具有类型 Π(P:Sort 0). P\tPi{P}{\Sort{0}}{P}。

用文字来说:λ\lambda 内部唯一可用的变量是 xx,其类型为 Sort 0\Sort{0},它既不能被直接返回,因为 Sort 0\Sort{0} 不是 xx;也不能应用于任何东西,因为 Sort 0\Sort{0} 不是函数类型。其余每种范式项的类型都是宇宙或 Π\Pi,而 xx 两者都不是。论证依靠强规范化把问题归结到范式项上;全部难点都在这一步。

要点回顾

  • 一致性的证明,把强规范化与类型保持性(用来过渡到范式)同对范式项形状的情形分析结合起来。
  • 情形分析用到两个标准事实:生成引理(把类型规则倒过来读)和合流性(最外层形状不同的项绝不可转换)。
  • 类型为 Π(P:Sort 0). P\tPi{P}{\Sort{0}}{P} 的闭范式项必须是一个 λ\lambda,其体在上下文 x:Sort 0x : \Sort{0} 中具有类型 xx,而没有范式项能做到。
  • 难点在强规范化;仅凭形状分析也适用于 Type:Type\mathsf{Type} : \mathsf{Type},并表明 Hurkens 的项没有范式。