Skip to content

多步归约

Multi-step reduction · Reflexive-transitive closure

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

条目类型
定义

形式陈述

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

tt(refl)tuuvtv(step).

等价地,tu 当且仅当存在自然数 n 与有限序列

t=t0t1tn=u.

n=0 给出自反情形。至少一步的传递闭包记作 +。路径可拼接:若 tuuv,则 tv;证明对第一段或第二段的有限推导归纳。

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

直觉

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

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

例子与边界

若左到右算术语义给出

(1+2)×43×412,

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

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

推论与应用

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

单步类型保持可按路径长度归纳提升为多步保持:若 Γt:Ttu,则 Γ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。
关系图谱8 个相邻概念 · 2 类关系

拖动节点调整位置。

显示关系

显示:依赖

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