Skip to main content

循环不变式loop invariants

· 2 min read

控制流图

入口和出口

入口 --->   判断 ---> 出口
| |
| |
|____|

对于每个判断,有两个入口: 第一次入口 , 后续的入口 对于每个判断,有两个出口:exit跳出循环, 继续循环

1 第一次入口满足断言 2 每次判断继续循环满足断言

我们可以得出结论: 出口必然满足断言

- 判断不改变断言
- 每个入口都满足断言
可以推出exit满足断言

如何形式化证明

如果证明,或者如何抽象出这个证明或者我们找到一个同构的问题

循环不变式核心是 满足约束: 1 初始化条件满足断言 2 每次迭代后满足断言 3 循环是可计算的(不是死循环)

其实3只是为了不会死循环,核心条件是1和2