Skip to content

逻辑关系基本定理

Fundamental theorem of logical relations · Fundamental lemma

良类型项在点对点相关的环境替换下产生逻辑相关结果的核心引理。

形式陈述

先固定语言的求值语义,以及按类型定义的值关系 V[[A]] 和计算关系 E[[A]]。对上下文 Γ=x1:A1,,xn:An,写

γ1G[[Γ]]γ2

表示两个闭合替换逐变量相关:对每个 xi:Ai,有 (γ1(xi),γ2(xi))V[[Ai]]逻辑关系基本定理的二元形式是

Γe:Aγ1G[[Γ]]γ2(e[γ1],e[γ2])E[[A]].

一元形式把二元关系换成可计算性谓词:若替换给每个变量指派属于其类型谓词的值,则闭合后的项属于 E[[A]]。常说的“自相关”不是任意两个同类型项相关,而是同一个良类型项在两个相关实例化与相关环境下满足关系。

证明按类型推导归纳。三个核心分支说明环境条件为何不可省略:

  1. 变量分支中,e=x,结论直接来自 γ1G[[Γ]]γ2x 的分量。
  2. 抽象分支中,推导末步来自 Γ,x:Ae:B。为证明两个 λ 值在 AB 处相关,任取相关输入 v1,v2,把替换扩展为 γ1[xv1]γ2[xv2],再对函数体使用归纳假设。
  3. 应用分支中,归纳假设分别给出函数项在 AB 处相关、参数项在 A 处相关;箭头关系的定义于是推出两次应用在 B 处相关。

若语言含子类型、类型抽象、状态或递归,每种额外 typing rule 都会新增证明分支,并可能迫使关系加入闭包、world 或 step index。按裸项语法归纳会丢掉“最后使用了哪条类型规则”的信息,不能替代对推导树的归纳。

直觉

逻辑关系按类型规定局部行为,基本定理则证明整个类型系统不会越出这些规定。相关环境像一组接口契约:变量已经满足契约,抽象把契约延伸到任意相关实参,应用再把函数契约与参数契约扣合。证明逐条跟随 typing rule,因此每一种合法程序构造都被审计一次。

基本定理更像一个可复用的证明引擎,而不是一个固定结论。把基关系选成终止谓词,它导出正规化;选成两个实现的表示关系,它约束客户端观察;在 System F 中让类型变量解释为任意关系,则得到参数性。

例子与边界

对简单类型 λ 演算,令 E[[A]] 表示“求值到 V[[A]] 中的值”。闭项 e:A 使用空替换,基本定理立即给出 eE[[A]],所以 e 终止。这把可归约性证明的主要负担集中到关系定义、替换闭包和三个核心推导分支上。

若两个集合模块的内部值由“表示同一数学集合”关系连接,且每个导出操作保持该关系,基本定理可限制良类型客户端只能得到相关观察。不过它不会自动制造所需表示关系,也不会替代逐个验证模块操作保持关系的义务。

边界是把结论误读为“任意两个同类型程序都等价”。常量 truefalse 同属布尔类型,却不会在取等关系的布尔解释下相关。关系还依赖语言观察:加入异常、非终止或可变状态后,沿用纯、总语言的 E 会遗漏真实行为,基本定理的陈述和证明都必须随之调整。

推论与应用

逻辑关系基本定理把类型安全、正规化、编译器关系证明和抽象定理组织成同一种“良类型项保持关系”的结构。真正推出上下文等价时,还需证明逻辑关系对程序上下文充分、并与目标观察相容;基本定理本身只提供从 typing derivation 到关系成员的方向。

在机械化证明中,替换、环境扩展、弱化和类型替换常占据大量辅助引理。它们不是算法执行步骤,而是保证归纳假设可在新绑定下使用的元理论基础;省略这些条件会让纸面证明在 λ 抽象或多态分支处断裂。

参考资料
  • William W. Tait, “Intensional Interpretations of Functionals of Finite Type I,” Journal of Symbolic Logic 32(2), 1967。
  • Jean-Yves Girard, Proofs and Types, Cambridge University Press, 1989,reducibility candidates and fundamental lemmas。
  • Andrew M. Pitts, Operational Semantics and Program Equivalence, in Applied Semantics, Springer, 2002,logical relations and fundamental properties。