贝叶斯的博弈:数学、思维与人工智能
上QQ阅读APP看书,第一时间看更新

逻辑的规则

逻辑推理的经典例子就是亚里士多德的三段论,它先考虑下面两个前提:

  • 所有人都会死;
  • 苏格拉底是人。

亚里士多德断言这两个前提会引出下面的结论 1

1实际上,亚里士多德似乎没有考虑过这样的三段论,因为他的理论不考虑个体的情况(因此其推理中不接受第二个前提)。这与斯多葛主义者的角度相反,他们发展了命题逻辑,我们之后会讨论。更详细的讨论请见吉尔·多维克的杰作《计算进化史》(人民邮电出版社,2017 年)。

  • 因此,苏格拉底会死。

亚里士多德的逻辑似乎无可挑剔。它看上去如此自然,其正确性不容置疑。几年前,一位朋友向我提出挑战,说我不可能怀疑亚里士多德的三段论,我承认了自己做不到。

然而,亚里士多德的这个三段论启发了众多哲学家、逻辑学家和数学家,他们接下来进行了认真的分析,目的是确定逻辑的规则。这些逻辑规则又叫作替换规则与肯定前件规则。如同现代数学那样,亚里士多德的三段论实际上基于这两条逻辑规则。要理解它们,最好从一个比亚里士多德的三段论更简单的情况出发。考虑下面这个包含两个事件的例子:

:现在正在下雨;

:我带了伞。

每个事件都可能是真的或者假的。这两个事件又被称为布尔变量,由此出发可以构建新的事件,我们把这些新事件叫作逻辑公式。比如说,我们可以构造“非”“或者”甚至“”这些公式,甚至还有类似“(非)或者”这种更复杂的公式。要理解这些公式,一种有用的方法就是构造它们的真值表(表 1),根据布尔变量的真值列出逻辑公式的真值。

表1 “现在正在下雨或者我带了雨伞”的真值表

比如说,在表 1 中,中间一行对应 ,也就是“现在正在下雨”的情况,而中间一列则对应 ,也就是“我带了伞”的情况。所以,正中间的格子代表当 同时为真时,“ 或者 ”的逻辑真值。这个格子指出,如果 都为真的话,那么“ 或者 ”也为真。请你花点时间自己分析这个真值表,并列出其他逻辑公式的真值表。

目前为止,我们还只研究了由两个布尔变量组成的公式,但我们可以更进一步,考虑由 3 个、8 个甚至更多布尔变量组成的公式。为了列出这些布尔变量所有可能的取值组合,这些公式的真值表当然会变得更庞大。你可以计算一下这些巨大的真值表有多少项,以及所有可能的真值表的数目。但我非常不建议你列出包含 3 个或以上布尔变量的所有真值表,毕竟 3 个布尔变量的真值表有 256 个……而包含 8 个布尔变量的真值表数目约等于宇宙中的粒子数!

在实践中,有一个逻辑公式特别重要,那就是“(非 )或者 ”,通常我们也把它写成“”。这个公式可以直观地读成“ 蕴涵 ”,或者“对于所有 都有 ”,又或者“如果 那么 ”。请你多花点时间思考这个公式的真值表(表 2),它一定会令没有仔细思考过它的人吃惊。

表2 “如果下雨的话我就带了雨伞”的真值表

”这个公式之所以特别重要,是因为它处于逻辑演绎的核心。逻辑演绎正是从前提 出发,推导出结论 。如果蕴涵关系是正确的,而且前提也正确,那么结论本身也必定正确。用符号表示的话,我们可以写出逻辑公式“(()且 )→”,这个公式就是我们所说的肯定前件2[2]

2实际上要比这个公式更加复杂。为了保证严谨,必须将元语言中的“蕴涵”和“而且”与描述逻辑的语言中的“→”和“且”区分开。

你可以将代表“蕴涵”的箭头替换成它的定义,用我们之前定义的“或者”“且”和“非”来表达。摆弄一下这样得到的公式,或者写出它的真值表,你就会得出一个结论:无论 的真值是什么,肯定前件推理总是正确的。我们说肯定前件推理是一个重言式,因为对于涉及的布尔变量所有可能的真值,它都是对的。

与常识相反的是,在逻辑中,重言式可能一点都不“显然”。它不一定显而易见或不言而喻。如同肯定前件推理,某些重言式是大部分人看不出来的,我们需要一点时间来思考。