“中间的 Hoare 三元组 要求每次循环体若终止,都会在下一次判断 guard 前重新建立 $I$。第一项把调用者状态带入不变式,第三项说明退出时不变式足以得到目标;三项缺一不可。省略外层…”
形式陈述 ​
Hoare 三元组写作
其中
后果规则允许加强前置条件、减弱后置条件:若
直觉
三元组是一份条件契约:调用者提供
例子与边界
三元组 while true do skip,部分正确性三元组
边界是并发或异常:普通顺序三元组未说明其他线程可否修改状态,也未说明异常出口。需要并发分离逻辑、原子规范或带多个后置条件的扩展,才能准确覆盖这些行为。
推论与应用
Hoare 三元组是公理语义的基本判断。最弱前置条件为给定
分离逻辑把
参考资料
- C. A. R. Hoare, “An Axiomatic Basis for Computer Programming,” Communications of the ACM 12(10), 1969,Full paper, axioms and rules for assignment, sequencing, conditionals, and loops。
- Edsger W. Dijkstra, A Discipline of Programming, Prentice Hall, 1976,Chs. 1–2, assertions and guarded commands。