- Understanding the importance of loop invariants when reasoning about programs with loops.
- Learning how to prove partial correctness of programs with loops.
- Learning how to prove loops terminate using variants (aka termination metrics).
一,Loop Invariants
在进入循环和出循环,循环不变式都不会变。
{J}
while B
invariant J
{
{B&&J}
{J}
}
{J && !B}
二,Partial Correctness
证明原理同前一章 (P==>WP)
Partial correctness:在满足P的前提下执行程序,如果终止,一定满足Q。
证明partial correctness包括 ① 在 loop body 外,P==>WP
②