第六章 结构化程序正确性证明.ppt

  1. 1、本文档共41页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第六章 结构化程序正确性证明

第六章 结构化程序的正确性证明 6.1正确性定理 6.2证明程序正确性的代数方法 6.3产生不变式的一种方法 6.1 正确性定理 本章主要着眼于简化循环程序的正确性证明. 程序的正确性 重复递归引理—引理1 引理1.已知预期函数f和循环程序p: while p do g od, 则f=[while p do g od]的充要条件是:对所有 的x∈D(f),程序终止,且f=[if p then g;f fi]; 重复递归引理--引理1 证明: 必要性 f= [P]=[while p do g ] = f=[if p then g;f] [P]=[while p do g]=[if p then g; while p do g] =[if p then g;f ] 充分性 f=[if p then g;f] = f= [while p do g] [if p then g;f ]=[if p then g;if p then g;f ]= [if p then g;if p then g;……(if p then g) ]= [if p then g;if p then g;……I ]= [while p do g ] 重复递归引理—引理2 重复递归引理—引理3 引理3.已知预期函数f和循环程序p: do1 g while p do2 h od,则 f=[do1 g while p do2 h od]的充要条件是: 对所有的x∈D(f),程序终止, 且f=[g;if p then h;f fi]; 正确性定理 根据前面的重复递归引理,对结构化程序的证明可归纳为下面的定理: 正确性定理 ③对if-then-else程序,即p=if p then g else h fi,有f={(x,y)|p(x)-y=g(x)| ?p(x)-y=h(x)}; 第六章 结构化程序的正确性证明 6.1正确性定理 6.2证明程序正确性的代数方法 6.3产生不变式的一种方法 证明程序正确性的代数方法 给定一个程序P的预期程序函数f,若x∈D(f),程序P是终止的,且通过正确性定理求解程序P的程序函数f’,若与预期函数f相等,则得证。 证明步骤: 1:程序P是终止的; 2:f和程序P的定义域相同; 3:通过正确性定理求解程序P的程序函数f’,证明与预期函数f相等。 对于相对简单直观的程序,可以直接使用代数方法计算程序函数。 对于复杂的序列和条件程序、循环程序的证明,可以采取跟踪表方法求解程序函数。 代数方法——跟踪表 循环程序的正确性证明=可终止性证明+序列/条件程序的正确性证明 代数方法——跟踪表 解: 分析:假设x,y的初值为x0,y0,第一条语句执 行以后的输出为x1,y1,第二条语句执行以后的输 出为x2,y2,以此类推…. 代数方法——跟踪表 所以由上表得出: x3=x2-y2=x1-(x1-y1)=y1=y0; y3=y2=x1-y1=x0+y0-y0=x0; 所以该程序的程序函数为:{(x,y)|(x,y=y,x)} 代数方法——跟踪表 例2.已知预期函数f为: {(x,y)|(x,y)=(x,ax3+bx2+cx+d)},序列程序p为:y:=a;y:=x*y+b;y:=x*y+c;y:=x*y+d,请证明程序p的正确性. 代数方法——跟踪表 由上表得:x4=x3=x2=x1=x0; y4=x3*y3+d=x2*(x2*y2+c)+d =x1*(x1*(x1*y1+b)+c)+d =x0*(x0*(x0*a+b)+c)+d =a*x03+bx02+cx0+d 代数方法——跟踪表 因为 ① 预期函数f和程序函数[p]的定义域均为: {(x,y)|x,y均为整数},所以两个函数的定义域相同; 代数方法——分离规则 二、分离规则 是条件程序的程序函数的表示形式. 为了证明条件语句的正确性,就需要比较预期函数f和条件规则是否相等。 复合条件规则的化简 (p1 ?(q11 ?r11 | q12 ?r12 ) | p2 ?(q21 ?r21 | q22 ?r22 ) ) (p1 ∧ q11)? r11 | (p1 ∧ q12)? r12 | (p2 ∧ q21)? r21 | (p2 ∧ q22)? r22 p1,p2是分离的,即p1 ∧ p2为假。 如果一个条件规则的所有谓词都是分离的,称它为分离规则。 将条件规则化为分离规则 在化简和比较条件规则时,分离规则比一般的

文档评论(0)

yaocen + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档