对程序进行推理的逻辑计算机科学导论第二讲.ppt
《对程序进行推理的逻辑计算机科学导论第二讲.ppt》由会员分享,可在线阅读,更多相关《对程序进行推理的逻辑计算机科学导论第二讲.ppt(45页珍藏版)》请在三一文库上搜索。
1、对程序进行推理的逻辑 计算机科学导论第二讲,计算机科学技术学院 陈意云 0551-63607043 ,课 程 内 容,课程内容 围绕学科理论体系中的模型理论, 程序理论和计算理论 1. 模型理论关心的问题 给定模型M,哪些问题可以由模型M解决;如何比较模型的表达能力 2. 程序理论关心的问题 给定模型M,如何用模型M解决问题 包括程序设计范型、程序设计语言、程序设计、形式语义、类型论、程序验证、程序分析等 3. 计算理论关心的问题 给定模型M和一类问题, 解决该类问题需多少资源,讲 座 提 纲,基本知识 程序验证、程序逻辑、命题逻辑、谓词逻辑 Hoare逻辑 Hoare三元式、赋值公理、结构化
2、语句的推理规则、推论规则 生成验证条件的演算 最弱前条件演算、生成验证条件的演算 程序验证实例演示 二分查找等程序,基 本 知 识,程序测试与程序验证 测试能发现程序有错;一般而言,测试不能保证程序无错 程序验证:用数学的方法来证明程序的性质,提高软件可信程度 演绎验证:指用逻辑推理的方法来证明程序具备所期望的性质 演绎验证可以保证程序无错 程序逻辑:对程序进行推理的逻辑,基 本 知 识,命题逻辑 合式公式(well-formed formula)的归纳定义 := p | ( ) | ( ) | ( ) | ( ) (1) p代表原子命题,例如 x 3, a5 = 10.5 原子命题具体形式与
3、讨论的问题领域有关 (2) 代表一般命题,“:=”右部用“| ”分隔的各部分代表命题的构成形式,如 0= x x 100 (3) , , 和代表合取、析取、非和蕴含运算,在确定了它们的运算优先关系后,很多情况下括号可以省略,如p (q1 q2)可简化为p q1 q2 备注:采用而不是 , 用于描述函数类型,基 本 知 识,命题逻辑 推理规则 例:有关合取“”运算的推理规则 ( i) (e1) (e2) “ i”表示合取引入规则(i: introduction) “ e”表示合取消去规则(e: elimination) 对和等都有各自的推理规则, ,谓词逻辑 合式公式 (1) 谓词集合、函数集合
4、(包括常量) (2) 基于来定义项集 t := x | c | f(t, , t) ( f ) (3) 归纳地定义基于( , )的合式公式 := P(t1, t2, , tn) | ( ) | ( ) | ( ) | ( ) | (x ) | ( x ) ( P ) 增加的规则 全称量词和存在量词的证明规则等,基 本 知 识,Hoare 逻 辑,程序逻辑 对程序进行推理的逻辑 Hoare逻辑是一种程序逻辑 介绍面向非常简单的编程语言(只有赋值语句、顺序语句、条件语句和循环语句)的Hoare逻辑推理规则,Hoare 逻 辑,合式公式 语法形式:P S Q,称为Hoare三元式 (1) S是代码段
5、,遵循相应编程语言的语法 (2) P和Q是关于程序状态(变量到值的映射)的断言,分别称为S的前断言和后断言,断言是谓词逻辑的合式公式 (3) 例: x = 1 y 1 y 0 y 5也成立,Hoare 逻 辑,赋值公理 形式:QE/x x = E Q QE/x表示Q中出现的变量x用表达式E代换 例: x +1 6 x = x +1 x 6 是赋值公理的实例 特点: x +1 6 (即x 5)是语句x = x+1和后断言x 6 的最弱前断言 (1) x 5.1和x 7都可做前断言,因为都强于x 5 x 5.1 x 5 并且x 7 x 5 (2) 若x 4.9作为前断言,则三元式不成立,因为 x
6、4.9 x 5不成立,Hoare 逻 辑,结构化语句的推理规则 顺序语句 条件语句(也可用其它形式表示) 插曲:推论规则,Hoare 逻 辑,例(用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 (
7、x y) z = x else z = y z = x z = y,由条件语句 的规则,Hoare 逻 辑,结构化语句的推理规则(续) 循环语句 例:用自然数加法来完成自然数相乘 x = 0; y = 0; while (y n) /循环不变式:(x = my) (y n) x = x + m; y = y + 1; / x = m n,I 被称为 循环不变式,I E 语句S和后断言I的最弱前条件: (x = my y n y n) (x+m = m(y+1) y+1 n),Hoare 逻 辑,小结 用Hoare逻辑,可以对简单程序进行手工证明 手工体现在两方面 (1) 手工用推理规则进行演算
8、或推理 (2) 手工进行定理证明(前例遇到蕴含式的证明) 第一次讲座对自动定理证明已略有介绍 如何走向自动验证(以函数的正确性验证为例) (1) 函数的前条件和后条件必须由验证者给出 (2) 把推理规则改造成能自动演算的演算规则 (3) 借助自动定理证明器,生成验证条件的演算,最弱前条件(Weakest Precondition)演算WP WP : 程序集 断言集 断言集 WP(S, Q):计算P S Q的最弱前条件P Hoare逻辑的赋值公理是最弱前条件演算的一条规则 (1) 赋值公理:QE/x x = E Q (2) 赋值语句的WP演算规则: WP (x =E, Q) = QE/x,生成验
9、证条件的演算,最弱前条件演算WP 若一个函数的前后条件是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)称为验证条件,生成验证条件的演算,最弱前条件演算WP WP(x =E, Q) = QE/x QE/x x = E Q WP(S1;S2, Q) = WP (S1, WP(S2, Q) WP(if E t
10、hen S1 else S2, Q) = (WP(S1, Q) E) (WP(S2, Q) E),生成验证条件的演算,最弱前条件演算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, WPi1(while E do S, Q) WP() = WP0 () WP1 () WP2 () ,WP演算在循环语句 这里遇到了困难,生成验证条件的演算,最弱前条件演算WP 一些其他规则 (1) WP(S, false) = false (
11、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终止的最弱前条件 . 下面考虑解决由循环语句引出的问题,生成验证条件的演算,生成验证条件的演算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),生成验证条件的演算,生成验证条件的演算VC
12、(verification condition) 除了循环语句外,VC演算与WP的一致 循环语句的VC演算如下,其中I是循环不变式 VC(while E do S, Q) = I x1xn( I E VC(S, I) (I E Q) 其中x1, , xn是在S中被修改的所有变量 实际做法 (1) 黄色部分和绿色部分 分别作为循环出口和入口的验证条件 (2) I作为继续逆向VC演算的后断言,程 序 验 证 实 例,void mult(int m, int n) x = 0 ; y = 0 ; while (y n) do x = x + m ; y = y + 1 ; ,例子:用加运算来实现乘运
13、算的函数,程 序 验 证 实 例,n 0 / 前条件 void mult(int m, int n) x = 0 ; y = 0 ; while (y n) do x = x + m ; y = y + 1 ; x = m n / 后条件,由程序员提供,由程序员提供,程 序 验 证 实 例,n 0 void mult(int m, int n) x = 0 ; y = 0 ; while (y n) do (x = my) (y n) / 循环不变式 x = x + m ; y = y + 1 ; x = m n,也由程序员提供,程 序 验 证 实 例,n 0 void mult(int m,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序 进行 推理 逻辑 计算机科学 导论 第二
链接地址:https://www.31doc.com/p-2562261.html