Skip to content

定义Definition

正规化性质

施工中 · 内容逐步修订

Normalization property

每个良构或良类型项能否经有限归约到正规形的性质。

形式陈述 ​

给定项集合上的单步关系 →,以有限多步归约记其自反传递闭包 →∗;正规形是没有一步后继的项。项 t 弱正规化(weakly normalizing),若存在正规形 n 使 t→∗n;项 t 强正规化(strongly normalizing),若从 t 出发不存在无限归约序列

t=t0→t1→t2→⋯.

一个语言或项集合具有弱正规化性质,若其中每个项都弱正规化;具有强正规化性质,若每个项都强正规化。强正规化蕴含弱正规化,但反向一般不成立。两者都量化允许的归约关系,不等于语言指定 evaluator 的终止性:后者只问某个确定求值策略产生的执行是否有限。改变可归约位置、规则或求值策略都可能改变结论。

直觉

正规化讨论的是计算能否结束,但量词位置决定了两种很不一样的保证。弱正规化说“至少有一种聪明的走法能到终点”,强正规化说“不管怎样选择下一步都不可能无限走”。正规形只描述终点长什么样,正规化性质则描述从起点是否以及如何必然抵达。类型系统常通过限制自应用和递归来换取强正规化;这种保证比通常的类型安全更强,因为后者允许良类型程序无限运行。

例子与边界

令 Ω=(λz.zz)(λz.zz),有 Ω→βΩ。在完整 β-归约下,(λx.y)Ω 弱正规化:收缩外层一步即得 y;但它不强正规化,因为可以永远在参数内重复这一步。调用名可直接丢弃参数,调用值却会先执行发散参数,因此同一项在两种策略下的终止结论不同。Ω 本身既不弱正规化也不强正规化。

闭项也能区分“求值停止”和“完全正规化”。λx.Ω 在不进入函数体的弱求值语义中已经是函数值;完整 β-归约却仍能进入其体并永远执行。因此不能把“求值器返回了一个函数”直接当成该项有 β-正规形。有限算术表达式若每一步确实减少运算符数,可用该自然数度量证明强正规化;β-替换会复制子项,不能照搬这个大小证明。

边界在于“程序运行会终止”通常只关心语言指定的单一求值策略,而强正规化量化所有合法归约顺序。具有一般递归的实用语言不可能让所有程序都正规化;证明助理的逻辑核心则常要求定义通过结构递归或终止检查,以保护逻辑一致性。

推论与应用

简单类型 λ 演算强正规化是类型限制排除非终止计算的基本结果,并通过 Curry–Howard 对应转化为证明正规化与逻辑一致性的证据。常见证明把“可终止且在函数应用下封闭”组织成一元逻辑关系,再由逻辑关系基本定理推出每个良类型项属于该谓词;具体关系与推导归纳不属于正规化性质的定义。

在程序验证中,终止分析、大小变化原则和良基递归都在构造一个随步骤严格下降的量。类型检查若通过正规化比较定义相等,还需要归约可有效执行、正规形可判等,以及合流性保证比较不依赖归约选择;仅有“会停”并不足以得到完整的类型检查算法。正规化本身不保证正规形唯一;在重写系统中,有

strong normalization+confluence⟹unique normal form.

弱正规化加合流性也能使已存在的正规形唯一,但不足以排除其他发散归约路径。

参考资料
  • Robert Harper, Practical Foundations for Programming Languages, 2nd ed., Cambridge University Press, 2016,§9.4 “Undefinability” 与 §§46.2–46.3:System T 的终止及逻辑关系论证。出版社目录。
  • Benjamin C. Pierce, Types and Programming Languages, MIT Press, 2002,§12.1 “Normalization for Simple Types”、§12.2 “Notes”:指定求值关系的正规化证明及其与完整 β 强正规化的区别。作者目录。
关系图谱7 个相邻概念 · 2 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组
类型化关系