|||
上回谈到,在一个逻辑系统中,存在三类元素:个体、谓词和句子,个体是最基本元素,就像几何学中的点和线一样,无法再进一步分析。而谓词,则是一个多棱镜,从不同的角度看有不同的“视图”。从纯逻辑的角度,谓词就是一个函数,从个体到句子真值的函数;从模型论的角度,谓词可以看做是“论域”中的一个子集;从哲学角度,谓词被看做是事物“性质”的形式表达;在某些计算机语言中(例如Lisp)谓词被当做可以产生真假值(T, F)的表达式。句子,如上所述,则是谓词应用于个体所得到的结果。下面给出几个例子:
论域:日常物质世界
个体:a
谓词:书、蓝色、半圆形
句子:书(a)、蓝色(a)、半圆形(a)
翻译:a是书、a是蓝色、a是半圆形
论域:人类
个体:a、b
谓词:男性、女性、学生、父亲、母亲、弟弟、妻子、朋友
句子:男性(a)、女性(a)、学生(a)、
父亲(a, b)、母亲(a, b)、弟弟(a, b)、妻子(a, b)、朋友(a, b)
翻译:a是男性、a是女性、a是学生、
a是b的父亲、a是b的母亲、a是b的弟弟、a是b的妻子、a是b的朋友
论域:自然数
个体:N、a、b
谓词:偶数、素数、大于、小于、后继、平方、积
句子:偶数(a)、素数(a)、大于(a, b)、小于(a, b)、后继(a, b)、平方(a, b)
操作:平方(a,)、积(a, b)
翻译:a是偶数、a是素数、
a大于b(a>b)、a小于b(a<b)、a是b的后继(a = b+1)、a是b的平方(a = b²)
a的平方、a和b的积
在以上这些例子中可以看到论域(或称域模型)、个体、谓词和句子之间的明确关系。值得注意的是在“自然数”论域中除了上述这三个元素之外,我们还定义了“操作”这样一个特殊的“谓词”;之所以特殊是因为它们的语义解释并不是关于论域的真假值,而是“生成”另外一个个体。通常我们的逻辑系统在严格意义上并不包括这一类“谓词”,因为它们并不能产生真假值。不过在计算机程序设计语言的研究中,会研究这类“谓词”的语义,称作“操作语义学”(operational semantics)。
有了这些元素,我们就可以描述某一特定的域模型了。不过,这些元素本身并不是我们逻辑系统固有的成分。为什么?因为这些元素离开了特定的域模型就不存在“语义”了。所有那些字母,a、b、c,P、Q、S等仅仅是一些无意义的符号而已。与这些元素相反,逻辑系统中还有一些符号,它们的作用、语义是固定的,这就是那些逻辑连接符:~、→、↔︎、∧、∨,以及像“方、圆括号”那样的辅助符号。在任何逻辑系统中,这些符号的作用意义是固定不变的,只是它们的具体语义值(或者称作“真值”)取决于句子成分的语义值。例如“∧”,它的真值只有在其成分的真值都为真的情况下才为真。
因此,在任何一个逻辑系统中,我们首先要区别逻辑符号和非逻辑符号:描述个体、谓词和句子的那些符号称作非逻辑符号(non-logical sign),按照卡尔纳普的术语称作描述符(descriptive sign),而逻辑联结符和辅助符号则称为逻辑符(logical sign)。
这种区分,就是现代计算机语言中“保留字”和用户定义字符最初原型。例如在C或类C语言中,auto、register、for、int、double等都属于已经定义了语义的“保留字”,用户无法再重新定义它们的语义。与此相对,用户可定义字符的形态和语义都是任意确定的;例如,“copy”这个词属于用户可定义,因此程序员可以通过定义一个C语言函数来确定其语义,这就像逻辑语言,如果在论域A中,我们可以定义字符“P”的语义是“白色的”,这样,“P(a)”就可以翻译成“a是白色的”,但是在另一个论域B中,P被定义为“朋友”,P(a, b),翻译成汉语就是:a是b的朋友。
有了上述的概念之后,我们可以看出,对一个逻辑系统的掌握,包括两个方面,逻辑语言和逻辑推理规则,而逻辑语言则包括了逻辑句法和逻辑语义两个方面。对逻辑语言和逻辑推理规则的深入研究就构成了数理逻辑中两大分支:模型论和证明论,前者,本质上是语义研究,而后者则是句法研究。而目前,我们所感兴趣的是逻辑语言,而且是最简单的逻辑语言——句子演算 (sentential calculus)。句子演算的最大特点就是不深入一个命题句的内部结构,而把这样的句子当做是原子成分。句子演算的核心内容就是:当两个或多个命题句用逻辑连接符连在一起时的真值是什么?换句话说,当使用“~、→、↔︎、∧、∨”连接符时,使整个复合句的命题为真的必要条件和充分条件是什么?
研究句子演算有什么意义呢?我们知道任何科学知识的表达都是通过定义、公理、定理等陈述句形式表达的。现在的问题是,当我们得知了对某个概念的定义,当这个定义和其它概念定义连接起来时是否仍然“正确”?换句话说,两个孤立的概念定义都是确定的,但是当这两个定义连接成一个句子,如何确定这个句子的正确性?这取决于它们是“如何”连接的,而句子演算就是从形式上保证概念定义连接的正确性。例如:5>3,我们知道是正确的,3>5就不正确了。但是,(5>3)∨(3>5)却是正确的,而(5>3)→(3>5)是错误的。为什么?这就是句子演算所要研究的重点。
在我们当前这个逻辑系统中,我们仍然用“谓词(个体)”的形式表示句子,例如“>(5, 3)”表示“5大于3”,“很聪明(赵强)”表示“赵强很聪明”。如果用逻辑连接符将这两个句子连接,如“[>(5, 3)]→[很聪明(赵强)]”,表示:“如果5>3则赵强很聪明”。
具体来说,逻辑连接符有5个:~、→、↔︎、∧、∨。下面分别介绍(如果你比较熟悉可简单浏览一下即可,但有可能会发现你以前不了解的细节)。
~:否定,形式化地说,这个符号的作用就是是使原句的真值翻转,类似于代数中的相反数;例如加法中的负数,乘法中的倒数;
→:蕴含,有时又称“实质蕴含”,是我们讨论的重点;
↔︎:等价,又称“双蕴含”,亦即“当且当”那种句子;
∧:与
∨:或
对于否定和与或,学计算机的大概都非常熟悉,即使不是,从中文直观上也很容易理解,因此我们在这里不会单独在讨论,只是在谈论和蕴含有关问题的时候提及它们。这里重点讨论“蕴含”。
蕴含的真值表是这样的:有两个命题句子P、Q,它们的蕴含真值表就是
P | Q | P→Q |
T | T | T |
T | F | F |
F | T | T |
F | F | T |
蕴含式和其它连接词有一个最大不同就是它不符合交换律,亦即,如果P和Q分别表示两个不同的命题句子,
P→Q ≠ Q→P
这一点和其它二值连接符是不同的。因此,通常P和Q各有一个名称:前件和后件。历史上,英国数学家乔治·布尔第一次将逻辑和代数联系起来,使得逻辑脱离了传统的哲学领域成为数学的研究对象。如果仔细研究,我们会发现蕴含式很像算术中的除法运算:第一、它们都不服从交换律;第二,前件后件对调、它们的相反数相等。例如:
4÷5 = 4/5,
1/5÷1/4 = 4/5
————————
∴ 4÷5 = 1/5÷1/4
这个和蕴含式的P→Q = ~Q→~P的本质是相同的。什么?没看出来?好吧!
P ÷ Q = P/Q;
~Q ÷ ~P = 1/Q ÷ 1/P = P/Q
—————————————
∴ P ÷ Q = ~Q ÷ ~P
“好吧,就算是,那又怎么样?有什么意义呢?”你可能会问。第一,它揭示了逻辑代数和算术之间的某种“形态”上的相同性,这个问题我们以后在探讨“范畴论”时会详细讨论,现在能说的,而且说得直白一点就是,至少让你“开了眼界”,认识到逻辑和数学之间的某种相似性。第二,比较实用的就是,也是我最关心的,这种关联,导致了逻辑语法研究在20世纪的一大发展——范畴语法的诞生,而范畴语法就是试图用这种关联性和递归性构建自然语言的各种表达式范畴,达到描述自然语言千变万化的结构的目标。
蕴含式的含义,通常我们会用“必要条件”和“充分条件”来解释。在上述的真值表中,我们可以充分理解这些概念的含义。
在真值表的前两行中,表达了这样一个真理:如果前件为真,那么就一定保证了后件必须为真。第一行正面表达:如果P为真,那么Q必然为真;第二行是反面表达:不可以出现前件为真后件为假的情况,否则整个句子不成立。也就是说,如果你的前提是肯定的,根据这个前提得出的结论也必须是肯定的。不过这里的所谓“肯定的”,不是语言上的“肯定句”,而是逻辑上的“真值”。
如果仔细研究第一行,特别是结合一些实例,我们可能会感到蕴含式的内容不仅仅是表达条件和结果,而且包含了或者说隐含了全称量化的含义。例如
“凡是人皆有一死”。转换成比较“规范的”蕴含式:“如果你是人,你一定会死”。这里的“你”在语言学上并不是人际交流中特指的“你”,而是一个“虚指”的占位符,例如把“你”去掉,“如果是人,都会死”仍然成立。从前面第一句“凡是人皆有一死”,到第二句“如果你是人,你一定会死”再到第三句“如果是人,都会死”,其实都说所有人都会死。这种情况英语也是一样:
a man is mortal。
这里的a man并不是指某一个人,而是指任何人,换句话说就是所有人。如果用我们的域模型解释的话就是,对于在该域中的任意一个性质P的对象个体,必然具有Q的性质。
严格地说,当蕴含式的前后件包含的个体是非专名时,它的指称语义永远是域模型中某个子集合的【所有】元素。这个和带全称量词的表达式是一样的。
例如上例的“a man is mortal” 写成量词表达式就是
∀x(man(x)→mortal(x)),翻译成中文就是:对于域模型中任意个体,如果该个体具有man的性质,那就必然具有mortal的性质。
也就是说,蕴含式本身的句法结构,就决定了前件具有全称量词的语义:凡P(x)必Q(x),这也是为什么蕴含式被称作“充分条件”,“所有”、“一切”满足前件的一定满足后件,隐含满足前件的条件可以无穷多。而作为后件的Q,只能是前件P的必要条件。换成通顺的中文就是“只有Q,才会P”。形象地说,从P到Q,可能有千条路,而从Q到P只有一条路。这个断言,我们通过真值表的的第三行,就能领会。
在蕴含式的真值表中、最特别、最令人难于理解的就是第三行:当P为假Q为真时,整个句子仍然为真。如果觉得难以理解,那么结合第四行,当P和Q均为假时,整个蕴含句为真,我们就可以知道,当整个蕴含句为真后件也为真时,前件即可为真亦可为假,真假未定。这是什么意思呢?这意思是你可以诡辩!!
英国哲学家罗素曾经说过,一个假命题可以蕴含任何命题。当年罗素在给学生上课时曾经引用这个论断,一个学生不解,说道,那好,我的命题是2+2=5,你可以证明你是罗马教皇吗?罗素说道:当然可以。证明如下:
1. 前提:2+2=5,且2+2=4
2. 推理:5=4
3. 推理:2=1 (两边加-3)
4. 前提:存在着一个集合:{罗马教皇,罗素},其集合的基数是2
5. 推理:因为2=1,所以这个集合只含一个元素:罗马教皇就是罗素,罗素就是罗马教皇。
因此,真值表第三行是一个有效(valid)但是不健全的的蕴含式。所谓健全是指蕴含式除了必须有效之外,其前件也必须为真,所以只有第一行才是有效而健全的蕴含式。
不过如果单独看第四行,并且你对数学感兴趣,可能已经看出这一行其实就是反证法的基本依据:要证明某个命题不成立,先假设结论(后件)成立,然后反推得到前提不成立。其形式表达是:~Q→~P
这种方法在逻辑学上称作归谬法。例如上面“罗素=罗马教皇”就属于这种方法:
罗素不是罗马教皇除非2+2=5
从蕴含式的真值表可以看出,使整个复合句为真的必要条件就是:后件为真,而与前件无关。因此,蕴含式中的符号“→”其实表达的就是使句子为真的真值条件,换句话说,蕴含符的语义就是使整个句子为真的条件,而这个条件就是前件后件的组合结果。
根据真值表的第三行和第四行,我们可以用“与”和“或”关系表示蕴含式:
P→Q = ~(P∧~Q)
意思是:只要不是P∧~Q,蕴含式即为真。如果根据德摩根定理则可以进一步简化为
P→Q = ~P∨Q
这个式子,可能比P→Q更能揭示蕴含式的本质:真值表的意义。
注:本篇笔记加入了一些我本人的体会,并非全是原书的内容。
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-11-19 20:39
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社