羅素問題 ——來自知乎大神


作者:LLLBK
鏈接:https://www.zhihu.com/question/20511488/answer/133390930
來源:知乎
著作權歸作者所有,轉載請聯系作者獲得授權。

知乎相關領域的大神已經很多了,但是大神好像不太能脫離術語說話,並且沒有人提到羅素本人的解決方案——類型論。所以還是答一下。

我的回答分三部分:澄清羅素悖論的一些誤解,以ZF系統為例說明公理集合論如何避免羅素悖論,不精確的介紹羅素本人提出的類型論。



首先真的想澄清一點:
羅素悖論不等於理發師悖論!理發師悖論嚴重誤導了沒有相關知識背景的人!

為什么這么說?理發師悖論中定義了一個這樣的理發師:只給那些不給自己理發的人理發,然后分析“他應不應該給自己理發”這個問題,最后得出:“他應該給自己理發”等價於“他不應該給自己理發”。而這是一個矛盾。
但是想想看,以上論證過程不正是一個歸謬論證么?從一定的前提出發,經由邏輯推演最終得出矛盾的結論,這不就是歸謬法嗎?而歸謬法說明了什么?不就是說明了這種理發師根本就不能存在嘛。所以 理發師悖論實際上是在告訴我們,這樣的理發師是不存在的。這有什么問題嗎?並沒有啊!這算什么問題,這就能帶來數學危機?開什么玩笑。

我們再看羅素悖論:首先定義一個性質P:"不屬於自己",然后定義一個集合S,這個S就是滿足P的那些集合構成的集合,也就是問題敘述中的“全體非本身分子集合構成的集合”。那么類似理發師悖論,我們就會發現,用歸謬法可以證明這個S並不存在。So far so good. 這個S不存在又有什么關系?
還真有關系,因為素朴集合論有一條 概括規則:
對於任何一個合理的性質P,都存在一個集合來刻畫它,這個集合由所有滿足P的對象構成。(合理的,指的是外延明確的,也就是我隨便找一個東西一定可以判斷它有還是沒有這個性質,不會出現既有這個性質又沒有這個性質的情況,也就是任意a,要么Pa要么 \negPa。)
比如“是大寫英文字母”這一性質就可以確保{A, B,..., Z}這個集合是存在的。這條概括規則可以說是素朴集合論最基礎的規則之一。回過頭來看羅素悖論里的那個性質P,它顯然是合理的性質,那么 根據概括規則S就必須存在,但是歸謬法已經證明了S不可能存在,這里出現了關於S存不存在的矛盾。這個矛盾才導致了羅素悖論。

既然出現了矛盾的結果,那就正好說明了概括規則是有問題的,是有內在矛盾的。換句話說, 理發師悖論只不過是羅素悖論證明過程中的一個部分,它用“S屬不屬於自身”這個矛盾證明了S不可能存在。然后我們再用概括規則證明了S必須存在,這個“S存不存在”的矛盾說明了概括規則的內在矛盾性,導致了素朴集合論的崩潰。所以請不要再拿理發師悖論來類比羅素悖論了,一個小小的理發師不存在並不能導致數學危機。

啰啰嗦嗦了半天還沒進入正題,只是希望澄清一下許多人對羅素悖論的誤解。




公理集合論的進路( ZF(C) , NBG(C) , ...)

素朴集合論推出了邏輯矛盾,邏輯矛盾難道還能解決?顯然不能,我們只能放棄素朴集合論。但是素朴集合論之前是作為整個數學的基礎存在的啊,放棄了之后總不能撒手不管了,肯定得提一套新的理論出來作為數學的基礎。這里有幾種進路,其中一種就是其它答案中提到的公理化集合論的進路,也是主流的進路。

需要注意到,用理發師悖論式的證明來得出S不存在,這是不需要依靠集合論本身的,只需要用最基礎的邏輯就夠了,因此不管你集合論長什么樣子,反正“S不存在”是必然為真的。
我們需要做的是,構造一個新的集合論,使得這個集合論本身也能推出“S不存在”,而不是像素朴集合論的概括規則一樣推出“S存在”。這才是我們的最終目標。下面都是在圍繞這個目標。

素朴集合論除了概括規則以外,其它的很大一部分都挺好的,總不能全盤否定。所以大家覺得應該改進而不是拋棄。改進的辦法就是,對集合做出各種限制,從而避免出現羅素悖論那種情況。下面以ZF系統為例,用人話說一下究竟是怎么避免了羅素悖論。我們需要證明的是,ZF系統無法推出“S存在”,那么矛盾自然就消除了,根據理發師悖論的歸謬證明,就可以得出S不存在了。

ZF系統是一個純粹的公理系統,它的公理模式規定了集合的一些性質,以及如何從已有的集合產生新的集合。通過這些公理來達到對集合做出限制的目的。有一條公理叫 “分離公理”跟概括規則長得很像,它說的是:
對於任意集合x和任意合理性質P,都可以產生出一個集合y,y由x中那些滿足P的元素構成。(這里的合理和上面的合理不太一樣,這里的合理指的是可以用該公理系統中的合式公式來刻畫,不過這不是關鍵,所以我還是用了合理二字)
通俗的說, 分離公理就是給概括規則加了個限制:由性質P定義出集合,必須在現有的集合內部分離出那些滿足P的集合,不能像原來那樣沒有邊界。

還有一條公理叫 正則公理
任意非空集x,里面肯定包含了一個元素y,使得x和y沒有公共元素,也就是 x\cap y=\emptyset

還有一條 xx公理保證了,如果x是集合,那么{x}也是集合,這條公理具體名字我不記得了...


下面寫一下ZF系統避免羅素悖論的通俗版(說了是通俗版就不要噴不嚴謹了吧):

對於任意x,根據 xx公理,可得{x}也是集合。由於{x}是集合,所以根據 正則公理,{x}里面有一個元素跟{x}本身交集為空,但是{x}里面只有一個元素x,也就是說x跟{x}不相交, x\cap\{x\}=\emptyset,也就是說x不是自己的元素。因此, \forall x, x\notin x
而羅素悖論里定義的那個S是什么?就是所有不屬於自己的集合構成的嘛,既然每個集合都不屬於自己,那么S就是所有集合構成的集合,也就是大全集。但是根據 分離公理,要想通過性質P定義出一個集合,必須從已有的集合里面分離出來,但是哪個集合能分得出大全集啊...顯然,沒有一個集合有這樣的本事可以分離出一個大全集。所以,根據公理集合論可以推出:大全集S(也就是羅素悖論里的那個S)是不會存在的,既然S不存在,那么就不會產生羅素悖論中關於“S存不存在”的矛盾,因此就避免了矛盾。

嚴謹的證明版本如下:
假設存在大全集,那么對性質“ x\notin x”應用分離公理,就可以得到 S=\{x|x\notin x\}是一個集合,但是經過分析可知 S\in S當且僅當 S\notin S,發生矛盾,因此假設錯誤,大全集不存在。而S其實就是大全集本身,因此S也不存在。因此不會產生羅素悖論中關於“S存不存在”的矛盾。證畢。




類型論的進路
(有更新,因為之前我自己對類型論的理解有偏差)

上面是ZF系統的解決方案。公理集合論的方案是主流方案,但其實羅素本人也想出來了一個方案——類型論,不知道為什么所有的答案都沒有提到,雖然類型論確實不是主流,但好歹是羅素本人提出來的,給個面子也應該介紹一下啊......

我們先跑個題,看看說謊者悖論:這句話是謊話。
這句話之所以成為悖論,是因為它描述的對象正好是它本身,它在試圖談論自己本身的性質。
理發師悖論其實也來源於這種 自指——理發師說的話里面包含了
作者:LLLBK
鏈接:https://www.zhihu.com/question/20511488/answer/133390930
來源:知乎
著作權歸作者所有,轉載請聯系作者獲得授權。

他自己。
一般的說來, 自指總會導致一些不好的事情,比如數論系統的自指導致了哥德爾不完全性定理,判定一切圖靈機停機的圖靈機的自指導致了停機問題,而 S=\{x|x\notin x\}的自指則導致了羅素悖論。

羅素想要一網打盡由自指產生的問題,他在《數學原理》中說:
使我們能夠避免不合法總體的那個原則可以陳述如下:“凡是牽涉到一個匯集的全體,它本身不能是該匯集的一個分子”......必須使關於總體的陳述不屬於這個總體的范圍之內。

羅素提出了一個很直觀的解決方案—— 分階。(也叫分類型,分type)

直觀地認識這個世界,人會覺得世界是由一個一個的個體對象組成的,比如蘋果桌子電腦手機等等,這都是現實中存在的實體。我們把這種東西叫做對象,它們屬於type 0.
對象可以構成集合,比如一袋蘋果,幾部手機,這些都是對象構成的集合。這樣的集合我們稱為type 1,一階的集合。
一階集合自己也可以構成集合,這就是“集合的集合”,這和對象的集合顯然有區別,我們稱這種集合叫type 2,二階集合。
......
類似的可以構造更高階的集合。顯然,只能是高階集合包含低階對象或集合,不能同階之間包含,更不能低階包含高階。 按照這種規定,我們根本不能籠統的稱一個x是集合,我們只能稱它是哪一階的集合。
現在我們看 S=\{x|x\notin x\},由於類型論精確了集合的概念,我們就得問,這個S究竟是哪一階的集合?會發現它哪一階都不是,證明如下:
對任意n,假設S是n階集合,對n+1階集合x來說,由於 x\notin x,那么就有 x\in S,則違反了類型論的規定,故假設錯誤。因此,對任意n,S都不是n階集合。這就把S排除在集合概念之外了,避免了羅素悖論。

這還不夠。

集合論的語言是什么?是一階語言,也就是包含 \forall, \exists, x, \neg, \vee,\dots等等的語言。我們要對集合論進行類型化,為什么不 干脆完全改造一階語言?別忘了羅素是誰,羅素是理想語言主義的領軍人物,他甚至想着改造自然語言以適應邏輯語言。改造一階語言具體方案如下:

(以下可能需要一些一階語言的基礎,但我會盡量用人話說...)

先簡單提一下一階語言: \forall,\exists,\wedge,\vee,\rightarrow這些就不說了,那些構成公式的規則也不說了,基本謂詞PQR這些也不說了,這些都可以自行查找。這里的關鍵是, 一階語言是要有論域的,論域就是我們應用一階語言去談論的東西。一階語言本身沒有任何意義,它只是一堆無意義的符號而已。 只有當我們指定了論域,也就是指定了我們到底用符號在表示什么東西, 一階語言才是有意義的

一階語言的論域,就是0階的對象,和0階的對象變元。對象就是前面說過的那些,比如“蘋果”“足球”這種個體實體。對象變元就是用來指代不確定對象的一個記號,也就是x啊y啊這些可以構成 \forall x, \exists x的量化公式的變元。

一階語言的謂詞(也就是性質),是針對0階的對象和對象變元而言的。基本謂詞“P,Q”(比如“是紅的”、“是圓的”)等等當然算一階謂詞,因為它們是直接描述0階實體對象的性質的。但一階謂詞還包括一些更多的東西,比如這個:“存在一個論域中的對象x,x的顏色和...不相同”。這里描述的也是一個0階對象的性質,這個性質就是“有一個顏色不相同的x存在”。

一階命題當然就是用一階謂詞描述具體0階對象性質的那些命題啦。比如“這個蘋果是紅的”“存在一個東西跟這個蘋果的顏色不同”等等,都是一階命題。


二階語言想要描述的是一階的東西,包括一階謂詞和一階命題。具體的做法就是,在原有的論域中加入所有的一階謂詞和一階命題,然后在語言中加入一階謂詞常元變元和一階命題常元變元。

這樣說好像不太好理解,直觀的說就是二階語言談論的對象不僅包括原有的0階實體對象,還包括一階語言中的命題和性質。那么 二階語言中的“性質”(二階謂詞)就應該是“性質的性質”“命題的性質”,二階命題就應該是“性質的命題”“命題的命題”。舉例來說:“甜的”是一個形容食物的一階謂詞,那么 “用來形容食物的” 就是一個二階謂詞,它描述了“甜的”這一謂詞的性質。對應的二階命題就是“甜的 這一性質是用來形容食物的”。
為了更好地理解二階性質和二階命題,可以把它跟一階進行對比,“蘋果是甜的”描述的是蘋果這一實體的性質,“甜的 這一性質是用來形容食物的”並沒有描述任何實體的性質,它是“甜的”這一性質的性質。

類似的,可以構造更高階的語言,只要把低階的命題和謂詞納入論域,並且在語言中添加相應的謂詞常元變元和命題常元變元就OK。高階命題描述的是低階對象的性質。這里精確化了“命題”“謂詞”的概念,將命題和謂詞分階了。

這種類型論理論上可以消除一切由於語言上的自指而產生的悖論。比如說謊者悖論,“這句話是謊話”,這句話到底是哪一階的命題呢?不管它是哪一階的命題,它都不能描述自己,因為一個命題只能描述比自己更低階的東西。因此這句話不是一個合法命題,不是命題也就沒有什么真假之分,因此不構成悖論。


類型論還是很直觀的,“關於命題的命題”“關於性質的性質”“集合的集合”,好像確實跟普通的命題和普通的性質和普通的集合有分別,確實高一個階層。 但這種類型論並沒有成為主流,原因如下:

從數學上說:集合論是要用到數學上的,一階語言更是數學的基礎語言,類型論不允許我們籠統的說“所有的集合”“所有的元素”等等,必須區分階才能繼續討論。這給數學帶來很大的麻煩,比如我們用集合論刻畫自然數有一種方法是0= \emptyset,1={0},2={0,1},3={0,1,2}...這時要討論自然數的性質就很麻煩了,每個自然數階數都不一樣。

從哲學上說:類型論要面臨一個很重要的問題——“是真的”這一謂詞屬於哪一階?我們可以說一階命題“蘋果是甜的”是真的,也可以說“甜的 這一性質是用來形容食物的”這個二階命題是真的,我們可以說任意階的命題是真的。那么“是真的”就高於任意的階,但階數是無窮的,因此這是不可能的。
當然,支持類型論的哲學家有自己的辦法,比如:可以否認“是真的”是一個謂詞,他們可以說“真”並不是命題的性質。
不考慮上述哲學上的撕逼。還有一點就是,類型論管得太寬了。他禁止了一切形式的自指,然而並非所有自指都是壞的或沒有意義的,比如“這句話有七個字”就不是壞的。有些自指是有必要的,比如書的末尾賣個萌寫上“這句話是本書的結尾了”。



這就是本回答的結尾了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM