“证明通常依赖值形式引理、规范形式引理和替换引理,并对类型推导或小步语义规则归纳。保持定理也可看成“良类型配置集合对每一步转移封闭”的归纳不变式,进展再排除其中非最终的死锁配置;这是一项覆盖任…”
两个容易混淆的量词 ​
设状态机
它陈述的是语义事实:真实可达的状态全都满足
第二个量词覆盖所有满足
从归纳条件到安全性 ​
取任意长度为
基例由初始性得到
若坏状态集合为
便证明坏状态不可达。
真不变式为何可能不归纳 ​
考虑状态集
从初始状态只能到达
问题出在不可达的状态
“加强”指允许状态集合变小:若用集合表示谓词,
计数器协议的辅助事实 ​
设两个计数器
谓词
在初始状态成立,同时加一和停顿都保持相等,因此
在并发协议中,常需把互斥目标与控制位置、所有权、消息计数或任期单调性一起加强。随意堆叠“看起来合理”的断言不够,每个合取项都必须在所有转移下闭合。
与循环和模型检查的接口 ​
循环不变式是程序控制流上的特例:初始化对应进入循环头,一步保持对应执行一次循环体,退出条件与不变式共同推出后置条件。循环终止还需变元或良基关系,归纳不变式本身只证明安全,不保证最终离开循环。
显式模型检查可以先计算精确可达集合,它本身是最小的归纳闭集;无限状态系统通常无法枚举该集合,便用可表达的较大集合
不变式也不等于任意时序性质。“请求最终得到响应”允许中间状态反复变化,不能表示成某个状态集合永远封闭;它是活性条件,需要时序逻辑和公平性假设。
参考资料
- 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。