- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
山东大学 计算机科学与技术学院 嵌入式系统学科组 * 利用HOARE公理化方法证明程序部分正确性 张兆朋 201313283 614478009@ Hoare的公理化方法 背景: 定义: [P]S [Q]不变式语句 Hoare的公理化方法的证明规则 赋值语句公理 条件语句规则 循环语句规则 并置规则 结论规则 实例证明 通过实例来演示Hoare公理化方法的证明过程 程序正确性证明-Hoare的公理化方法 1969年,Hoare在Floyd的不变式断言法基础上,提出了一种证明程序部分正确性的Hoare公理化方法。根据结构化定理,他提出了顺序语句、条件语句、WHILE循环语句三种基本语句证明规则,试图建立一个不变式演绎系统,以达到程序证明自动化之目的。 1990年IEEE计算机先驱奖 1980年图灵奖 英国牛津大学计算机科学家查尔斯.霍尔(Charles Antony Richard Hoare) 发明Quicksort算法、CASE语句 1963年实现了Algol语言 1969年1月,在Comm. Of ACM上发表“An Axiomatic basis for Computer Programming”,提出公理语义学 操作系统的Monitor ACM 在1983年评出在近25年在CACM上发表的25篇里程碑式的论文25篇,2人2篇,Hoare是其一 程序正确性证明-Hoare的公理化方法 定义 不变式语句 称[P]S [Q]是不变式语句。其含义是:如果执行S之前P为真,并且S执行终止,Q为真,称不变式语句为真或称归纳表达式为真,证明程序 S的部分正确性,就可以归结为证明这一归纳表达式为真. Hoare公理系统的推理规则一般形式为: 其中:B为不变式语句, 是逻辑表达式或其他不变式语句,其含义是:为了推论B为真,只需证明前提Ai(i=1,2,…,n)为真。 为了证明程序P关于输入条件I(x)与输出条件O(x, p(x))是部分正确的,归结为证明不变式语句[I(x)]P[O(x,P(x))]为真。 程序正确性证明-Hoare的公理化方法 Hoare提出的公理和相应控制语句的证明规则。 1. 赋值语句公理 设有赋值语句 y ← f(x),则其公理为: [P(x,f(x,y))] y ← f(x)[P(x,y)] 程序正确性证明-Hoare的公理化方法 Hoare提出的公理和相应控制语句的证明规则。 2. 条件语句规则 [P∧R] S1 [Q],[P ∧﹁R]S2[Q] [P] IF R THEN S1 ELSE S2 [Q] 或 [P∧R] S [Q],[P ∧﹁R] = [Q] [P] IF R THEN S [Q] 程序正确性证明-Hoare的公理化方法 Hoare提出的公理和相应控制语句的证明规则。 3. 循环语句规则 P = I, [I∧R] S [I],I ∧﹁R = Q [P] WHILE R DO S [Q] 此规则中的逻辑表达式I就是非形式证明中的循环不变式断言。条件P = I表明,当控制进入循环时,循环不变式I应为真;不变式[I∧R] S [I]表明,如果执行S之前(R为真时才执行S)I为真,且S执行终止,则S执行后I仍为真;条件I ∧﹁R = Q表明,如果控制退出循环,Q应为真。 程序正确性证明-Hoare的公理化方法 Hoare提出的公理和相应控制语句的证明规则。 4. 并置规则 [P] S1[R],[R] S2 [Q] [P] S1;S2 [Q] 程序正确性证明-Hoare的公理化方法 Hoare提出的公理和相应控制语句的证明规则。 5. 结论规则 P=R,[R]S[Q] [P]S[Q] 或 [P]S[R], R=Q [P]S[Q] 程序正确性验证– Hoare公理学方法 证明过程 证明程序部分正确性的公理学方法就是依据以上的公理和推理规则,一般有两种形式:正向证明和反向证明 正向“证明” : 从某些公理出发, 使用规则, 直到最后获得结果. 根据给出的不变式断言,建立一些引理; 根据引理和赋值公理,对程序中的每一个赋值语句 Fi 导出相应的不变式语句[Ri] Fi [Qi]; 再根据这些不变式语句和上述的推理规则逐步地组成越来越长的程序段,一直到推演出:[P(x)] F [Q(x,z)]为止. 程序正确性证明-Hoare的公理化方法 练习: 对任一给定的自然数x,计算 z = sqrt(x) 的程序流程图如右。该程序的算法基于:对于任意整数n=0,有 1+3+5
文档评论(0)