演绎推理

Ubikium
·
·
IPFS

引言

本篇介绍演绎推理(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 接下来进行如下动作:

  1. 记结论为 p ,取其否定 ¬q 。
  2. 将 ¬q 加入前提中。
  3. 将所有前提取 ∧ ,也就是「并且」起来。
  4. 进行推理。如果得出矛盾(假),那么原论题有效;如果得出了非假的断言句,那么原论题无效。

我们可以利用之前介绍的,将论题转化为断言句的技巧,来证明这种方法的正确性。

对于一个论题

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.

CC BY-NC-ND 2.0 授权

喜欢我的作品吗?别忘了给予支持与赞赏,让我知道在创作的路上有你陪伴,一起延续这份热忱!