一句话:提出 big-stop 语义,用归纳定义的大步求值判断等价刻画小步闭包,可表达发散且无需错误状态。
论文针对大步语义通常无法描述发散等行为的问题,提出一种鲜为人知的扩展——big-stop 语义。它在标准大步推理规则上仅增加少量归纳规则,就定义出与小步转移自反传递闭包等价的求值判断,可在不引入错误状态的情况下捕捉发散计算。作者以带类型、无类型和带效应变体的 PCF 为例展示该语义,避免其他方案为保留人因工程而引入大量规则、全局状态或余归纳等难理解原理。并用 Agda 给出关键结果和编译定理的简洁机器化证明,说明该定义便于推理与验证。
As is evident in the programming language literature, many practitioners favor specifying dynamic program behavior using big-step over small-step semantics. Unlike small-step semantics, which must dwell on every intermediate program state, big-step semantics conveniently jumps directly to the ever-important result of the computation. Big-step semantics also typically involves fewer inference rules than their small-step counterparts. However, in exchange for ergonomics, big-step semantics gives up power: Small-step semantics describes program behaviors that are outside the grasp of big-step semantics, notably divergence. This work presents a little-known extension of big-step semantics with inductive definitions that captures diverging computations without introducing error states. This big-stop semantics is illustrated for typed, untyped, and effectful variants of PCF. Big-stop semantics extends the standard big-step inference rules with a few additional rules to define an evaluation judgment that is equivalent to the reflexive-transitive closure of small-step transitions. This simple extension contrasts with other solutions in the literature that sacrifice ergonomics by introducing many additional inference rules, global state, and/or less-commonly-understood reasoning principles like coinduction. The ergonomics of big-stop semantics is exemplified via concise Agda proofs for some key results and compilation theorems.
DOI 原文 · arXiv · PDF(开放获取) · DBLP
@article{KahnHL26,
title = {Big-Stop Semantics: Small-Step Semantics in a Big-Step Judgment},
author = {David M. Kahn and Jan Hoffmann and Runming Li},
journal = {Proceedings of the ACM on Programming Languages},
volume = {10},
number = {POPL},
year = {2026},
doi = {10.1145/3776718}
}