APP下载

说谎者悖论的隐蔽的假设*

2022-05-17文兰

逻辑学研究 2022年2期
关键词:意指

文兰

1 前言

所谓悖论,就是推出矛盾但原因不明的推理。([4])所谓解悖,就是找出悖论推出矛盾的原因。

反证法也是推出矛盾的推理,但它推出矛盾的原因很清楚:是由于一个假设。反证法总是先宣布一个假设(以下简称“头”),然后推出矛盾,最后下结论该假设不成立(以下简称“尾”)。这个“头”“尾”点明了该反证法的推理中使用的假设。悖论则看不出使用了什么特别的假设,推出矛盾无法理解。

但实际上,悖论也有假设,只不过是隐蔽的。隐蔽的假设当然是推出矛盾原因不明的最重要的原因。因此,找出隐蔽的假设,是对一个悖论的彻底解答。

读者也许会觉得奇怪,一个推理中的假设怎么会是隐蔽的呢?作为例子我们将演示,如何只移去一个词而使集合论创始人康托的一段推理中的假设当场变得隐蔽,成为著名的理发师悖论。本文主要篇幅将揭示说谎者悖论中的一个隐蔽得多的假设,从而解答这一最古老最有影响的悖论。人们将惊讶这一假设在说谎者悖论里的隐藏之深(第3.9 小节)。

本文首先给出一个有助于寻找隐蔽假设的一般原理:如果一个悖论是一个反证法的掐头去尾的翻译,那么除了翻译,这个悖论与这个反证法有相同的假设,只不过对这个悖论来说,该假设是隐蔽的。然后,应用这个原理去找出说谎者悖论中的隐蔽的假设。不难看出,说谎者悖论是一个极其简单的布尔方程无解的反证法的掐头去尾的翻译。为确证这不是一个肤浅的观察,作者选取了一个非平凡的三元布尔方程组无解的反证法,掐头去尾之后,将其余的部分翻译成日常语言,果然得到一个令人眼前一亮的说谎者型的“三卡悖论”。按照上述原理,除了翻译,三卡悖论与该三元布尔方程组无解的反证法有相同的假设,即“该方程组有解”的假设,也即“存在变元的值满足该方程组”的假设。只不过对三卡悖论来说,这个假设是隐蔽的。

这一发现具有重要的意义。我们知道,关于说谎者悖论,主流的理论着重于对“自我指涉”和“真谓词”的分析。现在,三卡悖论所表现的“自我指涉”和“真谓词”与说谎者悖论完全相同。这说明,自我指涉和真谓词虽然是三卡悖论的明显的外部特征,却不是三卡悖论的要害,也就不是说谎者悖论的要害。问题的要害是隐蔽地假设了“该方程组有解”即“存在变元的值满足该方程组”。只要搞清楚这一假设对三卡悖论来说是什么意思,即只要建立起诸如“句变元”以及句变元的“值”“句方程”“句解”等概念,就可以陈述三卡悖论的解答,也就可以陈述说谎者悖论的解答:

说谎者悖论的解答.说谎者悖论L:L为假是一个句变元问题,应该写成一个句方程X:X为假。说谎者悖论推出矛盾是因为隐蔽地假设了该句方程有句解,即隐蔽地假设了存在X的一个值L使得L:L为假。说谎者悖论的矛盾证明,不存在X的值L使得L:L为假。

这一解答出自文献[4]。这里的陈述更为细致。把L换成X,再换回成L,其哲学意味是微妙的。本文将对这一解答做一个透彻的解说。作为应用,本文给出了雅布罗悖论的解答。1感谢陈龙博士建议作者考虑雅布罗悖论,导致了这个精彩的应用。

2 悖论与反证法:一个关于隐蔽假设的原理

反证法对逻辑学和数学来说具有基本的重要性。一个初等的例子如:

定理1.不是有理数。

对本文来说,特别要注意的是反证法结构上的“头”和“尾”。反证法的“头”永远是宣布某个假设,“尾”永远是下结论该假设不成立,这是反证法的例行格式。注意头尾并不是推理,中段才是推理。该假设真正起作用不是在头尾而是在中段,即使去掉头尾,该假设也仍然在中段起着作用。

简言之,对反证法掐头去尾不改变其推理中的假设。

对反证法掐头去尾虽然不改变其推理中的假设,但在极少数情形却可能使该假设变得隐蔽,这就引向了本文的主题——悖论。让我们来看一个著名的悖论。

理发师悖论(1918).某村有一理发师,恰给本村那些不给自己理发的人理发。若他给自己理发,则他属于那种给自己理发的人。按照他的原则,他应该不给自己理发。矛盾。若他不给自己理发,则他属于那种不给自己理发的人。按照他的原则,他应该给自己理发。也矛盾。

按照前言的开头所给出的悖论的定义,悖论是推出矛盾但原因不明的推理。理发师悖论就是这样,它是一个推理,它推出了矛盾,但原因不明。

从以上两个例子可以看出,反证法和悖论都是推出矛盾的推理,但二者有重大的区别。反证法有一个明确的假设,而悖论却似乎看不出有什么假设。从外观上看,反证法有专门讲述其假设的“头”和“尾”,而悖论则无头无尾。

由于对反证法掐头去尾不改变推理中的假设,立得下面这个有助于寻找隐蔽假设的一般原理:

隐蔽假设原理.如果一个悖论是一个反证法的掐头去尾的翻译,那么除了翻译,这个悖论与这个反证法有相同的假设,只不过对这个悖论来说,该假设是隐蔽的。

这是因为,任何一个反证法,其假设总是陈述在“头尾”,而使用在“中段”以导致矛盾。现在这个中段是一个悖论,因此它意识不到自己正在使用的导致矛盾的假设。对这个悖论来说,该假设是隐蔽的。

这也说明,一个悖论一旦被发现是某个反证法的掐头去尾,其隐蔽的假设就被(该反证法的“头尾”)揭露了,该悖论也就被解决了。

对这个原理的最好的诠释是看看理发师悖论是哪个反证法的掐头去尾。我们来看一下。首先把理发师悖论重述一遍:

理发师悖论重述.假设某村有一理发师,恰给本村那些不给自己理发的人理发。若他给自己理发,则他属于那种给自己理发的人。按照他的原则,他应该不给自己理发。矛盾。若他不给自己理发,则他属于那种不给自己理发的人。按照他的原则,他应该给自己理发。也矛盾。

注意这一次在开头添加了两个字“假设”。

“假设”二字一加,问题马上清楚了,产生矛盾的原因就是这个假设,所得矛盾无非说明该假设不成立,即该村不存在一个理发师“恰给本村那些不给自己理发的人理发”罢了。

但人们要问,理发师悖论的陈述里原来并没有“假设”二字,如此重要的两个字,为什么可以凭空加上去呢?

其实,原来是有“假设”二字的,是在集合论创始人康托的一个定理里。我们来解释一下。

先回顾一下集合论的几个概念。设X和Y为两个集。所谓一个从X到Y的映射f:X →Y是指一个法则,它对X中的每一元素x,唯一指定Y中的一个元素。这个为x指定的Y中的元素称作x在f下的像,记为f(x)。如果Y中的每一个元素都是X中某个元素的像,就称f是一个满射。对任意一个集X,称X的所有子集所成的集为X的幂集,记作P(X)。

康托定理(1895).对任何集X,不存在从X到幂集P(X)的满射。

这是集合论最基本的定理之一,一般陈述为“不存在从X到幂集P(X)的一一对应”。但不存在满射当然就更不存在一一对应。

证明. 任取一个映射f:X →P(X),要证f不是满射。为此令

我们来证明,不存在z ∈X使得f(z)C。为此用反证法。

假设存在z ∈X使得f(z)C。若z ∈f(z),则z∉C。但Cf(z),故z∉f(z),矛盾。若z∉f(z),则z ∈C。但Cf(z),故z ∈f(z),也矛盾。这证明不存z ∈X使得f(z)C,故f不是满射。

那么康托定理与理发师悖论有什么关系呢?

我们来给康托这段反证法一个“理发”的解释。把X理解为该村村民的集,把f理解为“理发映射”,即对每一村民x,令f(x)为被x理发的那些村民的集,即x的“顾客集”。那么康托所考虑的集合

就是该村那些不给自己理发的人所成的集,而f(z)C的意思就是z恰给本村那些不给自己理发的人理发,故z就是悖论所说的那位理发师。

现在来对照一下康托的证明和理发师悖论。

存在z ∈X使得f(z)C(某村有一理发师,恰给本村那些不给自己理发的人理发)。若z ∈f(z),则z∉C。但Cf(z),故z∉f(z),矛盾(若他给自己理发,则他属于那种给自己理发的人。按照他的原则,他应该不给自己理发,矛盾)。若z∉f(z),则z ∈C。但Cf(z),故z ∈f(z),也矛盾(若他不给自己理发,则他属于那种不给自己理发的人。按照他的原则,他应该给自己理发,也矛盾)。

显然,理发师悖论就是用理发语言叙述的康托证明。

那么为什么一个是定理,一个是悖论呢?

康托(1895)是在作反证法,前面还有“假设”二字,后面还有结尾句“这证明不存z ∈X使得f(z)C”(请读者检查一下)。用理发的语言讲,康托是假设本村有一理发师恰给本村那些不给自己理发的人理发,推出矛盾后立刻下结论不存在这样一个理发师。一切正常,一点也不“悖”。

而理发师悖论(1918)照搬了康托的反证法,却移去了开头的“假设”二字(以及最后的结尾句),致使人们把该理发师的存在当成了事实,推理似乎就没有了假设,推出矛盾也就原因不明,成了悖论。

于是我们看到,仅仅移去一个词就可能使一个反证法的假设变得隐蔽。这诠释了隐蔽假设原理,也给出了

理发师悖论的解答.村里那位“恰给本村那些不给自己理发的人理发”的理发师的存在只是个假设。理发师悖论的矛盾证明这一假设不成立,即村里不可能存在这样一个理发师。

理发师悖论与康托反证法的掐头去尾的关系见文献[6]。关于这样一个理发师为什么不存在,有一种说法是“理发师是女性不用刮胡子”。这是不对的。是逻辑的而不是性别的原因使得这样一个理发师不可能存在。

读者要问,还有哪些悖论是现成的反证法的掐头去尾呢?

若强调“现成的”,则例子很少。除了理发师悖论,另一个重要的例子是说谎者悖论,我们将在下一节充分地分析。这里我们对悖论与反证法的一般的关系再做一些说明。这有两个方面,一是反证法如何掐头去尾成为悖论,二是悖论如何添上头尾成为反证法,二者都需要一些说明。

(1)把反证法掐头去尾很容易,但绝大多数反证法掐头去尾都荒唐可笑,也就成不了悖论。要想成为悖论,其掐头去尾必须出于某种原因未被察觉。

相反,隐去康托反证法开头的“假设”二字,“假设某村有一理发师,恰给那些不给自己理发的人理发”就成了“某村有一理发师,恰给那些不给自己理发的人理发”,事实证明却未被察觉,成了著名的理发师悖论。

请读者想一想,这两个例子都是隐去“假设”二字,为什么前者很容易察觉而后者不容易察觉呢?(这个问题虽不在本文的主线上,却是一个有意义、有深度的问题,对认识悖论的实质很重要。)

(2) 把悖论添上头尾成为反证法则不容易,需要先找出悖论推理里隐藏的假设,而这相当于解答悖论。

这是因为,反证法的“头尾”是专门讲述“中段”所使用的假设的,“头”是宣布该假设,“尾”是下结论该假设不成立。所以,只有找出悖论推理里隐藏的假设,才有可能补上“头尾”写成反证法。而一旦找出了隐藏的假设,也就可以随时补上“头尾”写成一个反证法。这个反证法一般就不是现成的了,而是“人为”的了。后面第3.8 小节将把雅布罗悖论补上“头尾”写成这样一个反证法。

3 说谎者悖论的解答

悖论中最有影响的是有2500 多年历史的说谎者悖论。它有好几种表述方式,一种比较直观的是使用卡片:

说谎者悖论这张卡片上的句子为假

若这张卡片上的句子为真,则肯定其所述,故这张卡片上的句子为假,矛盾。若这张卡片上的句子为假,则否定其所述,故这张卡片上的句子为真,也矛盾。

注意,说谎者悖论的推理只是反复使用(推广的)塔斯基的T-模式([3]):若x意指p,则x为真当且仅当p。

中世纪出现的一种变形是Jourdain 给出的

双卡悖论第二张卡片上的句子为假

第一张卡片上的句子为真

以下把“第一张卡片上的句子”简称为“第一个句子”,等等。

若第一个句子为真,则肯定其所述,因而第二个句子为假。故否定第二个句子之所述,因而第一个句子为假,矛盾。

若第一个句子为假,则否定其所述,因而第二个句子为真。故肯定第二个句子之所述,因而第一个句子为真,也矛盾。

这两则推理推出了矛盾,但原因不明,成为史上最著名的悖论。

关于说谎者悖论的文献卷帙浩繁,最著名的是塔斯基(A.Tarski,[3])的“语言分层”理论和克里普克(S.Kripke,[1])的“真值空隙”理论。2001 年笔者在文献[4]中给出了一个不同的解答,不采用语言分层,又坚持传统的二值逻辑。下面就来介绍这个解答。

3.1 三卡悖论

先来看一个新发现的“三卡悖论”,它将揭示说谎者悖论的本质,直接导致说谎者悖论的解答。

三卡悖论第二张卡片的句子为真,且第三张卡片的句子为假

第一张卡片的句子为假,或第三张卡片的句子为真

第一张和第二张卡片的句子都为真

设第一个句子为真。由其所述,第二个句子为真,且第三个句子为假。这样一来,第三个句子之所述就被肯定了,因而第三个句子为真,与已经证明了的第三个句子为假的事实矛盾。

再设第一个句子为假。于是,第二个句子之所述就被肯定了,因而第二个句子为真。又,第三个句子之所述就被否定了,因而第三个句子为假。但这样一来,第一个句子之所述就被肯定了,因而第一个句子为真,矛盾。至此已穷尽所有可能而处处遇到矛盾。

这个悖论出自文献[4],其陈述和推理都和说谎者悖论类似,是又一个说谎者型的悖论。

但这个“三卡悖论”从何而来?它的推理含有“且”和“或”,逻辑意味甚浓,它是怎样被发现的?后面第3.4 小节将揭示其秘密。现在让我们先回到说谎者悖论。

3.2 说谎者悖论与“方程”

说谎者悖论不是一个单一的对象,而是两个对象之间的“意指”关系。通过把“这张卡片上的句子为假”写在一张卡片上,说谎者悖论给出了一个意指关系,即“这张卡片上的句子”(8 个字)意指“这张卡片上的句子为假”(10 个字)。

塔斯基([3])使用了类似的设计。通过把“印在本页正数第5 行的句子不真”印在某一页的正数第5 行,塔斯基给出了一个意指关系,即“印在本页正数第5行的句子”(12 个字)意指“印在本页正数第5 行的句子不真”(14 个字)。注意塔斯基使用的术语是“不真”而不是“假”。但因本文使用经典的二值逻辑,所以对本文来说“不真”等同于“假”。

说谎者悖论是两个对象之间的意指关系,这一点已经是文献中的共识。比如现代文献对说谎者悖论的表述形式:

就明确地表达了这一点,其中L表示词组“这个句子”,冒号表示“意指”(或“所述是”)。([8])

现在我们提出一个关键的看法:不妨把这个意指关系视为“尚未验证”的而不是“已经验证”的,也就是说,不妨写成一个“方程”:

由于不排除这个式子将来“被验证”的可能性,这样写并不失去什么。以后我们将看到,把L:L为假写成X:X为假不仅是“不妨”,而且是“必须”。

以下我们有时会更简练地用符号F表示“为假”,则说谎者悖论就完全符号化为:

把L写成X,读者可能有些不放心。不过,说到底,“这个句子”一定是指一个确定的、具体的句子吗?

不一定。我们来看词组“这个数”。在很多时候它的确是指一个确定的数,比如一个人指着黑板上的一个“2”说:“瞧这个数!”这时,“这个数”就是指这个具体的数“2”。但也有另一种情形,“这个数”被用来表示一个待定的数,一个“未知数”,比如一位老师在课堂上给学生出题:“一个数等于这个数自己的2 倍减3,求这个数。”其中的代词词组“这个数”就表示一个未知数x,老师的题目也就是一个方程x2x-3。

换句话说,代词词组“这个数”(其他代词词组如“这个句子”“第一张卡片上的句子”“印在本页正数第5 行的句子”也一样)本来就有两种可能的功能,一是代表一个确定的数,二是代表一个待定的数,即一个“变元”。后面第3.5 小节要定义的概念“句变元”,其语言学依据就是代词词组的这第二种功能。上面这位老师是在谈论“这个数”:一个数等于这个数自己的2 倍减3,其中的代词“这个数”是一个变元x,而整个问题是一个方程x2x-3。现在说谎者悖论是在谈论“这个句”:一个句意指这个句自己为假,其中的代词“这个句”就是一个“句变元”X,而整个说谎者悖论就是一个“句方程”X:X为假。这是对说谎者悖论为什么是一个“句方程”的一个朴素的说明。严格的、理论的说明将在第3.9 小节的问题1 中给出。

3.3 说谎者悖论里隐藏的假设

上述x2x-3 是一个有解方程。与说谎者悖论关系更紧密的是一个无解布尔方程:

定理A.布尔方程x=无解。

证明. 假设该方程有解,即假设存在x的一个值使该方程两端相等。为简便,直接用x表示这个值。

若x1(若这个句子为真),则由方程,x0(则肯定其所述,故这个句子为假),矛盾。反之,若x0(若这个句子为假),则由方程,x1(则否定其所述,故这个句子为真),也矛盾。

此矛盾证明该布尔方程无解。

读者一定注意到了,括弧里的译文就是说谎者悖论的推理。

那么卡片呢?卡片则是布尔方程x=本身的翻译。把x=翻译为X:XF,用语言叙述就是,“这张卡片上的句子”意指“这张卡片上的句子为假”,再把“这张卡片上的句子为假”写在一张卡片上,就得到说谎者卡片

这张卡片上的句子为假

可见,说谎者悖论是布尔方程x=无解的反证法的掐头去尾的翻译。

这正是隐蔽假设原理的框架。定理A 反证法的主体就是说谎者悖论的推理,“头尾”则解释了这个推理推出矛盾的原因,正是两千多年来人们苦苦寻找的说谎者悖论的解答!

由于太久找不到说谎者悖论推理中的假设,人们认为说谎者悖论的矛盾一定是语言或逻辑的某种深层次缺陷所致(上世纪中叶以来由于悖论的驱动甚至出现了一种理论挑战经典逻辑的根本大法矛盾律,主张“不相容逻辑”)。而现在,定理A 反证法的“头尾”明明白白写着:说谎者悖论的推理假设了“该方程有解”。当然什么是“方程”什么是“解”对说谎者悖论来说还不太清楚,但那只是个术语问题,重要的是,说谎者悖论推理里隐藏的假设被发现了!

不过,如此重大的发现得来似乎太容易了,只是把说谎者悖论与布尔方程x=作了一下对比。这会不会是肤浅的表面类比呢?

3.4 三卡悖论的秘密

为确证这不是肤浅的表面类比而是一个洞见,笔者找了下面这个三元布尔方程组(容易看出“双卡悖论”是布尔方程组x,yx无解的反证法的掐头去尾,故考虑三元),把它的反证法掐头去尾翻译过来,果然得到一个令人眼前一亮的说谎者型的“三卡悖论”,见文献[4]。我们来回顾这一制作过程。

定理B.布尔方程组

无解。

证明. 假设该方程组有解,即假设存在x,y,z的值使方程组成立。为简便,直接用x,y,z表示这三个值。

假设x1。由方程(1),得y1,且z0。这样一来,由方程(3),得z1,与已经证明了的z0 矛盾。

再假设x0。于是,由方程(2),得y1。又由方程(3),得z0。但这样一来,代入方程(1)就得x1,矛盾。

此矛盾证明该布尔方程组无解。

现在来制作三卡悖论。先看定理B 的陈述。我们从中去掉“布尔方程组”和“无解”几个字,把三个布尔方程翻译成三张卡片。具体做法是用X,Y,Z表示三个代词词组“第一个句子”“第二个句子”“第三个句子”。我们知道布尔代数乘法对应于“且”,用∧表示,加法对应于“或”,用∨表示。再用T表示“为真”,F表示“为假”,三个布尔方程就翻译成三个“句方程”

我们来把它们写成三张卡片。用自然语言叙述,第一个句方程X:Y T ∧ZF就成为“第一张卡片上的句子”意指“第二张卡片上的句子为真,且第三张卡片上的句子为假”。把“第二张卡片上的句子为真,且第三张卡片上的句子为假”写在一张卡片上,并放在第一个位置,就得到第一张卡片

第二张卡片的句子为真,且第三张卡片的句子为假

这就是第一张卡片的由来。类似得到其他两张卡片。

再看定理B 的证明。我们去掉反证法的“头尾”,只翻译中段:

假设x1(设第一个句子为真)。由方程(1),得y1,且z0(由其所述,第二个句子为真,且第三个句子为假)。这样一来,由方程(3),得z1,与已经证明了的z0 矛盾(这样一来,第三个句子之所述就被肯定了,因而第三个句子为真,与已经证明了的第三个句子为假的事实矛盾)。

再假设x0(再设第一个句子为假)。于是,由方程(2),得y1(于是,第二个句子之所述就被肯定了,因而第二个句子为真)。又由方程(3),得z0(又,第三个句子之所述就被否定了,因而第三个句子为假)。但这样一来,代入方程(1)就得x1,矛盾(但这样一来,第一个句子之所述就被肯定了,因而第一个句子为真,矛盾)。

括弧中的译文正是第3.1 小节的三卡悖论的推理。可见,“三卡悖论”是定理B 的反证法的掐头去尾的翻译。

三卡悖论是一个“大型的”说谎者悖论。它的发现证实了说谎者悖论与布尔方程的关系绝不是表面现象。类似地,可以构造出四卡、五卡、......N 卡悖论,说谎者悖论只是这个家族的冰山一角。([4])这展示了说谎者悖论前所未见的宽广而深刻的背景。

按照隐蔽假设原理,三卡悖论与定理B 的反证法有相同的假设,即“该方程组有解”的假设,也即“存在变元的值满足该方程组”的假设。

这一发现具有重要的意义。我们知道,关于说谎者悖论,主流的理论着重于对“自我指涉”和“真谓词”的分析。问题在于,三卡悖论所表现的“自我指涉”和“真谓词”与说谎者悖论完全相同(三卡悖论表现为“互相指涉”但最终归结为“自我指涉”)。这说明,自我指涉和真谓词虽然是三卡悖论的明显的外部特征,却不是问题的要害。问题的要害是,三卡悖论的推理隐蔽地假设了“该方程组有解”也即“存在变元的值满足该方程组”。那么说谎者悖论也是。

3.5 建立句变元、句方程等概念

下一步要做什么就很明确了,就是搞清楚“该方程组有解”或“存在变元的值满足该方程组”这一假设所说的“方程”“解”“变元”“值”对语言悖论来说是什么意思。我们在第3.2 小节曾通过一位教师在课堂上的问题非正式地描述了“句变元”和“句方程”,现在来正式定义这几个概念。首先回顾一下代数学里的定义。

取定一个数域F,比如实数域,作为讨论的论域。于是代数学里有如下4 个概念:

·F上的一个变元(又称未知数),是一个符号,常用x,y,z等表示,用来代表F的任意一个元素,但一般尚未确定代表F的哪个元素。变元所代表的F的元素称为这个变元的值。注意变元不是F的元素,变元的值才是。

· 方程是含有未知数的等式。

· 方程的解是使得该方程两端相等的未知数的值。一个方程可以有解,也可以无解。

现在我们来建立语言学中的相应概念。对照x与X:Y T ∧ZF可知,与“数”x,y,z相对应的是“句”X,Y,Z,因此最自然的是把相应的4 个概念命名为“句变元”“句变元的值”“句方程”“句解”。

回顾在经典逻辑里,所谓命题是指可以判断真假的陈述句。为讨论说谎者悖论,我们取全体命题所成的类P作为论域。以下常把命题叫做“句子”,或简称“句”,以便和说谎者悖论的用语一致。

现在来定义这4 个概念。

·P上的一个句变元是“这个句子”“第一张卡片上的句子”“印在本页正数第5 行的句子”那样的代词词组,常用X,Y,Z等符号表示,用来代表P的任意一个元素,但一般尚未确定代表P的哪个元素。句变元所代表的P的元素称为这个句变元的值。注意句变元不是P的元素,句变元的值才是。(请读者与上面代数学的“变元”定义相对照。)

· 句方程(或称意指方程)是含有句变元的意指关系式,左端是单独一个句变元,中间是“意指”符号“:”或“:=”,右端是左端所意指的内容,比如X:Y T ∧ZF。句方程经常用自然语言表达,比如“甲句说乙句为假”就是一个典型的句方程,其中的“说”也就是“意指”。

· 句解是使得该句方程成立的句变元的值。一个句方程可以有句解,也可以无句解。

我们来看一下上面提到的句方程的例子:

例. 甲句说乙句为假,即X:Y为假,其中“:”表示“说”或“意思是”。

这是一个典型的句方程,即“双卡悖论”中的第一张卡片。这个句方程有句解。比如令X为“一加一等于三是错误的”,Y为“一加一等于三”,这两个句子都是P的元素,代入句方程立见是该句方程的一个句解,因为“一加一等于三是错误的意思是一加一等于三为假”显然成立。注. 以上我们选取了经典逻辑的“命题”的类P作为论域。实际上,讨论说谎者悖论,论域的选取不是唯一的。从数理逻辑的观点看,这一论域可以抽象地、公理化地定义,而且需要定义的不只是上述4 个概念,还有两个概念“意指”和“为真”也需要定义。加上原始概念“句”,共有7 个概念——句、意指、为真、句变元、句变元的值、句方程、句解——需要定义,包括建立公理以约束它们之间的关系。为了自给自足地定义这些概念,作者在文献[4]中采用了形式化的方式。文献[4]还讨论了“说真话者”。值得注意的是,“说真话者”依赖于对意指符号“:”的解释,这一点,与说谎者悖论不依赖于对意指符号“:”的解释很不相同。

3.6 说谎者悖论的解答

上一小节给出了句方程X:Y为假的一个句解。实际上这个句方程有无穷多个句解。任取P的一个元素A(比如取A为“一加一等于二”),令X为“A为假”,令Y为A,就构成该句方程的一个句解,因为“一加一等于二为假意思是一加一等于二为假”平凡地成立。这样看,句方程很容易有解,因而找一个无解句方程也许不太容易。幸运的是,我们手里就握有一个无解句方程,那就是说谎者悖论X:X为假(当然,通过构造三卡悖论现在我们已经知道有无穷多无解句方程组),它和句方程X:Y为假只差一个字母。证明它无句解就不能靠举例了,而是用反证法。

定理A′.说谎者方程(即X:X为假)无句解。

证明. 假设该句方程有句解,即假设存在X的一个值L使得L:L为假。

若L为真,则肯定其所述,故L为假,矛盾。反之,若L为假,则否定其所述,故L为真,也矛盾。

此矛盾证明该句方程无句解。

这个反证法的“中段”就是说谎者悖论。添上“头尾”之后,矛盾的原因就清楚了,悖论就不“悖”了。这再一次诠释了隐蔽假设原理。

看到这里,读者可能要问,添上这个“头尾”,形式上倒是像反证法了,但这个头尾与中段真是融汇一体的吗?这个“有句解”的假设,也即“L是一个值”的假设,真的用在了说谎者悖论的推理里吗?用在了哪里?

问得好!这就是下面的基本问题2。让我们往下看。

定理A′其实是定理A 的翻译。第3.2 小节我们曾把定理A 的“中段”做了翻译。当时没有翻译“头尾”,是因为“头尾”里的“方程”“解”等术语无法翻译。现在有了“句方程”“句解”等新概念,就可以把定理A 完整地翻译过来了。

定理A′的陈述对说谎者悖论没有采用文献中的通常写法L:L为假,而是写成了X:X为假,其证明则通过取值把X换回成了L。这是与定理A 的做法一致的,是与代数学的基本思想一致的。下面的解答总结了这个微妙的“换去又换回”的过程:

说谎者悖论的解答.说谎者悖论L:L为假是一个句变元问题,应该写成一个句方程X:X为假。说谎者悖论推出矛盾是因为隐蔽地假设了该句方程有句解,即隐蔽地假设了存在X的一个值L使得L:L为假。说谎者悖论的矛盾证明,不存在X的值L使得L:L为假。

这说明,区分“变元”和它的“值”,是理解说谎者悖论的哲学关键。说谎者悖论是一个句变元问题,要用符号X来表述,但在推理时,则要假设X是一个“值”,要用符号L来表述。说谎者悖论把二者混到一起了。

这个解答是受代数学的启发得到的。当然,不能说因为代数学里有变元、方程的概念,说谎者悖论就也是一个“句变元”“句方程”问题。说谎者悖论究竟为什么是一个“句变元”“句方程”问题,必须有它自身的语言学和逻辑学的根据,必须自己从根本上回答下面两个基本问题:

基本问题1.为什么说谎者悖论L:L为假是一个句变元问题,应该写为X:X为假?

基本问题2.为什么在说谎者悖论的推理中必须把X换回为一个“值”L?推理中究竟哪里用到了L是一个“值”的假设?

这两个基本问题将在第3.9 小节给以彻底的回答。这里对“L”和“X”再做几点一般的说明。

布尔方程x和说谎者悖论L:LF都是“自我指涉”,推理相同,为什么x不是悖论而L:LF却是呢?更一般地,在代数学里,等号两端随便写两个关于x的表达式都不会出“悖论”,为什么在语言学里,L:LF两端稍稍不同就成了悖论呢?

显然是因为,代数学是把x当做一种尚未验证的式子处理的,因此有退路,出了矛盾大不了说一句“该方程无解”就行了。而语言学却是把L:LF当做已经验证的式子处理的,因此没有退路,出了矛盾就是死结。

语言学处理L:LF之所以缺乏弹性,原因就是缺少“句变元X”的概念。代数学的“变元x”的概念看似简单,实际上在历史上是划时代的。代数课程给人印象最深的就是“变元x”的概念,正是这个概念抓住了“尚未验证”的微妙含义。现在我们给语言学也建立了“句变元X”的概念,以后就也可以在符号“ :”两端随便写两个关于X的表达式而不会出悖论了,出了矛盾大不了说一句“该句方程无句解”就行了。我们对说谎者悖论的解答就是这样做的。一句话,变元不怕自指,方程不怕自指。

“句方程”的概念可以厘清语言学的一些长期存在的疑难问题。比如主流理论把“一个句子说自己为假”当做一个句子,称作“说谎者句”。实际上,它是个句方程X:X为假,应该称作“说谎者方程”。“句子”是P的元素,是经典逻辑中的可以判断真假的陈述句,而“句变元”按定义不是P的元素,无所谓真假,从而“句方程”也不是P的元素,无所谓真假。这是一个严重的区别。又如常常见到,甚至在海报上见到这样一个问题:“一个句子说自己为假,这句话是真是假?”实际上,这样提问是错误的,正确的问题应该是:“一个句子说自己为假,这个句方程有解无解?”这两个问题都归结为“一个句子说自己为假”为什么是一个“句方程”,即基本问题1。彻底的回答将在第3.9 小节给出。

现在来把我们关于说谎者悖论的看法小结一下:

(1) 说谎者悖论是一个意指关系L:L 为假,其中L 表示“这个句子”。

(2) 为慎重起见最好先视L为句变元,写成X,即把说谎者悖论写成一个句方程X:X为假。如果这个句方程有句解,再把X写成L不迟。

(3) 但实际上,这个句方程无句解。

(4) 证明用反证法:假设该句方程有句解,即假设存在X的一个值L使得L:L为假。那么,若L 为真,则肯定其所述,故L 为假,矛盾。若L 为假,则否定其所述,故L 为真,也矛盾。这一矛盾证明该句方程无句解。

在这样的理解下,说谎者悖论完全消解,风平浪静了。

但这4 点中,只有黑体字部分是文献中已有的,其余部分,特别是反证法的头尾,一直缺失。这些缺失的部分处处需要“句变元”“句变元的值”“句方程”“句解”等概念才能表述,而这些概念一直没有出现。缺失了这么多链条,说谎者悖论的矛盾就无法理解,成了千古之谜。

3.7 说谎者悖论不是一个纯语言学问题

上一小节得到了说谎者悖论的解答。这个解答不像理发师悖论的解答那样一经对照康托反证法马上就被理解了。这一次,虽经对照布尔反证法,但说谎者悖论的解答理解起来困难得多。读着说谎者悖论的解答,什么“句方程”“句解”,搞不好不知道它在说什么。人们会抱怨,说谎者悖论是一个纯语言学问题,为什么一定要使用奇怪的“代数学术语”呢?

但实际上,说谎者悖论并不是一个纯语言学问题。这只需看三卡悖论。三卡悖论是由布尔方程组翻译而来,是代数问题的语言表述,那么三卡悖论是语言学问题还是代数学问题呢?只能说表面上是语言学问题而实际上是代数学问题,无论如何不是纯语言学问题。那么说谎者悖论也如此。说谎者悖论不是一个纯语言学问题,而是语言学中的代数学现象。它的解答需要使用一些“代数学术语”,是并不奇怪的。

三卡悖论是我们立论的基础。如果关于说谎者悖论有什么疑难,最好的办法是去看三卡悖论,在那里一切都清楚得多。

3.8 雅布罗悖论的解答

句变元的观点不仅可以解答说谎者悖论,还可以解答科里(Curry,或称Löb,[2])悖论和雅布罗悖论。科里悖论的解答见文献[4],这里给出雅布罗悖论的解答。这几个悖论(说谎者,科里,雅布罗)有一个共同的关键词“意指”(或“说”,或“所述是”),可统称为“意指悖论”。

雅布罗悖论([5]). 有一列句S1,S2,...,每一个都说自己后面的所有句为假。

若S1为真,则肯定其所述,即S2,S3,...,都为假。既然S2为假,就要否定其所述,故必有m >2 使得Sm为真,矛盾。

若S1为假,则否定其所述,故必有n >1 使得Sn为真。那么肯定其所述,即Sn+1,Sn+2,...,都为假。既然Sn+1为假,就要否定其所述,故必有k >n+1 使得Sk为真,也矛盾。

这就是雅布罗悖论,其中每个句仅指涉后面的句,因而永远不归结为自我指涉。这说明“自我指涉”并非导致矛盾的必要条件。实际上,雅布罗悖论导致矛盾的原因和说谎者悖论相同,都是因为混淆了“变元”和它的“值”,因此可以把雅布罗悖论添上与说谎者悖论同样的“头尾”写成反证法:

雅布罗定理.雅布罗悖论是个句变元问题,应该用Xi陈述成“有一列句X1,X2,...每一个都说自己后面的所有句为假”。这个问题无句解,即不存在X1,X2,...的值S1,S2,...使得每一个都说自己后面的所有句为假。

证明. 假设存在X1,X2,...的值S1,S2,...使得每一个都说自己后面的所有句为假。则

· 若S1为真,......矛盾。

· 若S1为假,......也矛盾。(这两个省略号代表雅布罗原来的推理)

此矛盾证明不存在X1,X2,...的值S1,S2,...使得每一个都说自己后面的所有句为假。

这也给出了:

雅布罗悖论的解答.雅布罗悖论是一个句变元问题,应该用变元符号Xi陈述成“有一列句X1,X2,...每一个都说自己后面的所有句为假”。雅布罗悖论推出矛盾是因为隐蔽地假设了存在这些句变元的值S1,S2,...使得每一个都说自己后面的所有句为假。所得矛盾证明,不存在这些句变元的值S1,S2,...使得每一个都说自己后面的所有句为假。

这就是说,和说谎者悖论一样,区分“变元”和它的“值”是理解雅布罗悖论的关键,而为了区分,需要在陈述中把Si换成Xi,再在推理中换回成Si,故雅布罗悖论的解答同样归结为第3.6 小节的两个基本问题,详见下一小节。

3.9 对基本问题1 和2 的回答

这一小节对第3.6 小节的两个基本问题做一彻底的回答。我们就说谎者悖论做回答,但答案同样适用于雅布罗悖论和科里悖论。注意在这两个问题的陈述里“方程”和“解”的术语没有出现,是因为已经归结为“变元”和“值”:

基本问题1.为什么说谎者悖论L:L为假是一个句变元问题,应该写为X:X为假?

基本问题2.说谎者悖论的推理是:“若L为真,则肯定其所述,故L为假,矛盾。反之,若L为假,则否定其所述,故L为真,也矛盾”。为什么在这个推理中必须把X换回为一个“值”L?推理中究竟哪里用到了L是一个“值”的假设?

我们来回答问题2,在此过程中,问题1 的回答也将水到渠成。注意问题2的原型是在代数学里:

代数原型.定理A 的推理是:“若x1,则由方程,x0,矛盾。反之,若x0,则由方程,x1,也矛盾”。为什么在这个推理中必须假设x是一个“值”?推理中究竟哪里用到了x是一个“值”的假设?

我发现自己不会回答这个代数原型问题。定理A 的证明一开始就假设了x是一个“值”(请读者查看定理A 的证明,在第3.2 小节),这是我们习惯了的代数课程里的标准格式。我们确信这个关于“值”的假设一定用在了证明的某个地方,但就是找不到!我意识到为什么说谎者悖论如此困难了。

最后终于找到了。我们知道“变元”和变元的“值”的区别就在于,“变元”尚未确定代表哪个数,而变元的“值”则是一个确定的数。比如第一句推理是:“若x1,则由方程,x0,矛盾。”从x1 到x0,在这个推理过程中,x必须始终代表同一个确定的数,它既等于1 又等于0 才是矛盾。如果x在这个推理过程中可以变,那它既等于1 又等于0 就不是矛盾。换句话说,当我们断言“矛盾”时,就不自觉地用到了x是一个“值”的假设。

翻译过来就知道说谎者悖论的推理为什么必须假设L是一个“值”。我们知道“句变元”和句变元的“值”的区别就在于,“句变元”尚未确定代表论域P的哪个元素,而句变元的“值”则是P的确定的元素。比如第一句推理是:“若L为真,则肯定其所述,故L为假,矛盾。”从L为真到L为假,在这个推理过程中,L必须始终代表同一个确定的句,它既为真又为假才是矛盾。如果L在这个推理过程中可以变,那它既为真又为假就不是矛盾。换句话说,当我们断言“矛盾”时,就不自觉地用到了L是一个“值”的假设。

原来,如果不假设L是一个“值”,而是可以变,那么它既为真又为假就不是矛盾。问题2 的答案多么简单自然啊!

但人们会说,在“若L为真,则肯定其所述,故L为假,矛盾”的推理过程中,L当然不可以变啦,这还用说吗?这也算假设吗?

问题就出在这里。实际上,L没有理由“当然不可以变”。在本文中,L代表说谎者悖论中的代词词组“这个句子”。第3.2 小节说过,代词词组本来就有两种可能的功能,一是代表一个确定的对象,这时就不可以变;二是代表一个尚未确定的对象,这时就具有“变元”的功能,就可以变。说谎者悖论只说“这个句子”,却没有说明究竟是哪个具体的句子(P的哪个元素),无法肯定是第一种功能。另一方面,三卡悖论的“第一个句子”“第二个句子”“第三个句子”是由代数学的x,y,z翻译而来,却肯定具有变元的功能。那么与三卡悖论类比,说谎者悖论的“这个句子”L至少应该说很有可能具有变元的功能,实际上下一自然段马上就要证明L确实具有变元的功能。无论如何,L没有理由“当然不可以变”。

问题1 的答案至此也清楚了。如果L是一个“值”,不可以变,说谎者推理就将顺利通过而得到矛盾。因此,根据反证法原理,L一定不是一个“值”,而是一个句变元X。简言之,是说谎者悖论的矛盾本身证明了说谎者悖论是一个句变元问题。这就是期待已久的问题1 的答案。这个答案很短,但含义很深。

回过头看,问题1 相当于问,为什么L是一个“值”则说谎者推理就推出矛盾。而问题2 是问,为什么L不是一个“值”则说谎者推理就推不出矛盾。二者合起来就是问,为什么“L是一个值”是说谎者悖论推出矛盾的充分必要条件。

所谓“L是一个值”,说白了就是“L在推理中途不可以变”。这也确实太平淡了。莫非就是因为太平淡,这个假设在说谎者悖论中隐藏了2500 年?若不是代数学在历史上发现了“x是一个值”是一个实质性假设,我们是否至今也不会意识到“L是一个值”是一个实质性假设呢?

悖论的要害是隐蔽的假设。若论隐蔽之深,说谎者悖论可谓登峰造极。代数学专门建立了“值”的概念,无数次明确宣示“假设x是一个值”,人们尚且找不到该假设用在了哪里,何况说谎者悖论连“值”的概念都没有。可以想见,实际存在的“L是一个值”的假设在说谎者悖论中隐藏有多深。

相传古希腊诗人、学者菲勒塔斯(Philitas)为说谎者悖论殚精竭虑,身心交瘁而死。这样的人多么纯洁。要知道他生活在遥远的古代,不要说“句变元”,就是代数学的“变元”,也要等到他身后1000 多年才会出现。有过这样纯洁的人,是古希腊文明的光荣,也是人类理性的光荣。

谨以此文纪念这位用生命追求逻辑纯洁性的思想先驱。

猜你喜欢

意指
尚真书院之“尚真”意指浅析
漫画二则
《胖子国》的符号建构:“蓝领”到工人阶级反抗
在可读与不可读之间
影视符号中的草原文化输出
坑爹
疏密相宜节奏畅
绝妙的数字灯谜
雀儿山—川藏路上高、险之最
生活就要Hea出点态度