"实质蕴涵怪论"问题是逻辑哲学领域历久而弥新的焦点话题之一,对于现代逻辑基础教学也具有特殊的重要意义。我在《从形式蕴涵看"实质蕴涵怪论"---怪论定理之"反例"化解路径新探》(以下简称"《新探》") 一文中,就化解实质蕴涵定理的"严峻反例"问题提出了诉诸于命题的"适当形式刻画"化解路径。最近,程仲棠先生发表《"蕴涵怪论反例"的拨乱反正---兼评张建军先生的"'反例'化解路径"》(以下简称"《反正》") 一文,对此提出了异议。我认为,《反正》一文的讨论涉及到逻辑理论与方法的一些基本问题,有进一步展开探讨的必要。
一 "形式蕴涵"是弗雷格"两大发现"的结晶
理解《新探》提出的"反例"化解路径,需以正确理解"形式蕴涵"为前提条件。《新探》通过对罗素提出"形式蕴涵"概念之文本的分析说明: "罗素意义上的'形式蕴涵'即全称前束蕴涵式,实际上是弗雷格'命题函数'与'逻辑量词'两大发现的产物。"从《反正》的有关讨论看,对此需要做更多解析。
所谓"两大发现",是我对弗雷格的历史性贡献的一种新的概括。我认为,"命题函数"和"逻辑量词"这两个重大发现在现代逻辑创生史上的地位,可以类比于马克思的"唯物史观"和"剩余价值论"这两大发现在马克思主义创生史上的地位。
以往谈论现代演绎逻辑与传统演绎逻辑的差异,多是从使用"数学方法"或"形式系统方法"(后者更为准确) 着眼的; 但弗雷格所着标志现代逻辑诞生的《概念文字》(1879) ,在形式系统方法"使用"的自觉性上并没有超出莱布尼茨研究纲领,至少并不高于布尔代数。"形式系统方法"的真正澄清,是直到上世纪 20 年代才由希尔伯特和塔尔斯基通过创立证明论与模型论而完成的。使弗雷格具有公认的"现代逻辑奠基人"之地位的,主要就是这"两大发现"及依据它们所构造的谓词逻辑系统。
使用"两大发现"这个术语,旨在强调弗雷格的贡献是关于人类实际思想中的深层逻辑机理的"发现",而不是他的"发明"(尽管逻辑理论系统本身是逻辑学家的"发明").甚至"命题函数"和"逻辑量词"这两个术语也是后人所使用的。按弗雷格本人的称谓,它们分别相应于"个体词项(主目) 到真值的函数"和"普遍性的表达".弗雷格曾对此做了反复的阐释与讨论。在其晚年所写的《论逻辑的普遍性》一文中,他请读者比较对"同一个普遍的思想"的三种不同的表达:(1) "所有人都是会死的";(2) "每个人都是会死的";(3) "如果某物是一个人,那么它是会死的".
这三种语句都能表达同一条"规律".但弗雷格指出: 第(1) (2) 种表达式"不适合在所有出现普遍性的地方都使用,因为并非每条规律都能以这种形式表述",而"在最后一种表达方式中,我们有在其他情况下几乎也是必不可少的假言句子结构的形式和句子的不定指部分'某物'、'它'; 正是在这种结构和部分中隐藏着普遍性的表达".
理解弗雷格的发现,可考虑如下推论:推论 A: 如果某物是一个人,某物是会死的;拿破仑是一个人; 所以,拿破仑是会死的。
这种类型的推论在日常思维中是常见的。因为其中出现了假言联接词"如果……那么",传统逻辑教科书(包括国内常见的逻辑导论教材) 经常将这种推理的有效性归结于如下命题逻辑有效式(肯定前件式) : 如果 p,那么 q; p; 所以,q.通常的纯符号刻画为:有效式 A: p→q,p /∴ q然而,严格追问不难见得,推论 A 并不是有效式 A 的"适当的代入例",因为"某物是一个人"与"拿破仑是一个人"是不同的,命题变元 p 的两次出现无法代入同一个东西; 同理,q 在前提和结论中的两次出现也不能分别代入"它(某物) 是会死的"和"拿破仑是会死的",因而有效式 A 并不能说明推论 A 之有效性。传统逻辑学家回答这个问题的方式,是把上列语句(3) 作为语句(1) 的一种"非标准表达式",即把(3) 还原为(1) ,从而把推论 A还原为直言三段论: "所有人都是会死的,拿破仑是人,所以,拿破仑是会死的。"进而可用直言三段论理论说明推论 A 的有效性。然而,弗雷格在这类问题的探究中发现,我们根本无需把这样的假言句子结构还原为直言结构,同样可以合理地说明推论 A 的有效性,这就是通过引入"个体变元",将语句(3) 刻画为:(4) "对于任一 x,如果 x 是一个人,那么 x 是会死的。"这里的"对于任一 x"(或者"无论 x 是什么",x为个体变元) ,就是语句(3) 背后"隐藏着"的"普遍性的表达".消去这个"普遍性表达",个体变元就可以代入任何个体的名称,比如代入"拿破仑"从而得到:(5) "如果拿破仑是一个人,那么拿破仑是会死的。"据此,就可以再运用命题逻辑的肯定前件式来说明推论 A 的有效性了。弗雷格认为,正是从(3)的"不定指"词项改造来的"个体变元"(弗雷格称之为"不定指字母") 的使用,使得(4) 这样的形式能够成功地把"普遍性"表达出来。因此,就追求"普遍有效性"的逻辑而言,非但不应把(3) 向(1)化归,反而应当把(1) (2) (3) 都化归为(4) 这样的"普遍性表达式".换言之,只有(4) 这样的表达式才能表达出(1) (2) (3) 这样的自然语言语句所共有的"深层逻辑结构".
弗雷格的"两大发现",就产生于这样的分析过程之中。就语句(4) 而言,其中的假言结构句的前后件"x 是人"和"x 是会死的"的,都不是有真假的语句,但"当我们以形状相同的专名代替形状相同的不定指字母时,我们就从普遍过渡到特殊".
这种"过渡"的结果,就使得原来没有真值的句子拥有了真值。换言之,一旦个体变元的值被确定,像"x 是人"、"x 是会死的"乃至"如果 x 是人,那么x 是会死的"之特殊代入例的真值也就"随之而唯一地确定".从而这些公式所刻画的,就是实际地居于我们思想之中的"个体词项(主目) 到真值的函数",也就是后来罗素命名的"命题函数".命题函数的发现,使得传统逻辑系统中经常当作命题主词处理的普遍词项,都转化成了个体词项的谓词表达式,故而以这种命题函数式构造的逻辑系统被称为"(一阶) 谓词逻辑".
正是在获得"命题函数"的清晰观念的基础上,弗雷格看到,从"命题函数"过渡到有确定真值的"命题"(思想) 的途径有两条: 一条是把个体变元代为个体常元(专名) ,另一条就是像语句(4) 这样,在命题函数前面加上"对于任一 x"这样的作为"普遍性的表达"的量词。也就是后人普遍地称谓的"逻辑量词"(或直接简称为"量词") .当然,逻辑量词不只有"对于任一 x"这样的全称量词,还有同样面向个体域的"存在 x"这样的存在量词。
在现代逻辑教学的过程中经常会遇到这样的疑问: 传统逻辑在"所有 S 都是 P"和"有的 S 是 P"这样的形式刻画中,不是把"所有"、"有的"这样的量词都称为"逻辑常项"吗,为什么说直到弗雷格才发现了"逻辑量词"呢? 大家知道,在传统逻辑的 AEIO 命题中,量词"所有"、"有的"都只是关于主词项的外延的,而上面两个带有个体变元的量词却都是关于整个"个体域"的。若不限制个体域,它们就是关于世界上所有个体组成的"大全域"的。就逻辑的普遍有效性的追求而言,它们才是真正的"逻辑量词".逻辑量词的发现比命题函数的发现更为重要,但没有后者就不会有前者。因此,下列论述都是对弗雷格的历史贡献的恰当概括:"弗雷格的重要贡献之一是把数学中的函数概念引入于逻辑演算从而建立了量词的理论。""量词的引入和研究,是数理逻辑发展史上的一个重大事件,其重要性远远超过布尔代数的创立。可以说,量词论发展以后,才可以说数理逻辑接近于成熟。"而使用"两大发现"的新概括,可以对此有更为明晰的把握。
以上我们对弗雷格的两大发现的讨论是极为简要的,若深究的话,其中还需要探讨莫绍揆先生曾一再强调的命题函数中个体变元的"空位"性质问题,以及量词的对象性解释与代入性解释等长期争论的问题; 但就理解罗素意义上的"形式蕴涵"而言,上述讨论已经足够。正如《新探》所说,"形式蕴涵"就是基于弗雷格的这两大发现而提出的,其所指就是语句(4) 这样的全称前束语句所表达的东西。就符号刻画而言,弗雷格精心设计的两个量词和命题联结词的半图形式符号没有获得广泛采用,后来通行的是罗素、希尔伯特两种符号体系。
用国内最常用的量词和联结词符号表达,语句(4)可表示为:
(6)?x(x 是人→x 是会死的)若设 Fx 表示"x 是人",Gx 表示"x 是会死的",则有:
(7)?x(Fx→Gx)若用 Φx 和 Ψx 表示一阶逻辑系统中带唯一自由变元 x 的合式公式 ,则含一元谓词的"形式蕴涵"可统一表示为:
(8)?x(Φx→Ψx)正如罗素所一再强调,形式蕴涵也可推广到关于二元乃至多元关系的带重叠量词的前束式命题。
这也是弗雷格两大发现最重要的价值之所在。就如挪威学者阿斯海姆所说: "弗雷格的洞察不仅适用于语言中的上述简单情形,而且适用于重叠量化的情形,这使得人们对语言中的普遍性现象作深度分析第一次成为可能。"以上讨论直到最后才引入(7) 和(8) 这样的纯符号公式表达,旨在说明(7) 和(8) 这样的符号公式并非形式蕴涵本身,而只是对存在于人类实际思想中的形式蕴涵的"符号刻画".澄清这一点极为必要,否则就可能会误读"形式蕴涵".同一种形式蕴涵可以有不同的符号刻画。严格地说,(8) 的所有代入例(即《反正》所谓"代换例") 都只是一种形式蕴涵的"表达式",只是在不发生混淆的情况下,我们才能简约地说,它们都是形式蕴涵。
在上述澄清的基础上,即可以清晰地回答《反正》一文对《新探》中使用所谓"山寨形式蕴涵"的质疑。程先生认为: "形式蕴涵既是谓词逻辑公式,就必须用谓词逻辑的形式语言表示",因此像(6) 这样的"夹杂着自然语言"的表达就是"山寨形式蕴涵".实际上,像(7) 这样的公式中的谓词只是(6) 这样的语句中的谓词的"缩写",二者的语义是完全相同的。在现在大多数一阶逻辑系统中,都不再使用谓词变项而只使用谓词常项(即具体谓词在形式系统中的"表达") ,关于谓词的一般逻辑法则都用(8) 这样的元语言公式表示,这可以省却谓词代入规则所带来的麻烦。在这样的系统中,(6) 和(7) 的"逻辑性质"没有任何差别。若只承认缩写者(7) "获得逻辑认证",而认为被缩写者(6)就是"山寨角色",这是一种应当避免的"符号迷思",它会妨碍对"符号化"的实质与功能的理解。
试想,如果弗雷格和罗素也陷入这样的"符号迷思",还能有其创建和推广现代逻辑之功吗?
更加令人费解的是,《反正》质疑《新探》中有"形式蕴涵的永真命题与非永真命题的混淆",并据此怀疑《新探》所强调的"特殊形式蕴涵"的"逻辑身份".我认为,这可能是由于程先生未顾及《新探》的明确提醒,而受到"形式蕴涵"一词的"形式"前缀(混同于"形式保真"意义上的"逻辑蕴涵") 和罗素的阐释中"恒真"一词之特殊用法的误导所致。这从《反正》的以下论述中可见端倪: "一个形式蕴涵是永真式,当且仅当在每一非空论域的每一解释下,它都是真的。如果一个'特殊的形式蕴涵'是真命题,那么它不过是仅仅在某些特殊论域(例如'以时刻为个体域') 的某些解释下是真命题,那么不是永真的形式蕴涵的代换例。但是,非永真的形式蕴涵在谓词演算中不可证".然而,《新探》提出的化解路径从来没有诉诸于"形式蕴涵的永真命题",也没有诉诸"在谓词演算中可证"的形式蕴涵,而是诉诸于用形式蕴涵理解《反正》
所谓"举报者"提出的蕴涵怪论的"严峻反例".运用形式蕴涵理论对"反例"中的前提与结论做"适当的形式刻画",并不涉及形式蕴涵的"永真"、"可证"问题; 即使(理所当然) 有些形式蕴涵是永真和可证的,也与这里的问题无关。但"特殊的形式蕴涵"的确在一系列"严峻反例"化解中扮演着关键角色,故值得再做讨论。
"特殊的形式蕴涵"并不是一个新的概念,例如古老的麦加拉"第欧多鲁蕴涵",已被广泛地指认为以"时刻"为个体域的"特殊的形式蕴涵".
实际上,所有建基于一阶逻辑基础之上的一阶理论,都必定会使用特殊的形式蕴涵。例如一阶算术理论,其中的全称前束蕴涵式就需释为以"自然数"为个体域的特殊形式蕴涵。再如就弗雷格曾做了专门分析的一个日常例子而言:
(9) "如果某人是凶手,那么他是罪犯。"在不限制个体域的条件下,可表示为:
(10)?x(x 是人∧x 是凶手→x 是罪犯)更通常的做法是限制个体域,使用以"人"为论域的特殊形式蕴涵式:
(11)?x(x 是凶手→x 是罪犯)弗雷格对于(9) 的如下分析,有助于我们把握形式蕴涵乃植根于日常合理思维之真谛(括号中的文字系引者所加) : "这个句子结构中,条件句(前件) 和结果句(后件) 就自身而言均不表达思想(命题) .……尽管如此,这个句子结构可以表达一个思想,'某人'和'他'相互暗示。通过这种相互暗示并且通过'如果---,那么---'将这两个句子联结起来,使它们共同表达一个思想".
前件与后件均不表达命题的原因,是因为它们表达的只是命题函数,而整个句子才能够共同表达一个普遍性命题。换言之,"表示普遍性的既不是前件,也不是后件,而是整个句子".整个句子能够表示普遍性,乃是因为它们暗含着一个未明确表达出来的全称量词,加之含有个体变元的假言结构句,共同表达一个形式蕴涵命题。无论依据语境做一般形式蕴涵把握还是做特殊形式蕴涵把握,这个道理都是相同的。
实际上,一阶逻辑的"大全域",是一种最高层面的逻辑抽象,由于不同领域的"个体化"千差万别,直接在这种最高层面上应用谓词逻辑工具分析问题是很不方便的,例如需要容纳众多"范畴错误"句(例如把"张三是偶数"、"2 是白色的"处理为假语句) ,因而限制个体域是逻辑分析方法之常规。蒯因说一个理论的"本体论承诺"是它的"约束变元的值",正是就该理论所限定的个体域而言的。即使就一个理论内部不同问题的分析而言,限制具体的个体域也会使逻辑分析的任务得到简化,其根据正在于逻辑真理的"普适性",即其适用于任一非空个体域。无论在一般形式蕴涵还是特殊形式蕴涵中,命题函数加逻辑量词的本质并未改变,全称量词都具有约束整个个体域的"普遍性".特殊的形式蕴涵的"逻辑身份",在这里是清晰可辨的。
二 诉诸形式蕴涵是化解"严峻反例"的必由之路
许多学者所"举报"的实质蕴涵理论的"严峻反例",是针对经典命题逻辑中如下两个逻辑定理而言的:
定理 1: (p→(q∨r)→((p→q) ∨(p→r) )定理 2: ((p∧q)→r)→((p→r) ∨(q→r) )因为两个定理都是重言蕴涵式,其主联结词都能刻画"有效推出"关系。故有如下两个有效推论式:
有效式 B: (p→(q∨r) /∴ (p→q) ∨(p→r)有效式 C: (p∧q)→r /∴ (p→r) ∨(q→r)《新探》和《反正》都做了着重讨论的是莫绍揆先生给出的有效式 B 的一个反例:
反例 1: 如火车奔驰在沪宁线上(p) ,则或驰向上海(q) ,或驰向南京(r) ,此前提明显为真,但"如火车奔驰在沪宁线上,则驰向上海"(p→q) 或者"如火车奔驰在沪宁线上,则驰向南京"(p→r) ,这个析取结论明显为假,因为析取支都明显为假。
关于有效式 C 的"反例"被"举报"得更多,《新探》和《反正》都列举了国内莫绍揆、冯棉、林邦瑾等先生举出的反例。以下是"悖论逻辑"的创立者、亚相容逻辑相干方向的主要代表普利斯特给出的一个似乎"无可争议的反例":
反例 2: 真前提: "如果(串联电路) 开关 a 和开关 b 都通了,则那盏灯亮".假结论: "如果开关 a通了,则那盏灯亮,或者,如果开关 b 通了,则那盏灯亮。"因为是串联电路,结论的两个析取支都明显为假。
问题的"严峻"性在于,下述关于演绎推理的基本性质的推论也会构成同样的"反例":
反例 3: 真前提: "如果一个推论的前提为真且形式有效,则该推论是可靠的。"假结论: "如果一个推论的前提为真,则该推论是可靠的,或者,如果一个推论的形式有效,则该推论是可靠的。"因为结论的两个析取支都明显为假,故结论为假。
显然,如果这样的"反例"成其为真正的反例,那么以实质蕴涵理论为基础的经典演绎逻辑中就存在着最基本的理论混乱。故这样的"严峻反例"问题是必须解决而不能回避的。
《新探》和《反正》的共同诉求,就是要为化解这样的"严峻反例"提供路径,说明它们并非真正的反例。二者的分歧在于: 《新探》找到的路径,是否定这些反例是原来有效式的"适当的代入例";换言之,这些有效式并不是这些"谬误推论"的"适当的逻辑刻画".而《反正》反对这样的认识,认为这些"反例"仍然分别是上列有效式的适当代入例,从而仍然只运用命题逻辑工具去论证在前提为真的条件下,结论的两个析取支"不可能都是假的".程先生认为,反例"举报者"判定它们都是假的,乃因为他们都陷入了"析取错觉": "这些误判源于一个共同的反逻辑起点: 单凭直觉就贸然判定构成结论(后件) 的两个析取支都是假的。"显而易见,如果认同"反例"是原来的命题逻辑有效式的"适当代入例",再运用命题逻辑法则,证明从原来的真前提不可能得到"析取支都假"的结论,这当然是题中应有之义。"反例"的举报者都是逻辑学家,这是不必为他们特地做出形式证明的,他们也不可能陷入所谓"析取错觉".问题的关键恰恰在于,把这些结论中的两个析取支单独拿出来作为一个"命题",无论从日常思维还是科学常识看,它们都是明显的"假命题",两个假命题的析取仍然是"假命题",何"错觉"之有呢? 把这种明显的"合理直觉"斥之为"反逻辑",除了增加"怪论"之"怪味"外,是无法解决问题的。
《新探》所给出的化解路径,就是在充分尊重这些"反例"为谬误推理(前提真而结论假) 的"合理直觉"的基础上,追问"反例"是不是有效式 B 和有效式 C 的"适当代入例".运用"形式蕴涵"工具所作的分析为此给出了明确否定的答案,从而说明这些"反例"并不是真正的反例。《反正》之走入误区恰恰表明了解决问题的关键所在,即须考虑罗素早已给予的教诲: "为了清晰地思想,将命题函数和命题严格地分开这种习惯是极其重要的。"我们先来分析一下普利斯特的貌似"无可争议"的反例 3.它的析取结论是:
(12) "如果开关 a 通了,则那盏灯亮,或者,如果开关 b 通了,则那盏灯亮。"如果我们将之作为有效式 C 之结论(p→r) ∨(q→r) 的代入例,可改写为:
(13) (开关 a 通了→那盏灯亮) ∨(开关 b 通了→那盏灯亮)兹问,我们是在什么意义上说这两个析取支都明显为假呢? 实质蕴涵告诉我们,一个蕴涵句为假需要判定前件真而后件假,比如就前一个析取支来说,我们是在已判定"开关 a 通了"为真、"那盏灯亮"为假的意义上判定该蕴涵句为假吗? 显然不是。因为我们并不知道前后件的真值。我们判定它为假,是因为我们知道,就论证的前提所规定的有两个节点开关的串联电路来说,即使在开关 a 通了的时刻,如果另一个节点开关 b 不通,那盏灯也不会亮。也就是说,这个假言结构句的前后件都是带"时刻"索引性的语句,而不是蒯因所谓去除了索引性的"恒久句",并不表达有真假的命题,将这种索引性用以"时刻"为个体域的变元刻画出来即为:
(14) 在 t 时刻开关 a 通了→在 t 时刻那盏灯亮。
仅就(14) 来说,前后件都是没有真值的"命题函数",而不是"命题"; 从而该假言结构句也没有真值。而人们判定"如果开关 a 通了,则那盏灯亮"为假,是因为人们实际上使用了弗雷格所谓"隐藏着普遍性的表达",即如下全称量化式:
(15)?t (在 t 时刻开关 a 通了→在 t 时刻那盏灯亮)这是作为一种特殊形式蕴涵的"第欧多鲁蕴涵"的一个特例,而这就是我们直觉上判定明显为假的语句"如果开关 a 通了,那么那盏灯亮"的"适当的逻辑刻画".依据同样道理,反例 2 整体上可以刻画为如下推论:
推论 B: ?t(在 t 时刻开关 a 通了∧在 t 时刻开关 b 通了→那盏灯亮) ; /∴ ?t (在 t 时刻开关 a通了→在 t 时刻那盏灯亮) ∨?t (在 t 时刻开关 b通了→在 t 时刻那盏灯亮) .