当前位置: 华文星空 > 知识

哲学论证有可能像数学一样精确吗?

2013-03-11知识

这是一个非常美好的梦想,其实这个问题本身并不完全是一个哲学问题,至少部分地,是一个关于语言的问题:自然语言有可能像形式语言那样精确吗?

那么我们先来看看 形式语言 为什么可以如此精确,而形式语言本身又到底有多精确。

首先,在谈论形式语言的时候,我们有 元语言 ,在这里,就是我们使用的现代汉语,对于英国人来说就是英语,对于德国人来说就是德语,但是无论如何要有一个在形式语言之前的元语言来帮我们解决一些最为基本的表达需要。没有元语言是不可能进行交流的,因为交流必须要语言(任何形式的语言都行,包括手语),而初始的语言不可能是形式语言(这一点可以由 Quine 关于意义模糊性的论证所确立)。

那么我们开始 构建 一个形式语言。为了简单起见,以常规的逻辑系统中最不复杂,并且应用最为广泛的命题逻辑(Propositional Logic)为例:

一个命题逻辑系统包含以下 基本符号

常元 符号:

命题常元符号:a_1,a_2,a_3,\ldots (一个系统中可以没有命题常元符号)

一元逻辑连接词:\neg

二元逻辑连接词:\vee

变元 符号:

命题变元:p_1,p_2,p_3,\ldots

辅助符号:( , )

以及 导出符号

逻辑常元:\top:= p_1\vee(\neg p_1) ; \bot:=\neg \top

二元逻辑连接词:\phi\wedge\psi :=\neg ((\neg\phi)\vee(\neg\psi)) ,\phi\rightarrow\psi:= (\neg\phi )\vee\psi , \phi\leftrightarrow\psi:=(\phi\rightarrow\psi)\wedge(\phi\rightarrow\psi) (其实\wedge 和\rightarrow 也可以作为基本符号,而将其它二元逻辑连接词视作导出符号)

其中「:= 」是 元语言 中的符号,表示右边的式子 定义 了左边的式子,或者,左边的式子是右边式子的 缩写 ,而\phi 和\psi 也都是 元语言 中的符号,用来代指 合式公式 。很难想像在没有元语言的情况下要如何构造形式语言。除了基本符号和到处符号,命题逻辑中 不包含任何其它符号 , Godel 的处理方式更为激进,他为了简便而不采用数字下标,形如x_1,x_2,x_3 的符号被他记作x,x',x'' ,不过这仅仅是一些技术处理上的细节。

所谓 合式公式 (WFF: Well-formed Formula,不是「合适公式」!摔!),就是符合语法规则的公式,比如说p_1\neg p_2 就 是一个合法的公式,p_1 \vee \neg 也不是。

一个 WFF 是:

  • 一个原子公式(无论是命题常元还是命题变元),或者,
  • 形如(\neg \phi) 的公式,其中 \phi 是一个 WFF,又或者,
  • 形如(\phi\vee\psi) 的公式,即由二元连接词连接的两个 WFF。
  • 此外 没有别的 WFF 。当然,括号是用来确定优先级的,所以如果我们采用波兰式或者逆波兰式的记法,那么括号就是没有必要的,此时合式公式的生成规则也就和上面的生成规则不同了,如,写成波兰式的 WFF 的生成规则是:

  • 一个原子公式(无论是命题常元还是命题变元),或者,
  • 形如\neg \phi 的公式,其中 \phi 是一个 WFF,又或者,
  • 形如\vee\phi\psi 的公式,即由二元连接词连接的两个 WFF。
  • 为了方便,我们在书写中缀表达式的时候可能会省略某些括号,比如说一个公式的最外层括号,或者,在明确优先级的情况下,省略某些不改变语义的括号。但是此时这串字符就不再是一个 WFF,而仅仅是一个元语言中为了方便起见而采用的字串。你可以理解为「三亚海天盛宴.avi.rar」不等于「三亚海天盛宴.avi」,因为前者不是一个可播放文件,虽然通过它你可以准确地得到你想要的东西。


    说到这个,我们会发现, 自然语言几乎没有所谓的 WFF ,很多时候我们可以理解一个残缺不全的,或者顺序混乱的句子,因为我们不是通过 syntax 来理解句子,而是通过 semantics 来理解句子。当然,概念的澄清还是必要的,概念之间的结构虽然不会以句法的形式强行规定出来,但是还是存在某种特定的结构。

    此外,正如下面指出的那样,形式语言的意义是确定的。当然,逻辑本身的意义就是可以广泛代入各种别的东西,然后构成一个个具体的论证。但是另一方面,逻辑常项的解释是确定的。比如说在日常语言中,蕴含可能是指相干蕴含。这样,反事实条件句才有可能是错的,如「如果太阳从西边升起,那么它就从东边升起」本身是一个反事实条件句,而在日常意义下这句话也应该是错的(但是作为一个前提为假的条件命题来说是对的)。日常语境中,不同意义的「或者」以及「推出」/「蕴含」是被混用的。从这个意义上来说,形式语言的语义确定性也是精确性的基础。


    之后,我们有两套模式来分别进行处理这些公式,来看它们到底是不是「好」的公式,或者,看一个推理(即,从一个公式集出发,得到一个公式的过程)是不是「好」的推理。这两套方式中,一套是内功,一套是外功。

    所谓内功,就是 语义 的方式,语义将 体现为一种对于符号来说内在的东西,即,通过规定一元和二元 逻辑连接词 \neg 和\vee 的 运算规则 ,来得出每个公式的真值条件,进而让我们知道什么推理是 语义有效 的(无论出现的命题变元如何赋值,只要所有前提集合中的 WFF 都为真,那么结论也为真),一个命题集合的 语义后承 是什么。由于真值只有两个,所以一元算子的真值表可以通过一个两行的表格给出,而二元算子的真值表可以通过一个四行的表给出。(事实上命题逻辑里面采用的是一个更为严谨的表述方式,但是这种表述方式本身涉及到了元语言中的「和」「或」「推出」「当且仅当」等逻辑词汇[3])

    另一方面,我们有一套外功,之所以说是外功,是因为这里我们并不在乎符号的意义,而通过外部强加规则的方式,来限定符号的意义,也就是采用一个 证明系统 ,比如说希尔伯特的证明系统(它包含了三条公理模式和一个推理规则,或者说三条公理和两个推理规则)[1]。通过这些 公理 规则 ,我们可以进行 定理证明 句法推理 。进而,我们可以知道,在系统内,哪些命题是可证明的,哪些推理是句法有效的,一个命题集合的句法后承是什么。

    幸运的是,对于命题逻辑来说,一般的(也即正常的那些)命题演算系统[2]中,通过证明系统和通过语义定义得到的结果是相同的,即:凡是有效的语义推理都是有效的句法推理(强完全性),反之亦然,凡是有效的句法推理都是有效的语义推理(强可靠性)。而定理和真命题就分别可以视作从空集分别以证明系统和语义的方式推出来的那些命题,于是就有:凡是真的都是可证的(弱完全性),以及,凡是可证的都是真的(弱可靠性)。

    当然,命题演算系统对于日常语言来说是表达力不足的,比如说,我们无法通过这个系统解释三段论的有效性。因为任何一个三段论都是「p, q 推出 r」式的。而这显然不是一个有效的命题演算。

    所以人们 修改 了命题逻辑,在保留逻辑常元符号(一元和二元连接词,导出符号\top 和\bot )的基础上(当然,导出符号的定义也修改了,比如在有等词算子「=」的一阶逻辑中,两个符号分别被定义为「a=a」及其否定),将命题进一步分解,每个原子命题都是一个作用在 n 个词项上的 n 关系,而每个词项要么就是一个原子词项,要么就是 m 个原子词项在一个 m 元函数作用下得到的一个新的原子词项(比如说个体的人作为原子词项,那么 f(a,b)=c 就可能被解释为:「c 是 a 和 b 的长子」,其中「=」 是一个二元关系)。然后有了更为复杂的一阶系统。但是由于谈论这个系统实在是太麻烦了,要设计到基础的模型论,所以暂且略过不谈。

    当然,一阶逻辑的表达力也是不够的,虽然这个东西已经足以让我们去处理一些哲学问题,比如说:关于上帝存在的本体论论证。

    Frege 将上体的本体论论证的结论视作一种非法的公式,他认为,「上帝存在」是一个非法的句子,我们可以说「秃头男人存在」,这样就是说\exists x(Bold(x)\wedge Male(x)\wedge Man(x)) ,此时,存在这种性质是作用于属性(这里是三个属性的合取)上的二阶性质。此处 x 作为约束变元仅仅是一个占位符。但是,上帝不是属性,而是一个个体,所以「上帝存在」这句话是非法的。因为它没有办法表示为一个一阶逻辑的命题。(当然,这里本身也涉及一些关于专名的复杂性的问题,暂且不理)即便一阶逻辑看上去很有用(比如说罗素的摹状词理论整个就是搭建在一阶逻辑上),但是这个系统甚至没有办法帮我们表达某些简单的数学定理,比如大家都知道的 确界存在定理 :有上界实数集均有实数上确界,这个定理必须用二阶逻辑进行表述(注意开头的全称量化是针对所有实数集合 S):\forall S(\exists m(\forall x\in S( x<m))\rightarrow \exists y(\forall x\in S (x\leq y)\wedge\forall z( \forall x \in S(z\geq x)\rightarrow (z\geq y))))

    所以,人们 扩充 (而不是修改)了一阶逻辑,让它能够对 性质 进行量化,进而有了高阶逻辑(如二阶逻辑),又有人为了表达模态词「可能」、「必然」而创造了模态逻辑。但是,这时哥德尔告诉我们,凡是一个能够表达自然数系统的一阶逻辑的扩充,都是不完全的,即,存在不可证明的真命题。

    总的来说,对于一个逻辑系统,表达能力和 优良的性质 (如可判定性、计算复杂性、强/弱完全性、紧致性)之间是一对矛盾: 表达能力越强的系统,优良性质就越少 ,而且,进行判定的复杂度就越高。后面这一点可以从命题逻辑和一阶逻辑之间的差别体现出来:命题逻辑中的判定是可停机的,而一阶逻辑中不存在一个有效的判定方法,即,如果一个公式是正确的,那么系统最终能够证明这个公式,但是如果这个公式是错误的,或者不是系统中的一个定理,那么系统就不会停机。

    而像是那些不具有完全性的系统,则直接没有可能通过证明系统中的机械的句法的演算来进行语义有效性的判定。

    显然,人类的自然语言是无穷阶的,因为我们可以采用任意的量化来进行讨论。当然,有人会问,既然如此,我们为什么不去限定自己的语言呢?就像是 Frege 做的事情那样:通过一阶逻辑或者某些一阶逻辑的优良拓展(如一阶模态逻辑)来限定我们的语言。

    这个理想自然是很好的,事实上分析哲学也基本上就是起源于这样一种思想: 将能够说清楚的都说清楚 对不能说清楚的保持沉默

    但是,哲学和形式系统之间有一个本质上的区别:形式系统是一种 工具 ,其合法性是 外在的 ,我们会通过别的手段(如逻辑哲学)来为之进行证明或者辩护。但是哲学不同,哲学负责解决那些需要澄清的问题。比如说「科学是什么」不是一个科学问题而是一个哲学问题,「『美』是什么」也是一个哲学问题,「『善』是什么」不是一个规范伦理学问题,而是一个元伦理学问题,最后,「哲学本身是什么」也是一个哲学问题。这也就使得哲学的研究对象、研究手段等问题都需要哲学自身来回答。

    在形式系统中,我们可以有很多系统外的理由来为使用这样一个形式系统来进行辩护,但是如果我们希望哲学本身也限定在某些内容或者某些研究近路上,那我们就必须为哲学的这种选择提供一个系统内的辩护,而这种辩护本身必然不能使用形式化的方法,因为你恰好就是要为形式化的合法性来进行辩护。

    以上是第一个问题。

    将第一个问题放大,其实可以得到一种对于理性的质疑,以及,对于「理性基础」这一概念的质疑:理性既然是以工具的形式呈现在我们面前的,是否可能存在一个所谓的理性基础?比如,你应该如何给出一个演绎有效的论证,证明自己应该活着,或者,证明杀人是不对的?我们最后可能会诉诸情感,但是即便如此,我们依然不能为这个行为本身提供一个辩护,而如果我们诉诸本能的话,那么事实上我们就是在逃避使用理性的方式。当然,我个人是反对理性基础的概念的,所以我会毫不犹豫地承认,存在一些理性没有办法解决的问题,关于问题背后的依据,完全是非理性的个人喜好。


    第二个问题,是 形式化的困难性 。或许这才是真正的困难。对于数学,我们在形式化的过程中是没有异议的,当然,这种异议也并不是绝对没有,比如说毕达哥拉斯不认为无理数应该被囊括入论域中,进而否定无理数的存在。也有很长一段时间,人们否认虚数单位i 的存在。非欧几何的发展的困难也说明了这样的问题。类似的,还有对于无穷大的概念(实无穷)等等。Quine 在 On What There Is 中的观点是非常正确的:如果一个人认为某个东西在本体论上是存在的,那么这种想法对于这个人来说必定是 trivial 的。

    我们可以通过 Quine 给出的本体论承诺的标准判断一个系统是否承诺了某个实体(认为某个实体存在),只需要看这个实体是否能够 作为 一个(一阶)量化表达式中 约束变元的值 存在于 值域 中就行了。比如说在实数域中,无理数存在,但是在有理数域中就不是这样,因此我们可以说,实数的本体论承诺了无理数,而有理数的本体论没有,更具体一点,我们可以将前面的「无理数」替换为「\sqrt{2} 」或者「\pi 」。但是,对于论域本身的问题,没有办法通过形式系统解决。因为论域的确定是 先于 形式系统的。与本体论相关的哲学问题往往在形式系统构建之前就提出来了。

    形式化的困难性同时也体现在个人经验的私有性上。相信现代医学肯定会出现这样的情况:仪器检测出来的数据显示完全没有问题,但是患者却自己觉得有问题。这种私有感觉使得对应的语言是不可能的。你指向的东西对于别人来说可能不存在,就像一个女人对男人说痛经,男人对女人说蛋疼那样,实际上是没有可能交流的。

    作为普通的经验交流,我们似乎还能忍受这种无法指称的问题,因为感觉经验似乎和哲学关系不大,但是当我们涉及神圣的存在,比如说上帝的时候,这就变成讨论的困难之处了:基督徒并不试图 证明 上帝存在,他们只是在 描述 上帝是如何存在的,而非基督徒们把这个当成了证明,这直接导致了交流无法进行。这也是前面的论域困难性的一个例证。


    除了确定论域的困难, 翻译的困难 也是阻碍哲学形式化的一个严重问题。

    知识 为例,最经典的 JTB 定义中,知道算子K_\alpha\phi 被定义为下面三个条件的合取:

  • \phi (知道的命题是真的)
  • B_\alpha\phi (一个人知道的命题是他所相信的)
  • J_\alpha (B_\alpha\phi) (His belief is justified)
  • 第一个条件是正常的,第二个条件就已经会引发一些问题了。比如说,信念算子是否是对于逻辑后承封闭的?一个人相信一族命题,是否就会相信这个命题集合的所有逻辑后承?

    但是关键还是在于第三个条件中的 J 算子,这里 J 的意思是,\alpha 相信\phi 的行为是 受到辩护的 (justified),但是这个算子暂时还 没有一个公认的形式化方案 (一阶逻辑中给出单纯的一个词是不够的,你还要给出对应的模型)[4]。因为对于辩护的弱的要求会使得一些碰巧猜中或者经过错误的推理得到的信念也被囊括入知识中,而对于辩护的过于强的要求则会导致不可知论。

    而在 Nozick 关于知识的定义中,他将第三个条件改写为一个模态语句:

    \Box (\phi\rightarrow B_\alpha\phi )\wedge\Box(B_\alpha\phi\rightarrow\phi)

    即,在我们这个可能世界 可以通达的所有可能世 界中,如果事件\phi 发生了,我就会相信它,如果事件\phi 没有发生,那我就不会相信它(根据逆否命题得到上面的第二个分支)。

    但是并不是采用了模态公式就能解决问题,因为在确定模态公式之后,我们还需要确定 可能世界的结构 ,显然,我们这里「所有可以通达的可能世界」并不是指所有的可能世界,而应该是那些和我们这个可能世界相差不大的可能世界。但是这个「相差不大」本身就是一个难以形式化的词汇,而如果我们考虑的是所有可能世界的话,那么就会得到比休谟命题更为强的一个结论:我们不可能拥有任何关于经验的知识(特称的知识都不行,因为一个事件发生之后,总存在一个可能世界,使得在这个可能世界中「\phi 发生了」为真而「我相信\phi 发生了」为假。)


    伦理学中也会遇到形式化之后产生的困难。比如,道义逻辑中,一方面,我们会发现很多时候命题演算中正确的推理模式没有办法应用,比如说,在标准的道义逻辑系统里面,会有如下经典悖论:

    首先,Op\rightarrow O(p\vee q) 是一个系统内可证明的公式,其中 O 表示应该算子,p、q 是命题。

    于是得到悖论:如果你应该寄出这封封信,那么你应该寄出这封信或者烧了它。

    类似的,对于允许算子也有这样的可证公式,于是我们有:

    如果你可以喝水,那么你就可以喝水或者喝酒。

    当然,通过技术手段可以避免这些悖论,但是很容易看出来,日常语言和形式语言中的「且」和「或」是不尽相同的。因此,我们不能直接形式化。而要在形式化的过程中仔细考量形式化本身是否正确反应了语言,以及,得到的形式语言的结论要如何才能正确的变为元语言中的语句。而这个过程是不可能由形式化的方式来进行的。哲学比起数学,在某些层面上更像是应用数学:关键不在于技巧性的、机械性的地方,而在于建模的过程是否和事实一致。

    关于伦理学的另一个困难就是,道义逻辑本身的假设就是已经假设了善的存在。它一开始的设定了一个 d,用以表示所有的道德义务,然后将Op 定义为\Box (d\rightarrow p) ,即,在每个可能世界中,p 都能从 d 中推出,换而言之,p 在任何情况下都是一个道德义务。但是问题在于,这里的 d 本身是什么是没有办法通过逻辑系统给出来的,这种元伦理学问题和前面的本体论问题一样,是要先于形式系统确定的。

    和伦理学类似,涉及审美判断的美学也有这样的问题,我们自然可以在有了「美」的概念的基础上建立一个形式系统,但是美学要问的就是:美是什么?

    而政治哲学就更不用说了,关于自由、平等、正义这些概念,形式化仅仅是方便大家理解,而没有办法为形式化本身的合法性作出辩护。


    据此,我们可以看到,哲学的几个重要分支都的根基都没有办法踏入形式化的领域内,而这些根本的问题也恰恰就是哲学最为关心的问题。不过正是因为如此,哲学才是有趣的。正如同 XXX 的吐槽那样:代数学家是把灵魂出卖给恶魔的人,依靠直观的几何才是更为有趣的东西。


    [1] Hilbert 的公理系统可以写为如下两种模式之一:

    第一种:三个公理模式加一个规则:

    (\mathcal{A}\rightarrow(\mathcal{B}\rightarrow\mathcal{A}))

    ((\mathcal{A}\rightarrow(\mathcal{B}\rightarrow \mathcal{C}))\rightarrow((\mathcal{A}\rightarrow \mathcal{B})\rightarrow(\mathcal{A}\rightarrow\mathcal{C})))

    (((\neg\mathcal{A})\rightarrow(\neg\mathcal{B}))\rightarrow(\mathcal{B}\rightarrow\mathcal{A}))

    为什么说是公理模式呢?因为这里的\mathcal{A} 、\mathcal{B} 、\mathcal{C} 都是元语言中用来代表合式公式的符号。换而言之,这个系统中有无穷多条公理。

    至于推理规则,就只有一个 MP 规则:\phi,\phi\rightarrow\psi\vdash\psi ,中间的\vdash 表示证明系统中的推出,并且,这里的\phi 和\psi 也都是元语言中代表合式公式的符号。

    第二种:三条公理加两个规则:将上面的 A、B、C 换成原子命题,然后外加一条代入规则。

    当然,Hilbert 的系统里面是没有剩下的三个二元连接词的,因为不必要。

    [2] 所谓正常自然是和不正常相对应的,比如说,如果一个公理系统中包含了 MP 规则,同时还包含了一个自相矛盾的公理,那么任何一个命题都是这个系统的定理。这样的系统也是一个系统,但是显然是不好的,因为这个系统是不一致的。类似的,如果一个公理系统没有办法推出某些真命题的话,那么这个公理系统也是不够好的。所以事实上这里所说的是一句废话,因为一个足够好的公理系统就必然能够完整地,并且毫不多余地刻画语义推理。进而,不完全性定理就可以理解为,在给定了语义的情况下,不存在一个足够好的系统。

    [3] 事实上, 即便是简单的命题逻辑,在处理这些东西的时候也比想象中的要复杂。

    首先要定义的是一个赋值,一个赋值是一个函数 V,定义域是原子命题的集合,值域是\{\top ,\bot\} 。

    进而,通过赋值定义模型,由于命题逻辑不是一阶逻辑,所以一个模型\mathfrak{J} 就仅仅包含了赋值函数。

    进而我们有如下的关于语义后承\models 的递归定义:

  • \mathfrak{J}\models p 当且仅当V(p)=\top
  • \mathfrak{J}\models\neg\phi 当且仅当并非\mathfrak{J}\models\phi (由于这里的逻辑是二值的,并且赋值函数在所有出现过的原子命题的集合上是有定义的,所以, \phi 以及 \neg\phi 两者必有一个成立)
  • \mathfrak{J}\models\phi\vee\psi 当且仅当\mathfrak{J}\models\phi 或者 \mathfrak{J}\models\psi
  • 我们将这个模型的语义后承\phi 称为在这个模型上可满足的。进而,将那些在任何模型(即是任何赋值)下都可以满足的公式称为有效的(永真的)。注意,这里的「当且仅当」、「并非」以及「或者」,都是元语言中的符号。

    可以注意到,这个定义是一个递归定义。

    [4] 比如说,下面两句话具有相同的结构,但是真值却不同:

  • 牛不是马,所以牛头不是马头。
  • 牛不是马,所以牛的祖先不是马的祖先。
  • 这里本质的问题在于,「X 的头」和「X 的祖先」这两个函数(不是性质,而是函数,因为「X」 的头是一个对象)具有不同的结构,对于一般物体来说「X 的头」和「X」是一一对应的,所以推理成立,而对于祖先来说,不同的个体可能共有一个祖先,进而破坏了推理。所以,前面的推理的有效性实际上是建立在函数「X 的头」的特定模型上的。所以,无论是模态逻辑还是一阶逻辑,给出最为基本的符号还是不够的,同时还有给出一个讨论的模型。或者, 在不确定某个具体模型的情况下,给出满足某个性质的一族模型所构成的框架类(这个是针对模态逻辑)。