“在这个一致切片上,s等于“发送已在切片内、接收尚在切片外”的消息数,非负且不会出现漏发多收的抵消。所有被采样节点又都是passive,所以s=0证明切片满足终止谓词;利用稳定性,完成检查时也…”
形式陈述
两个容易混淆的量词
设状态机
它陈述的是语义事实:真实可达的状态全都满足
第二个量词覆盖所有满足
从归纳条件到安全性
取任意长度为
基例由初始性得到
若坏状态集合为
便证明坏状态不可达。
若部分转移由控制器选择,安全博弈中的可控不变集只要求每个控制器顶点存在一个留在集合内的后继,而每个环境顶点的所有后继都留在集合内。固定这样的控制策略、保留全部环境选择后,集合才对所得转移系统满足通常的一步闭包;未被选择的控制器边不属于这个闭包义务。
直觉
真不变式为何可能不归纳
考虑状态集
从初始状态只能到达
问题出在不可达的状态
“加强”指允许状态集合变小:若用集合表示谓词,
Houdini候选筛选把这一次序区别用于可执行算法:删掉候选会扩大归纳源状态集,可能触发下一轮失败;返回候选最多的有效子集,所定义允许状态集合反而最小于该候选合取族。k归纳另以安全窗口排除部分不可达干扰,但仍需从初态开始的base证书。
例子与边界
计数器协议的辅助事实
设两个计数器
谓词
在初始状态成立,同时加一和停顿都保持相等,因此
在并发协议中,常需把互斥目标与控制位置、所有权、消息计数或任期单调性一起加强。随意堆叠“看起来合理”的断言不够,每个合取项都必须在所有转移下闭合。
推论与应用
与循环和模型检查的接口
循环不变式是程序控制流上的特例:初始化对应进入循环头,一步保持对应执行一次循环体,退出条件与不变式共同推出后置条件。循环终止还需变元或良基关系,归纳不变式本身只证明安全,不保证最终离开循环。
显式模型检查可以先计算精确可达集合,它本身是最小的归纳闭集;无限状态系统通常无法枚举该集合,便用可表达的较大集合
不变式也不等于任意时序性质。“请求最终得到响应”允许中间状态反复变化,不能表示成某个状态集合永远封闭;它是活性条件,需要时序逻辑和公平性假设。
Petri 网中有一类可直接从结构读出的布尔不变量:虹吸一旦为空便保持空,陷阱一旦被标记便保持被标记。它们跟踪资源集合的空与非空,不要求 token 数精确守恒,因此与线性 place invariant 提供不同的安全证据。
参考资料
- Amir Pnueli, “The Temporal Logic of Programs,” FOCS, 1977, pp. 46–57。
- Edmund M. Clarke, Orna Grumberg, and Doron A. Peled, Model Checking, MIT Press, 1999, Chs. 1–2。
- Aaron R. Bradley and Zohar Manna, The Calculus of Computation, Springer, 2007, Chs. 12–14。
- Robert W. Floyd, “Assigning Meanings to Programs,” in Mathematical Aspects of Computer Science, AMS, 1967, pp. 19–32。