1. 程式人生 > >淺析邏輯代數、命題邏輯、一階邏輯、高階邏輯和數理邏輯

淺析邏輯代數、命題邏輯、一階邏輯、高階邏輯和數理邏輯

## 前言   此文是在本人學習完離散數學中的數理邏輯部分後,對標題中各部分之間的聯絡存在很大的疑惑。特此進行總結,水平有限,如有錯誤,歡迎指正。 ## 從邏輯代數開始
  邏輯代數是一種用於描述客觀事物邏輯關係的數學方法,由英國科學家喬治·布林 (George·Boole) 於19世紀中葉提出,因而又稱布林代數。   所謂邏輯代數,就是把邏輯推理過程代數化,即把邏輯推理過程符號化。 ## 從邏輯代數到命題邏輯   同樣的,命題邏輯是將那些具有真假意義的陳述句接著進行符號化,產生原子命題。與此同時,當我們把邏輯代數中的運算子:與( · )、或( + )、非( - ),替換成命題邏輯中的聯結詞集:合取( ∧ )、析取( ∨ )、非( ¬ )、蘊涵( → ) 和等價( ↔ ) 之後,我們就進入了命題邏輯的研究領域。   需要指出的是,通常也將命題邏輯稱作命題演算,後者的出現就是用來討論前者的,這裡不再區分。它與下面出現的一階邏輯(謂詞邏輯)都是數理邏輯的子集(或稱之為分支),是數理邏輯的兩個最基本的也是最重要的組成部分。   有人可能會問,為什麼不從數理邏輯開始,其實意義不大。要談數理邏輯,不可避免的下一個主題就是邏輯代數。為什麼這樣說呢?因為數理邏輯一開始的誕生是沒有意義的,它的創始人正是我們熟知的萊布尼茨(沒錯,就是高數中的那個牛頓-萊布尼茨公式)。萊布尼茨一開始是想要建立一套普遍的符號語言,從而將一些由自然語言的推理轉換成用符號演算。但可惜他的工作只是開了個頭,而且沒有太多的發表,因此影響不大。而真正使數理邏輯這門學科迅速擴張的是開頭所說的英國科學家——喬治·布林,而他所做的正是將邏輯代數化。 ### 淺談數理邏輯與數學和邏輯學   數理邏輯又稱符號邏輯
理論邏輯,是一門用數學方法研究邏輯或形式邏輯的學科,這是百度詞條給出的解釋。還有一句話非常拗口:它既是數學的一個分支,也是邏輯學的一個分支。其研究物件是對證明和計算這兩個直觀概念進行符號化以後的形式系統。簡單來講,數理邏輯研究的並不是數學領域,而是電腦科學等領域。但歸根到底用到的還是數學方法,例如數學方法中的符號的使用、公式的定義等。   數理邏輯除了跟數學有關,還跟邏輯學有關。其實我一直以為邏輯學是數學的一個分支,但當我檢索資訊時發現並不是這樣簡單。因為沒有學過邏輯學,只能暫時認為兩者的研究物件、研究任務和研究目標是不同的。但最重要的一點是,兩者是不可割裂的。因為邏輯出現在數學中,就是為了證明數學中所不能證明的。而邏輯用來推斷未知,那麼這些未知就需要用數學中的方法來表現出來。 >
數學是研究數量、結構、變化以及空間模型等概念的一門學科。透過抽象化和邏輯推理的使用,由計數、計算、量度和對物體形狀及運動的觀察中產生。主要研究:數量、結構、空間和基礎與哲學。 > 邏輯是人的一種抽象思維,是人通過概念、判斷、推理、論證來理解和區分客觀世界的思維過程。邏輯學就是由上述過程產生的一門學科。邏輯的本質是尋找事物的相對關係,並用已知推斷未知。 ### 命題邏輯的符號化思想   關於命題邏輯,相信學過離散的人都很熟悉。這裡只提一下命題邏輯的符號化思想,這又是一種抽象的方法。數理邏輯的誕生就是代替使用自然語言進行推理,因此必須對其符號化,用元符號進行表示。而這種符號化帶來的好處就是消除了自然語言中的二義性,例如 “非 p”,這是一個典型的半符號化命題,自然語言 “非” 會產生二義性,因為你可以把 “非 p” 解釋成 “p 不成立” 等。為此,命題邏輯進一步符號化,用 “¬” 來代替 “非”,“不成立” 等。並且還定義一系列規則,比如說:¬p 為真當且僅當 p 為假。   符號化思想也帶來了一些在數理邏輯中不能夠處理的麻煩,甚至是一些常見的簡單推理。這裡引用書上的一個例子,考慮這一命題:凡偶數都能被 2 整除,6 是偶數,所以,6 能被 2 整除。
這個問題如果使用命題邏輯中的形式化推理,將無法判斷正確性。在命題邏輯中只能將推理中出現的 3 個簡單命題依次符號化為 p,q,r,將推理的形式結構符號化為 (p ∧ q) → r,由於該式不是重言式,所以不能夠由它判斷推理的正確性。問題就出現在這個 “凡” 字,命題邏輯不能夠解釋這一陳述句的本意。   為此,引入了一階邏輯中的主角——量詞。 ## 從命題邏輯到一階邏輯   一階邏輯也稱為謂詞邏輯,在命題邏輯中,命題是一個具有真假意義的陳述句,但在推理過程中往往會忽視命題具體想要陳述的本意。因此,我們引入元符號來描述命題邏輯中的簡單命題中的每一個成分,再將它們組合起來。也就是分別描述成個體詞、謂詞和量詞。這樣一來,在事先定義好的個體域上,個體詞 + 謂詞 + 量詞就可以在推理的形式結構符號化中表述(拼湊出)數學中的簡單命題的本意。   但我的疑問不是為什麼引入一階邏輯,而是一階邏輯到底是怎麼定義的,它跟二階、高階邏輯到底是什麼關係。 ## 從一階邏輯到二階、高階邏輯   作為一個初學者,實在不適合繼續探討一階邏輯與二階、高階邏輯的區別。但我還是希望能夠表達一下自己的看法。   百度詞條對一階邏輯的解釋很粗暴——一階邏輯是相對於高階邏輯存在的數理邏輯,它不允許量化性質。比如說一個物體的顏色,狀態等。這麼說,暫時也夠用了。但在二階邏輯中,解除了這一限制,也就是說,謂詞能夠被量詞修飾了,如果對於一個命題中的個體詞,它存在任意性質或關係,那麼就可以在二階邏輯中用全稱量詞來表達。這在一階邏輯中是無法表達出來的。暫時先理解到這裡吧。   至於為什麼不再探討高階邏輯,那已經是邏輯學的範疇了。不過我會繼續學習並補充下去的。 ## 題外話   有時候,我在電腦前走來走去的時候會在想:“數理邏輯的嚴謹性到底是基於什麼 ?”,這一切可能都源於萊布尼茨發現 0 和 1 之間這一微妙的聯絡吧。直到今天,我們還沿用基於 0 和 1 的二進位制,例如計算機系統。 > 為什麼計算機要採用二進位制,而不是常用的八進位制、十六進位制呢?因為任何一種事物、一種狀態,要將之量化,最直接、最明瞭的方法就是將之區分為兩極。這不但是事物最根本的狀態,也是最利於表達的狀態。二進位制符合計算機的設計思想,電流的速度是非常快的,而電流最明顯的兩種狀態就是導通和截止,這無疑也適合於二進位制的使用。 > > 因此,在計算機的邏輯電路中,人們就使用 0 和 1 兩個數字來代表兩種狀態。這樣一來,一個電晶體就可以用 01 碼錶示一條現代積體電路設計已完全採用了二進位制語言資訊。如果有兩個電晶體,就可能產生 01,10,00,11 四種狀態的組合,就能表示 4 條資訊。依次類推,有 n 個電晶體,就可以表示 22 條資訊。由於隨著 n 的增長,資訊量是按幾何級數增長的。所以,可表示的資訊狀態是極其可觀的。 > > 英特爾創始人、積體電路發明者**戈登·摩爾**,在上個世紀就已經用積體電路技術把成千上萬個電晶體做在一起,其處理資訊的能力是可想而知的。   其實非常湊巧的是,我們前幾天才在計算機英語上了解了萊布尼茨,下面擷取的是老師給的 PPT,讓我們來體會一下:
## 寫在最後   感謝您能夠讀完這篇文章,本文只是淺析了這幾個概念,並不夠深入。但我覺得隨著不斷學習,有些問題的答案總會浮出水面,所以此文我會不斷進行補充。   本人是名大二在校生,學習軟體專業。所以對數學的理解並不是太深入,但如果你跟我一樣是學習計算機的,那麼我建議你瞭解到這裡就可以了。不過,我仍然鼓勵你去探索你心中的疑惑。   最後,不得不感嘆,數理邏輯真的把 0(true) 和 1(false) 發揮到了