1、1,命题逻辑的推理理论,主要内容 推理的形式结构 判断推理正确的方法 真值表法 等值演算法 主析取范式法,2,命题逻辑的推理理论,主要内容(续) 推理定律 构造推理证明的方法 直接证明法 附加前提证明法 归谬法(反证法),3,命题逻辑的推理理论,基本要求 理解并记住推理形式结构的两种形式 1. (A1A2Ak)B 2. 前提:A1, A2, , Ak,结论:B 熟练掌握判断推理是否正确的不同方法 真值表法、等值演算法、主析取范式法等,4,命题逻辑的推理理论,基本要求 牢记各条推理规则 熟练掌握构造证明的方法 直接证明法、附加前提证明法和归谬法 会解决实际中的简单推理问题,5,推理理论的基本思想
2、,什么是推理理论? 人类思维过程中需要研究推导过程是否合理 命题逻辑、一阶谓词逻辑概念/符号刻划推理事实(前提、结论) 逻辑公式刻划推理事实之间的关系 如何进行符号推理过程? 命题逻辑中验证推理有效/正确的方法 前提及结论组合成蕴涵逻辑公式 证明该蕴涵逻辑公式为重言式 真值表法 等值演算法 主析取范式法,6,推理理论的基本思想,什么是推理理论? 真值表法 n元公式的真值表行数2n,单元格个数? 更多采用推导法建立 等值演算法 主析取范式法,7,推理实例,判断下面推理是否正确 若今天是1号,则明天是5号。 今天是1号,所以明天是5号,8,推理实例,若今天是1号,则明天是5号。今天是1号,所以明天
3、是5号 解:设 p:今天是1号,q:明天是5号(pq)pq 用等值演算法 (pq)p)q 蕴涵表达式 pqq 1 推理正确、结论错误!,9,推理的形式结构,定义:设A1, A2, , Ak, B为命题公式 若对于每组赋值,A1A2 Ak为假(或当A1A2Ak为真时,B也为真) 则称由前提A1, A2, , Ak推出结论B的推理是有效的(或正确的) B是有效结论,10,推理的形式结构,定理:由命题公式A1, A2, , Ak推出B的推理正确当且仅当A1A2AkB为重言式 注意: 推理正确不能保证结论一定正确,11,推理的形式结构,A1, A2, , Ak,B,若推理正确, 记为A1, A2, ,
4、 AkB A1, A2, , AkB,若推理正确, 记为A1, A2, , AkB 前提: A1, A2, , Ak,结论: B,12,推理理论的基本思想,推理理论 用数学方法刻划推导方法 如何进行推理? 反复利用重言式 书写相对繁复 与实际推理过程有差异 是否足够?,13,推理理论的基本思想,(AC)(AB)C)化简为AC 即证明:(AC)(AB)C)AC (AC)(AB)C) De. Morgan (AC)(AB)C) De. Morgan (AC)(AB)C) 分配律 (AC)(AC)(BC) 吸收律 (AC),14,推理理论的基本思想,(AC)(AB)C)AC 利用已知命题恒等式 基本
5、恒等式:公理 利用推理规则 什么是推理规则?,15,推理理论的基本思想,(AB)C)(AB)C De. Morgan 定律 (AB)AB 形式结构上有差异 需要代入规则,16,推理理论的基本思想,(AB)C)(AB)C (AC)(AB)C)(AC)(AB)C) 需要替换规则,17,推理理论的基本思想,推理过程基本思想 (基本)重言式 (基本)推理规则 代入规则 替换规则 导出规则 有已知重言式导出,18,推理规则,(1) 前提引入规则 (2) 结论引入规则 (3) 代入/替换规则,19,推理规则,(4) 假言推理/分离规则蕴涵式为真、前件为真,则后为真 若今天下雪,则去滑雪 今天下雪 所以去滑
6、雪,20,推理规则,(5) 附加规则当前气温在零度以下 所以,当前气温零度以下或正在下雨,21,推理规则,(6) 化简规则当前气温零度以下且正在下雨 所以,当前气温在零度以下,22,推理规则,(7) 拒取式规则蕴涵式为真、后件为假,则前件为假 若今天下雪,则去滑雪 没去滑雪 所以,今天没下雪,23,推理规则,(8) 假言三段论规则蕴涵传递 若今天下雨,则今天不野餐 若今天不野餐,则明天野餐 所以,若今天下雨,则明天野餐,24,推理规则,(9) 析取三段论规则当前要么气温零度以下,要么下雨 当前没下雨 所以,当前气温零度以下,25,推理规则,(10) 构造性二难推理规则若今天下雨,则今天不野餐
7、若今天周四,则今天开会 今天要么下雨,要么是周四 所以,今天野餐或开会,26,推理规则,(11) 破坏性二难推理规则若今天下雨,则今天不野餐 若今天周四,则今天开会 今天不野餐,或者不开会 所以,今天不下雨或不是周四,27,推理规则,(12) 合取引入规则当前下雨 当前气温零度以下 所以,当前气温零度以下且下雨,28,推理规则,恒等式都是推理规则 2个 重言蕴涵式也推理规则 1个,29,构造证明的方法,推理一般形式: pq 无义证明 平凡证明 直接证明 间接/逆反证明 推广间接证明 附件前提证明/演绎定理 分情况证明 归谬证明/反证,30,无义证明,已知命题函数P(n) 若n1, 则n2n (
8、n1)(n2n) 求证命题P(0)为真 P(0): (01)(020) 前提假,蕴涵式P(0)自动为真,31,构造证明的方法,推理一般形式: pq 无义证明 平凡证明 直接证明 间接/逆反证明 推广间接证明 附件前提证明/演绎定理 分情况证明 归谬证明/反证,32,平凡证明,已知命题函数P(n) 若a, b是满足a=b的整数, 则an=bn 求证命题P(0)为真 若a=b, 则a0=b0 后件真,蕴涵式自然为真 无需前提,33,构造证明的方法,推理一般形式: pq 无义证明 平凡证明 直接证明 间接/逆反证明 推广间接证明 附件前提证明/演绎定理 分情况证明 归谬证明/反证,34,直接证明法,
9、p真 推出q真 则pq真,35,直接证明法推理实例,构造下面推理的证明 若明天是星期一或星期三,我明天就有课。若我明天有课,今天必备课。我今天没备课,所以明天不是星期一、也不是星期三 (1) 设命题并符号化 设 p:明天是星期一,q:明天是星期三,r:我明天有课,s:我今天备课,36,直接证明法推理实例,(2) 写出证明的形式结构 前提:(pq)r, rs, s、 结论:pq 推理结构 (pq)r)(rs)(s)(pq),37,直接证明法推理实例,前提:(pq)r, rs, s,结论:pq (3) 证明 rs 前提引入 s 前提引入 r 拒取式 (pq)r 前提引入 (pq) 拒取式 pq 替
10、换,38,直接证明法,(1) 划分命题并符号化p:明天是星期一,q:明天是星期三 r:我明天有课,s:我今天备课 (2) 写出证明的形式结构 前提:(pq)r, rs, s、 结论:pq,39,直接证明法推理实例,(3) 利用推理规则完成证明 断言(为真命题) 规则 rs 前提引入 s 前提引入 r 拒取式 (pq)r 前提引入 (pq) 拒取式 pq 替换,符号化命题p:明天是星期一 q:明天是星期三 r:我明天有课 s:我今天备课 前提:(pq)r, rs, s 结论:pq,40,直接证明法练习,练习1 前提 今天下午没出太阳且今天比昨天冷 只有今天下午出太阳,我们才去游泳 若我们不去游泳
11、,则我们乘船游览 若我们乘船游览,则我们在黄昏时候回家 结论 我们在黄昏时候回家,对吗?,41,直接证明法练习,练习1 前提中的命题 p: 今天下午没出太阳 q: 今天比昨天冷 r: 我们去游泳 s: 我们乘船游览 结论中的命题 t: 我们在黄昏时候回家,42,直接证明法练习,练习1 前提符号化 今天下午没出太阳且今天比昨天冷 pq 只有今天下午出太阳,我们才去游泳 rp 若我们不去游泳,则我们乘船游览 rs 若我们乘船游览,则我们在黄昏时候回家 st 结论符号化 我们在黄昏时候回家 t,43,直接证明法练习,练习1 前提 pq, rp, rs, st 结论 t,p: 今天下午没出太阳 q:
12、今天比昨天冷 r: 我们去游泳 s: 我们乘船游览 t: 我们在黄昏时候回家,44,直接证明法练习,pq 前提引入 p 1 化简 rp 前提引入 r 3 4拒取 rs 前提引入 s 4 5 假言推理 st 前提引入 t 6 7假言推理,今天下午没出太阳且今天比昨天冷 pq 只有今天下午出太阳,我们才去游泳 rp 若我们不去游泳,则我们乘船游览 rs 若我们乘船游览,则我们在黄昏时候回家 st,45,证明中的错误:谬误,否定假设谬误 pq, p q (pq)p)q:非重言式 若你做教材的每道习题,则你学习离散数学 你没做教材的每道习题 所以,你没学习过离散数学,46,证明中的错误:谬误,肯定结论
13、谬误 pq, q p (pq)q)p:非重言式 若你做教材的每道习题,则你学习离散数学 你学习过离散数学 所以,你做教材的每道习题,47,证明中的错误:谬误,循环论证谬误 pq, qr, rp, p p 一个瘦子问胖子:“你为什么长得胖?” 胖子回答:“因为我吃的多。” 瘦子又问胖子:“你为什么吃的多?” 胖子回答:“因为我长得胖。”,48,证明中的错误:谬误,循环论证谬误 pq, qr, rp, p p 小明和小敏在走廊里追逐打闹,被老师叫到办公室 老师:“小明,你为什么追小敏?” 小明:“因为小敏在跑。” 老师:“小敏,你为什么跑?” 小敏:“因为小明在追。”,49,构造证明的方法,推理一
14、般形式: pq 无义证明 平凡证明 直接证明 间接/逆反证明 推广间接证明 附件前提证明/演绎定理 分情况证明 归谬证明/反证,50,间接证明法,P28 例1.5-6,51,构造证明的方法,推理一般形式: pq 无义证明 平凡证明 直接证明 间接/逆反证明 推广间接证明 附件前提证明(演绎定理) 分情况证明 归谬证明/反证,52,附加前提证明法,欲证 前提: A1, A2, , Ak,结论:CB 等价于,前提: A1, A2, , Ak, C,结论:B 为什么? 适用范围:结论是蕴涵逻辑公式,53,附加前提证明法,前提: A1, A2, , Ak ,结论:CB(A1A2Ak)(CB) (A1A
15、2Ak)(CB) (A1A2AkC)B (A1A2AkC)B前提: A1, A2, , Ak, C,结论:B,54,附加前提证明法实例,构造下面推理的证明 2是素数或合数。若2是素数,则 是无理数。若 是无理数,则4不是素数。 所以,如果4是素数,则2是合数。,55,附加前提证明法实例,解:(附加前提证明法构造证明) (1) 设 p:2是素数,q:2是合数,r: 是无理数,s:4是素数 (2) 推理的形式结构 前提:pq, pr, rs 结论:sq,56,附加前提证明法实例,(3) 证明 s 附加前提引入 pr 前提引入 rs 前提引入 ps 假言三段论 p 拒取式 pq 前提引入 q 析取三
16、段论,前提:pq, pr, rs 结论:sq p:2是素数 q:2是合数 r: 是无理数 s:4是素数,57,构造证明的方法,推理一般形式: pq 无义证明 平凡证明 直接证明 间接/逆反证明 推广间接证明 附件前提证明(演绎定理) 分情况证明 归谬证明/反证,58,分情况证明法,P29 例1.5-8,59,构造证明的方法,推理一般形式: pq 无义证明 平凡证明 直接证明 间接/逆反证明 推广间接证明 附件前提证明(演绎定理) 分情况证明 归谬证明(反证),60,归谬法(反证法),欲证:前提: A1, A2, Ak,结论:B 结论否定引入 前提中加入B 推出矛盾 A1A2AkB (A1A2A
17、k)B (A1A2AkB) (A1A2AkB)0 A1A2AkB0,61,归谬法实例,前提:(pq)r, rs, s, p 结论:q,62,归谬法实例,证明:(归缪法) q 结论否定引入 rs 前提引入 s 前提引入 r 拒取式 (pq)r 前提引入 (pq) 析取三段论 pq 替换 p 析取三段论 p 前提引入 pp0 合取,前提:(pq)r, rs, s, p 结论:q,63,归谬法(反证法形式2 ),求证B 假设 B 为真 等价推导有结果:RR (矛盾式0) R:推出的另一个命题 即:BRR 为假 “前真后假”的蕴涵式 说明:从 B 为真出发,一定会推出矛盾结果 B为真,64,归谬法实例
18、,p: sqrt(2)是无理数 p: sqrt(2)是有理数 存在整数a, b, 使sqrt(2)=a/b, 其中a, b无公因子 2=a2/b2 a2=2b2, a2是偶数 已知:a2是偶数a是偶数 则存在整数c, a=2c 所以4c2=2b2 即2c2=b2 b是偶数 与a, b无公因子矛盾,65,一阶谓词逻辑推理理论,主要内容(1.8节) 推理的形式结构 推理定律 推理规则,66,一阶谓词逻辑推理理论,基本要求 牢记各条推理规则 特别注意推理规则、+、+、的使用条件 能正确地给出有效推理的证明,67,一阶谓词逻辑推理理论,推理的形式结构 1. A1A2AkB,若此式是永真式, 则称推理正
19、确, 记作A1A2AkB 2. 前提: A1,A2,Ak,结论: B,68,量词消去引入规则,1. 全称量词消去规则(-)c是个体常元, cD 所有人会思考 黄诚会思考,69,量词消去引入规则,2. 全称量词引入规则(+) x是个体变元 选取任意cD,A(c)成立 则xA(x)成立,70,量词消去引入规则,3. 存在量词消去规则(-)已知xA(x)成立 可知D中有个c,A(c)成立 x是个体变元 c是个体常元 可不确定,但确实存在,c 只是人为指定的一个名字,71,量词消去引入规则,4. 存在量词引入规则(+)已知D中有个c,A(c)成立 可知xA(x)成立 x个体变元 c个体常元,72,一阶
20、谓词逻辑推理规则,(1) 前提引入规则 (2) 结论引入规则 (3) 替换规则 (4) 假言推理规则 (5) 附加规则 (6) 化简规则 (7) 拒取式规则,73,一阶谓词逻辑推理规则,(8) 假言三段论规则 (9) 析取三段论规则 (10) 构造性二难推理规则 (11) 合取引入规则 (12) -规则 (13) +规则 (14) -规则 (15) +规则,74,一阶谓词逻辑推理实例,例1 构造下面推理的证明,取个体域R 任何自然数都是整数。存在自然数。所以, 存在整数。 解,设F(x): x是自然数,G(x):x是整数 前提: x(F(x)G(x), xF(x) 结论: xG(x),75,一
21、阶谓词逻辑推理实例,例1 前提: x(F(x)G(x),xF(x),结论: xG(x) 证明:x(F(x)G(x) 前提引入 F(c)G(c) - F(c)xG(x) + xF(x)xG(x) + xF(x) 前提引入 xG(x) 假言推理,76,一阶谓词逻辑推理实例,例2 构造下面推理的证明,取个体域R 不存在能表示成分数的无理数。有理数都能表示为分数。所以, 有理数都不是无理数。 设F(x): x是无理数, G(x): x是有理数, H(x): x能表示为分数 前提: x(F(x)H(x), x(G(x)H(x) 结论: x(G(x)F(x),77,一阶谓词逻辑推理实例,例2 前提: x(
22、F(x)H(x), x(G(x)H(x),结论: x(G(x)F(x) 证明: x(F(x)H(x) 前提引入 x(F(x)H(x) 量词否定 代换实例 x(F(x)H(x) 蕴涵定义 代换实例 F(x)H(x) - x(G(x)H(x) 前提引入 G(x)H(x) - H(x)F(x) 逆反 代换实例 G(x)F(x) 假言三段论 x(G(x)F(x) +,78,一阶谓词逻辑推理练习,1. 构造下面推理的证明 如果今天是周六,我们就到颐和园或圆明园玩。如果颐和园游人太多,就不去颐和园。今天是周六,并且颐和园游人太多。所以我们去圆明园或动物园玩。,79,一阶谓词逻辑推理练习,1. 证明 (1)
23、 设 p:今天是周六,q:到颐和园玩,r:到圆明园玩,s:颐和园游人太多,t:到动物园玩 (2) 前提:p(qr), sq, p, s 结论:rt,80,一阶谓词逻辑推理练习,(3) 证明 p(qr) 前提引入 p 前提引入 qr 假言推理 sq 前提引入 s 前提引入 q 假言推理 r 析取三段论 rt 附加,81,一阶谓词逻辑推理练习,2. 构造推理的证明 人都喜欢吃蔬菜。但不是所有的人都喜欢吃鱼。所以,存在喜欢吃蔬菜而不喜欢吃鱼的人,82,一阶谓词逻辑推理练习,2. 构造推理的证明 人都喜欢吃蔬菜。但不是所有的人都喜欢吃鱼。所以,存在喜欢吃蔬菜而不喜欢吃鱼的人 令F(x): x为人,G(
24、x): x喜欢吃蔬菜,H(x): x喜欢吃鱼 前提:x(F(x)G(x), x(F(x)H(x) 结论:x(F(x)G(x)H(x),83,一阶谓词逻辑推理练习,2. 解,F(x): x为人,G(x): x喜欢吃蔬菜,H(x): x喜欢吃鱼 前提:x(F(x)G(x), x(F(x)H(x) 结论:x(F(x)G(x)H(x) 证明:用归谬法 (1) x(F(x)G(x)H(x) 结论否定引入 (2) x(F(x)G(x)H(x) (1)替换 (3) (F(y)G(y)H(y) (2) (4) G(y) F(y)H(y) (3)替换 (5) x(F(x)G(x) 前提引入,84,一阶谓词逻辑推
25、理练习,2. (续) (6)F(y)G(y) (5) (7)F(y) F(y)H(y) (4)(6)假言三段论 (8)F(y) H(y) (7)替换 (9)y(F(y) H(y) (8)+ (10)x(F(x) H(x) (9)替换 (11)x(F(x) H(x) 前提引入 (12)0 (10)(11)合取,85,推理理论的计算机应用,停机问题 程序正确性证明,86,停机问题,只要给定一个计算机程序及其一个输入 该程序在该输入上是否能够停机 用计算机解决 “停机问题” 是否存在一个程序,可以判定任何程序面对任何输入是否终止,87,停机问题,是否存在这样的程序,它可判定任何程序是否终止 输入:程
26、序对应二进制串、程序输入 输出:终止/不终止,88,停机问题不可解,不存在这样的程序,它可以判定任何程序是否终止 证明: 1)设存在程序 T(P,I),若 P 终止,输出x = 1 若 P 不终止,输出x = 0,89,停机问题不可解,不存在这样的程序,它可以判定任何程序是否终止 证明: 2)T(P,P),T能够判定当 P 副本作为输入时,P是否终止,若 P 终止,输出x = 1 若 P 不终止,输出x = 0,90,停机问题不可解,3)构造程序 S(P),T(P,I): 若 P 终止,x = 1 若 P 不终止,x = 0,S(P): 若x = 1,则 S 不终止 若x = 0,则 S 终止
27、,S(P): 若 P 终止, 则S不终止 若 P 不终止, 则S终止,91,停机问题不可解,4) 假定S的二进制串作为自身的输入,S(P): 若 P 终止, 则Strange不终止 若 P 不终止, 则Strange终止,S(S): 若 S终止, 则S不终止 若 S不终止, 则S终止,P = S,矛盾!结论:Test不存在!,92,停机问题不可解,矛盾! 只要存在程序 Test,就可以构造出这样一个结论有冲突的程序 Strange 所以,不存在前面假设的程序 Test 即不存在能够判定“停机问题”的程序! 计算机不能解决“停机问题”!,93,程序正确性证明,程序面对输入时能否停机无法判定 程序
28、能否正确完成指定功能可以证明 断言归纳法,94,程序正确性证明,整数除法程序 x/yx=y*q+r,其中x, y, q, r 是整数,且x, y0 divide(int x, int y, int* q, int* r) q=0;r=x;while(y=r)r=r-y;q=q+1; ,95,程序正确性证明,x/yx=y*q+r,其中x, y, q, r 是整数,且x, y0 谓词P (x, y): (x0)(y0)q=0;r=x; 谓词Q (x, y, q, r): (x=y*q+r)(r0)while(y=r)r=r-y;q=q+1; 谓词F (x, y, q, r): (x=y*q+r)(rq),I,II,96,程序正确性证明,q=0r=x; 初始化后:xy(P (x, y)Q (x, y, 0, x)while(y=r) 每次循环前:xyqr(Q(x, y, q, r)(yr)Q(x, y, q+1, r-y)r=r-y;q=q+1; 循环结束后: xyqr(Q(x, y, q, r)(yr)F (x, y, q, r),