干掉那个该死的说谎者
今天打算写一下关于数理逻辑的内容
考虑一下接下来这个句子。 (例子1)
(1) 句子(1)说的是谎话
这句简单的句子,就概括了所谓的“说谎者悖论”,如果句子(1)是真话,那么句子(1)描述的内容就真实,那么句子(1)说的是谎话,矛盾。
而如果句子(1)是假话,那么“句子(1)说的是谎话”这个内容是不真实的,那么句子(1)说的是真话。
由此可见,无论怎么假设,都会陷入矛盾。
说谎者悖论在集合论中也有体现,考虑一下这个集合A (例子2)
{A:A是所有不属于它自身的集合组成的集合} ,那么问题来了,A属不属于它自身呢?
假设A∈A 所以A是A中的一个元素,那么A当然具有“不属于它自身”的这个性质,所以A ∉ A 矛盾。
假设 A ∉ A 那么既然A中包括了所有不属于它自身的集合,A又不在A中,那么显然A属于它自身,A∈A,矛盾。
我们不难发现,这些悖论之所以出现,是因为涉及到了自我指涉(self-reference),如果我们规定句子不能自我指涉,是否能将悖论消除呢?答案是不行的。考虑接下来一个例子 (例子3)
(1) 句子(2)说的是假话
(2) 句子(1)说的是真话
假设句子(1)为真话,那么句子(2)说的就是假话了,那么句子(2)的内容“句子(1)说了真话”不为真,那么句子(1)说了假话,矛盾。
假设句子(1)是假话,那么“句子(2)说的是假话”这个内容不为真,那么句子(2)说的就是真话,而句子(2)又说句子(1)说了真话,那么句子(1)说了真话,矛盾。
这个例子里不涉及到自我指涉,但是依然出现了矛盾,由此可见,即使取消自我指涉,依然不能解决悖论。
解决悖论的一个方案是规定语言的层次,我们把描述第n阶句子的真值的句子定义为n+1阶,那么对于例子1,句子(1)描述了自己的真值,所以句子(1)又是n阶又是n+1阶,这当然是不可能的。而对于例子3,如果我们认为句子(2)是n阶的,那么由于句子(1)描述了句子(2)的真值,那么句子(1)是n+1阶的,但是这样,句子(2)本身就没有意义了,因为句子(2)又在描述句子(1)的真值,而低阶句子是不能描述高阶句子的真值的。
同样的处理方案可以用来解决罗素悖论,罗素和怀特海(Whitehead))将一系列基础元素定义为type 0,把这些元素组成的集合定义为type 1,再将这些集合组成的集合定义成type 2,以此类推。罗素悖论在这个集合论体系中也是没有意义的,因为“所有不属于它自身的集合组成的集合”中的元素具有不同的type,因此根本不能被放到同一个集合中去。多想一步的话,可以证明,这个集合论体系中的所有集合都不属于它自身,因为对于任何一个type n+1的集合,它的所有元素都是type n的,而它自身是type n+1的,它当然不属于它自己了。