命题逻辑为我们日常推理时不自觉使用的很多方法(如反证法)提供了坚实的保障。但是不得不说,它还弱的很!为什么这么说呢?这是因为,仅在命题逻辑的体系内,我们根本无法谈论日常论证中两个非常重要的概念:“存在”与“任意”。不妨回看一下定义2.45,其表述中含有“对于任意一个命题”的字样。定理2.46的证明开篇也便说道“我们考察任意一个命题”。让我们试着在命题逻辑中形式化一下“任意”。一个办法是,那就把所有的命题罗列出来一个一个论证!但显然按照命题逻辑的语法,命题可是有无穷多的!前面提到过我们建模的一个最基本的要求是只能进行有限论证,任何证明都只能有有限步,所以这一条路走不通。另一条呢?我们直接讨论命题“对任意命题均成立……”的真假不就好了?但是很遗憾,前面也说过,命题逻辑压根不关心一个命题是真是假,仅关心它可真可假有两种可能性,于是“在命题逻辑中论证一个命题是真”本身就是一个毫无意义的话。总而言之,我们不得不遗憾的承认:
洞察2.49 定义2.45所述“一致性”是无法在命题逻辑语言中被形式表达的,定理2.46的证明也是无法形式化成定义2.40所述“证明”的。
为了解决这个问题以更完善地建模我们的推理直觉,我们必须把考察的粒度变得更细。让我们打开原子命题,进入其内部的结构,更加深入地审视我们的演绎推理。我们将要关注的命题,是形如“我爱你”这般的主谓(宾)结构的命题,称之为 谓词 。
定义2.50 我们称 变量 (variable)是这样一种形式符号,其在给定解释下可以被替换为不特定值,并称其所有可能的赋值为其 论域 (domain of discourse)。
简单地说,论域就是我们讨论话题的边界。变量可以代表边界内的任何对象。比如一个字母 x ,若论域是人,我们可以说它代表“张三”“李四”“王五”……
定义2.51 我们称一个 n 元 原子谓词 (atomic predicate)是一个包含 n 个变量 x 1 ,x 2 ,… ,x n 的符号,其中 n ⩾0,且其在这 n 个变量的任何赋值下均是一个命题。我们称 x 1 ,x 2 ,… ,x n 为 自由变量 (free variable)。当 n =0时,原子谓词退化为原子命题。
可以看到变量是比命题粒度更细的符号,是构成命题的局部组件。我们用英文来在观察者语言中代指原子谓词 [10] ,比如
· Sunny( x ):“ x 是晴天”
· Love( x 1 , x 2 ):“ x 1 爱 x 2 ”
· Run( t ):“ t 会跑”
接下来是关键:在任何变量赋值下这些符号会变成一个命题!命题是什么?是一个能且只能为真或假的符号。比如一个可能的赋值与解释是:
· x 赋值为“星期二”,Sunny( x )即为“星期二是晴天”,且为真;
· x 1 与 x 2 赋值为“张三”和“李四”,Love( x 1 , x 2 )即为“张三爱李四”,且为假;
· t 赋值为“猪”,Run( t )即为“猪会跑”,且为真。
基于原子谓词,我们终于可以形式地谈论“存在”与“任意”了。
定义2.52 我们称 谓词 (predicate)是如下递归定义的形式符号:
· 原子谓词是谓词;
· 若 P 是谓词,那么¬ P 也是谓词;
· 若 P 和 Q 是谓词,那么下述符号也都是谓词:( P ∧ Q )、( P ∨ Q )、( P → Q )、( P ↔ Q );
· 若 P 是一个包含若干自由变量的谓词,那么下述符号也都是谓词:(∀ x : P )、(∃ x : P ),其中 x 是 P 的某个自由变量。
我们称符号∀为 全称量词 (universal quantifier),符号∃为 存在量词 (existential quantifier),称被 绑定 (bind)量词的符号 x 为 约束变量 (bound variable)。特别的,若 P 只有一个自由变量,其在绑定量词后变为一个命题。
逻辑连词¬、∧、∨、→、↔的定义与命题逻辑的定义2.32相同。对只有一个自由变量的谓词 P ( x ),在给定解释下,若对 x 论域中的任何值 a 命题 P ( a )都为真,那么命题∀ x : P ( x )为真,否则为假。命题∃ x : P ( x )的真值被定义为¬(∀ x :¬ P ( x ))。
直观说来,“∀ x : P ( x )”就是在说“对任意 x 成立 P ( x )”,“∃ x : P ( x )”就是在说“存在 x 成立 P ( x )”,其被定义为“并非对任意 x 均不成立 P ( x )”。
我们之前说过,有限论证的要求使得命题逻辑无法处理无穷,存在与全称量词正是来弥补这个不足的。单独看上去, P ( x )只是一个谓词,不同 x 的赋值会得到不同的命题。但只要把全称或存在量词一加,我们便一揽子谈论了所有可能性,给出了一个或真或假的命题!
举个具体的例子,考虑谓词Sunny( x ):“ x 是晴天”, x 的论域是日期。于是Sunny(星期一)、Sunny(2020年1月1日)都是命题,可真可假。Sunny( x )自己并不是命题,无所谓真假。但∀ x :Sunny( x ),即“∀ x : x 是晴天”就是一个命题了 [11] ,在我们的世界里其被解释为“对于任意 x 成立 x 是晴天”,显然是假的,但在其他世界中可能就是真的(比如没有大气和水的月球上?),总之可真可假,是一个命题。
再来看一个复杂一些的,考虑谓词“ x 爱 y ”。那么
∃ y : x 爱 y
是命题吗?不是,因为它还剩一个自由变量 x ,所以依旧是一个一元谓词。再来一下呢?
是命题吗?这回就是了!因为它已经没有自由变量了,所以是一个可真可假的命题。如果你忍不住要问那它到底是真是假呢?一定要忍住,因为我们不关心这个,也不能问。
当然,在我们所处的世界中,命题(2.6)还是能被说出个真假的。这句话翻译过来就是“对于任意 x ,存在 y ,使得 x 爱 y 。”如果把论域限定为“人”,那便是“对于任何人,都存在一个人爱他”,看起来是真的呀——任何人都有父母嘛。那现在问题来了,我们把两个量词颠倒一下呢?
翻译成啥呢?“存在一个人,所有人都爱他”,这就不大可能了吧!于是,我们得到了一个重要的领悟:
洞察2.53 存在与全称量词的顺序至关重要。
至此,在命题逻辑的基础上,我们构建了一个更加强大的语言 [12] 。
定义2.54 谓词逻辑 (predicate logic)是一门形式语言,其字母表与语法定义如下:
· 字母表:在命题逻辑的基础上增加∀、∃、:三个符号,26个小写字母,以及10个数字 [13] ;
· 语法:一个公式是合式公式当且仅当其为一个谓词(定义2.52)。
与命题逻辑一样,我们接下来可以继续深入研究谓词逻辑。比如,将其从语言升级为公理系统,然后研究证明与推理等。再比如,谓词逻辑又叫 一阶逻辑 (first-order logic),于是自然还有二阶、三阶等更高阶逻辑。它们的区别在于,一阶逻辑允许我们谈论“任意变量”,二阶逻辑进一步允许我们谈论“任意一元谓词”,等等。所有这些试图建模人类本能逻辑的形式系统统称为 形式逻辑 (formal logic)。但我们到此为止——因为够用了。
断言2.55 一个公认的事实是,谓词逻辑足以形式化足够广泛的演绎推理本能,为人类的演绎推理提供了一个坚实的纯形式的公理系统基石。