演绎推理
引言
本篇介绍演绎推理(deductive reasoning)。正如前面的介绍中所提到的,演绎推理只有两种有效性:完全有效,或完全无效。因此,一个有效的演绎推理可以看作是绝对正确的知识。「绝对正确」听起来对生活很有帮助?的确如此。一个每个人都十分熟悉的演绎推理的例子,就是数学证明。比如「2+2=4」,只要给出了数字的定义,加法的定义,以及等号的定义,那么这一结论就是绝对正确的,任何其他的事物都无法改变。
在第一章的例子中已经提到,给定一个现实生活中的论题,我们可以用字母来表示原子命题的内容。之所以能进行这一步,是因为演绎推理的有效性与原子命题的具体内容无关,它描述的是一种形式上的正确性。用字母代替原子论题,可以让我们集中到形式上。对论题有效性的判断完成后,我们再将字母替换回具体的内容,这一过程称为一个解释(interpretation)。一个有效的演绎推理,在任何解释下都是有效的。
此外,可以说,一个演绎推理并没有产生任何新东西。它只是指出了原有前提中所蕴含的结论。还记得每一个演绎推理都可以转换成一个「如果……那么……」形式的断言句么?一个有效的演绎推理所转化而成的断言句,在任何情况下都是真的。这种断言句称为 tautology 。中文的各种翻译指出了其含义的不同侧面:「永真式」(永远是真的)、「重言式」(只是重复了前提里的内容)、「套套逻辑」或「同义反复」(没有增加新的内容)。
下面是一个验证演绎推理有效性的完整例子:
如果今天下雨,那我们要么看电影,要么听音乐。 今天下雨。 我们没有看电影。 ------------ 我们听音乐。
首先,进行如下替换:
p = 下雨 q = 看电影 r = 听音乐
原论题变成了
如果p,那要么q,要么r。 p。 没有q。 ------------ r。
或者写成逻辑表达式:
p → q ∨ r p ¬q ------------ r
根据一系列即将介绍的规则,我们可以判断这是一条有效的论题。因此原来的解释也是有效论题。讲解这些规则,一般有两种方法:经典逻辑教科书的方法和教给机器的方法。让我们从第一种开始。
经典教科书方法
经典逻辑教科书的方法,就是给出一系列总结好的「形式」,或者说「规则」。当你遇到任何推理时,尝试套用到已知的规则上,如果成功了,那就是有效的推理。此外,教科书还常常一起给出一系列不好的规则,称为「谬误」。这种规则的特点是,初看之下似乎很有道理,但其实是错误的。注意广义的「谬误」也包括很多形式上正确,但不符合现实的推理。在需要区分时,我们将本节介绍的谬误称为「形式谬误」,而后一种谬误则称为「非形式谬误」。
首先我们来看有效的推理规则。这些规则的有效性并不依赖于任何假设,它们总是正确的,根据定义如此。或者说,规则只是将人们的思考方式记录下来而已。介绍每一条规则时,我们都会给出一个解释(interpretation),作为实例,帮助理解。
1. 肯定前件(Modus ponens)
p → q p ------------ q
等价的断言也许让人更熟悉:「如果p则q,并且p。那么q。」
解释的实例:
如果今天是星期三,小明会穿牛仔裤。 今天是星期三。 ------------ 小明会穿牛仔裤。
2. 否定后件(Modus tollens)
p → q ¬q ------------ ¬p
解释的实例:
如果今天是星期三,小明会穿牛仔裤。 小明没穿牛仔裤。 ------------ 今天不是星期三。
3. 析取三段论(disjunctive syllogism)
p ∨ q ¬p ------------ q
「析取」只是「或」的另一种说法而已。
解释的实例:
你要么得给小宝宝唱歌,要么得给小宝宝讲故事。 你不会给小宝宝唱歌。 ------------ 你得给小宝宝讲故事。
命题逻辑和其他逻辑
你已经看到三条经典教科书的规则了,实际上还有很多规则。总的来说,它们的样子都差不多。我们将它们留到附录,里面的规则组成了经典命题逻辑中的直觉主义部分。
在这些基本规则之外,我们可以添加新的规则形成表达能力更强的逻辑。这一过程包括两步:我们定义新的记号(语法,syntax),再给出它们的推理规则(语义,semantics)。
一个常见的例子是谓词逻辑(predicate logic)。通过谓词来表达「所有」和「存在」这样的含义。在此我们不给出完全的定义,只是举亚里士多德三段论(syllogism)作为例子:
所有的p都具有q的属性。 a属于p。 ------------ a具有q的属性。
一个解释:
p = 人 q = 会死去 a = 苏格拉底
原论题就变成了:
所有的人都具有会死去的属性。 苏格拉底属于人。 ------------ 苏格拉底具有会死去的属性。
再给出一个模态逻辑(modal logic)的例子,它可以让我们表达「可能」与「必然」的概念。
必然p。 ------------ 不可能¬p。
一个解释:
p = 方凿不入圆枘
原论题变成了
必然方凿不入圆枘。 ------------ 不可能方凿入圆枘。
例子
当进行推理时,我们可以从前提中选出几个断言句,如果它们符合某条规则,就将规则的结论添加到前提中。不断重复这一过程,如果遇到了矛盾,说明原来的前提就是不一致的。否则继续进行推理,直到原结论出现(说明论题有效),或者原结论的否定出现(说明无效)。当然这一过程也可能一直进行下去,永远无法完结。这个问题我们留给直觉主义逻辑学家讨论,现实生活中很难遇到。
以开头的例子演示:
p → q ∨ r (1) p (2) ¬q (3) ------------ r (*)
第一步,(1)式和(2)式符合「肯定前件」规则,将其结论记为(4)式,添加到前提中,得到
p → q ∨ r (1) p (2) ¬q (3) q ∨ r (4) ------------ r (*)
接下来,(3)式和(4)式符合「析取三段论」规则,其结论正好就是原结论,(*)式,因此我们成功证明了这是一个有效的演绎推理。
教给机器的方法
你可能已经注意到了,上面的推理过程如此机械化,完全可以交给机器来完成。实际上,当然可以。假设我们已经有一个记录了所需规则的演绎推理机器 M 。我们可以将一个论题输入 M , M 接下来进行如下动作:
- 记结论为 p ,取其否定 ¬q 。
- 将 ¬q 加入前提中。
- 将所有前提取 ∧ ,也就是「并且」起来。
- 进行推理。如果得出矛盾(假),那么原论题有效;如果得出了非假的断言句,那么原论题无效。
我们可以利用之前介绍的,将论题转化为断言句的技巧,来证明这种方法的正确性。
对于一个论题
p1 p2 …… pn ------------ q
该论题有效,当且仅当断言句「(p1 ∧ p2 ∧ …… ∧ pn) → q」为真。注意到添加否定结论的前提「(p1 ∧ p2 ∧ …… ∧ pn ∧ ¬q) → ¬q」。因此,「(p1 ∧ p2 ∧ …… ∧ pn ∧ ¬q) → (¬q ∧ q)」。因此,当论题有效时,会得出矛盾(假)。相反,假如得到了一个非假的断言句,比如 r ,我们可以适当地选取原子命题,使 r 为真,此时「(p1 ∧ p2 ∧ …… ∧ pn ∧ ¬q)」为真,因此「¬q」一定为真,原论题无效。
对 r 的赋值称为「使原论题无效的一个反例(counter-example)」。
这一论证过程告诉我们,有效的演绎推理本质上就是告诉我们一个事实:当前提为真时,结论必须为真。有人称之为「保真」(preserve the truth)。另一种说法是,「真前提不会推出假结论」。
也就是说,在前提和结论真假性的组合中:
| 结论真 | 结论假 | ========================= 前提真 | (1) | (2) | 前提假 | (3) | (4) |
有效推理只告诉我们,(2)不会出现。而(1)、(3)、(4)都可能是有效推理。我们可以分别举出这些情况下,有效和无效的推理。
初看起来,这似乎十分反直觉。比如,按前提的真假性考虑
2 + 2 = 5 ------------(3)/(4) p
的确是有效推理。因为前提永远是「假」,因此无论什么结论,对其否定后,加入前提,必然能推出矛盾。满足了有效推理中,(2)不会出现的要求。这也就是所谓的,「从假开始,什么都可以推出」(ex falso quodlibet, from falsehood, anything follows)。这种推理永远有效,因此没有什么用。
而
2 + 2 = 4 ------------(1)/(2) p
由于前提恒为真,当结论 p 为真时,它就是有效推理;当 p 为假时,它就是无效推理。这种推理的有效性,只是告诉我们 p 为真。实际上,并不是推理告诉我们的。因为前提没有提供关于 p 的任何信息。我们相当于已经知道了 p 为真。因此它只是个「有效却无用」的推理。
再按结论的有效性考虑
p ------------(1)/(3) 2 + 2 = 4
永远是有效性推理。因为其结论已经是真。满足了有效推理中,(2)不会出现的要求。同样因为永远有效,所以没什么用。
最后一种
p ------------(2)/(4) 2 + 2 = 5
由于结论恒为假,当前提 p 为真时,是无效推理;当 p 为假时,是有效推理。同样是「有效而无用的推理」。
在组合之外,还有一种形式:
p ------------(1)/(4) p
也就是前提与结论相同。要么是(1),要么是(4),同样满足排除(2)的要求,永远是有效推理。
以上五种推理形式,要么已知前提或结论的真假性,要么已知其真假性的关联。我们可以看到,这样的推理可能有效,可能无效。但对一般的应用来说,都是无用的。通常的推理,前提和结论都是真假性未知的。这样有效的推理可以帮助我们排除四种情况中的一种,将四种可能变成了三种。
除此之外,对这些情况的讨论,也为我们提了一个重要的醒。那就是虽然演绎推理可以为我们带来绝对正确的知识,但它不一定有用。假如只看推理的有效性,往往会犯下一些错误。而这些错误在学习演绎推理之前是绝对不会犯的!
比如,前提与结论相同的情况
p ------------ p
是有效但无用的。有人可能认为,我怎么可能会被如此简单的推理骗到。当然生活中并不是如此直白地运用这一推理,而是提出很多前提,把结论埋在其中。
a b c d …… z ------------ s p a m
听众可能在一大堆前提中迷失。如果仅仅进行有效性检验的话,会发现这一推理的确有效。虽然实际上它并没有什么作用。
形式谬误
我们将形式谬误放在这里来讲,因为我们可以用教给机器的方法来论证其错误性。传统逻辑教科书通常不会详细论述为何这些规则是错误的。
谬误 - 否定前件
还记得第一篇中,我们举了一个例子
如果晴天,那我们就去公园。 外面下雨了。 ------------ 我们不去公园。
很多人在听到前提后,会自然得出结论。人具有理性直觉,但仍然需要形式化的训练,才能更好地使用理性。这就是一个很好的例子。实际上,这个很多人觉得没有问题的推理是一个无效推理!
p → q ¬p ------------ q
使用机器的方法,我们得到「(p → q) ∧ ¬p ∧ ¬q」,进行推理,可以简化为「¬p」,而非矛盾。这说明,至少有一种情况,可以让前提为真,且结论为假。比如「外面下雨,但我们去公园。」也许我们并不在意举着雨伞散步;也许我们去公园要完成一项危险的任务,而下雨并不会成为阻碍。
这种谬误十分常见,初看起来十分具有迷惑性,连阿兰·图灵(Alan Turing)在论文 Computing Machinery and Intelligence 中都犯了这一错误:
如果人按一系列确定的规则行事,那他并不比机器更强。但没有这样的规则,因此人不是机器。
学习演绎推理后,你便可以轻松发现直觉上的问题。在经过足够的训练后,演绎推理便会成为你新的直觉。
谬误 - 肯定后件
如果你是境外敌对势力,你就会转发这篇文章。 你转发了这篇文章。 ------------ 你是境外敌对势力。
这一谬误在生活中同样常见。让我们进行形式分析:
p → q q ------------ p
使用机器的方法,得到「(p → q) ∧ q ∧ ¬p」。而这一逻辑表达式无法再化简。我们取「p」为假,「q」为真,便得到了一个反例,「我不是境外敌对势力,但转发了这篇文章」。
一个便于记忆的例子是,
是狗就有四条腿。 猫有四条腿。 ------------ 猫是狗。
应用
学习演绎推理到底有什么用呢?
首先,演绎推理的内容无关性告诉我们,当我们证明了某一个形式的正确性,在任何解释下,它都是正确的。比如开头的形式:
如果p,那要么q,要么r。 p。 没有q。 ------------ r。
业已被证明是正确的。我们完全可以作出另一种解释。比如
p = 我们开战 q = 你获胜 r = 我获胜
原论题就变成了
如果我们开战,那要么你获胜,要么我获胜。 我们开战了。 但你不会获胜。 ------------ 我会获胜。
现在,只说出前提,你就可以听懂一句酷炫台词的弦外之音了。
第二种应用是,我们有一个想要证明的结论,并且有了一些前提。使用演绎推理可以帮助我们发现,究竟需要什么前提才能得出想要的结论。
比如
如果我们开战,那要么你获胜,要么我获胜。 我们开战了。 ? ------------ 我会获胜。
可以得出,如果「你不会获胜」为真,那么结论会成真。
「逻辑让人使坏」,有人批评道。实际上,逻辑只是一个工具。在这种情况下,我们已经认定了另两个前提的正确性。整个论题的有效性依赖于此。实际上两人也可以选择停战,从而带来「我获胜」的结论。逻辑并没有排除这种可能,只是表达了原来的固有观念「我们必须开战」。
第三种应用是,验证前提的正确性。这通常也是科学实验的逻辑基础。当我们想检验一个假设的正确性,可以将假设作为前提,检验结果的正确性。比如传说中的比萨斜塔实验
任何物体的重力加速度都相同。(-) 重力加速度相同的物体,从同一高度,由静止释放,会同时落地。 羽毛和铅球是两个物体。 羽毛和铅球从同一高度,由静止释放。 ------------ 羽毛和铅球会同时落地。(*)
其中(-)是假设,(*)式是实验要观察的现象。其他的前提由实验设计保证正确。
当我们观察到(*)为真时,其实并不能说明假设(-)正确。这一点我们已经从肯定后件谬误中说明了。
但如果观察到(*)为假,要么实验没有保障其他前提(例如空气阻力的影响),要么假设(-)一定错误。也就是说,正确的实验,外加证伪的现象,可以带来确实的知识。卡尔·波普尔(Karl Popper)据此发展了一种强调可实验证伪性的科学哲学。
第四种应用和前面有些相似,但我们并不是通过实验保障只有一个前提受到检验,而是分析一个已经发生的事件,结论的错误可能由哪个前提导致。也就是一个有效推理,若结论是假的,那么存在至少一个前提是假的。
要证明这一点,相当于说以下论题是有效的
(p1 ∧ p2 ∧ …… ∧ pn) → q ¬q ------------ ¬p1 ∨ ¬p2 ∨ …… ∨ ¬pn
读者可以使用附录中的规则进行推理,证明其有效性,作为练习。
比如
如果我们开战,那要么你获胜,要么我获胜。 我们开战了。 但你不会获胜。 ------------ 我会获胜。
但假如实际情况是「我也没有获胜」。这说明,至少由一个前提为假。我们可以逐一确认前提是否为真,最终就可以辨识出关于哪个前提的信念,没有描述事实。
假如已经检验了「我们的确开战了。你的确没获胜。我也没有获胜。」为真,那么演绎推理告诉我们,「如果我们开战,那要么你获胜,要么我获胜。」这一前提是错误的。我们就可以进一步思考,为何我们会认为这种前提适用于当前的问题。
也许它无法让我们论证贸易战是错误的,但它可以让我们说明,至少某些对贸易战的论述是「缺乏逻辑」的。
附录 - 直觉主义逻辑系统 NJp (忽略 antecedents )
记号
逻辑符号和其日常含义:
∧:「合取」,「与」,「并且」 ∨:「析取」,「或」 ¬:否定,「不」 ⊥:假 ⊤:真 →:「推导出」,「如果……则……」,「蕴含」 ↔:「等价」,「互相推导出」
定义
以上很多概念可以用其他概念的组合来定义。一种最小完整定义可以由「或」、「非」与「假」来组成。
p ∧ q := ¬p ∨ ¬q p ∨ q := ¬p ∧ ¬q p → q := ¬p ∨ q p ↔ q := (p → q) ∧ (q → p) ¬p := p → ⊥ ⊤ := ¬⊥
规则
其中 I 表示 Introduction ,E 表示 Elimination 。
p q ------------(∧I) p ∧ q
p ∧ q ------------(∧E1) p
p ∧ q ------------(∧E2) q
p ------------(∨I1) p ∨ q
q ------------(∨I2) p ∨ q
p → r q → r ------------(∨E) (p ∨ q) → r
q ------------(→I0) p → q
r ∧ p → q ------------(→I) r → (p → q)
p → q p ------------(→E) q
⊥ ------------(⊥i) p
参考
Mints, G. (2000). A Short Introduction to Intuitionistic Logic. Kluwer Academic Publishers.
Marianne Talbot, Critical Reasoning for Beginners & Critical Reasoning: A Romp Through the Foothills of Logic.
Like my work? Don't forget to support and clap, let me know that you are with me on the road of creation. Keep this enthusiasm together!