Floyd归纳断言法验证程序部分正确性
1.设断点
一般我们会在如下位置设置断点:
(1)程序开始处
(2)程序结束处
(3)循环主干处
2.建断言
(1)开始处A:
一般为题干的要求,写为
(2)结束处C:
一般为输出结果z,写为
(3)循环主干处:
(写为)
此处断言最为难建立,一般有三种方法得出断言:
1)从结果倒推
2)观察题目及规约条件
3)靠灵感
3.设通路检验条件
此处为我比较主观的写法,可能会有些看不懂
4.证明通路检验条件
(1)等用断言替换
(2)"->"后部分的式子写为变化后的式子,以下有一个例子
将各通路全证为真后则可以证明该程序的部分正确性。
5.例题
以下是一个例题,上面还有我们老师的提示(不过本例题的断言不采用老师的提示版本)
以下为证明过程(因为之前是写给自己看的所以会有很多我自己能看懂可能大家看不懂的东西,之后会一一加上解释(大概)):
*如有问题欢迎指出!