“循环不变式与 最弱前置条件把结果证明分解为可检查的局部义务,良基关系上的递减量负责终止。模型检查若发现失败,可用反例轨迹见证某条允许执行违反规格;若给出证明证书,检查器也只是在核对证书相对于…”
“对非确定程序,这里量化所有终止执行,而不是仅某条成功路径。完全正确性还要求每个满足 $P$ 的初始状态下,所有允许执行都终止并满足 $Q$。确定函数式算法是只产生一个结果的特例。用 Hoar…”
Termination · Well-founded relation · Ranking function
用不存在无限下降链与严格递减排名函数刻画程序或转移系统的终止。
二元关系
等价地,每个非空子集
设转移系统的状态集合为
这样的无限执行。若存在映射
则
自然数上的
循环不变量说明执行“始终没有走错”,排名函数说明执行“不能永远走下去”。前者约束状态所在区域,后者给每一步分配不可无限减少的预算。
只证明变量非负不够;还要证明每一步严格下降。只证明偶尔下降也不够,除非能排除两次下降之间的无限停滞。终止性是对所有允许执行的量化,存在一条结束路径不能证明非确定程序必终止。
欧几里得算法对正整数状态
取排名
二分查找可取候选区间长度 l = mid 可能保持长度不变,因而部分正确性论证无法补上终止义务。
随机过程几乎必然终止,不等于每条样本路径都终止;期望终止时间有限又是更强的定量条件。并发系统的公平性也会影响活性:某线程一直不被调度造成的无限执行,可能在公平语义下被排除、在无公平假设下被允许。
非终止可表示为无限下降序列 x0 ≻ x1 ≻ x2 ≻⋯;良基性排除这种序列,因此给排名函数或良基关系就能把每一步严格下降转成终止证明。
完全正确性等于部分正确性加终止性。循环、递归和重写系统可分别用变体、结构递归与简化序证明终止。强归纳是自然数良基归纳的常见实例;序数排名则能处理嵌套阶段和更复杂的下降模式。
自动终止分析尝试合成线性、词典序或分段排名函数;失败只表示该模板没有找到证书,不自动说明程序发散。停机问题排除了适用于所有程序的完备自动判定器。