形式陈述
公理语义用逻辑断言刻画程序行为。Hoare 三元组
在部分正确性语义下表示:任意满足前置条件
其中
直觉
公理语义不逐步模拟程序,而是把程序当成状态转换器,询问某些性质在执行前后是否成立。证明程序正确性由此变成在逻辑系统中构造推导。
例子与边界
对命令
可由赋值公理得到。三元组
推论与应用
Hoare 逻辑用于程序验证、验证条件生成与循环不变式推导。可靠性说明可推导三元组在语义上有效;相对完备性则依赖断言语言能表达所需事实,不能理解为自动判定任意程序正确性。
参考资料
- Glynn Winskel, The Formal Semantics of Programming Languages, MIT Press, 1993,Chs. 6–7。
- C. A. R. Hoare, “An Axiomatic Basis for Computer Programming,” Communications of the ACM 12(10), 1969,Full paper, axioms and rules。