版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、结构化程序的正确性证明第1页,共30页,2022年,5月20日,19点8分,星期二本课的内容1.重复递归引理2.正确性定理3.结构化程序正确性证明的代数方法4.循环不变式产生的方法第2页,共30页,2022年,5月20日,19点8分,星期二结构化程序正确性证明思路任何结构化程序都可以用序列、条件和循环3种结构表示,其中循环的正确性最为复杂,若能够用序列和条件结构来表示循环,则可以使正确性证明得以简化。第3页,共30页,2022年,5月20日,19点8分,星期二重复递归引理基本概念:基于程序函数的程序正确性概念。 假设已知一个程序P和一个预期函数f,若有f=P 则称程序P正确地实现了函数f,或说
2、程序P是正确的。第二章中程序函数的定义第4页,共30页,2022年,5月20日,19点8分,星期二重复递归引理重复递归引理内容引理1 while-do的正确性定理引理2 do-until的正确性定理引理3 do-while-do的正确性定理第5页,共30页,2022年,5月20日,19点8分,星期二重复递归引理引理1已知预期函数f和循环程序P while p do g 则f=P的充要条件是:对所有xD(f), 程序P终止,且f=if p then g;f第6页,共30页,2022年,5月20日,19点8分,星期二重复递归引理引理1证明:必要性 f= P=while p do g = f=if
3、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 第7页,共30页,2022年,5月20日,19点8分,星期二重复递归引理引理2和引理3引理2 已知函数f和循环程序P:do g until p
4、 ,则 f=P的充要条件是:对所有xD(f),程序P终止,且 f=g;if p then f 引理3 已知函数f和循环程序P:do1 g while p do2 h ,则 f=P的充要条件是:对所有xD(f),程序P终止,且 f=g;if p then h;f 重复递归引理告诉我们,循环程序的验证可以通过将循环化为递归的方法,将程序转化为由选择以及序列组成的无循环程序进行验证! 第8页,共30页,2022年,5月20日,19点8分,星期二正确性定理已知预期函数f和基本程序P,则f=P的充要条件是: xD(f),程序P终止,且对于不同的基本程序,函数f分别满足下列关系:情形a,对于序列,p=g;
5、h,有f=(x,y)|y=hg(x)情形b,对于if-then程序,if p then g,有 f=(x,y)|p(x) y=g(x) | p(x) y=x情形c,对于if-then-else,if p then g else h,有 f=(x,y)|p(x) y=g(x)| p(x) y=h(x)情形d,对while-do程序,while p do g,有 f=(x,y)|p(x) y=fg(x)| p(x) y=x情形e,对于do-until程序,do g until p od,有 f=(x,y)|pg(x) y=g(x)| pg(x) y=fg(x)情形f,对于do-while-do程序
6、,do1 g while p do2 h od,有 f=(x,y)|pg(x) y= fhg(x)| pg(x) y=g(x)第9页,共30页,2022年,5月20日,19点8分,星期二正确性定理证明情形a,b,c由程序函数直接可得情形d,由下式可得(根据引理1): 对while-do程序,while p do g ,有 while p do g = if p then g;f = (x,y)|p(x) y=f g(x)| p(x) y=x = f 情形e,f由引理2,3可证第10页,共30页,2022年,5月20日,19点8分,星期二结构化程序正确性证明的代数方法给定一个程序P的预期程序函数
7、f,若xD(f),程序P是终止的,且通过正确性定理求解程序P的程序函数f,若与预期函数f相等,则得证。证明步骤: 1:程序P是终止的; 2:f和程序P的定义域相同; 3:通过正确性定理求解程序P的程序函数f,与预期函数f相等。对于相对简单直观的程序,可以直接使用代数方法计算程序函数。对于复杂的序列和条件程序、循环程序的证明,可以采取跟踪表方法求解程序函数。第11页,共30页,2022年,5月20日,19点8分,星期二代数方法跟踪表1.已知程序P:x:=x+y;y:=x-y;x:=x-y;求它的程序函数。 假设变量x,y的初值是x0,y0 ,执行第一个赋值语句后变量值为x1,y1 ,则可以建立赋
8、值表如下:语句xy1x:=x+yx1=x0+y0y1=y02y:=x-yx2=x1y2=x1-y13x:=x-yx3=x2-y2y3=y2分析跟踪表可知:x3=x2-y2=x1-(x1-y1)=y1=y0 y3=y2=x1- y1=x0+y0-y0=x0通过跟踪表法,可知程序P的程序函数为(x,y),(y,x)第12页,共30页,2022年,5月20日,19点8分,星期二代数方法跟踪表2.序列程序 y:=a y:=x*y+by:=x*y+cy:= x*y+d跟踪表为:语句xy1y:=ax1=x0y1=a2y:=x*y+bx2=x1y2:=x1*y1+b3y:=x*y+cx3=x2y3:=x2*
9、y2+c4y:= x*y+dx4=x3y4:=x3*y3+d第13页,共30页,2022年,5月20日,19点8分,星期二代数方法跟踪表所以,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相应的程序函数为:(x,y=x, x*(x*(x*a+b)+c)+d)即y=ax3+bx2+cx+d第14页,共30页,2022年,5月20日,19点8分,星期二分离规则条件语句 if p then g else h 可用条件规则表示出来 (pg | ph)。为了证明条件语句的
10、正确性,就需要比较预期函数f和条件规则是否相等。第15页,共30页,2022年,5月20日,19点8分,星期二复合条件规则的化简 (p1 (q11 r11 | q12 r12 ) | p2 (q21 r21 | q22 r22 ) )(p1 q11) r11 | (p1 q12) r12 | (p2 q21) r21 | (p2 q22) r22p1,p2是分离的,即p1 p2为假。如果一个条件规则的所有谓词都是分离的,称它为分离规则。第16页,共30页,2022年,5月20日,19点8分,星期二将条件规则化为分离规则在化简和比较条件规则时,分离规则比一般的条件规则使用更方便一些。一般的复合规
11、则不一定能展开,但分离的复合规则总可以展开。一般的条件规则的前后顺序是不能交换的,而分离规则的顺序是可以交换的。讨论程序的正确性时,总是首先将条件规则化为分离规则。第17页,共30页,2022年,5月20日,19点8分,星期二将条件规则化为分离规则对于任意的条件规则(p1 r1 | p2 r2 | p3 r3 | )化为分离规则(p1r1 |p1p2r2|p1p2p3r3 | )第18页,共30页,2022年,5月20日,19点8分,星期二条件语句的正确性证明假设某一条语句的程序函数是分离规则: (p1r1|p2r2|p3r3) 预期函数是f,由于f可以是赋值的形式,例如y:=f(x)的形式给
12、出时,为了证明条件语句的正确性,需证明以下两点:(1) f(x)的定义域和分离规则式的定义域是相同的;(2) 利用分离规则的谓词将f(x)的定义域分解,并有以下关系成立:p1(x)r1(x)=f(x)p2(x)r2(x)=f(x)p3(x)r3(x)=f(x)第19页,共30页,2022年,5月20日,19点8分,星期二条件语句的正确性证明另外,当f是以条件规则的形式给出时,例如,是下列的分离规则 (q1 s1 | q2 s2 )这时,要证明它和分离规则式相同,需要证明:(1)两个分离规则的定义域是相同的,即p1(x)Vp2(x)Vp3(x) = q1(x)V q2(x)(2) 两个分离规则中
13、的谓词成对合取后,相应的结果是相同的:p1(x) q1 (x) r1(x) = s1 (x)p1(x) q2 (x) r1(x) = s2(x)p3(x) q1 (x) r3 (x) = s1 (x)p3(x) q2 (x) r3 (x) = s2(x)第20页,共30页,2022年,5月20日,19点8分,星期二例子1预期函数 f=(x:=-x)程序P为 if x0 then x:=x-2*x else x:=x+2*abs(x)P=(x0 x:=x-2*x| x0 x:=x+2*abs(x)证明(1) f和P的定义域均为整数,相同。(2) P是一个分离规则,且x0 (x:=x-2*x) =
14、 (x:=-x)x0 (x:=x+2*abs(x)=(x:=x+2*(-x)=(x:=-x)得证第21页,共30页,2022年,5月20日,19点8分,星期二例子2 已知预期函数f是(x,y,a是整数,且x0) (x,y,a),(0,a*x+y,a) 程序P如下,其中x0: while x0 do x,y=x-1,y+a 证明程序P是正确的,即f=P 证明1:程序是终止的 证明2:定义域相同 证明3:f=(x,y)|p(x) y=fg(x) | p(x) y=x,其中,p(x)=(x0), p(x)=(x=0) 利用fg(x)的跟踪表证明3第22页,共30页,2022年,5月20日,19点8分
15、,星期二例子2于是有: x2 =0 y2=a0*(x0-1)+y0+a0=a0* x0 +y0即当x0时 x,y,a :=0,a*x+y,a; 当x=0时 x,y,a :=0,y,a = 0,a*0+y,a因此可知,f (x,y,a),(0,a*x+y,a),与预期函数相等,因此得证。语句xyx,y:=x-1,y+ax1 =x0-1y1 =y0+a0 x,y,a:=0,a*x+y,ax2 =0y2=a0* x1 + y1第23页,共30页,2022年,5月20日,19点8分,星期二循环不变式产生的方法 对于程序部分正确性证明的不变式断言法,这一方法的关键是建立一个正确的不变式断言,对一般程序来
16、说,不变式断言的建立主要依靠程序员对程序的理解,尚无系统的方法。 但对结构化程序来说,如果已知它的程序函数,则可以根据不变式状态定理,来确定它的一个循环不变式。第24页,共30页,2022年,5月20日,19点8分,星期二循环不变式产生的方法不变式状态定理:假设f=while p(x) do g(x) , x0是初始值,则 循环不变式q(x)为:f(x) = f(x0)证明:1.在进入循环时, f(x0) = f(x0),因此q(x)成立。2.试证假设在每一次进入循环前q(x) 成立,即f(x) = f(x0) ,则执行循环后q(x)也成立,即证明 p(x)q(x) = qg(x)由p(x)为
17、真,及正确性定理 f=(x,y)|p(x)y=fg(x)|p(x)y=x可知 即 p(x) = (f(x)=fg(x)第25页,共30页,2022年,5月20日,19点8分,星期二循环不变式产生的方法又进入循环前q(x) 成立,即q(x)=(f(x0)=f(x) p(x)q(x) = (f(x0)= fg(x)而(f(x0)= fg(x) (f g(x)=f(x0) (f(g(x) =f(x0) q(g(x) (归纳假设q(x)=(f(x)=f(x0) qg(x)p(x)q(x) = qg(x)第26页,共30页,2022年,5月20日,19点8分,星期二循环不变式产生的方法同理可知如下定理:
18、2 假设 f(x)=do g(x) until p(x) ,则该循环不变式q(x)为 f(x)=fg(x0)3假设 f(x)=do1 g(x) while p(x) do2 h(x) ,则该循环不变式q(x)为 f(x)=fhg(x0)第27页,共30页,2022年,5月20日,19点8分,星期二循环不变式产生的方法例1对于循环程序P:while v0 do u,v=u+1,v-1 ,其程序函数为(u,v),(u+v,0),求其循环不变式。(设u、v0)对循环中所有变量,分别计算f(x)和f(x0),列表如下:则循环不变式为f(x)=f(x0) = u+v= u0+v0 xf(x)f(x0)uu+vu0+v0 v00第28页,共30页,2022年,5月20日,19点8分,星期二循环不变式产生的方法例2求程序P: while ab do a,q:=a-b,q+1 的循环不变式该程序的程序函数为(a,b,q),(a-a/b*b,b
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026浙江宁波市鄞州区第二医院医共体中河分院编外人员招聘1人笔试模拟试题及答案解析
- 新疆维吾尔自治区2026年度春季引才3233人考试参考题库及答案解析
- 家具设计风格与室内环境艺术性试题及答案
- 随县第一高级中学高薪引进人才3人笔试备考题库及答案解析
- 2026年宣城市国有资本投资运营控股集团有限公司社会招聘13人考试模拟试题及答案解析
- 雅安中学2026年上半年“雅州英才”工程赴外招才引智活动引进教育类高层次和急需紧缺人才(5人)笔试模拟试题及答案解析
- 2026汉口学院国际交流学院院长招聘1人(湖北)笔试参考题库及答案解析
- 2026甘肃雨森新材料科技有限公司招聘考试参考题库及答案解析
- 2026北京市海淀区学院路小学招聘2人笔试备考试题及答案解析
- 2026年度江汉大学附属医院公开招聘3人考试备考题库及答案解析
- 河北省石家庄市2026年高三高考下二模英语试卷
- 2026年编外人员招录考试核心考点试题及答案
- 硅酸钙板吊顶安装技术交底(标准范本)
- (2026年)新疆哈密市辅警招聘考试题库 (答案+解析)
- 新疆是个好地方 课件(内嵌音视频) 2025-2026学年二年级音乐下册人音版(简谱)
- 2026年部编版新教材语文一年级下册期中测试题(有答案)
- 2026年马克思主义宗教观本质方针政策青年问答
- 2026黑龙江广播电视台(黑龙江省全媒体中心)(第二次)招聘事业单位编制人员51人考试参考题库及答案解析
- 安全生产“六化”建设指导手册解读培训
- 荆州市国土空间总体规划(2021-2035年)
- YS/T 429.2-2012铝幕墙板第2部分:有机聚合物喷涂铝单板
评论
0/150
提交评论