2.6 道可道
搞明白了概念2.22中“形式化”与“演绎推理”这两个词,我们便终于可以明确地阐述什么是“逻辑”了——它是一个形式系统,其建模了我们习以为常的、说不清道不明的演绎推理!接下来,我们便来具体定义出逻辑这个形式系统。
不能一口吃一个胖子,我们的战略是分两步走:先忽略断言本身的细节,仅关心断言之间的组合与演绎规则。然后再来把镜头拉近,更精细地分析断言本身的结构。
定义2.31 我们称原子命题(atomic proposition)是这样一种形式符号,其能且只能被解释成两个值:真或假,称之为这个原子命题的真值(truth value)。
首先要强调的是,我这里第一次使用了“定义”一词。没错,我们终于开始为本书将要构筑的体系打地基了!前面的诸多“概念”,要么是属于所谓元数学(15)(metamathematics)的概念,要么是一些不甚严格的表述,总之它们都是在做一些铺垫。当然,在特定的语境下,也有些前述“概念”可称为“定义”,比如在一本专门讨论形式系统的书中,“形式语言”的概念2.13就会是一个定义。只不过这里我想要特意强调,那些概念都是在本书将要进行的推理边界之外的,为定义边界内的对象提供语言,定义2.31是我们将要探索的世界内奠基性的第一个定义,是我们即将搭建的体系的开端。
还要注意的是,我们只关心一个原子命题能够被解释为真或假,我们并不关心这个原子命题被解释成了真还是假。也即不关心其是真是假,只要其可真可假。有点绕?举个例子。考虑命题P:“地球是圆的”。诚然一个现代人会不假思索地表示P是真的,但一个古人呢?相信天圆地方那会,人们也都会不假思索地说P是假的。但这都无所谓。我们将要研究的逻辑,无关乎每一个具体的原子命题是真还是假,只要它可真也可假就够了!
那就奇怪了,真假都不关心,那我们关心啥呢?关心真假之间推演的规则——这也正是“推理”这个词的含义嘛。我们与古人对于世界的认知是截然不同的,但是我们生而为人的推理能力却是亘古不变的!那才是我们要建模的对象。打个比方,如下这段推理:“所有人都爱睡懒觉;我是人;所以我爱睡懒觉。”你可以说不对!并非所有人都爱睡懒觉,我就不爱!没错,反对有效,但这是律师做的事情。作为一个逻辑学家,我们只关心这个推理的形式是否有效,使用的规则是否合法,而并不关心其中具体的原子命题是真还是假。例子中的推理形式即“所有A都会P,X是A,所以X会P”,有毛病没?没有吧。但这个推理呢:“有人喜欢猫,你是人,所以你喜欢猫”,它有毛病吗?感觉就有点不对了是不是!就算你真的喜欢猫,即使结论没错,但也会感觉这段推理本身有点问题,对吧。究其原因,是“有些A会P,X是A,所以X会P”这个推理形式让我们觉得不太舒服,能隐约感觉到它是说不通的。不过,这里我们说有毛病没毛病,还是出于一种说不清道不明的感觉。虽然老子有言“道可道,非常道(16)”,但为了确保我们的推理有效,我们还是得努力将那种不可名言的感觉形式化,把它给道出来!
最后要注意的是,原子命题是无意义的形式符号。“地球是圆的”作为原子命题仅是五个字符的序列,毫无其他意义。诚然它在中国人眼中是一句有意义的话,但对一个英国人来说,那真的就是五个莫名的方块涂鸦。
在推理时,除了陈述一个断言外,还会对断言进行组合。比如“太阳要么从东边升起,要么从西边升起”就是用“要么……要么……”连接了两个断言。再比如“如果明天下雨,那小明肯定来不了”用“如果……那么……”连接了“明天下雨”和“小明肯定来不了”两个断言。下面让我们将日常生活中这种断言的连接抽象出来。我们发现,有五种基本的连接方式。
定义2.32 我们称命题(proposition)是如下递归定义的形式符号:
· 原子命题是命题;
· 若P是命题,那么¬P也是命题;
· 若P和Q是命题,那么下述符号也都是命题:(P∧Q)、(P∨Q)、(P→Q)、(P↔Q)。
其中¬、∧、∨、→、↔称为逻辑连词(17)(logical connective),其按照真值表(truth table)2.2规定了所连接命题的真值如何决定组合后命题的真值。我们如下命名这些连词:
· ¬:非(negation)
· ∧:与(conjunction)
· ∨:或(inclusive disjunction)
· →:蕴含(material implication)
· ↔:等价(material equivalence)
表2.2 逻辑连词的真值表
递归定义的概念在1.2节已经聊过。随便举些例子,按照这个定义,若P和Q是命题,那么下面这些也都是命题:
(P∧P),¬(¬P∨Q),((Q→P)↔¬P)
需要特别说明一下这里的括号。由于印刷的局限性,没有办法体现出适用规则的顺序,这便会导致歧义,比如下面这个公式:
¬¬P∨Q
它可能是先组合出P∨Q,然后再前置两次¬;也可能是先写出¬¬P(这个倒不会有歧义),然后再和Q组合。为了避免歧义,我们在书写时,需要适当加上括号以示顺序。为了少写一些括号,一般人们会规定一个算符的优先级,就好像乘号×的优先级高于加号+一样。但这有两个问题,一来不同作者对优先级的规定不甚相同,二来这也增加了阅读公式时的脑力负担。所以我们这里采取的办法是,直接将括号写进定义,不再谈论优先级。只需要记住一点:非¬永远作用于紧贴着它的命题。当然,在不引起歧义且要求不严格地情况下,我们下文也会省略不必要的括号。
不知道你意识到了没有,其实我们已经有了一个字母表并规定了一个语法。换言之,我们已经得到了一个形式语言(概念2.13)!
定义2.33 命题逻辑(propositional logic)是一门形式语言,其字母表与语法定义如下:
· 字母表:6763个常用汉字(18)、(、)、¬、∧、∨、→、↔;
· 语法:一个公式是合式公式当且仅当其为一个命题(定义2.32)。
所以,“hello”是一个命题逻辑中的合式公式吗?不是,这五个字母没有一个在字母表中,连公式都谈不上!那么“一周有七天”呢?这就是了。它是一个原子命题,是一个可以被解释成真或假的、由字母表中符号构成的、满足语法的字符序列。
对于一些逻辑连词作用后的命题我们有特定的称呼。
定义2.34 令P、Q是两个命题。
· 我们称Q→P是P→Q的逆命题(converse);
· 我们称¬P→¬Q是P→Q的否命题(inverse);
· 我们称¬Q→¬P是P→Q的逆否命题(contrapositive)。
举个例子,直观说来(19)“如果今天下雨,那么今天是阴天”的逆命题是“如果今天是阴天,那么今天下雨”,否命题是“如果今天没下雨,那么今天不是阴天”,逆否命题是“如果今天不是阴天,那么今天没有下雨”。直觉告诉我们,一个命题与其逆命题、否命题似乎没啥关系,但与其逆否命题永远同真同假,是等价的!这的确是命题逻辑中的一个事实。
断言2.35 在任何解释下,命题P→Q与其逆否命题¬Q→¬P要么都为真,要么都为假。
证明 如表2.3最后两列所示,将P、Q取值真假的四种组合按照真值表2.2进行计算后立得。 □
让我们再来仔细看一看这五个逻辑连词。从名称看,我们会不自觉地将它们理解成日常使用的连词,比如
· ¬:并非……
· ∧:……以及……、……且……
· ∨:……或者……、要么……要么……
· →:如果……那么……、……推出……
· ↔:……当且仅当……
表2.3 命题与其逆否命题的等价性
诚然定义它们的动机的确是建模这些日常用语,但仔细看看真值表2.2,我们会发现似乎又有点不对劲。
来看这句话:“地球要么是圆的,要么是方的。”这句话其实隐含着一个意思即在强调地球不可能既是圆的又是方的。但是让我们看看真值表2.2,若P:“地球是圆的”与Q:“地球是方的”都为真,P∨Q取值如何呢?真!这可不是我们想要的。再来看一句话:“这些任务要么很重要,要么很紧急,我们抓紧吧!”我们是要排除重要且紧急的任务吗?当然不是,所以这里P∨Q为真又是合理的了。这正是自然语言歧义性的体现,同样的表达,在不同上下文与语境中会有不同的含义。没办法,数学是容不下这样的歧义的。我们定义的“或”对应于第二句话中的含义,看到其英文名称中的那个inclusive了吗,即表示包容两个变量都为真的情况。那有什么办法表达第一句话中那种非此即彼的意思呢?这就得用另一个连接词了:异或(exclusive disjunction)⊕,其当P、Q都为真时取值为假,其余同或∨一样。在命名上,中文用“异”、英文用“exclusive”表达了这种二选一的要求。不过,不难发现它能通过已经定义的连接词表达出来(20):
P⊕Q=(P∨Q)∧¬(P∧Q)
所以并没有出现在定义2.32中(21)。顺便提一句,这里的等于号是什么意思呢?意思是——P、Q不是可以被赋值真假嘛——如果对于任意P、Q的赋值,等号左右两边命题的真值都相同,那么等号成立。
如果说或∨的歧义还能理解,那么蕴含→可就真的不那么符合直观了:如果P为假,那么命题P→Q永远为真,无论Q的真假!“猪会飞推出地球是方的”,怎么感觉都不对呀!为了理清这个问题,我们得更加细致与深入地考察一下命题逻辑。
首先,让我们重新观察一下真值表2.2,不知你意识到了没有:
洞察2.36 真值表的每一行对应于命题所包含原子命题的每一种可能的解释组合。
比如我们单独来看命题P∧Q的真值表2.4。P和Q作为原子命题,各自能且仅能有两种解释:真或假。于是,组合在一起便有四种可能性,对应真值表中的四行。对每一种P、Q的解释组合,P∧Q都有一个规定好的真值。
表2.4 P∧Q的真值表
其实,我们可以把“解释”想象成“世界”。在有的世界里,P是假;而在另一个平行宇宙里,P是真。再具体一点,想象P是“地球是圆的”,在现代这个世界,P是真的,而在古代那个世界,P就是假的了。真值表正是在穷举所有可能的世界。命题逻辑不关心某一个具体的世界,而是关心全部的可能性,关心那个适用于任何世界的、亘古不变的、永恒的推理规则。
那么问题来了,会有命题在任何世界都是真的吗?当然,比如P∨¬P。直观读来,它是在说“P或者非P”,当然成立咯!形式上,若我们列出它的真值表2.5,会看到不管P被解释成了真还是假,P∨¬P取值都为真。这样的命题,我们称为重言式。
表2.5 P∨¬P的真值表
定义2.37 如果命题P在任何解释下都为真,我们便称其为一个重言式(tautology),记为
⊨P
通俗且文雅的说,重言式就是所谓的“同义反复”;通俗且粗鄙的说,重言式就是所谓的“废话”。所以,要写下一个重言式很简单,只要心里想一句废话就好了。比如:
· 如果太阳已升起,那么太阳便已升起:P→P;
· 我们要么吃西餐要么不吃西餐:Q∨¬Q;
· 地球是方的当且仅当地球是方的:R↔R
当然,脑海中想象的这些自然语言的废话绝不能用来证明它们对应的命题是重言式!要证明一个命题是重言式,必须要论证出其真值表的每一行都为真,最朴素的办法就是枚举其包含的所有原子命题的赋值组合,按照定义进行计算。你可能会说,像R↔R这么简单的命题还用得着算?我一眼就看出来了!好,那不妨再看看下面这个:
(((P→R)∧(Q→S))∧(¬R∨¬S))→(¬P∨¬Q)
一眼看不出来了吧。注意这里有4个原子命题,所以一共有16个可能的不同世界(解释)。最朴素的办法便是我们逐一验证在这16个世界中这个长长的命题的确都为真。
既然是废话,重言式有什么存在的价值呢?在2.4节我们说过,演绎推理的核心便是没有提供任何额外信息。进而,为了建模演绎推理,我们当然也得把握住这一点。而所谓建模,就是要用形式系统中的定理表达目标系统中的事实(概念2.30)。我们的目标系统是什么?人类天然的演绎推理。演绎推理中有些什么事实?“太阳从东方升起”是吗?不是,那是地球上的事实,不是火星上的事实,更不是演绎推理中的事实。那演绎推理中有什么事实呢?“如果A,那么A”“如果P且Q,那么P”……没错,这些宛如废话的推理形式,才是演绎推理中的事实!不难看出,它们正是重言式!
重言式刻画了演绎推理规则的本质与核心,即仅对概念已经蕴含的信息进行同义反复,不引入任何额外的信息。现在,我们可以将命题逻辑从一个形式语言(定义2.33)升级为一个形式系统了(概念2.24)。
定义2.38 我们称一个形式系统为公理系统(axiomatic system),如果其包含命题逻辑(22),且具有有限个被称为公理(axiom)的命题,并具有如下定义的推理规则:
1.若P是公理或重言式,那么不需要前提,可以得到结论P;
2.以Q、R为前提,若(Q∧R)→P是重言式,则可以得到结论P。
直观地说,公理就是一些强行选出、被视为绝对正确的命题,将作为一切推理的起点。除此之外,在这个系统里我们能说的只有废话。这是一个极其纯粹的系统,不能有任何私货、偏见、主观经验等,只能基于概念已经蕴含的信息进行推理。诚然,这样的系统似乎少了一些精彩,但我们很快就会看到,以它作为最底层的基石,稍加增补,便将支撑起一个庞大的、绚烂多彩的世界。不过在起飞之前,我们还是在这个纯粹的世界中再多看看。
推理规则的第一条还算自然,第二条似乎就不那么好理解了,它其实就是在允许我们进行如下形式的推理:
· 前提:如果今天下雨了,那么地上会湿;
· 前提:今天下雨了;
· 结论:地上会湿。
推理规则2如何允许了这段推理呢?如果我们令命题P:“地上会湿”、R:“今天下雨了”、Q:“今天下雨了→地上会湿”,那么不难发现(Q∧R)→P就是
((R→P)∧R)→P
可以证明它的确是一个重言式,所以我们从Q和R可以得到结论P!上述推理形式的英文为(23)modus ponens,中文译为肯定前件式推理,是若干种有效论证形式(valid argument form)中最为重要与常见的一种。
显然,命题逻辑自身构成一个公理系统。
断言2.39 不选择任何命题作为公理,命题逻辑天然是一个公理系统。
看来命题逻辑还更加纯粹一些,连任何先验的知识都没有——因为连一条公理都没有!
我们之前已经提及过形式“证明”(概念2.26),结合公理系统中重言式不需要前提可以直接参与推理的特点,我们可以自然地定义出公理系统中的“证明”。当然作为定义,我们写得更严谨一些。
定义2.40 在一个公理系统中,我们称命题P的一个证明(proof)是一个有限长度的命题序列
P1,P2,…,Pn
其中Pn=P,且对于1⩽k⩽n下列条件之一成立:
· Pk是一个公理或重言式;
· 存在1⩽i,j<k满足(Pi∧Pj)→Pk是重言式。
我们称一个证明的最后一个命题为定理(theorem),且称其是可证的(provable)。
这里有一点需要一提。不知你注意到了没有,我们的字母表只允许汉字和一些逻辑连词符号(定义2.33),这里的英文字母“P”是咋回事?这其实就涉及在研究形式语言时的一个常见麻烦:因为我们是在用一个语言(中文)研究另一个语言(命题逻辑),我们必须时刻搞明白自己在用什么语言说话!学界将研究对象称为目标语言(object language),用于研究的语言称为观察者语言(observer’s language)。这里的P1,P2,…,Pn都是我们的观察者语言(中文)中的字母,用于叙述这个定义,它们各自代表着目标语言中的一个命题。
现在,我们可以来重新审视蕴含→这个有点违背直觉的连词了。令P:“猪会飞”,Q:“地球是方的”,考察命题P→Q。在我们所生活的世界里,P为假,Q也为假,按照定义P→Q为真,翻译过来就是在说“猪会飞推出地球是方的”,很奇怪呀!究其原因,会发现用“推出”来翻译符号“→”是不太妥当的,前者描述了一个逐步推理的过程,而后者只是一个静态的命题组合。
定义2.41 在一个公理系统中,我们称命题P的一个基于A1,A2,…,Am的推导(deduction)是一个有限长度的命题序列
P1,P2,…,Pn
其中Pn=P,且对于1⩽k⩽n下列条件之一成立:
· Pk是一个公理或重言式;
· 存在1⩽i,j<k满足(Pi∧Pj)→Pk是重言式;
· 存在1⩽i⩽m使得Pk=Ai。
上述A1,A2,…,Am称为这段推导的假设(assumption)。我们说A1,A2,…,Am可以(形式)导出(formally yield)(24)P,并记为
不难看出,“推导”无非就是“证明”的稍许扩充,我们可以引入一些不是公理或重言式的命题作为已知,然后进行推理。
这下我们可以解决之前的困惑了。说“猪会飞推出地球是方的”,并非在说“猪会飞→地球是方的”,而是在说“猪会飞地球是方的”。前者按定义的确为真,但我们感觉到的不对劲并非是由前者为真导致的,而是因为后者是错误的(25),在命题逻辑中是无法由“猪会飞”形式导出“地球是方的”来的。
其实这个困惑还有一个解决办法,即我们不要将“→”翻译成“推出”,而是翻译成“如果……那么……”,感觉就会好一些了!不信试试看:“如果猪会飞,那么地球是方的”。现在猪不会飞,随你地球什么形状,反正我又没说,这句话貌似没啥毛病。但转念一想还是有问题,假如我们把Q换成“地球是圆的”,于是我们会得到“如果猪会飞,那么地球是圆的”。还是不对呀!虽然猪不会飞,但是就算猪会飞,也没理由说地球是圆的呀!
看来这个“如果……那么……”也没有那么简单。不难察觉到,有时我们的“如果……那么……”是基于主观的经验与认识——比如“如果温度达到一百度,那么水会沸腾”,上海人会说没问题,但是拉萨人肯定就会反对(26)——而有时又是基于客观的生而为人的推理能力,比如“如果所有人都终将老去,那么我也会变老”。这正对应于2.4节所说的演绎与归纳推理。在第一句话中,即使我们明确了每一个所用词语的含义,整句话的真假也必须结合我们所处物理世界的生活经验来判断。而第二句则不同,对于一个理解其中词语的生物,无论地球人火星人古人还是未来人,只要他们的世界中前半句“人终将老去”是真的,那后半句“我会变老”肯定是真的,想都不用想,因为这已经蕴含在前半句的文本之中了(27)。于是我们看到,第一个例子其实展示了上海人与拉萨人对命题“温度达到一百度→水会沸腾”的两个具体解释,而第二个例子展示了这样的一个场景:在任何条件为真的世界中,结论必为真,不可能为假。
定义2.42 给定命题P、Q,若在任何P为真的解释中,Q都为真,那么我们称P必然导致(entail)Q,记为(28)
P⊨Q
我们将记号⊨称为逻辑蕴含(29)(logical implication)。
直观上来说,P逻辑蕴含Q就是我们通常所说的“逻辑上它必然是这样”,此时命题Q成立的唯一原因是P成立,不必再依赖任何额外的解释与经验。让我们来看一个例子。
断言2.43 令P、Q是两个命题,那么
证明 如真值表2.6所示,仅第一行(P→Q)∧P为真,且此时Q的确为真,故按照定义前者逻辑蕴含后者。 □
表2.6 (P→Q)∧P必然导致Q
式(2.4)就是在说“若P则Q且的确P,那么必然Q”,很符合直觉,对吧。若此时令P代表“是人”,Q代表“会老”,那么式(2.4)就变成了“若是人则会老且的确是人,那么必然会老”,这当然就是“如果所有人都终将老去,那么我也会变老”稍微僵硬的说法!这段推理之所以感觉良好,并非是因为我们这个星球上的人们的确终将老去,也不是因为我的确会变老,而是这段推理的结论是逻辑蕴含于条件的,它非常“有逻辑”!不信的话,来看看如下推理:“如果所有猫都能说话,那么我家的猫必然会说话”。显然地球上的猫是不会说话的,我家的猫也不可能会说话,但这不妨碍我们对这段推理本身感觉良好,不是吗?
另外,要知道逻辑蕴含不仅仅是在命名上区别了之前的(实质)蕴含(30)→,究其本质,二者压根儿都不是一个层面的事儿!见表2.7,→是形式系统内部的符号,而⊨和都是我们在观察者语言中发明的符号,以凌驾于那个形式语言之上用我们自己的语言谈论它!
表2.7 三种“如果那么”的语言域
现在,我们也可以解释之前的第二个困惑了。为什么“如果猪会飞,那么地球是圆的”感觉不对?是因为我们其实并非在说“猪会飞→地球是圆的”,而是在说“猪会飞⊨地球是圆的”。可显然“猪会飞”与“地球是圆的”这二者之间是没有逻辑蕴含关系的,是“不讲逻辑”的——完全有这样的可能性,在一个猪会飞的世界中,地球是方的,地球的形状和猪会不会飞毫不相干嘛!
好的,困惑算是都打消了,但话说回来,那为啥要用那么奇怪的方式来定义→呢?我们来看一看蕴含→的真值表2.8。如果说有问题,那无非是第三行和第四行会有争议,即P为假的时候。有如下几种修改方案:
表2.8 P→Q的真值表
· 仅调整“假→真”为假,但这就和等价↔重复了;
· 仅调整“假→假”为假,但这样一来我们将无法证明一个命题与其逆否命题等价(断言2.35),有悖直觉。对了,现在我们有了重言式的概念,可以将这个命题精炼地写成:
⊨(P→Q)↔(¬Q→¬P)
· 上述两个都调整,但这就和与∧的定义重复了。
所以,按现在的办法定义蕴含→是唯一合理的选择。放心,事实也证明了这一点。
至此,我们的地基算是垒得差不多了。我们迈出了形式化演绎推理的第一步,建立了一套名为命题逻辑的体系,其规定了命题与命题间组合、转换的规则。在我们迈出下一步深入命题内部之前,不妨先来看看2.3节开头提出的那些问题,是不是都能回答了。
首先是问题2.21:为什么一个断言要么为真要么为假?很简单,因为在我们的理论中,“断言”被建模为“命题”,于是它只能取真假(定义2.32)——其实这里我们并没有回答该问题,而是接受了该问题的题干,并将其纳入了我们的体系基础之中作为强制的规定(31)。
下一个是问题2.20:为什么不能有矛盾?为了回答这个问题,我们先来在命题逻辑中重新定义一下“矛盾”。
定义2.44 如果命题P在任何解释下都为假,我们便称其为一个矛盾(contradiction)。
与重言式的定义对照一下不难发现它就是另一个极端。不过要注意,这个定义与之前的定义(概念2.19)略有不同:那里“矛盾”指断言与其否定同时成立这个现象,而这里“矛盾”是一种特殊的命题。那么直观上的矛盾现象可以在我们的理论中被排除吗?我们来看看,若一个命题与其否定同时成立,在我们的系统中会发生什么。首先不难发现,口语中的“成立”意味着这个命题可以被放入(形式)证明中去。假设我们现在有了一个证明:
…,P,…,¬P,…
从真值表不难看出P∧¬P恒为假,即为一个矛盾(定义2.44)。现在我们任意取一个命题Q,考察如下命题:
(P∧¬P)→Q
发现什么了没有?左边恒为假,按照蕴含→的定义,整个命题恒为真,它是一个重言式!但是要注意,按照公理系统中推理规则的第二条(定义2.38),我们便可以得到结论Q!换言之,基于矛盾的命题,我们可以(形式)导出任何命题!何其荒谬乃尔!这显然不符合直观,所以我们不能允许一个命题与其否定同时成立。
定义2.45 我们称一个公理系统是一致的(consistent),如果对于任意命题P,不可能P与¬P都是可证的。
那么,回答为什么不能有矛盾(问题2.20),便是要回答如下问题:命题逻辑是一致的吗?很幸运,是的(32)!
定理2.46 命题逻辑是一致的。
证明 我们考察任意一个证明,其是一条有限长度的命题序列(定义2.40):
且其中每一个Pk要么(0)是公理,要么(1)是重言式,要么(2)满足(Pi∧Pj)→Pk是重言式,其中i,j<k。因为命题逻辑是没有公理的(断言2.39),故只有后两种可能。
显然,该序列的第一个命题P1只能按照规则(1)写下,即它一定是一个重言式。
第二个命题P2要么是按照(1)写下的,故是一个重言式。要么是按照(2)写下的,故(P1∧P1)→P2是重言式。注意到→左边已经是一个重言式。对照→的真值表不难发现,若整个命题是重言式,P2必然恒为真,故P2自己也必须是重言式。
因为整个序列是有限的,我们逐项如此分析。一般的,对于第k个命题Pk,要么它是按照(1)写下的重言式,要么存在i,j<k使得(Pi∧Pj)→Pk是重言式。但是此刻我们已经证明了前序命题Pi与Pj是重言式,故如前所述Pk本身必然为一个重言式。
于是,证明(2.5)中的所有命题必然都是重言式。又因为证明是任意选取的,于是,命题逻辑中只有重言式能够被证出。
现在考察任意一个命题P,如果P以及¬P都是可证的,那么P与¬P必然都是重言式,即P与¬P的真值表中所有项都为真(定义2.37)。但这显然是不可能的,因为按照连词¬的定义,P与¬P的真值是相反的(定义2.32)。 □
值得说明的是,上面证明的措辞我是推敲了很久的,也刻意写得很详细,因为我们是在证明一个关于试图建模我们天然演绎推理的形式逻辑系统的断言,可这又得依赖于这个正在被试图建模的天然演绎推理呀(33)!所以一定要小心,不然很容易陷入所谓循环论证的陷阱。
首先要强调的是定义2.40(以及定义2.41)中的“有限”二字,形式证明中命题序列的长度一定要是有限的。因为只有这样,我们才能对P1,P2,…,Pn一个一个论证其为重言式,直到最后一个。否则,若可以允许无穷条命题,我们不得不诉诸数学归纳法(假设P1,…,Pk为重言式,证明Pk+1亦然),可这是一条我们尚未打消质疑的方法(问题2.17)。在学界我们称如此要求为有限论证(finitary argument),其为数学基础、元数学、逻辑研究中的根本性要求。
另外,定义2.45的措辞也经过了一番推敲。本来我写道“我们称一个系统是一致的,如果不存在命题P使得P与¬P都是可证的”。但这将会带来一个麻烦:我们在后面证明时不可避免需要使用反证法(假设这样的命题P存在,然后导出矛盾),但反证法的合法性我们同样尚未予以确认(问题2.18),于是我采取了一个正向的措辞,感觉就没啥问题了(34)。
定理2.46回答了问题2.20,其保证了命题逻辑中没有矛盾,支持了推理不应得出矛盾的直觉。我们继续,来看看问题2.18:为什么可以使用反证法?直观上反证法是在说,给定一些条件,若我们假设一个命题成立推出了矛盾,那么该命题的否定必然成立。很幸运,这个直觉现在成了命题逻辑中一条坚实的定理。
定理2.47(归谬法Reductio ad Absurdum)(35) 令Γ:P1,P2,…,Pn为有限个命题组成的序列(可以为零个命题)。若命题A、B满足
且同时
那么必然有
证明就不给出了,可以参见文献[3]的定理13。直观上,这个定理就是在说:若基于一些假设Γ和前提A可以推出结论B与其否定,也即产生一个矛盾,那么基于假设Γ必然能推出A的否定。
于是,我们为反证法找到了坚实的理论基础,不必再诉诸朴素的直觉!至此,我们回答了之前提到的全部问题——除了数学归纳法,因为其需要建立“自然数”的概念,我们目前还无法严格地谈论它,故先继续搁置着。事实上,与其说“回答了”,更准确的说法是:
洞察2.48 我们建立了一个理论,其是一个由毫无意义的符号与规则构成的形式系统,我们日常的演绎推理是其一个解释。在该解释下,我们很多天然的推理直觉成为关于该系统的事实,比如命题与其逆否命题等价、推理不应出现矛盾以及可以使用反证法。
何其妙哉!何其伟乎!