程序正确性证明.ppt

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

子目标断言法(建立断言)输入断言I(x,y):x0=0∧y0=0∧(x0≠0∨y0≠0)输出断言O(x,y,z):z=gcd(x,y)子目标断言P(x,y,yend):x=0∧y=0∧(x≠0∨y≠0)=yend=gcd(x,y)STARTRead(x,y)x0y=xy:=y-xxyz:=ySTOPTFTFI(x,y)aP(x,y,yend)bcO(x,y,z)deg······第29页,共55页,星期日,2025年,2月5日子目标断言法(建立检验条件)通路1: 控制转出循环时,子目标断言成立。通路2、通路3: 如果在通过循环之后,子目标断言在断点处成立,那么,在通过循环之前,断言也成立。通路4: 如果输入断言为真,且控制第一次通过断点B时子目标断言为真,则输出断言为真。第30页,共55页,星期日,2025年,2月5日子目标断言法(建立检验条件)通路1:b-c检验条件1 x=0=P(x,y,yend)x=0=[x=0∧y=0∧(x≠0∨y≠0)= yend=gcd(x,y)]通路2:b-d-b检验条件2P(x,y-x,yend)∧x0∧y=x=P(x,y,yend)[x=0∧y-x=0∧(x≠0∨y-x≠0)=yend=gcd(x,y-x)]∧x0∧y=x=[x=0∧y=0∧(x≠0∨y≠0)=yend=gcd(x,y)]通路3:b-e-b检验条件3P(y,x,yend)∧x0∧yx=P(x,y,yend)通路4:a-b检验条件4x0=0∧y0=0∧(x0≠0∨y0≠0)∧P(x0,y0,yend)=yend=gcd(x0,y0)第31页,共55页,星期日,2025年,2月5日子目标断言法(证明检验条件)检验条件1: x=0=[x=0∧y=0=yend=gcd(x,y)]证明: 因为有x=0,yend=y 所以yend=y=gcd(0,y)=gcd(x,y)检验条件2:P(x,y-x,yend)∧x0∧yx=P(x,y,yend)即证明:[x=0∧y-x=0∧(x≠0∨y-x≠0)=yend=gcd(x,y-x)]∧x0∧y=x=[x=0∧y=0∧(x≠0∨y≠0)=yend=gcd(x,y)]第32页,共55页,星期日,2025年,2月5日程序部分正确但不终止实例例:求两个非负整数x、y的最大公约数z的程序。ProgramAvarx,y,z,s:integer;beginread(x,y);whilex≠0doifyxtheny=y–x;elsex=x–y;z=y;write(z);end.STARTRead(x,y)x≠0yxy:=y-xx:=x-yz:=ySTOPTFTFI(x,y)aP(x,y)bcO(x,y,z)deg······可以利用不变式断言等方法证明该程序的部分正确性,但无法证明它是终止的。因为当y=0时,程序循环将不终止!第33页,共55页,星期日,2025年,2月5日第5章程序正确性证明5.1程序正确性验证概述5.2不变式断言法5.3子目标断言法5.4界函数法--计数器法第34页,共55页,星期日,2025年,2月5日5.5良序集方法证明程序终止性1.基本概念偏序集良序集2.采用良序集方法证明程序终止性第35页,共55页,星期日,2025年,2月5日偏序集的概念偏序集 设有一个非空集合W和一个定义在W上的二元关系,且这个关系满足下列性质:1)传递性,即对于一切a,b,c∈W,如果ab,bc,则ac2)反对称性,即对于ab,则有b≮a3)反自反性,即对于一切a∈W,a≮a 称W为具有关系的偏序集,记做(W,)。例如:(1)具有小于关系()的,位于0~1之间的实数集合A1。(2)具有小于关系()的全体整数

文档评论(0)

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

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

1亿VIP精品文档

相关文档