- 1、本文档共3页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
·62 · Computer Era No. 2 2009
基于遗传规划寻找循环不变式的方法*
马竹根,刘槐德
(怀化学院计算机系,湖南 怀化 418008)
摘 要:描述了一种产生循环不变式主要部分的方法。该方法的基本思想是在每一次循环条件变化时记录下程序变量
的值,生成相应的跟踪表,从跟踪表中获得程序变量之间的函数关系构成循环不变式的主要部分。程序变量之间的函数
关系则利用遗传规划对跟踪表中数据执行符号回归得到。
关键词:循环不变式;Hoare 逻辑;符号回归;遗传规划
0 引言 i=0;
程序的正确性一直是设计者和使用者最为关心的问题,循 y= 1;
while(ix)
环结构中的循环不变式是正确理解和证明算法程序的有力工
{ i=i+1; y=y*2; }
具。在有关程序正确性证明的早期工作中,Floyd引入了循环
如果输入变量x是一个大于或等于0的整数,程序S计算
不变式的思想,Hoare在Floyd的程序正确性证明方法的基础上 x
出2 ,将结果保存到变量y中。也就是说程序S对于前置断言
定义了Hoare逻辑,将其应用到具体的计算机语言程序上并建 x
Φ≡x≥0和后置断言Ψ≡y=2是正确的,即要说明{Φ}S{Ψ}。
[1]
立了一套公理系统,称为Hoare公理系统 。在这个公理系统
我们从程序前两行代码开始,根据Hoare赋值公理可由Φ
中,公理和命题的形式是{P}S{Q},其中P称为前置断言,Q称
推导出{Φ}while…{Ψ},其中Φ≡x≥0∧i=0∧y=1。再应用
为后置断言。当要说明某命题是可证时,用{P}S{Q}表示。其
循环规则,验证while循环可以分成三个子目标:①Φ→P,
后Dijkstra和Gries作了更深入的研究,从算法逻辑上给出严格
②{P∧ix}i=i+1;y=y*2{P},③(P∧┓ix)→Ψ。如果我们选择
的定义,将循环不变式定义为:在循环体的每次执行前后均为 i
循环不变式P≡i≤x∧y=2,则三个子目标满足,这就完成了
真的谓词,并给出了通过弱化后置断言Q构造循环不变式的四
{Φ}S{Ψ}的证明。
[2]
种标准策略 。国内也有一些学者对循环不变式进行了研究,
在这个例子中循环不变式P主要是从循环条件和后置断
如张乃孝教授提出了利用状态迁移理论开发循环不变式的思
文档评论(0)