形式陈述
设 → ⊆ X × X 是项或配置上的单步关系 公理库 关系 Relation · Binary relation 带源集与目标集的二元关系,其底层关系图是 A×B 的子集。 。其自反传递闭包 → ∗ 可由两条规则归纳定义:
t → ∗ t ( refl ) t → u u → ∗ v t → ∗ v ( step ) . 等价地,t → ∗ u 当且仅当存在自然数 n 与有限序列
t = t 0 → t 1 → ⋯ → t n = u . n = 0 给出自反情形。至少一步的传递闭包记作 → + 。路径可拼接:若 t → ∗ u 且 u → ∗ v ,则 t → ∗ v ;证明对第一段或第二段的有限推导归纳。
若 → 确定,则给定起点和步数至多有一个状态,但 → ∗ 仍把同一执行的所有有限前缀与起点关联起来。确定性不蕴含终止。
直觉
单步规则描述局部变化,多步关系回答有限时间内能到哪里。零步分支很实用:已经是结果的项无需特殊规则,也满足 v → ∗ v 。传递性则让较长执行可以由已证明的片段组合。
→ ∗ 只量化有限序列。即使一条无限执行的每个有限前缀都存在,也没有一个“无穷步后的状态”自动加入闭包。发散需要无限轨迹或共归纳判断另行表达。
例子与边界
若左到右算术语义给出
( 1 + 2 ) × 4 → 3 × 4 → 12 , 便有 ( 1 + 2 ) × 4 → ∗ 12 。同一项还满足 ( 1 + 2 ) × 4 → ∗ ( 1 + 2 ) × 4 ,因为允许零步;它通常不满足对应的 → + ,除非能沿非空环路回到自身。
令 Ω = ( λ x . x x ) ( λ x . x x ) 。在完整 β-归约中,Ω → β Ω ,所以 Ω → β + Ω ,并可构造任意长度的有限路径;这仍没有提供最终值。另一个边界是非确定分叉:t → u 与 t → v 会使 t → ∗ u 、t → ∗ v 同时成立,多步闭包不会替系统选择其中一条。
推论与应用
多步归约把小步语义 公理库 小步操作语义 Small-step operational semantics · Structural operational semantics 用配置间的一步转移及有限或无限路径精确描述执行顺序、终止、卡住与发散。 连接到终止结果:常把“e 求值到值 v ”写成 e → ∗ v 且 v ∈ Val 。仅要求 v ↛ 不够,因为卡住项也没有后继。
单步类型保持可按路径长度归纳 公理库 数学归纳法 Mathematical induction · Weak induction 由基例和从 n 到 n+1 的归纳步推出性质对全部自然数成立。 提升为多步保持:若 Γ ⊢ t : T 且 t → ∗ u ,则 Γ ⊢ u : T 。归纳不变量、可达性与编译模拟也利用同一条路径拼接结构。
在并发系统中,→ ∗ 收集所有有限调度前缀;在编译正确性中,一个源步骤常对应零个、一个或多个目标步骤,因此模拟关系必须显式使用 → ∗ 。若需排除目标永远只走“零步”而不兑现源行为,还要增加进展或良基条件。
参考资料
Robert Harper, Practical Foundations for Programming Languages , 2nd ed., Cambridge University Press, 2016, Chapters 5–7。
Gordon D. Plotkin, “A Structural Approach to Operational Semantics,” DAIMI FN-19, 1981; reprinted in Journal of Logic and Algebraic Programming 60–61, 2004。
Benjamin C. Pierce, Types and Programming Languages , MIT Press, 2002, Chapters 3 and 8。