Skip to content

定义Definition

多步归约

施工中 · 内容逐步修订

Multi-step reduction · Reflexive-transitive closure

把单步关系闭包为零步或有限多步可达关系,并保留路径拼接结构。

形式陈述 ​

设 →⊆X×X 是项或配置上的单步关系。其自反传递闭包 →∗ 可由两条规则归纳定义:

t→∗t(refl)t→uu→∗vt→∗v(step).

等价地,t→∗u 当且仅当存在自然数 n 与有限序列

t=t0→t1→⋯→tn=u.

n=0 给出自反情形。至少一步的传递闭包记作 →+。多步关系记录路径存在性,通常不记录步数或选择过的分支;不同长度的推导可能证明同一对端点可达。路径可拼接:若 t→∗u 由 m 步见证,u→∗v 由 n 步见证,接起来就是 m+n 步的 t→∗v。这也直接证明传递性。

若 → 确定,则给定起点和步数至多有一个状态,但 →∗ 仍把同一执行的所有有限前缀与起点关联起来。确定性不蕴含终止。

直觉

单步规则描述局部变化,多步关系回答有限时间内能到哪里。零步分支很实用:已经是结果的项无需特殊规则,也满足 v→∗v。传递性则让较长执行可以由已证明的片段组合。

→∗ 只量化有限序列。即使一条无限执行的每个有限前缀都存在,也没有一个“无穷步后的状态”自动加入闭包。发散需要无限轨迹或共归纳判断另行表达。

例子与边界

若左到右算术语义给出

(1+2)×4→3×4→12,

便有 (1+2)×4→∗12。同一项还满足 (1+2)×4→∗(1+2)×4,因为允许零步;它通常不满足对应的 →+,除非能沿非空环路回到自身。

令 Ω=(λx.xx)(λx.xx)。在完整 β-归约中,Ω→βΩ,所以 Ω→β+Ω,并可构造任意长度的有限路径;这仍没有提供最终值。另一个边界是非确定分叉:t→u 与 t→v 会使 t→∗u、t→∗v 同时成立,多步闭包不会替系统选择其中一条。

推论与应用

多步归约把小步语义连接到终止结果:常把“e 求值到值 v”写成 e→∗v 且 v∈Val。仅要求 v↛ 不够,因为卡住项也没有后继。

单步类型保持可按路径长度归纳提升为多步保持:若 Γ⊢t:T 且 t→∗u,则 Γ⊢u:T。零步时 u=t,直接使用原判断;非零步时先写成 t→t1→∗u,用单步保持取得 Γ⊢t1: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。
关系图谱12 个相邻概念 · 2 类关系

拖动节点调整位置。

显示关系

显示:依赖

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

使用的工具

被这些条目使用