1. 程式人生 > >5.1一階謂詞邏輯

5.1一階謂詞邏輯

5語法與邏輯

5.1一階謂詞邏輯

從符號應用來看,領域語言本身可以是用自然語言的文字詞彙與語句形式,領域語言也可以是數學符號與公式表現的。我們把上述二種型別領域語言看作二個端點,在這二個端點之間是各種混雜形式的應用。並不是說不會有其它形式的符號應用,因為這是自由的,只是想創新出一種符號方式不是易事。近代的化學裡,也有元素週期表,化學方程式這樣的專門符號形式應用,但很難說這些符號的應用統馭了這門科學。

在如管理學、生物學、心理學、政治學、還有語言學等等學科,或這些學科裡的多個分支,到處都有沒有數學化的領域。從比例來說,今天多數人工作所依賴的知識來自那些數學化程度很低的領域。這些領域在理論化時,仍以自然語言的方式來組織符號,並且多數實際上達不到公理化系統這樣的程度。歐幾里德的《幾何原本》如果相較於代數,也可以看作是自然語言、直觀圖形、一些專用表示基礎上建立起來的。

自然語言的文字詞彙與語句在構建領域語言時,它們與自然語言的日常性應用有什麼不同呢?答案是邏輯在其中所起的作用不同。我們有一些語句,那接下來的工作你可以選擇:一是對比語句的描述與實際的情況,判斷語句描述是否與實際相符;二是邏輯上判斷語句間相互是否矛盾?語句的陳述假設了什麼前提,或者從這些語句出發應用邏輯的規則可以推匯出什麼結論。

邏輯應用的一般描述是:定義概念,通過命題對概念進行判斷(也稱斷言),判斷是對二個或多個概念存在一定關係的確定,通過已有命題進行推理與證明,得到新的命題。通過概念與命題交織起的網路,人類的認知與思想得以呈現。正是邏輯與領域內容結合出公理演繹系統的模式:精心地選擇初始的概念與命題,通過有組織的定義、推理、證明,建立起整體系統。就算達不到公理的系統,想要樹立一個可被接受的認知,而不只是自我表達,必須是以邏輯來組織起內容,這其中包括歸納的邏輯。

符號的概念性應用基本的要求的是:觀點與論述可信與自洽的,邏輯的應用是今天人類保障觀點自洽的方式。一般的觀點,邏輯是有效推理論證的方法:前提為真,就可保障結論為真。推理論證的有效性取決於推理的形式,與推理中非邏輯符號的實指無關,以亞里士多德(Aristotle,公元前384~前322,古希臘的哲學家、科學家、邏輯學家、教育家)三段論為例:

所有吃草且會奔跑的都是動物

馬是吃草且會奔跑的

所以,馬是動物

在這個例子中,替換“馬”為“牛”,或者系統替換“吃草且會奔跑”、“動物”、“馬”三者,都不影響推論的有效,詞項:“所有”、“是”、“所以”構成了這裡的推理形式,一般化這個形式如下:

所有M是P

S是M

所以,S是P

我們再看下面的例子:

所有吃草且會奔跑的都是兔子

馬是吃草且會奔跑的

所以,馬是兔子

“馬是兔子”這當然是荒謬的說法,但這的邏輯應用沒有問題,結果的荒謬是因為前提“所有吃草且會奔跑的都是兔子”是荒謬的,純粹邏輯並不關心前提,結論是否荒謬,也不關心兔子、馬這些詞彙是指稱什麼。邏輯只關注推導的結構與形式是否符合規定,符合規定就是有效的。

“荒謬”是個日常,感受上帶有情緒的一個詞彙,在邏輯里正式說法是“假”。論述時的每一陳述句或者為“真”,或者為“假”,為“真”或為“假”稱為語句的真值。真值中的“真”、“假”通常用“1”、“0”表示。我們在二種意義討論“真”與“假”,一種是經驗的真值,其意義是語句的描述是否與事實相符,這是通過實際的驗證來證實的;一種是邏輯的真值,邏輯上從前提語句推理得到的語句,稱為後承語句,前提語句為真而且推理有效,後承語言真值=1,這裡後承語句的真值是邏輯上的真值。對於構建認知,經驗的真值才是終極的標準,只是人類理論的抽象性與實際環境的複雜性,不一定存在無爭議可實施的驗證方法。存在萬有引力定律,慣性定律場景就很難真實地存在,理論上這樣構建仍是可行的,但想找到或創造合外力為零的情況來驗證,這看上去沒有現實性。水星近日點的異常進動被認為是對廣義相對論的證明,很多人不確信這一點,因為並沒有完整地考慮所有因素並精確地進行了計算,比如沒有考慮太陽風的影響。公理演繹系統的公理最初認為是不證自明的,非歐幾里德幾何出現後,公理失去了這種必然性,公理的真被認為是假說性的,公理演繹系統的應用只是種嘗試,在其擴充套件中一直有效,就保障了其存在的基礎,有失效的地方則證明這種嘗試是需要改進的或放棄的。邏輯學家們有時也爭論:“真值”這個概念是否沒有“邏輯有效”這個概念恰當。

日常語言中“邏輯”一詞用法可以代表通常所說的自然語言的混亂狀況。對專業些的人士,“邏輯”一詞指現代邏輯學的邏輯:有效推理論證的形式;對一些人,這指自然語言中不能脫離語義的自然語言邏輯;對另一些人,是指歸納邏輯的內容;對多數人是不加區分地應用。說“不合邏輯”可能是指未遵守有效推理論證的方式,或不夠嚴謹;或是指論證的前提不成立;或是指語句描述與經驗不符。

亞里士多德做出了初步的邏輯規範,但在自然語言裡應用亞里士多德的邏輯是困難的,原因是自然語言詞彙語義上的歧義性,想想“邏輯”一詞的在實際中的用法,在語義無明確界定基礎上進行的推理、證明或辯論,結果將是從混亂走向新的混亂。

鑑於自然語言在嚴謹應用時難於避免的混亂,德國哲學家與數學家萊布尼茨(Gottfried Wilhelm Leibniz。1646.7-1716.11)想到創立一門通用語言,這種語言的使用形式與邏輯規則一致,這樣推理變成一種演算,當爭論發生時,我們可以像在算術裡那樣算一算就得到確定的結果。

1879年德國數學家、邏輯學家和哲學家弗雷格(Friedrich Ludwig Gottlob Frege,1848.11-1925.7)出版了《概念文字》(英譯:Concept Writing)一書,開始具體實現萊布尼茨的想法。弗雷格的設想不僅是能模仿算術實現機械的推理運算,他的設想首先是建立一門表達思想概念的語言。

陳述句在邏輯裡稱為命題。命題作為一個整體的單位時,經常用一個小寫字母來表示,如p、q、s…。弗雷格參考數學函式的概念改寫了命題的格式。跳過弗雷格的術語與形式,用今天通用的表示法,命題的形式是P(x)、或P(x、y)。其中x、y 為項,是命題要表述的物件,P()稱為謂詞,表示一種性質或關係,類似於一個函式。我們先說x、y是常項的情況,自然語句“小明是小學生”命題形式表示為“是小學生(小明)”,自然語句“獅子追逐斑馬”命題形式可表示為“追逐(斑馬、獅子)”。邏輯上我們應用“是小學生(小明)”命題時,是一個描述,同時也是一個判斷,判定p是一個事實且p =‘小明是小學生’,即認為命題:“是小學生(小明)”=1,這是在實證的意義上說的。

弗雷格還引入了量詞:∀為全稱量詞,∃為存在量詞。引入量詞後,x、y就可以表示變項,∀ x:P(x)表示所有x代表的常項,都使P(x)=1。如果用x表示學生,可以構造這樣的命題∀ x:要做作業(x),翻譯為自然語句就是:所有的學生都要做作業。∃ x:P(x)表示存在x代表的常項,使P(x)=1。如果用x 表示鳥類,可以構造命題∃ x:不會飛(x),翻譯為自然語句就是:存在不會飛的鳥。

在弗雷格之前,1854年,英國數學家喬治·布林(George Boole,1815.11-1864.12)出版了《思維規律的研究》(An Investigation of The Laws of Thought)一書。在這本書里布爾提出可用於命題聯結的運算:與(合取)、或(析取)、非(否定)運算,邏輯裡形式表示為"∧"、"∨"、"┐",語義上與下述三個日常詞彙接近:並且(and)、或者(or)、否定(not),當然不能用這三詞彙來理解這三個運算,"∧"、"∨"、"┐",可通過真值表無歧義地定義。為了表述方便,下面的論述裡的命題先簡單寫為p、q。

 

1與運算:∧

P

q

p∧q

1

0

0

1

1

1

0

0

0

0

1

0

 

2或運算:∨

P

q

p∨q

1

0

1

1

1

1

0

0

0

0

1

1

 

3非運算┐

P

┐q

1

0

0

1

 

從真值表的定義,可以發現,或運算的1∨1=1與“或者”一詞的自然語義是有區別的,我或者乘飛機去北京,或者坐高鐵去北京,我不可能乘飛機同時又坐高鐵去北京,一般的語義下1∨1=0。為適配這種語義,邏輯裡另外定義了異或運算,邏輯里語法形式表示為:⊕

異或運算:⊕

P

q

p⊕q

1

0

1

1

1

0

0

0

0

0

1

1

我們不需要引入獨立的異或運算,所有其它的運算可以用∧、∨、┐定義出

p⊕q=(┐p∧q) ∨(p∧┐q)

同樣我們可以使用真值表來驗證定義是否成立

P

q

┐P

┐q

(┐p∧q)

(p∧┐q)

(┐p∧q) ∨(p∧┐q)

1

0

0

1

0

1

1

1

1

0

0

0

0

0

0

0

1

1

0

0

0

0

1

1

0

1

0

1

從日常實踐來說,經常用到的是這種運算——蘊涵運算,邏輯里語法形式表示為:⇒,語義對應的日常詞彙是:如果…那麼,真值表如下:

蘊涵運算⇒

P

q

p⇒q

1

1

1

1

0

0

0

0

1

0

1

1

可定義為:┐p∨q。

對蘊涵運算理解的要點是:P為真時,q為真,才成立;P為假時,q無論真假, p⇒q都為真,後半句是讓人困惑的地方,學術界也有爭論,你可以理解為這只是個約定。

蘊涵運算的增強運算是等價運算,邏輯里語法形式表示為:⇔語義對應的日常詞彙是:當且僅當,真值表如下:

等價運算⇔

P

q

p⇔q

1

1

1

1

0

0

0

0

1

0

1

0

可定義為:(p∧q) ∨( ┐p∧┐q)。

對等價運算理解的要點是:p⇔q 相當於 p⇒q ∧q ⇒ p

上面我們是從與、或、非運算定義出異或、蘊涵、等價運算,如果需要還可以再定義其它的運算。我們也可以不從與、或、非運算出發,定義其它的運算,而是從比如蘊涵、非運算出發,定義出與、或、及其它的運算,如何選擇只是邏輯上的約定與方便。

有了量詞、命題形式、命題聯結方式,就可以應用這些形式來表示觀念或事實。實用的中的場景主要是先有自然語言的語句描述,再轉換為這種邏輯語法表示。這種轉換對簡單關係的語句也不復雜,對複雜的語句或意思,除非經過了一定的訓練外,這種轉換並不容易,閱讀可能更困難。

由邏輯語法表達的多個事實與觀念組成了前提,接下來是進行推理、證明。一串的推理得到結論,或揭示出矛盾,這就構成一個證明。每一步的推理是對邏輯表示式進行轉換,比如說表示式中有“┐┐q”部分,你可以用“q”來替換,這是平時所說的:否定之否定就是肯定。邏輯上的說法是 “┐┐q” 與“q”形成等價的關係:┐┐q⇔q,等價符號二邊可以相互替代。說到邏輯推理,普通人最容易想到的是“如果……那麼……”的句式,這是假言推理的一種形式,完整描述是:如果p那麼q,p,所以q,專業的形式是(p⇒q∧p)⇒q,這是個蘊涵關係,只有右邊可以替代左邊。 邏輯裡┐┐q⇔q與(p⇒q∧p)⇒q稱為重言式,更多的重言式如下:

┐┐q⇔ q

p∧( q∨s) ⇔ (p∧q)∨( p∧s)

p∨ ( q∧s) ⇔ (p∨q) ∧ ( p∨s)

┐(p∧q) ⇔┐p∨┐q

┐(p∨q) ⇔┐p∧┐q

p∨ (p∧q) ⇔p

p∧ (p∨q) ⇔p

┐(∀x)P(x)⇔( ∃x)(┐Px)

┐(∃x)P(x)⇔(∀x)(┐Px)

p∧q⇒ p

p∧q⇒ q

p ⇒ (p∨q)

q ⇒ (p∨q)

┐p∧(p∨q) ⇒ q

(p⇒ q∧p)⇒q

(p⇒ q)∧(q ⇒ s)⇒(p⇒ s)

這裡只是列舉了部分重言式。由重言式組成的集合就構成一個邏輯推理的系統。推理過程就是不斷應用系統裡的重言式進行替換的操作。有那些重言式,這些重言式如何構成推理系統是邏輯學家研究的課題。

由字母、特定的符號、表示式,重言式構成一個可演算的符號系統: x、P()、p、q、∀ 、∃、∧、∨、┐、⇒、p ⇒ (p∨q)、q ⇒ (p∨q)……。這個符號系統傳統上的一個說法是刻畫了我們的思維規則,持這種觀點的問題在於邏輯學家們發展出了太多這樣的系統,除一階謂詞邏輯外,還有:高階的邏輯、時序邏輯、模態邏輯,甚至如p ∧┐p⇔1排中律不適用的邏輯,似乎不同的假設與應用場景都可以去發展一個邏輯的門類。

任何一個邏輯閘類在現代都是形式化為一個符號的系統,形式化的意思是以字母、抽象符號、字母符號形成的表示式、表示式間規則來建立系統,所用到的符號不實指具體意義,所建立的系統只是規定符號間的關係與可能的操作。這時候需要小心區分:邏輯與邏輯的符號系統。邏輯是思維時或符號表述內容時需要遵循的規則,這些規則在今天是用符號系統的形式來呈現,用本書偏好的說法:邏輯外化為一個符號系統。這樣 做的理由是:恰當的符號與明確的規定,可以清晰呈現所針對的關係,所依據的前提,進而可用符號來模擬各種可能的情形,同時,以符號系統存在的邏輯,讓邏輯本身以及對邏輯的研究工作變得可交流。 邏輯符號系統不能認為就是邏輯本身。除非至始至終邏輯只有唯一的符號表現形式,那這唯一的符號表現形式可以認為就是邏輯,但這不是真的,同樣的邏輯可以有不同的符號方式或符號系統來表現。另外,邏輯在實際中的作用,不一定是邏輯符號系統的應用,更多時候是人腦直接遵循並應用邏輯的,而且普通人學不學邏輯學對其邏輯思維的影響並不是至關重要的,這可類比於對語法的學習。邏輯與邏輯符號系統的區分,也說明人腦裡的邏輯心理運轉與符號的形式推導是不同的二個範疇,對此我們可說的不多。邏輯以符號形式來表現,這帶來了理解上的問題。談到亞里士多德邏輯,一般人會想到是講“因為……所以”的,邏輯的典型詞項代表了邏輯,而且邏輯與自然語言是不可分的。到了符號化、形式化的現代邏輯,多數人可能就困惑了,何以出現這些符號的形式。沒有更好的辦法,邏輯在今天只能是以符號系統形式存在。

 (作者(LQS)注:連續地閱讀會發現,系列的文章不是對各個問題的解釋,而是新的理解視