- 1、本文档共35页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PM讲义-第7章 程序正确性证明(上)
6.3 证明终止性的良序集方法 例:证明计算z=sqrt(x)的程序的终止性(P(x): x ≥ 0) 证明: 1) 在B’处将循环断开,有: q(x,y1,y2,y3):y2≤x∧y3>0 2) 取良序集为(N,<), 即具有小于关系的自然数集合,并在B’点定义终止表达式: E(x,y) = x-y2 开始 0,0,1 ? y1,y2,y3 y2>x? y1+1,y3+2 ? y1,y3 y1? z 结束 P(x) A F B’ T D G C y2+y3 ? y2 F q(x,y1,y2,y3) 3) 证明q(x,y)是良断言 对路径A ? B’ 有: P(x) ∧True ? q(x,0,0,1), 即: x ≥ 0 ? 0≤x ∧1>0 对路径B’ ? B’有: q(x,y) ∧y2+y3 ≤x ? q(x,y1+1,y2+y3,y3+2) 即: y2≤x∧y3>0 ∧y2+y3 ≤x ? (y2+y3≤x∧y3+2>0 ) 可以证明上式为真,因此中间断言q(x,y)是良断言。 证明所选取的断言是“良断言”,即: 对于每一个从程序入口到断点j的通路a有: P(x) ∧Ra(x,y) ? qj(x,ra(x,y)) 对于每个有断点i到断点j的通路b有: qi(x, y) ∧Rb(x,y) ? qj(x,rb(x,y)) q(x,y1,y2,y3)=y2≤x∧y3>0 4) 证明E(x,y)是良函数 即 q(x,y) ? E(x,y) ∈N, 即 y2≤x∧y3>0 ? x-y2 ≥ 0 证明终止表达式是“良函数”。即: 对于每一个断言i有: qi(x,y) ?Ei(x,y) ∈W q(x,y1,y2,y3)=y2≤x∧y3>0 E(x,y) = x-y2 5) 证明终止条件成立 与循环有关的通路只有B’?D?B’,因而只需证明: q(x,y) ∧y2+y3 ≤x ? E(x,y) > E(x,y1+1,y2+y3,y3+2) 即: y2≤x∧y3>0 ∧y2+y3 ≤x ? (x-y2) > (x-(y2+y3)) 这样,就证明了程序的终止性 qi(x,y) ∧Ra(x,y) ? [Ei(x,y)>--Ej(x,ra(x,y))] E(x,y) = x-y2 第六章 程序正确性证明 概述 不变式断言法证明程序的部分正确性 良序集方法证明程序的终止性 Hoare公理学方法 6.1 概述 基本概念 非形式化的程序验证是靠程序员阅读理解程序完成的。 程序测试是指测试者特意挑出一批输入数据,通过运行程序,检查每个输入数据所对应的运行结果是否符合预期要求。 Dijkstra说过“程序测试只能证明程序有错,不能说明程序正确”。除非进行穷举行测试。 正确性证明是论证程序达到预期目的的一般性陈述,而该论证与程序输入数据的特定值无关,能够代表穷举性测试。 程序正确性概念 定义1. 如果对于每一个使得P(ā)为真,程序S计算都终止,称程序S对P是终止的。 定义2:对于满足P(ā)为真,且能够使程序S计算终止的每个ā,如果Q(ā, P(ā))为真,则称程序S对于P和Q是部分正确的。 定义3:对于满足P(ā)为真的每个ā ,如果程序S能够计算终止,且Q(ā, P(ā))为真,则称程序S对于P和Q是完全正确的。 主要的程序正确性证明方法 (1)关于部分正确性证明的方法 Floyd 的不变式断言法 Manna的子目标断言法 Hoare的公理化方法 (2)关于终止性证明的方法 Floyd的良序集方法 Knuth的计数器方法 Manna等人的不动点方法 (3)关于完全正确性的证明方法 Hoare的公理化方法(Manna、Pnueli) Bustall的间发断言法 Dijkstra的弱谓词转换方法以及强验证方法。 中间断言 定义1:在程序任一中间点 i 附上谓词 , 如果每当执行到达i时 对于该点的当前值必为真,则 称为 i 点上的中间断言,或称为归纳断言。 定义2:对于循环路径上的断言,因为每次循环执行到达该点时该断言必为真,所以该断言又称为循环不变式,简称不变式。 6.2 不变式断言法--证明部分正确性 开始 x1,x2 ? y1,y2 y1= y2? y1>y2?
您可能关注的文档
- 成功客户经理应具备的素质.ppt
- 【华为答疑汇总】.doc
- 个人理财判断题真题精选.docx
- 5.1教学技能 备课.ppt
- 食品科学导论复习.ppt
- 第1章 制图的基本知识和技能修改.ppt
- 第二章 公共部门工作分析与职位评价.ppt
- 【考前三个月】2015届高考生物(江苏专用,理科)知识专题强化练:专题15 常考实验技能.ppt
- 英语专业知识教育.ppt
- 第1章 工程制图的基本知识与基本技能.ppt
- 幼儿教师资格证(考试资料)《幼儿保健知识与能力》新版初级练习卷有答案与.docx
- (附答案)川农12月《中药化学》作业考核-.docx
- (附答案)川农12月《园林植物保护学(本科)》作业考核-.docx
- (附答案)川农12月《有机化学(专科)》作业考核-.docx
- (附答案)川农12月《植物保护学(本科)》作业考核-.docx
- (附答案)东师《教育心理学》在线作业2-1(1).docx
- (附答案)川农12月《药剂学》作业考核-.docx
- (附答案)川农12月《配方饲料制造工艺与技术(专科)》作业考核-.docx
- 幼儿教师资格证(考试资料)《幼儿保健知识与能力》新版基础知识题库带解析.docx
- 幼儿教师资格证(考试资料)《幼儿保健知识与能力》基础知识模拟押题卷.docx
文档评论(0)