“由于 良基关系 不存在无限下降链,循环体不可能被无限执行。若取 $W=\mathbb N$,常见写法引入不被 $C$ 修改的新逻辑变量 $z$,要求”
形式陈述 ​
二元关系
等价地,每个非空子集
设转移系统的状态集合为
这样的无限执行。若存在映射
则
自然数上的
直觉
循环不变量说明执行“始终没有走错”,排名函数说明执行“不能永远走下去”。前者约束状态所在区域,后者给每一步分配不可无限减少的预算。
只证明变量非负不够;还要证明每一步严格下降。只证明偶尔下降也不够,除非能排除两次下降之间的无限停滞。终止性是对所有允许执行的量化,存在一条结束路径不能证明非确定程序必终止。
例子与边界
欧几里得算法对正整数状态
取排名
二分查找可取候选区间长度 l = mid 可能保持长度不变,因而部分正确性论证无法补上终止义务。
随机过程几乎必然终止,不等于每条样本路径都终止;期望终止时间有限又是更强的定量条件。并发系统的公平性也会影响活性:某线程一直不被调度造成的无限执行,可能在公平语义下被排除、在无公平假设下被允许。
推论与应用
非终止可表示为无限下降序列 x0 ≻ x1 ≻ x2 ≻⋯;良基性排除这种序列,因此给排名函数或良基关系就能把每一步严格下降转成终止证明。
完全正确性等于部分正确性加终止性。循环、递归和重写系统可分别用变体、结构递归与简化序证明终止。强归纳是自然数良基归纳的常见实例;序数排名则能处理嵌套阶段和更复杂的下降模式。
自动终止分析尝试合成线性、词典序或分段排名函数;失败只表示该模板没有找到证书,不自动说明程序发散。停机问题排除了适用于所有程序的完备自动判定器。
参考资料
- Nachum Dershowitz and Zohar Manna, “Proving Termination with Multiset Orderings,” Communications of the ACM 22(8), 1979.
- Amir Pnueli, “The Temporal Logic of Programs,” FOCS, 1977.
- Jean-Pierre Jouannaud and Albert Rubio, “The Higher-Order Recursive Path Ordering,” LICS, 1999.