程序的形式推导技术_第1页
程序的形式推导技术_第2页
程序的形式推导技术_第3页
程序的形式推导技术_第4页
程序的形式推导技术_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、程序的形式推导技术第1页,共38页,2022年,5月20日,11点57分,星期五谓词转换器wp (S,R) :表示一个状态的集合,从其中的任何一个状态出发,执行S后必定会终止,终止时满足R,是最弱的前置断言。要证 QSR,即证:Q =wp (S,R) s终止wp(S,R)R一些状态集合后置条件第2页,共38页,2022年,5月20日,11点57分,星期五最弱前置谓词的几个性质公理性质1:排奇律wp (S, F)=F要从某个状态集的任何一个状态出发执行S后必定会终止,终止时满足F,即使F为真,这样的状态是找不到的,因此对应的状态集为空。第3页,共38页,2022年,5月20日,11点57分,星期

2、五最弱前置谓词的几个性质公理性质2:合取分配律wp (S,Q) wp (S,R)=wp (S, Q R) 证明:设任何一个状态P wp (S,Q) wp (S,R)表示从P出发经S执行后必终止,终止时满足Q;同时从P出发经S执行后必终止,终止时满足R,也即满足Q R。所以,P wp (S, Q R)那么,wp (S,Q) wp (S,R) wp (S, Q R)反之也可证明,wp (S, Q R) wp (S,Q) wp (S,R) 第4页,共38页,2022年,5月20日,11点57分,星期五最弱前置谓词的几个性质公理性质3: 析取分配律wp (S,Q) wp (S,R)=wp (S, Q

3、R)证明:设任何一个状态P wp (S,Q) wp (S,R)表示从P出发经S执行后必终止,终止时满足Q;或者从P出发经S执行后必终止,终止时满足R,也即满足Q R。所以,P wp (S, Q R)那么,wp (S,Q) wp (S,R) wp (S, Q R)反之也可证明,wp (S, Q R) wp (S,Q) wp (S,R)第5页,共38页,2022年,5月20日,11点57分,星期五最弱前置谓词的几个性质公理性质4:单调律如果Q R,则wp (S,Q) wp (S,R)假设任何一个状态P表示从P wp (S, R)出发,经S执行后必终止,终止时满足 R 。又因为,Q R,所以终止时也

4、满足Q 。所以,P wp (S,Q), 所以wp (S,Q) wp (S, R) 第6页,共38页,2022年,5月20日,11点57分,星期五求解最弱前置谓词的规则1、skip、abort、复合语句wp(skip,R) =R (相当于空语句)wp(abort,R)=F (执行过程中夭折的语句)wp(S1;S2,R)=wp(S1, wp(S2,R)(相当于顺序复合语句)例如wp(skip;skip,R)=wp(skip,wp(skip,R)=R第7页,共38页,2022年,5月20日,11点57分,星期五求解最弱前置谓词的规则2、 赋值语句(1) 单个简单变量的赋值语句(2) 多个简单变量的赋

5、值语句(3) 单个数组元素的赋值(4) 多重赋值语句第8页,共38页,2022年,5月20日,11点57分,星期五(1)单个简单变量的赋值语句对单个简单变量的赋值语句 S:= I:=E其语义为: wp(“I:=E”,R)=domain(E) cand RIEdomain(E) 表示能获得正常表达式E结果的条件。 当条件显然时,可略去此项。RIE表示表达式E去替换R中所有自由出现的变量I。B1 cand B2 表示从左到右的次序计算,B1为F时, 则不必计算B2,其结果全为F。B1为T时,则其结果 为B2的结果。B1无定义时,其结果也无定义。第9页,共38页,2022年,5月20日,11点57分

6、,星期五同步练习1.wp(“x:=x+1”,x0)=(x+10)= (x1)个互不相同的变量x1,x2,xnE为n个表达式e1,e2,en 其语义是:wp(“X:=E”,R)=domain(E) cand RX E domain E=( i 1in:domain(ei)第11页,共38页,2022年,5月20日,11点57分,星期五同步练习8.wp(“x,y:=x-y,y-x”,x+y=c)=(x-y+y-x=c)=(0=c)9.Ta:=a+1;b:=xa=b wp(“a:=a+1;b:=x”,a=b)=wp(“a:=a+1”,a=x) =(a+1=x)10. wp(“a:=a+1;b:=x(

7、a,b)”,a=b) = wp(“a:=a+1”,a=x(a,b)=(a+1=x(a+1,b)11.wp(“s,i:=s+bi,i+1”,i0s=(j:0j0s+bi= (j:0ji+1:bj) =(i0s= (j:0ji:bj)第12页,共38页,2022年,5月20日,11点57分,星期五(3)单个数组元素的赋值语句对一个数组元素的赋值语句 S:= bi:=E其中b是数组名,i是b的下标表达式我们用(b;i:E)表示一个数组函数,定义为: (b; i: E)j= E 当i=j bj 当ij这样,语句bi:=E等价于b:=(b;i:E)若略去domain(E)与domain(i)等因素,数组

8、的赋值语句语义是wp(“bi:=E”,R)=Rb(b;i:E)其中Rb(b;i:E)表示用数组(b;i:E)去替换R中自由出现的数组名b。第13页,共38页,2022年,5月20日,11点57分,星期五同步练习12.wp(“bi:=5”,bi=5)=(bi=5)b(b;i:5) =(b;i:5)i=5)=(5=5)=T13.wp(“bi:=5”,bi=bj)= (bi=bj) b(b;i:5) =(b;i:5)i=(b;i:5)j)=(ij5=bj)(i=j5=5) =(ij5=bj)(i=j)=(iji=j)(5=bji=j) =(T(i=jbj =5)=(i=jbj=5)14.wp(“bb

9、i:=i”,bi=i) =(bi:=i) b (b;bi:i) (定义) =(b;bi:i)i=i (替换) =(biibi=i)(bi=ii=i) =F(bi=iT) =(bi=i)第14页,共38页,2022年,5月20日,11点57分,星期五求解最弱前置谓词的规则3、条件语句条件语句是任何一种高级语言中不可缺少的语句之一,常用if表示。大家已熟知,它一般有二种格式,即: if x0 then Z:=x else Z:=x if x0 then Z:=x第15页,共38页,2022年,5月20日,11点57分,星期五为说明方便,我们可改写成 if x0Z:=x x0Z:=x fi 与 if

10、 x0skip x0第25页,共38页,2022年,5月20日,11点57分,星期五循环语句从而可得到do语句的定义wp(“do”,R)= ( k:k0:Hk(R)这样定义是清楚的,但使用是不便的,因为计算Hk(R)很不容易。所以,我们常采用比wp(“do”,R)强的一些谓词,即循环不变式,来设计与验证我们的循环程序。循环不变式(简称不变式)P,就是在循环的每次迭代前后反映程序变量之间互相关系的谓词P保持不变,即如果设谓词P在进入循环前为真,而且每次迭代后P依然为真,到循环结束时P仍然为真,则P是循环不变式。第26页,共38页,2022年,5月20日,11点57分,星期五同步练习例18.下面程

11、序段是在变量S中存放数组b0.10的诸元素之和。 i,S:=1,b0 do i11i,S:=i+1,S+bi od R:S=(k:0k11:bk)现欲证明P(下面)是循环不变式。证明:设变量i,S,b之间互相关系的谓词为 P:1i11S=(k:0ki:bk) 开始执行该程序段的状态无论是什么,执行i,S:=1,b0语句之后,P为真(初次进入循环之前),这是因为 wp(“i,S:=1,b0”,P) =1111b0=(k:0k1:bk) =T第27页,共38页,2022年,5月20日,11点57分,星期五第二步再证明迭代一次后P仍然成立,即只要P和i11都成立,则执行语句i,S:=i+1,S+bi

12、后P仍然成立。 wp(“i,S:=i+1,S+bi”,P) =1i+111S+bi=(k:0ki+1:bk) =0i11S=(k:0ki:bk)显然,(Pi11)蕴含了上述最后一行。这样,我们就证明了P确实是循环不变式。程序段插入断言可表示成: T i,S:=1,b0 P do i11i11Pi,S:=i+1,S+biPod i11P R 第28页,共38页,2022年,5月20日,11点57分,星期五定理2定理二 设PBB wp(“if”,P) 则 Pwp(“do”,T) wp(“do”,PBB)假设P是循环不变式,则每次迭代开始和结束时P都成立。当然,在循环终止时P也成立,而终止条件是BB

13、,所以PBB在循环终止时成立。定理二又称为循环不变式定理。证明: 根据do语句定义,我们有 H0(T)=BB (1) Hk(T)=wp(“if”,Hk-1(T)BB(k0) (2) 以及 H0(PBB)=PBB (3) Hk(PBB)=wp(“if”,Hk-1(PBB) (PBB)(k0) (4)第29页,共38页,2022年,5月20日,11点57分,星期五我们首先用归纳法证明 PHk(T) Hk(PBB) (5)当k=0时,由(1)式和(3)式可知,(5)式显然成立。当k0时,假设k=k-1时,命题成立,即 PHk-1(T) Hk-1(PBB)则 PHk(T)=P(wp(“if”,Hk-1

14、(T)BB) (根据(2)式) (PBBwp(“if”,Hk-1(T)(PBB) (因wp(“if”,R) BB) (wp(“if”,P)wp(“if”,Hk-1(T)(PBB) (假设)= wp(“if”,PHk-1(T)(PBB) (wp的合取分配律) wp(“if”,Hk-1(PBB)(PBB) (归纳假设)= Hk(PBB) (根据(4)式)所以,对一切的k,(5)式成立。因此,有: Pwp(“do”,T)=( :k0:PHk(T) ( :k0:Hk(PBB) =wp(“do”,PBB)定理证毕。第30页,共38页,2022年,5月20日,11点57分,星期五定理3对任一个循环,计算w

15、p(“do”,T)是很困难的。为了证明该循环能够终止,我们还需引入一个程序变量的整型函数t,表示尚需进行迭代次数的下界零,则循环一定能终止。这里的t就是界函数。下面,给出一个判定循环终止的定理。此定理的直观意义也是很清楚的。一方面Pt0必须保持为真;另一方面,循环体S的每次执行至少使t减少1。无限的循环下去必将使t的值减小为负。但这是不允许的,所以循环必有终止。定理三 设P是do的不变式,t是一个整函数,t0是任意常数,如果 PBB t0; (1) PBBtt0+1 wp(“if”,tt0) (2)则 P wp(“do”,T)第31页,共38页,2022年,5月20日,11点57分,星期五定理

16、3证明 由(2)式,根据定理二,可得到 PBBtt0+1 wp(“if”,Ptt0)首先我们用归纳法证明 Ptk Hk(T)当k=0时,H0(T)=BB,由条件(1)式可得 t =PBBt0 =Pt0 BB =Pt0 BB =Pt0 H0(T)当k0时,设k=k-1时命题成立,即Ptk-1 Hk-1(T)则PBBtk wp(“if”,Ptk-1) (根据(2) wp(“if”,Hk-1(T) (归纳假设)而PBBtk BB=H0(T) 所以Ptk wp(“if”,Hk-1(T)H0(T)因tt0+1, 则必有(k:k0:tk)所以P=P(k:k0:tk)= k:k0:Ptk (因k在中不是自由

17、变量) k:k0Hk(T) =wp(“do”,T)即一切k,命题都成立。定理证毕。 第32页,共38页,2022年,5月20日,11点57分,星期五定理4合并定理二与定理三,有如下十分有用的定理:从定理四中,我们得到如下结果:假设(1)式意味着循环执行结束时仍成立,假设(2)式指出循环执行结束前整函数t以为下界,假设(3)式指出每次迭代至少使t减小,因而循环一定能终止。如果循环不终止,t必小于任何界限,这与假设矛盾,因而为真。应用这些概念和定理,我们就可方便地验证程序的正确性。定理四设谓词满足PBi wp(“Si”,P),1in (1) 又设整函数t满足PBB (t0) (2) PBi wp(

18、“t1:=t;Si”,tt1),in (3)其中t是一个新的标识符,则 wp(“do”,PBB) 第33页,共38页,2022年,5月20日,11点57分,星期五循环语句在讨论循环语句时我们除了引入前置条件与后置谓词外,循环不变式与界函数t是必不可少的,我们将下面的形式称为注解了的循环语句。 Q P t do B 1S 1 B2S2 . . . BnSn od R第34页,共38页,2022年,5月20日,11点57分,星期五循环语句为验证上述注解了的循环语句,我们可按下面清单理解和校对。)证明在循环执行开始前成立,即)证明在执行各子语句后仍然成立,即)证明执行循环结束时,能达到预期的结果,即 )证明循环执行结束前,t具有下界,即 (t)证明执行循环而每次迭代都使界函数减小,即:;成立第35页,共38页,2022年,5月20日,11点57分,星期五同步练习例19. 用上述清单

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论