分“类”而谈——《以类型论为基础的数理逻辑》
对于悖论,罗素有出色的能力,或者说惊人的天赋,去解决它。我们再次以一个悖论来开始今天的内容,这个罗素发现的悖论最后还是由罗素自己解决了,尽管最后遇到哥德尔的不完备定理时,罗素还是没有完成他雄心勃勃的逻辑理想语言计划。这篇文章也是根据《分析哲学导论》的内容结合秋小平的理解改写的。
康托定理是这样的,为了证明任意集合中元素的数目必定小于这个集合的幂集的元素的个数。某个集合的幂集即该集合的所有子集所构成的集合。假定集合S的幂集为P(S)。由于S中的每个元素都可以构成一个单元素集合,这些集合都是P(S)中的元素,所以P(S)的元素个数必定要大于或等于S中的元素个数。现在证明P(S)的元素个数不等于S中的元素个数。假设P(S)中的元素个数等于S中的元素个数,那么总可以构造出一个一一映射,使得对于任一个x∈P(S),有f(x)∈S。f(x)是S中的元素,而x是S中元素的集合,x是P(S)的元素。那么取所有不属于x的f(x)构成一个集合C,显然C是S的一个子集,P(S)的一个元素,那么同样有C对应的一个数f(C)∈S。但是f(C)属不属于C呢?如果f(C)∈C,那么f(C)不是不属于其对应集合的元素,即f(C)不属于C,矛盾;如果f(C)不属于C,那么f(C)恰好又满足C中元素的要求,f(C)应当属于C,矛盾。所以P(S)的元素个数不等于S中的元素个数,那么任意集合中元素的数目必定小于这个集合的幂集的元素的个数。
用形式的方式写出C,C={f(x):x∈P(S)且f(x)不属于x}。令f(x)为等同关系,即f(x)→x,S换为全集U,得到C={x:x∈P(U)且x不属于x},也即:
x∈C,当且仅当,x不属于x。①
若x取C,即得:
C∈C,当且仅当,C不属于C。②
用通俗点的语言说,就是:令所有不是以自身为元素的集合构成的集合为C,C是否是这个集合中的一个元素?若是,那么就不满足C的元素的条件;若不是,那根据C的构成要求,C就应当是它的一个元素。这就是罗素悖论。
总所周知的理发师悖论则是罗素悖论的一个更为通俗的版本:如果理发师只给且必须给那些不给自己理发的人理发,那么理发师自己的头发是不是自己理的呢?若是,那么就违背了他的原则;若不是,则他又恰好符合不给自己理发的条件。理发师悖论的结论很明确,那就是那样的理发师是不存在的;但是类比到罗素悖论的情况就不同了,因为总不能直截了当地说那样的集合是不存在的,我们必须要问为什么,不然必定会引起整个数学界的恐慌。
我们有两条路线解决这个问题,第一条是:①是错的,那样的C根本就不存在,我们需要对集合的定义作出限制。也就是说,我们不能通过谓词来定义集合,通过谓词定义的是一个类,比如“x是红的”,所有的x便构成一个类;而集合只能通过元素来确定,当且仅当两个集合元素相同时,两个集合是同一的。这条路线带来的就是公理集合论,基本上是现在的主流看法。
[if !supportLists]第二条[endif]是:从①到②是错的,不能将C代到x里去,我们需要对集合有意义的范围作出限制。只有有意义的命题才能判断真假,而①到②是不允许的。为什么不允许呢?罗素正是从这条路上对悖论进行解决。
罗素首先对集合进行了分类,建立简单类型论:像“秋小平是会死的”,只涉及一个主目的,类型为(i);像“罗密欧爱朱丽叶”,涉及两个主目的,类型为(i,i);像“‘x是会死的’,这对所有的x都是真的”,主目是另外一个命题的,类型为((i))......这些命题都是不同类型的,区别在于以什么作为主目或函项。可以看出,一个命题只可能从属于某个类型。这样的分类就解决了语义封闭的问题。(如:甲说:乙说的是真话;乙说:甲说的是假话,两人说的都是真话。这在这里是不被允许的,因为甲的语句就属于不止一个类型)
然后将不同的类型分成不同阶,就是分支类型论:以命题作为主目的命题要比它的主目高一阶,命题函项的类型由命题类型和主目类型共同确定。对应到集合的情况是:以个体(不是集合)为元素的集合阶是1,而以以个体为元素的集合作为元素的集合的阶是2,以二阶的集合为元素的集合阶数是3......如此类推。只有同阶的集合才能够比较运算,不同阶的最多只有从属关系。“x∈y”有意义的必要条件是x的类型要比y的类型低一阶。我们普遍说的一个集合以其自身为一个元素,即x∈x,在分支类型论下是无意义的,可以看出公理集合论和分支类型论的区别。
那么罗素悖论就可以解决了,所有不以自身为元素的集合构成的集合要比不以自身为元素的集合高一阶,故这一构成的集合不受它本身的条件限制。这样就一揽子解决了所有指涉自身的命题,因为命题里的主目必须比命题本身低一个阶,故命题不受自身约束。分支类型论带来的直接成果是高阶逻辑的发展。罗素还对“任意”和“所有”作出了严格的区分,变项分为了直接表现和表面变现,但由于理解的问题,秋小平在此就不作叙述了。
在秋小平看来,这样的两种解决方法似乎都不太妥当,因为都对集合作出了更严格的规定,看上去就是为了规避悖论。但为什么我们可以在语言上随意地构造集合、构造命题,但在逻辑上却是不被允许的呢?如果说这些违反规定的说法是毫无意义的,那么为什么我们能够用语言表达出毫无意义的知识,并且加以理解呢?一个不恰当的结论是:日常语言是无意义的,至少是部分无意义的,以日常语言为基础的思维也是如此。。。