5语法与逻辑
5.1一阶谓词逻辑
从符号应用来看,领域语言本身可以是用自然语言的文本词汇与语句形式,领域语言也可以是数学符号与公式表现的。我们把上述二种类型领域语言看作二个端点,在这二个端点之间是各种混杂形式的应用。并不是说不会有其它形式的符号应用,因为这是自由的,只是想创新出一种符号方式不是易事。近代的化学里,也有元素周期表,化学方程式这样的专门符号形式应用,但很难说这些符号的应用统驭了这门科学。
在如管理学、生物学、心理学、政治学、还有语言学等等学科,或这些学科里的多个分支,到处都有没有数学化的领域。从比例来说,今天多数人工作所依赖的知识来自那些数学化程度很低的领域。这些领域在理论化时,仍以自然语言的方式来组织符号,并且多数实际上达不到公理化系统这样的程度。欧几里德的《几何原本》如果相较于代数,也可以看作是自然语言、直观图形、一些专用表示基础上建立起来的。
自然语言的文本词汇与语句在构建领域语言时,它们与自然语言的日常性应用有什么不同呢?答案是逻辑在其中所起的作用不同。我们有一些语句,那接下来的工作你可以选择:一是对比语句的描述与实际的情况,判断语句描述是否与实际相符;二是逻辑上判断语句间相互是否矛盾?语句的陈述假设了什么前提,或者从这些语句出发应用逻辑的规则可以推导出什么结论。
逻辑应用的一般描述是:定义概念,通过命题对概念进行判断(也称断言),判断是对二个或多个概念存在一定关系的确定,通过已有命题进行推理与证明,得到新的命题。通过概念与命题交织起的网络,人类的认知与思想得以呈现。正是逻辑与领域内容结合出公理演绎系统的模式:精心地选择初始的概念与命题,通过有组织的定义、推理、证明,建立起整体系统。就算达不到公理的系统,想要树立一个可被接受的认知,而不只是自我表达,必须是以逻辑来组织起内容,这其中包括归纳的逻辑。
符号的概念性应用基本的要求的是:观点与论述可信与自洽的,逻辑的应用是今天人类保障观点自洽的方式。一般的观点,逻辑是有效推理论证的方法:前提为真,就可保障结论为真。推理论证的有效性取决于推理的形式,与推理中非逻辑符号的实指无关,以亚里士多德(Aristotle,公元前384~前322,古希腊的哲学家、科学家、逻辑学家、教育家)三段论为例:
所有吃草且会奔跑的都是动物
马是吃草且会奔跑的
所以,马是动物
在这个例子中,替换“马”为“牛”,或者系统替换“吃草且会奔跑”、“动物”、“马”三者,都不影响推论的有效,词项:“所有”、“是”、“所以”构成了这里的推理形式,一般化这个形式如下:
所有M是P
S是M
所以,S是P
我们再看下面的例子:
所有吃草且会奔跑的都是兔子
马是吃草且会奔跑的
所以,马是兔子
“马是兔子”这当然是荒谬的说法,但这的逻辑应用没有问题,结果的荒谬是因为前提“所有吃草且会奔跑的都是兔子”是荒谬的,纯粹逻辑并不关心前提,结论是否荒谬,也不关心兔子、马这些词汇是指称什么。逻辑只关注推导的结构与形式是否符合规定,符合规定就是有效的。
“荒谬”是个日常,感受上带有情绪的一个词汇,在逻辑里正式说法是“假”。论述时的每一陈述句或者为“真”,或者为“假”,为“真”或为“假”称为语句的真值。真值中的“真”、“假”通常用“1”、“0”表示。我们在二种意义讨论“真”与“假”,一种是经验的真值,其意义是语句的描述是否与事实相符,这是通过实际的验证来证实的;一种是逻辑的真值,逻辑上从前提语句推理得到的语句,称为后承语句,前提语句为真而且推理有效,后承语言真值=1,这里后承语句的真值是逻辑上的真值。对于构建认知,经验的真值才是终极的标准,只是人类理论的抽象性与实际环境的复杂性,不一定存在无争议可实施的验证方法。存在万有引力定律,惯性定律场景就很难真实地存在,理论上这样构建仍是可行的,但想找到或创造合外力为零的情况来验证,这看上去没有现实性。水星近日点的异常进动被认为是对广义相对论的证明,很多人不确信这一点,因为并没有完整地考虑所有因素并精确地进行了计算,比如没有考虑太阳风的影响。公理演绎系统的公理最初认为是不证自明的,非欧几里德几何出现后,公理失去了这种必然性,公理的真被认为是假说性的,公理演绎系统的应用只是种尝试,在其扩展中一直有效,就保障了其存在的基础,有失效的地方则证明这种尝试是需要改进的或放弃的。逻辑学家们有时也争论:“真值”这个概念是否没有“逻辑有效”这个概念恰当。
日常语言中“逻辑”一词用法可以代表通常所说的自然语言的混乱状况。对专业些的人士,“逻辑”一词指现代逻辑学的逻辑:有效推理论证的形式;对一些人,这指自然语言中不能脱离语义的自然语言逻辑;对另一些人,是指归纳逻辑的内容;对多数人是不加区分地应用。说“不合逻辑”可能是指未遵守有效推理论证的方式,或不够严谨;或是指论证的前提不成立;或是指语句描述与经验不符。
亚里士多德做出了初步的逻辑规范,但在自然语言里应用亚里士多德的逻辑是困难的,原因是自然语言词汇语义上的歧义性,想想“逻辑”一词的在实际中的用法,在语义无明确界定基础上进行的推理、证明或辩论,结果将是从混乱走向新的混乱。
鉴于自然语言在严谨应用时难于避免的混乱,德国哲学家与数学家莱布尼茨(Gottfried Wilhelm Leibniz。1646.7-1716.11)想到创立一门通用语言,这种语言的使用形式与逻辑规则一致,这样推理变成一种演算,当争论发生时,我们可以像在算术里那样算一算就得到确定的结果。
1879年德国数学家、逻辑学家和哲学家弗雷格(Friedrich Ludwig Gottlob Frege,1848.11-1925.7)出版了《概念文字》(英译:Concept Writing)一书,开始具体实现莱布尼茨的想法。弗雷格的设想不仅是能模仿算术实现机械的推理运算,他的设想首先是创建一门表达思想概念的语言。
陈述句在逻辑里称为命题。命题作为一个整体的单位时,经常用一个小写字母来表示,如p、q、s…。弗雷格参考数学函数的概念改写了命题的格式。跳过弗雷格的术语与形式,用今天通用的表示法,命题的形式是P(x)、或P(x、y)。其中x、y 为项,是命题要表述的对象,P()称为谓词,表示一种性质或关系,类似于一个函数。我们先说x、y是常项的情况,自然语句“小明是小学生”命题形式表示为“是小学生(小明)”,自然语句“狮子追逐斑马”命题形式可表示为“追逐(斑马、狮子)”。逻辑上我们应用“是小学生(小明)”命题时,是一个描述,同时也是一个判断,判定p是一个事实且p =‘小明是小学生’,即认为命题:“是小学生(小明)”=1,这是在实证的意义上说的。
弗雷格还引入了量词:∀为全称量词,∃为存在量词。引入量词后,x、y就可以表示变项,∀ x:P(x)表示所有x代表的常项,都使P(x)=1。如果用x表示学生,可以构造这样的命题∀ x:要做作业(x),翻译为自然语句就是:所有的学生都要做作业。∃ x:P(x)表示存在x代表的常项,使P(x)=1。如果用x 表示鸟类,可以构造命题∃ x:不会飞(x),翻译为自然语句就是:存在不会飞的鸟。
在弗雷格之前,1854年,英国数学家乔治·布尔(George Boole,1815.11-1864.12)出版了《思维规律的研究》(An Investigation of The Laws of Thought)一书。在这本书里布尔提出可用于命题联结的运算:与(合取)、或(析取)、非(否定)运算,逻辑里形式表示为"∧"、"∨"、"┐",语义上与下述三个日常词汇接近:并且(and)、或者(or)、否定(not),当然不能用这三词汇来理解这三个运算,"∧"、"∨"、"┐",可通过真值表无歧义地定义。为了表述方便,下面的论述里的命题先简单写为p、q。
1与运算:∧
P |
q |
p∧q |
1 |
0 |
0 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
2或运算:∨
P |
q |
p∨q |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
3非运算┐
P |
┐q |
1 |
0 |
0 |
1 |
从真值表的定义,可以发现,或运算的1∨1=1与“或者”一词的自然语义是有区别的,我或者乘飞机去北京,或者坐高铁去北京,我不可能乘飞机同时又坐高铁去北京,一般的语义下1∨1=0。为适配这种语义,逻辑里另外定义了异或运算,逻辑里语法形式表示为:⊕
异或运算:⊕
P |
q |
p⊕q |
1 |
0 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
我们不需要引入独立的异或运算,所有其它的运算可以用∧、∨、┐定义出
p⊕q=(┐p∧q) ∨(p∧┐q)
同样我们可以使用真值表来验证定义是否成立
P |
q |
┐P |
┐q |
(┐p∧q) |
(p∧┐q) |
(┐p∧q) ∨(p∧┐q) |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
从日常实践来说,经常用到的是这种运算——蕴涵运算,逻辑里语法形式表示为:⇒,语义对应的日常词汇是:如果…那么,真值表如下:
蕴涵运算⇒
P |
q |
p⇒q |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
可定义为:┐p∨q。
对蕴涵运算理解的要点是:P为真时,q为真,才成立;P为假时,q无论真假, p⇒q都为真,后半句是让人困惑的地方,学术界也有争论,你可以理解为这只是个约定。
蕴涵运算的增强运算是等价运算,逻辑里语法形式表示为:⇔语义对应的日常词汇是:当且仅当,真值表如下:
等价运算⇔
P |
q |
p⇔q |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
可定义为:(p∧q) ∨( ┐p∧┐q)。
对等价运算理解的要点是:p⇔q 相当于 p⇒q ∧q ⇒ p
上面我们是从与、或、非运算定义出异或、蕴涵、等价运算,如果需要还可以再定义其它的运算。我们也可以不从与、或、非运算出发,定义其它的运算,而是从比如蕴涵、非运算出发,定义出与、或、及其它的运算,如何选择只是逻辑上的约定与方便。
有了量词、命题形式、命题联结方式,就可以应用这些形式来表示观念或事实。实用的中的场景主要是先有自然语言的语句描述,再转换为这种逻辑语法表示。这种转换对简单关系的语句也不复杂,对复杂的语句或意思,除非经过了一定的训练外,这种转换并不容易,阅读可能更困难。
由逻辑语法表达的多个事实与观念组成了前提,接下来是进行推理、证明。一串的推理得到结论,或揭示出矛盾,这就构成一个证明。每一步的推理是对逻辑表达式进行转换,比如说表达式中有“┐┐q”部分,你可以用“q”来替换,这是平时所说的:否定之否定就是肯定。逻辑上的说法是 “┐┐q” 与“q”形成等价的关系:┐┐q⇔q,等价符号二边可以相互替代。说到逻辑推理,普通人最容易想到的是“如果……那么……”的句式,这是假言推理的一种形式,完整描述是:如果p那么q,p,所以q,专业的形式是(p⇒q∧p)⇒q,这是个蕴涵关系,只有右边可以替代左边。 逻辑里┐┐q⇔q与(p⇒q∧p)⇒q称为重言式,更多的重言式如下:
┐┐q⇔ q
p∧( q∨s) ⇔ (p∧q)∨( p∧s)
p∨ ( q∧s) ⇔ (p∨q) ∧ ( p∨s)
┐(p∧q) ⇔┐p∨┐q
┐(p∨q) ⇔┐p∧┐q
p∨ (p∧q) ⇔p
p∧ (p∨q) ⇔p
┐(∀x)P(x)⇔( ∃x)(┐Px)
┐(∃x)P(x)⇔(∀x)(┐Px)
p∧q⇒ p
p∧q⇒ q
p ⇒ (p∨q)
q ⇒ (p∨q)
┐p∧(p∨q) ⇒ q
(p⇒ q∧p)⇒q
(p⇒ q)∧(q ⇒ s)⇒(p⇒ s)
这里只是列举了部分重言式。由重言式组成的集合就构成一个逻辑推理的系统。推理过程就是不断应用系统里的重言式进行替换的操作。有那些重言式,这些重言式如何构成推理系统是逻辑学家研究的课题。
由字母、特定的符号、表达式,重言式构成一个可演算的符号系统: x、P()、p、q、∀ 、∃、∧、∨、┐、⇒、p ⇒ (p∨q)、q ⇒ (p∨q)……。这个符号系统传统上的一个说法是刻画了我们的思维规则,持这种观点的问题在于逻辑学家们发展出了太多这样的系统,除一阶谓词逻辑外,还有:高阶的逻辑、时序逻辑、模态逻辑,甚至如p ∧┐p⇔1排中律不适用的逻辑,似乎不同的假设与应用场景都可以去发展一个逻辑的门类。
任何一个逻辑门类在现代都是形式化为一个符号的系统,形式化的意思是以字母、抽象符号、字母符号形成的表达式、表达式间规则来建立系统,所用到的符号不实指具体意义,所建立的系统只是规定符号间的关系与可能的操作。这时候需要小心区分:逻辑与逻辑的符号系统。逻辑是思维时或符号表述内容时需要遵循的规则,这些规则在今天是用符号系统的形式来呈现,用本书偏好的说法:逻辑外化为一个符号系统。这样 做的理由是:恰当的符号与明确的规定,可以清晰呈现所针对的关系,所依据的前提,进而可用符号来模拟各种可能的情形,同时,以符号系统存在的逻辑,让逻辑本身以及对逻辑的研究工作变得可交流。 逻辑符号系统不能认为就是逻辑本身。除非至始至终逻辑只有唯一的符号表现形式,那这唯一的符号表现形式可以认为就是逻辑,但这不是真的,同样的逻辑可以有不同的符号方式或符号系统来表现。另外,逻辑在实际中的作用,不一定是逻辑符号系统的应用,更多时候是人脑直接遵循并应用逻辑的,而且普通人学不学逻辑学对其逻辑思维的影响并不是至关重要的,这可类比于对语法的学习。逻辑与逻辑符号系统的区分,也说明人脑里的逻辑心理运转与符号的形式推导是不同的二个范畴,对此我们可说的不多。逻辑以符号形式来表现,这带来了理解上的问题。谈到亚里士多德逻辑,一般人会想到是讲“因为……所以”的,逻辑的典型词项代表了逻辑,而且逻辑与自然语言是不可分的。到了符号化、形式化的现代逻辑,多数人可能就困惑了,何以出现这些符号的形式。没有更好的办法,逻辑在今天只能是以符号系统形式存在。
(作者(LQS)注:连续地阅读会发现,系列的文章不是对各个问题的解释,而是新的理解视角)