《逻辑的引擎》一书里提到希尔伯特的宏伟计划,要构建一个逻辑根基,以至于所有的数学都建立在这个根基之上。哥德尔著名的“不完备定理”让这个计划落空了。但在一开始,哥德尔非常拥护这个计划,还在1930年给出了一个“完备性定理”的证明。它不难(当然是指对那班天才数学家而言不难,对我们来说,呵呵),给出了希尔伯特想要的结果,只用了逻辑学家普遍掌握的技巧。这个完备性定理跟后面著名的“不完备定理”究竟什么关系,要慢慢读下去才知道。
这里讲的完备性定理很好理解,即任何一阶谓词演算(只包含逻辑公理的一阶逻辑理论)中,所有定理都是逻辑有效的,所有逻辑有效的好式子都是定理。前半部分很好证,前面笔记也有所提及。难就难在后半部分,哥德尔在1930年首次给出了证明。后来其它数学家给出不同证明,教材也就采用了后来的证明。
在这里要先介绍一些康托尔集合论的概念,它关系到经常碰到的一个术语“可数的”,英文叫做”countable”,或者”denumerable”。我们经常会看到诸如”countablely many”,”countablely infinite”。这里”可数的”意思是:对于一个无限集A,如果它能与自然数集存在一一对应关系,则
康托尔是第一个研究“无限大”的数学家。在他之前,“无限大”被看作是“不可完成的极限”,因此讨论它不仅没有意义,而且也是危险的。一些哲学家,比如莱布尼茨,认为不可完成的极限是上帝的事,不是人类能关心的事情。但康托尔第一次给出了“无限大”的分类,他说无限大和无限大是不一样的,比如自然数集的无限大和实数集的无限大就不是一回事,但自然数集和偶数集的无限大是一回事。
为此,康托尔定义了集合的基数,用希伯来字母表中第一个字母表示(类似N,这里的latex打不出来)。然后他接着定义如果两个集合能建立一一对应的关系,则它们的基数相等。有限集合的基数就是元素的个数。对于无限集,康托尔用
康托尔是伟大的,他一个人在“无限的深渊”中探索。他的理念遭到一些数学家、哲学家反对,因为讨论“无法完成的极限”是危险的,毫无意义的,而且要证明一个东西是否存在,应该给出构造性证明。而希尔伯特反对这一观念,他给出例子说“一个教堂里显然存在一个头发最少的人,并不需要把每个人的头发数一遍”。 他又说“谁也无法把我们从康托尔创造的乐园中赶出去”,激励了更多数学家沿着康托尔开创的道路探索。更多的八卦,请参考“逻辑的引擎”一书。
让我们回到“完备性定理”的故事,它是说在一阶谓词演算中(即只包含逻辑公理的一阶理论),任一定理都是逻辑有效的。反过来,任一逻辑有效的wf都是定理。前者好证,前面的讨论中已给出证明。关键是后者,它又涉及到各种“存在性”的证明。
我们先尝试用通俗的语言来描述完备性定理的证明。首先看看它难在哪里。在一个一阶理论K中,给定一个好式子
因此,另一种方法是采取“反证法”。证明思路如下:假设
上述证明思路关键在于扩展的理论K′存在这么一个满足⊢M¬B的解释M。为此,
完整的证明需要三个关键引理:
引理2.33:如果
引理2.34:如果K是一致的,那么存在一个
引理2.35:如果J是一致的,完备的,替罪羊式的理论,那么存在一个
上述引理2.33-2.35需要一大堆通俗说明来加强理解。首先,引理2.35中说的是,有这么样一个解释
其次,引理2.33-2.35涉及到一些术语,之后会给出具体定义。这些术语是:闭合项(closed term),扩展理论(extension),完备性(complete),替罪羊(scapegoat),相似性(similar),可数的无限多个(denumerably many)。其中“可数的无限多个”,前面已讨论过,就是能和自然数集建立一一对应关系。
最后,为了证明引理2.33-2.35,还需一些引理以作辅助:
引理2.36:如果B(xi)和B(xj)相似,那么⊢(∀xi)B(xi)⇔(∀xj)B(xj)。
引理2.37:如果一个闭合好式子(不含自由变量)¬B在K中无法证明,那么把
引理2.38:对于一个一阶语言L,它的表达式是可数的。同样,它的项、好式子、闭合好式子,也都是可数的。
引理2.37是关键的,而引理2.36和引理2.38看起来则是“细枝末节”的证明。
下一节笔记将依次给出引理的证明,其中会穿插术语的定义。