对程序进行推理的逻辑计算机科学导论第二讲教学课件.ppt
《对程序进行推理的逻辑计算机科学导论第二讲教学课件.ppt》由会员分享,可在线阅读,更多相关《对程序进行推理的逻辑计算机科学导论第二讲教学课件.ppt(45页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、对程序进行推理的逻辑计算机科学导论第二讲教学课件 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望课课 程程 内内 容容课程内容课程内容围绕学科理论体系中的模型理论围绕学科理论体系中的模型理论,程序理论和计算理论程序理论和计算理论1.模型理论关心的问题模型理论关心的问题 给定模型给定模型M,哪些问题可以由模型,哪些问题可以由模型M解决;如何解决;如何比较模型的表达能力比较模型的表达能力2.程序理论关心的问题程序理论关心的问题给定模型给定模型M,如何用模型,如何用模型
2、M解决问题解决问题包括程序设计范型、包括程序设计范型、程序设计语言程序设计语言、程序设计、程序设计、形式语义、类型论、形式语义、类型论、程序验证程序验证、程序分析程序分析等等3.计算理论关心的问题计算理论关心的问题给定模型给定模型M和一类问题和一类问题,解决该类问题需多少资源解决该类问题需多少资源讲讲 座座 提提 纲纲基本知识基本知识程序验证、程序逻辑、命题逻辑、谓词逻辑程序验证、程序逻辑、命题逻辑、谓词逻辑Hoare逻辑逻辑Hoare三元式、赋值公理、结构化语句的推理规则、三元式、赋值公理、结构化语句的推理规则、推论规则推论规则生成验证条件的演算生成验证条件的演算最弱前条件演算、生成验证条件
3、的演算最弱前条件演算、生成验证条件的演算程序验证实例演示程序验证实例演示二分查找等程序二分查找等程序基基 本本 知知 识识程序程序测试测试与程序与程序验证验证测试测试能能发现发现程序有程序有错错;一般而言,;一般而言,测试测试不能保不能保证证程序无程序无错错程序验证:用数学的方法来证明程序的性质,提程序验证:用数学的方法来证明程序的性质,提高软件可信程度高软件可信程度演绎验证演绎验证:指用逻辑推理的方法指用逻辑推理的方法来来证明程序证明程序具备具备所期望所期望的性质的性质 演绎验证演绎验证可以保证程序无错可以保证程序无错程序程序逻辑逻辑:对对程序程序进进行推理的行推理的逻辑逻辑 基基 本本 知
4、知 识识命题逻辑命题逻辑合式公式(合式公式(well-formed formula)的归纳定义)的归纳定义 :=p|()|()|()|()(1)p代表原子命代表原子命题题,例如,例如 x 3,a5=10.5 原子命原子命题题具体形式与具体形式与讨论讨论的的问题领问题领域有关域有关(2)代表一般命代表一般命题题,“:=”右部用右部用“|”分隔的各部分隔的各部分代表命分代表命题题的构成形式,如的构成形式,如 0=x x 100(3),和和代表合取、析取、非和代表合取、析取、非和蕴蕴含运算,含运算,在确定了它在确定了它们们的运算的运算优优先关系后,很多情况下括先关系后,很多情况下括号可以省略,如号可
5、以省略,如p (q1 q2)可可简简化化为为p q1 q2备备注:采用注:采用而不是而不是,用于描述函数用于描述函数类类型型 基基 本本 知知 识识命题逻辑命题逻辑推理推理规则规则例:有关合取例:有关合取“”运算的推理运算的推理规则规则(i)(e1)(e2)“i”表示合取引入表示合取引入规则规则(i:introduction)“e”表示合取消去表示合取消去规则规则(e:elimination)对对 和和 等都有各自的推理等都有各自的推理规则规则 谓词逻辑谓词逻辑合式公式合式公式(1)谓词集合谓词集合、函数集合、函数集合(包括常量)(包括常量)(2)基于基于来定义项集来定义项集 t:=x|c|f
6、(t,t)(f )(3)归纳地定义基于(归纳地定义基于(,)的合式公式)的合式公式 :=P(t1,t2,tn)|()|()|()|()|(x )|(x )(P )增加的规则增加的规则全称量全称量词词和存在量和存在量词词的的证证明明规则规则等等基基 本本 知知 识识Hoare 逻逻 辑辑程序程序逻辑逻辑对程序进行推理的逻辑对程序进行推理的逻辑Hoare逻辑是一种程序逻辑逻辑是一种程序逻辑介绍面向非常简单的编程语言(只有赋值语句、介绍面向非常简单的编程语言(只有赋值语句、顺序语句、条件语句和循环语句)的顺序语句、条件语句和循环语句)的Hoare逻辑推逻辑推理规则理规则Hoare 逻逻 辑辑合式公式
7、合式公式语语法形式:法形式:P S Q,称,称为为Hoare三元式三元式(1)S是代是代码码段,遵循相段,遵循相应编应编程程语语言的言的语语法法(2)P和和Q是关于程序状是关于程序状态态(变变量到量到值值的映射)的的映射)的断言,分断言,分别别称称为为S的前断言和后断言,断言是的前断言和后断言,断言是谓词谓词逻辑逻辑的合式公式的合式公式(3)例:例:x=1 y 5 x=x+1 x=2 y 5P S Q的含的含义义:在:在满满足足P的状的状态态下下执执行行S,若,若执执行行终终止,止,则终则终止状止状态满态满足足Q例:例:x=1 y 5 x=x+1 x=2 y 1 y 0 y 6 x=x+1 x
8、 6 是赋值公理的实例是赋值公理的实例特点:特点:x+1 6(即(即x 5)是语句)是语句x=x+1和后断和后断言言x 6 的最弱前断言的最弱前断言(1)x 5.1和和x 7都可做前断言,因为都强于都可做前断言,因为都强于x 5x 5.1 x 5 并且并且x 7 x 5(2)若若x 4.9作为前断言,则三元式不成立,因为作为前断言,则三元式不成立,因为x 4.9 x 5不成立不成立Hoare 逻逻 辑辑结结构化构化语语句的推理句的推理规则规则顺顺序序语语句句条件条件语语句(也可用其它形式表示)句(也可用其它形式表示)插曲:推插曲:推论规则论规则P P P S Q Q Q P S Q P E S
9、1 Q P E S2 QP if E then S1 else S2 QP S1 R R S2 QP S1;S2 QHoare 逻逻 辑辑例(用例(用Hoare逻辑手中证明简单程序段)逻辑手中证明简单程序段)证:证:true if(x y)z=x else z=y z=x z=y(1)由赋值公理由赋值公理:x=x x=yz=xz=x z=y(2)由由(1)的所得、的所得、(true x y)(x=x x=y)和推论规则,可得:和推论规则,可得:true x y z=x z=x z=y(3)同理得同理得:true (x y)z=y z=x z=y(4)得得:true if(x y)z=x els
10、e z=y z=x z=yP E S1 Q P E S2 QP if E then S1 else S2 Q 由条件语句由条件语句的规则的规则Hoare 逻逻 辑辑结结构化构化语语句的推理句的推理规则规则(续续)循循环语环语句句例:用自然数加法来完成自然数相乘例:用自然数加法来完成自然数相乘x=0;y=0;while(y n)/循循环环不不变变式:式:(x=m y)(y n)x=x+m;y=y+1;/x=m nI E S II while E do S IEI 被称为被称为 循环不变式循环不变式I E 语语句句S和后断言和后断言I的最弱前条件:的最弱前条件:(x=m y y n y n)(x+
11、m=m(y+1)y+1 n)Hoare 逻逻 辑辑小结小结用用Hoare逻辑,可以对简单程序进行手工证明逻辑,可以对简单程序进行手工证明手工体现在两方面手工体现在两方面(1)手工用推理规则进行演算或推理手工用推理规则进行演算或推理(2)手工进行定理证明(前例遇到蕴含式的证明)手工进行定理证明(前例遇到蕴含式的证明)第一次讲座对自动定理证明已略有介绍第一次讲座对自动定理证明已略有介绍如何走向自动验证(以函数的正确性验证为例)如何走向自动验证(以函数的正确性验证为例)(1)函数的前条件和后条件必函数的前条件和后条件必须须由由验证验证者者给给出出(2)把推理把推理规则规则改造成能自改造成能自动动演算
12、的演算演算的演算规则规则(3)借助自借助自动动定理定理证证明器明器生成验证条件的演算生成验证条件的演算最弱前条件(最弱前条件(Weakest Precondition)演算)演算WPWP:程序集程序集 断言集断言集 断言集断言集 WP(S,Q):计算:计算P S Q的最弱前条件的最弱前条件PHoare逻辑的赋值公理是最弱前条件演算的一条规逻辑的赋值公理是最弱前条件演算的一条规则则(1)赋值公理:赋值公理:QE/x x=E Q(2)赋值语句的赋值语句的WP演算规则:演算规则:WP(x=E,Q)=QE/x生成验证条件的演算生成验证条件的演算最弱前条件演算最弱前条件演算WP若一个函数的前后条件是若一
13、个函数的前后条件是P和和Q,函数的代码是赋,函数的代码是赋值语句序列值语句序列S1,Sn,那么,那么(1)逆向从逆向从Sn到到S1连续使用赋值语句的连续使用赋值语句的WP规则,规则,WP(S1,WP(Sn,Q)它是保证执行上述代码段后得到它是保证执行上述代码段后得到Q的最弱前条件的最弱前条件(2)若若P WP(S1,WP(Sn,Q)得证,则代码得证,则代码段段S1,Sn对前后条件对前后条件P和和Q正确正确(3)P WP(S1,WP(Sn,Q)称为验证条件称为验证条件生成验证条件的演算生成验证条件的演算最弱前条件演算最弱前条件演算WPWP(x=E,Q)=QE/xQE/x x=E QWP(S1;S
14、2,Q)=WP(S1,WP(S2,Q)WP(if E then S1 else S2,Q)=(WP(S1,Q)E)(WP(S2,Q)E)P S1 R R S2 QP S1;S2 QP E S1 Q P E S2 QP if E then S1 else S2 Q生成验证条件的演算生成验证条件的演算最弱前条件演算最弱前条件演算WP对于对于WP(while E do S,Q),演算有可能不终止,演算有可能不终止 假定假定WPk为循环体为循环体S执行执行k次的演算次的演算 WP0(while E do S,Q)=E Q WPi(while E do S,Q)=E WP(S,WPi 1(while E
15、 do S,Q)WP()=WP0()WP1()WP2()I E S II while E do S IE WP演算在循环语句演算在循环语句这里遇到了困难这里遇到了困难生成验证条件的演算生成验证条件的演算最弱前条件演算最弱前条件演算WP一些其他规则一些其他规则(1)WP(S,false)=false(2)WP(S,Q1 Q2)=WP(S,Q1)WP(S,Q2)(3)WP(S,Q1 Q2)=WP(S,Q1)WP(S,Q2)(4)(5)WP(S,true)=保证保证S终止的最弱前条件终止的最弱前条件 .下面考虑解决由循环语句引出的问题下面考虑解决由循环语句引出的问题Q Q WP(S,Q)WP(S,Q
16、)生成验证条件的演算生成验证条件的演算生成验证条件的演算生成验证条件的演算VC(verification condition)把把WP演算放宽为演算放宽为VC演算演算,即并非强求最弱前条件即并非强求最弱前条件(1)要求验证者提供循环不变式要求验证者提供循环不变式(2)VC(S,Q)强于强于WP(S,Q)(3)VC(S,Q)仍弱于仍弱于P,即,即P VC(S,Q)WP(S,Q)falsetruestrongweak Precondition(S,Q)最弱前条件最弱前条件 WP(S,Q)验证者提供的前条件验证者提供的前条件P验证条件验证条件VC(S,Q)生成验证条件的演算生成验证条件的演算生成验证
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序 进行 推理 逻辑 计算机科学 导论 第二 教学 课件
限制150内