最近疫情在家裏,閒來無事,因而打算搞搞學習。程序員
所剩很少的幾門課裏,最感興趣的就是Logik,也就是邏輯學(主要是由於簡單)。學了兩天,看了很多維基百科,越學越有意思,又看了一些書,才發現這門課還真的挺有意思的。編程
當我開始寫本文的時候,我是想以一種對於課業的總結的形式總結一下我最近幾周的學習和思考,從一開始的僅僅只是習慣性的梳理課件中的內容,到和最近看的衆多書相聯繫,最重要的是,和我這一年以來的工做經歷相聯繫,在寫做本文的同時,也終於讓我可以知行合一,從實踐中去學習和思考。這對於我來講是無比重要的。框架
哥德爾是一位出生於奧匈帝國的邏輯學家,發生在他身上的一切,就好像是二十世紀世界權利變遷的一個縮影,他從小生活在捷克,那時候捷克,也就是波西米亞,仍是奧地利的皇冠領土,隨後前往維也納讀大學,在希特勒吞併奧地利的時候自動成爲德國人,最終在美國的普林斯頓逝世,終其一輩子,其最爲重要的貢獻就是提出了哥德爾不完備定理,具體的內容稍微有些晦澀,以方便人們理解的話來講就是,越是完備的系統越會含有悖論,一個能衍生出全部可能的定理邏輯系統中必然包含矛盾。而一個徹底不含有矛盾的系統中必然包含不可證實的真命題。ide
咱們將對於這個定理的解釋放到後面,先來看看咱們將要講解的第二位人物埃舍爾。函數
埃舍爾是一位弗里斯蘭的藝術家,畫了一生版畫,雖然你可能沒有沒有據說過他的名字,可是你必定在你的課本中見過他。工具
下面我將給出他的幾幅表明性做品學習
瀑布spa
蜥蜴視頻
你必定見過這些,不是嗎?對象
在埃舍爾逝世後的這些年裏,埃舍爾所謂的錯覺的藝術正成爲無數創做的起點,我第一次注意到埃舍爾就是在Bilibili的拜年祭中2017年中的一個視頻,再一次(點擊連接去B站觀看),其中相當重要的謎題就是上面的瀑布一畫。
而在《數學:維度漫步》這個首個試圖將關於數學的規律直觀的表達的紀錄片中,位列其三的蜥蜴一畫和創做在19世紀晚期的平面國又成爲了對於高維度觀察的最好的解釋。
每次當咱們看到這些畫的時候,咱們都可以感覺到一絲不同的東西,是對於這個世界上一些最根本的東西的觸碰,是對於這個世界上事物運行方法的觸碰。
而最後一我的,則是巴赫。他的名字估計已是家喻戶曉的級別了,你們都知道他是一位著名的做曲家。而僅僅是一個做曲家並不足以說明他對於音樂的真實貢獻。
說到巴赫,就不得不談一下賦格音樂,賦格是中文音譯,若是按照拉丁文原意則是追逐,飛翔的意思。賦格的主要特色是相互模仿的聲部以不一樣的音高,在不一樣的時間相繼進入,按照對位法組織在一塊兒。
賦格音樂的最多見的例子就是卡農,你們能夠點擊下面看一下這個視頻。
C大調卡農-轉自b站
在這首最普遍認知的樂曲中,各個聲部逐一展開,以對位法的形式進行組織,完成了主題-答題-對題的和諧的清晰的結構的呈現。
僅僅使用很是簡單的主題,就能夠經過精確的和聲組織出一首繁複而優美的樂曲。
和繪畫不一樣,對於音樂的欣賞從一開始就是對於數學規律的欣賞,和聲的本質是聲音在不一樣頻率上的共鳴。在十二平均律發明以前,咱們對於音樂的探索,正是對於美好的規律的探索。
巴赫一輩子之中最爲卓著的貢獻,就在於他幾乎窮盡了對位法的全部可能,從延時,追隨,位移,倒置,變形,他開啓了一個新的時代,對於音樂的理解方式,從人類對於悅耳的渴望,進展到了對於構建音樂的規則的研究。
說回邏輯學,邏輯學開始於將人類的語言形式化的努力。人類的語言因爲太過強大,因此能夠被稱爲爲一個過分完備的系統。
天然語言之中有不少問題,其中之一就是多義性,同一句話能夠有不少不一樣的含義,對於多義性的解決方案就是抹除語言的形式,用含義單一的符號來代替語言構建邏輯。另一個重要的問題就是太過強大,所以產生了不少可以對於規則進行操做的狀況。而這種對於規則的操做,產生了不少悖論,而這種悖論大多源自於一個簡單的概念,自我指涉。
拿一個很常見的例子來說,這句話是錯誤的。
若是你認爲這句話是正確的,那麼它看上則是錯誤的,若是你認爲這句話是錯誤的,那麼他看上去反而是正確的。
看上去這是個無解的問題。也就是一個悖論。對於悖論的研究持續了幾個世紀,直到有人真正開始悖論的性質,那就是語言中隱含的真值和含義。
在很長一段時間裏,這都是一個被全部人混淆的概念,一句話的真值爲真,其含義也就爲真。
哥德爾巧妙地利用了命題的「真值爲真」和「含義爲真」的區別,從而構造出了含義爲真而真值不可證的命題,又避免了悖論的陷阱。形式邏輯系統的命題自己是沒有含義的。命題只有真值而沒有含義。公理命題的真值爲真。其它命題的真值爲真當且僅當該命題能夠被證實,爲假當且僅當該命題的非能夠被證實。當形式邏輯系統被實際應用時,系統中的符號都被映射到實際概念上,從而有了語義。這種映射叫作一個模型。有了模型,命題就有了含義(語義)。例如,在ZF公理化集合論中,系統中的對象(object)被影射到「集合」這一律念,∈被映射到「屬於」這一律念就是模型的一個例子。而ZF公理化系統自己即便沒有模型也能夠成立。若是換一個模型,形式系統沒變,只是它再也不是集合論了。固然,ZF公理化系統是爲了集合論量身打造的,很適合於集合論。若是換一個模型,很難找到可理解的語義。但這說明了「真值爲真」和「含義爲真」是有區別的。
在大多數狀況下,命題的「真值爲真」和「含義爲真」是一致的。例如,設A爲一命題,則命題A↔¬A的含義是「本命題A爲假」,這時A的真值爲真和含義爲真是一致的,結果造成了否認循環而構成了悖論。而邏輯系統不能含有悖論,因此這樣的A應該是構造不出來的。哥德爾定理證實的巧妙之處就在於將悖論的「爲假」改成了「爲不可證」使得真值爲真和含義爲真成爲不一致(含義爲真是不可證,而真值爲真或假都是可證),於是產生了自我否認又避免了循環的效果,也就避免了悖論。
理解了這一點,就能夠理解哥德爾定理不是說存在真值爲真又不可證這種自相矛盾的悖論命題(實際上應該構造不出來),而是存在含義爲真但不可證(即真值不可知)的命題。哥德爾定理也不僅是說存在既不可證真,也不可證僞的命題,這樣的命題有不少,哥德爾定理的重要之處在於它還說了該不可證的命題是含義爲真的。
哥德爾定理是一階邏輯的定理,故最終只能在這個框架內理解。在形式邏輯中,數學命題及其證實皆以一種符號語言描述,只要檢查每個證實的有效性,即可從一組公理開始無可辯駁地證實一條定理。理論上,這樣的證實能夠在電腦上檢查,事實上這樣的有效性檢查程序也已經有了。
爲了這個過程得以進行,需肯定手頭有什麼樣的公理。能夠從一組有限的公理集開始,例如歐幾里得幾何。或者更通常地,由一個能夠容許無窮的公理列表開始,只要能機械地判斷給定的命題是不是一條公理就行。在計算機科學裏面,這被稱爲公理的遞歸集。儘管無窮的公理列表聽起來有些奇怪,實際上天然數的一般理論中(被稱爲皮亞諾公理)就是如此。
哥德爾的第一條不完備定理代表任何一個容許定義天然數的體系一定是不完備的:它包含了不能在此體系內以一階謂詞邏輯形式證實的命題,而且該命題的否命題也不能在該體系內以一階謂詞邏輯的形式證實。
存在不完備的體系這一事實自己並不令人感到特別驚訝。例如,在歐幾里得幾何中,若是把平行公設去掉,就獲得一個不完備的體系。不完備的體系可能只意味着還沒有找出全部必須的公理而已。
但哥德爾揭示的是在多數狀況下,例如在數論或者實分析中,永遠不能找出公理的完整集合。換句話說,每一次將一個命題做爲公理加入,將總有另外一個命題出如今所能形式證實的範圍以外。
若是加入無窮條公理(例如,全部真命題)到公理列表中,確保全部命題均可證實爲真或假,但獲得的公理列表將再也不是遞歸集。給出任意一條命題,將沒有機械的方法斷定它是不是系統的一條公理。若是給出一個證實,通常來講也沒法檢查它是否正確。
在計算機科學的語言中,哥德爾定理有另外一種表述方式。在一階邏輯中,定理是遞歸可枚舉的:你能夠編寫一個能夠枚舉出其全部有效證實的程序。你能夠問是否能夠將結論增強爲遞歸的:能夠編寫一個在有限時間內斷定命題真假的程序嗎?根據哥德爾定理,答案是通常來講不能。
簡而言之,就是在一個容許自我指涉的體系中,必定會產生對於命題自己符號串的描述,而若是消除自我指涉,那麼這個體系就難以進行更深一步的推演。
你能夠想象一種不容許自我指涉的語言嗎?
好比說造一個簡單的句子,我今天吃了飯。這句話就已經包含了自我指涉,而這句話已經包含了自我指涉也已經包含了自我指涉*(這句話)。
對於邏輯的形式化的努力,最終產生了命題邏輯。咱們能夠看到這是一個很是弱小的體系,能夠用來推演三段論,但很難作到全部邏輯學家真正想要作到的事情,公式的自動化推演。
篇幅所限,對於更加細緻的內容,我會在以後慢慢更新,但本文做爲對於邏輯學的入門的內容已經足夠引發不少人的興致,想要進一步去研究這門學科。
和巴赫對於音樂的規律的規律的探索同樣,在命題邏輯的推演以後,邏輯學也終於在無數人的推動之中,開始了對於邏輯的邏輯的研究,對邏輯的邏輯的邏輯的研究,以致於對於無窮階邏輯的研究。
世界的本質是混亂,人們在探索中認知世界的規則,然後在無數對於規則的認知中開始瞭解世界的規則的形式,最終開始認知規則的規則。
這也正是咱們程序員認知世界的方式。
從最簡單的a=b的語句,到語句組成的可以完成一種特殊推演的函數,再到對於程序運行,構建規則的自己的編輯,從元編程,到元元編程,再到元元元編程,無窮的邏輯遞歸之中,是對於規則的可能的無窮的窮盡。
也許在咱們的一輩子中,咱們終究沒法親眼見到四維空間,但咱們能夠經過對於一維到二維,二維到三維的狀況去推演,去構建咱們心中的四維空間,也許在人類的歷史上,人類終究沒法見到這宇宙和這世界的神祕詭譎,但咱們可使用無數種前人留下,不斷髮展中的邏輯工具,去想象,推演,演繹這世界上的一切。
即便純粹的理性終究有限而脆弱,咱們仍能夠將基於無數人類前輩的理性推演當作對抗這個混亂的世界的利劍。