謂詞邏輯及形式系統(句法)【上】
一、簡介
【謂詞邏輯】是所有邏輯學的中心內容,包括亞里士多德的三段論(雖然那時謂詞邏輯還沒有產生)、弗雷格的謂詞邏輯、以及後來的數理邏輯三大流派都是圍繞【謂詞邏輯】展開的。在所有現存的邏輯系統中,只有【謂詞邏輯】毫無爭議地佔據邏輯學的中心位置,而任何其它邏輯系統都是【謂詞邏輯】的擴展、延伸、改造。所以它在邏輯學中是相當重要的。
研究【謂詞邏輯】,其基本方法和命題邏輯一樣,詞彙、句法和語義。所用的數學工具,最顯著的就是加入了集合論。在某種程度上集合論就是謂詞邏輯的靈魂。和集合論相關的,就是【關係】的概念;可以說如果把這兩個概念搞清楚基本就抓住了【謂詞邏輯】的實質。同時,在【命題邏輯】引入的函數概念,在【謂詞邏輯】中有了更廣泛的應用。可以說,集合、函數、關係是牽引【謂詞邏輯】的三駕馬車。
從內容上看,【謂詞邏輯】的研究對象有兩個:
- 【謂詞】:predicate
- 【量詞】、【量化】、帶【量詞】的表達式:quantifier, quantification、quantifying expression
【謂詞】的概念比較古老,從亞氏邏輯開始就已經有相當深入的研究;而【量化】則是始於亞氏邏輯,到弗雷格的謂詞邏輯建立纔有了完整、全面的理論。同時【量化】也是現代邏輯的研究重點,是研究自然語言語義的出發點。此外,【謂詞邏輯】離自然語言更近,因此,在這兩種語言之間的翻譯、轉換可以說是學習它的一項基本功。
- 命題邏輯與謂詞邏輯的異同
在前面介紹一階命題邏輯的句法和語義的時候,我們曾引入了一個重要的研究方法:基於句子複雜度的歸納法。
它的實質就是:新概念 == 已知概念+新的屬性特徵。
因此我們對謂詞邏輯也採取這種方法介紹: 謂詞邏輯 == 命題邏輯+(新概念+新方法+新工具)
由於任何邏輯系統,都是由詞彙、句法規則和語義解釋三大部分構成,所以我們初識謂詞邏輯,就從這三部分開始。
詞彙(vocabulary)
命題邏輯:原子命題字母
邏輯常項/連接符
輔助符號;
謂詞邏輯:個體詞(individual constant)和個體變項(variable)
謂詞(predicate constant)
量詞符號(quantifier symbol)
邏輯常項/連接符(logical constant/connective)
輔助符號(auxiliary symbol)
首先,謂詞邏輯沒有原子命題字母,取而代之的是個體詞和謂詞;
第二,增加了量詞符號
第三,邏輯常項除了命題邏輯中我們已經熟悉的連接符外,將引進一個新的但仍然是我們熟悉的新連接符:=(等號)
句法(syntax)
命題邏輯:無定義、或原始定義的原子命題字母
否定式的形成規則
合取、析取、蘊含和等價的形成規則
非外延規則
謂詞邏輯:以模型的方式、以集合爲工具定義謂詞常項、個體詞和實體領域的對應關係;
原子句/單句的形成規則
否定式的形成規則
合取、析取、蘊含和等價的形成規則
量化表達式的形成規則
非外延規則
很明顯,謂詞邏輯的原始”顆粒“從原子命題變成了【個體詞】和【謂詞】,相應增加了【量化表達式】的形成規則。
語義(semantics)
命題邏輯:真值的概念
基於真值表的語義賦值函數
謂詞邏輯:真值的概念
領域(domain)和模型(model)
解釋函數
基於真值表的語義賦值函數
這樣一比較,便一目瞭然了。通過這樣的比較便能發現在謂詞邏輯中需要我們學習的重點,歸納起來就是如下幾項:
1. 個體詞常項/變項、謂詞常項;
2. 量詞、量化表達式
3. 謂詞邏輯的句法
4. 謂詞邏輯的語義
研究謂詞邏輯,特別是謂詞邏輯的語義,需要的數學工具:函數、集合、關係;引入的新概念:模型、領域;需要深化的概念:語義組合原則;
除此之外,謂詞邏輯對命題邏輯中已經熟知的概念如蘊含、永真式、永假式以及分析、合成命題也會重新進行分析。
- 爲什麼需要從命題邏輯擴展到謂詞邏輯 ?
命題邏輯中最小研究單位是原子命題,並沒有進一步的內部結構。定義:命題是對確定的對象作出判斷的陳述句
〉 那麼,對不確定的對象如何處理呢 ?(x>5)以及,進行不同條件下的判斷又如何處理呢?
命題邏輯中的推理,關注真值的推演。假言推理、歸謬推理和窮舉推理。建立在重言式、代入和替換原理基礎上。命題邏輯中,命題之間相互獨立,沒有內在聯繫。但是在對於命題之間並非相互獨立,且存在相互聯繫的三段論中,命題邏輯便顯得有些力不從心了。
命題邏輯的結構分析如下:
命題:對確定的對象作出判斷的陳述句
〉 被作判斷的對象:個體
〉 作出的判斷:謂詞
〉 個體的數量:量詞(所有、有些、沒有)
謂詞邏輯將量詞作用於個體,引入個體變元,討論不確定的對象
〉 謂 詞 邏 輯 也 稱 作 一 階 邏 輯(First Order Logic)
〉 如果將量詞作用於謂詞,引入謂詞變元,屬於二階邏輯研究範圍。
二、原子句和謂詞
學習謂詞邏輯的第一個概念應當就是【謂詞】了。在命題邏輯中,最小的“顆粒”是原子命題,通常用小寫字母表示。而在謂詞邏輯中,這個“最小顆粒”又進一步被打破,原子句不再當做最小單位,而是可分析的。具體地說就是,把句首的名詞和餘下的分成兩部分,分別稱作個體詞和謂詞。如下所示:
(1) Plato is a man. (柏拉圖是人) 個體詞:Plato 謂詞:is a man
(2) Socrates is mortal.(蘇格拉底終有一死) 個體詞:Socrates 謂詞:is mortal
(3) The chicken is cackling. (雞咯咯地叫) 個體詞:the chicken 謂詞:is cackling
(4) This kettle leaks. (壺漏) 個體詞:this kettle 謂詞:leaks
這兩部分,從語義的角度分別可以看作是存在實體(entity)和屬性(property)。這樣,句法部分和語義部分就有了非常整齊的對應:
個體詞(individual constant)<==> 存在實體(entity)
謂詞(predicate)<==> 屬性(property)
在命題邏輯中我們曾經說過,在一個邏輯系統之下可以定義多個邏輯語言,這些語言的骨架:邏輯常項和輔助符號都相同,語義解釋都相同,不同的是基本詞彙,例如命題邏輯的原子命題,謂詞邏輯的個體詞和謂詞,以及句法定義。通常我們把這些因語言不同而變化的詞彙,稱作邏輯變項(logical variable)。謂詞邏輯的邏輯變項當然就是上面所提到的個體詞和謂詞了。而且謂詞邏輯語言和自然語言不同,存在實體和所對應的個體詞、屬性所對應的謂詞都是“任意”定義的,就像是命題邏輯中的原子命題一樣。如果你知道一點程序語言,大概都聽說過“關鍵字”和用戶定義的標識符,其實這個思路就是從邏輯語言得來的:關鍵字相當於邏輯常項,用戶定義標識符相當於邏輯變項。
因此謂詞邏輯所分析的單句,都是由個體詞和謂詞構成。不過千萬不要用語言學的主語謂語往上套,個體詞並不相當於主語,覆蓋範圍要比主語小得多。而謂詞,則忽略了時態、語態、樣態、助動詞等語言學細節。從分析粒度來看,比語言學要“粗糙”。
有了個體詞和謂詞概念後,我們就可以在謂詞邏輯語言中表示句子了。表示方法是這樣的:
- 所有個體詞,如果有對應的存在客體,用拉丁字母表中前面的小寫字母表示,如a,b,c等;如果爲了明確起見,有時用該單詞的第一個字母表示。爲了使我們的讀者更易理解,我這裏採用兩邊加【】的漢語名詞表示客體,也就是說,英語的句子是對象語言,漢語是元語言;
- 所有謂詞,一律用大寫字母表示,基於同樣理由,我這裏用不加【】的漢語單詞表示。
這樣,上面的例句(1)-(4)翻譯成謂詞邏輯語言就是如下圖示:
在這個表格中,我們在同一謂詞邏輯體系中定義了兩個邏輯語言,一個是拉丁字母爲邏輯變項的邏輯語言,一個是漢字/詞爲邏輯變項的邏輯語言。這樣做除了讓中文讀者看起來可讀性更強之外,還有一個目的,就是實際展示我們上面所說的:一個邏輯系統內可定義多個邏輯語言。
有了個體詞、謂詞的概念,我們就可以定義謂詞邏輯語言中所謂“原子句”(atomic sentence)的概念了。凡是可以用謂詞字母(我們用的是漢字)後跟個體詞字母(我們用的是加了【】的漢字詞)表示的句子,稱作原子句。謂詞邏輯學習的一個基本功就是將自然語言的單句翻譯成謂詞邏輯語言的原子句。這個翻譯過程是程序化的,我們稱作分析式(key);還是拿上面的例句爲例:
(4)
原句:This kettle leaks.
分析式: Lx : x leaks
k : this kettle
漢語版: 漏【x】:x漏
壺 :這個壺
在分析式中,我們首先用了一個個體詞變項x和大寫字母L表示“leak”這一屬性,然後用k表示當前感興趣的個體詞實例;冒號右側是相應的翻譯。漢語版也一樣,“漏”表示謂詞/屬性,x表示未定的個體詞,冒號右側是翻譯,亦即:“漏【x】”的意思是“x漏”,而下面的“壺”表示個體詞,它的意思是“這個壺”。
這個分析式就像是代數中含有未知數的代數式:3x+1=7;x=2。
句子序號 | (1) | (2) | (3) |
原句 | Plato is a man. | Socrates is mortal. | The chicken is cackling. |
分析式(英文) | Mx : x is a man p : Plato |
Mx : x is mortal s : Socrates |
Cx : x is cackling c : the chicken |
分析式(中文) | 人【x】:x是人 【柏拉圖】 :柏拉圖 |
死【x】:x終有一死 【蘇格拉底】:蘇格拉底 |
鳴【x】:x咯咯地叫 雞 :這隻雞 |
以上的內容,大致相當於弗雷格創建一階謂詞邏輯以前的邏輯分析水平。可以看得出,這樣的分析法只能對個體詞是專有名詞或是定指名詞(帶定冠詞的單數普通名詞)、謂詞是單純表示屬性的句子成分的單句有效。而弗雷格的最大貢獻之一就是將邏輯研究範圍擴大,除了上述的簡單個體詞和謂詞結構的句子之外,又加上了帶有兩個個體詞的句子,那麼在這種情況下,能否用上面的方法將句子一分爲二用分析式嗎?當然可以。如下面表格中的例子:
句子序號 | (5) | (6) | (7) |
原句 |
Casper is bigger than John. (Casper比John高大) |
Peter is plucking the chicken. (Peter正在拔雞毛) |
Alcibiades admires Socrates. (Alcibiades讚美蘇格拉底) |
兩個個體詞 | Casper, John | Peter, the chicken | Alcibiades, Socrates |
分析式(英文) | Bx : x is bigger than John c : Casper |
Px : is plucking the chicken p : Peter |
Ax : x admires Socrates a : Alcibiades |
分析式(中文) | 比約翰高【x】:x比約翰高大 【卡斯帕】 :卡斯帕 |
拔雞毛【x】:x正在拔雞毛 【彼得】:彼得 |
讚美【x】:x讚美蘇格拉底 【阿爾西比亞德斯】:阿爾西比亞德斯 |
這裏,我們完全忽視了謂詞中含有另一個個體詞這個事實,把句首個體詞以外的所有部分都當做謂詞。這麼做當然可以,只是有一個問題,拿這樣的句子去做論證推理用處不大。例如如果把下面的論證命題改成謂詞邏輯的原子句:
(8)
Casper is bigger than John. (卡斯帕比約翰高大)
John is bigger than Peter. (約翰比彼得高大)
-----------------------------
Casper is bigger than Peter.(卡斯帕比彼得高大)
這個論證完全是有效的,之所以有效主要是bigger than(比...大)這個成分的語義決定的。但是如果bigger than後面又加上了個體詞,則形成了兩個不同的謂詞: bigger than John(比約翰高) bigger than Peter(比彼得高)
如果按照上面的分析,將這三個句子翻譯成謂詞邏輯的原子句,則是
(8) | 英文版 | 漢語版 |
前提一 | Jc | 比約翰高【卡斯帕】 |
前提二 | Pj | 比彼得高【約翰】 |
結論(推)=》 | Pc | 比彼得高【卡斯帕】 |
這樣就看不出這兩個不同的命題爲什麼會達到第三個命題。由於這個原因,就必須將我們原來分析的“謂詞”進一步分析。但是在弗雷格以前的邏輯中,除了句首個體詞外,再無其它個體詞的位置,因而對這樣的句子邏輯是無法分析的。爲此,弗雷格首先打破了“個體詞-謂詞”這一常規化思維,創新式的提出了“關係”(relation)的概念,以謂詞爲中心,允許多個個體詞圍繞在謂詞周圍,形成“衆星捧月”式的格局。例如含有兩個個體詞的原子句可以表示成xRy,x表示句首個體詞,y表示原來含在“謂詞”中的個體詞,R表示關係。這樣,關係實際上是對謂詞概念的一種擴展,允許一個謂詞帶多個個體詞。不過上述表示法對兩個以上個體詞不太方便,所以一般把關係(亦即謂詞)放在最前面,後面跟個體詞:Rxy,Rxyz等。
有了【關係】這個概念,我們就可以將bigger than單獨抽出來作爲關係詞,寫成原子句就是如下形式了
(8) | 英文版 | 漢語版 |
前提一 | Bcj | 更高【卡斯帕】【約翰】 |
前提二 | Bjp | 更高【約翰】【彼得】 |
結論(推)=》 | Bcp | 更高【卡斯帕】【彼得】 |
當然,要使整個論證有效,我們在前提部分還要定義“bigger than”的語義。
除了雙個體詞,還可以有多個體詞,例如“x位於y和z之間”,“x從y經z到w”等。爲了統一起見,我們把這些關係詞仍然成爲“謂詞”,不過這裏的“謂詞”已經有了新的含義——關係。至於這樣的謂詞可以帶幾個個體詞,完全因詞而異,無法事先知曉。一般我們把謂詞可以帶的個體詞的個數稱爲“元”(arity)。例如,帶一個個體詞的,叫做一元謂詞(unary predicate),帶兩個的,叫做二元謂詞(binary predicate),三個叫做三元謂詞(trinary predicate),推而廣之,帶n個個體詞的,叫做n元謂詞(n-ary)。
例如:Aabcd是四元謂詞(quaternary), 同樣的,Adabc、Addaa也是四元謂詞。
這種寫法,後來與函數的公式表示法完全一致,以至後來的類型論、lambda演算等都沿襲了這種方法。這裏需要注意的是,謂詞後面的個體詞順序至關重要,順序不同一般表示不同的命題。另一個需要注意的是,在寫多個體詞的分析式時,不能只寫謂詞字母,而是要把所有的個體詞變項都寫上。如下:
(14) Byxz:北京位於廊坊和天津之間。
(15) Bzxy:天津位於廊坊和北京之間。
(16) bzyx:天津位於北京和廊坊之間。
(17) bxyz:廊坊位於北京和天津之間。
總結:
1. 謂詞邏輯中,沒有原子命題字母的概念,取而代之的是個體詞和謂詞的概念;
2.謂詞邏輯中將一切被討論的對象都稱作個體。確定的個體常用a,b,c表示,稱作個體常元(constants)。不確定的個體常用 x,y,z,u,v,w表示,稱作個體變元(variables),被討論對象的全體稱作個體域(domain of individuals),常記做D。包含一切對象的個體域特稱爲全總域(universe),記做U
3. 個體詞表示存在實體,謂詞表示性質(單個體),關係(多個體);
4. 謂詞和個體詞組合形成原子句,它是謂詞邏輯中最小句子單位;
5. 謂詞邏輯的原子句和自然語言的單句可以對譯,方法是採用分析式;
6. 分析式由謂詞和個體詞變量構成“句型”,然後一一規定個體詞的內容;
7. 對於含有多個個體詞的句子,引入“關係”的概念,並將“關係”合併到謂詞中,形成多個體詞謂詞;
8. 用分析式翻譯自然語言句子時,謂詞表達式一定要規定個體詞的數量和順序,否則引起歧義。
9. 在同一的謂詞之後、同樣的個體詞如果順序不同,就會得到不同真值的命題,所以個體詞在謂詞後的次序至關重要。
- 謂詞命名式和謂詞填式
將謂詞中的個體空位用變元字母代替,稱作謂詞命名式。常用大寫字母P、Q、R等代表謂詞,謂詞命名式形如P(x)、Q(x,y)。
命名式中的變元字母並沒有獨立的含義,僅是佔位符(place holder),如下:
〉 “…是學校”記做SCHL(x)
〉 “…和…是朋友”記做FRD(x,y),
〉 “…和…是…”記做REL(x,y,r)
將謂詞中的個體空位用個體變元或常元代替,稱作謂詞填式
〉 謂詞填式在形式上和命名式相同,但是屬於不同的概念,需要根據上下文加以區分
〉 類似於編程語言中的函數說明(形參)和函數調用(實參)之區分
〉 SCHL(北京大學)表示“北京大學是學校”
〉 FRD(張三,李四)表示“張三和李四是朋友”
〉 R(x)表示“x是實數”,x爲個體變元
〉 當謂詞填式中的個體都是常元時,它是一個命題,具有確定的真值
- 複合句與翻譯
如果將上面介紹的謂詞邏輯原子句與命題邏輯的連接符混合使用,就會得到謂詞邏輯版本的複合表達式。
下面看一些例子:
(18) | 句子 | 翻譯(英文) | 漢語版 |
(a) | John is bigger than Peter or Peter is bigger than John. | Bjp v Bpj | (更高【約翰】【彼得】)v(更高【彼得】【約翰】) |
(b) | If the chicken is cackling, then Casper is plucking it. | Cc1 → Pc1c2 | 鳴【雞】→ 拔毛【卡斯帕】【雞】 |
(c) | If John is cackling, then Casper is bigger than John. | Cj → Bcj | 喋喋不休【約翰】→ 更高【卡斯帕】【約翰】 |
(d) | If Peter admires Casper, then he is not plucking him. | Apc → ~Ppc | 讚美【彼得】【卡斯帕】→ ~拽【彼得】【卡斯帕】 |
(e) | Alcibiades admires himself. | Aaa | 讚美【阿爾西比亞德斯】【阿爾西比亞德斯】 |
(f) | Casper and John are plucking each other. | Pjc ^ Pcj | 拽【卡斯帕】【約翰】^【約翰】【卡斯帕】 |
(g) | If Socrates is a man, then he is mortal. | M1s → M2s | 人【蘇格拉底】→ 死【蘇格拉底】 |
(h) | Socrates is a mortal man. | M1s ^ M2s | 人【蘇格拉底】∧ 死【蘇格拉底】 |
說明
如果仔細審視上面的例子,就可以發現這裏引入了一些新的語言現象,主要是自然語言中的各種代詞。
(b) 省略代詞:it
(d)(g) 主格和賓格人稱代詞:he, him
(e) 反身代詞:himself
(f) 互指代詞:each other
除此之外,(h)中首次出現了形容詞作定語的情況。
下面我們依次分析:
(a)
這個句子由兩個原子句構成。這兩個原子句的謂詞、個體詞都一樣,只是個體詞的順序不同,因而構成兩個真值不同的句子。這兩個句子再由析取連接符連成一個複合句。值得注意的是,這個析取式是排他性的析取,這一點和命題邏輯不同。在命題邏輯中,除非我們明確使用了排他析取符號,否則是無法判斷這個析取式是相容的還是排他的。而在謂詞邏輯中,我們卻可以根據謂詞的語義和個體詞的指稱而不用藉助析取符號就可判斷。
(b)
首次出現了代詞現象。嚴格地說,謂詞邏輯沒有能力處理自然語言的代詞問題,而這裏只是用重複名詞的方法翻譯。這一點從漢語版看得更清楚:在it的位置上我們是用前件子句的個體詞【雞】填充的。換句話說,謂詞邏輯無法嚴格區分下列兩個句子:
If the chicken is cackling, then Casper is plucking it.
If the chicken is cackling, then Casper is plucking the chicken.
另外,在字母選取上,如果原單詞的頭字母都一樣,我們只好在字母后加數字以便區分,無論謂詞還是個體詞。和(a)稍有不同,(b)中的兩個子句並不是完全獨立的,特別是後件子句由於代詞的緣故,其指稱依賴於前件的個體詞,或者依賴更大的語境。
這個問題我們後面還要談到。
(c)
兩個子句沒有任何意義上的關聯,事實上,Casper是否比John更高大,跟John是否嘮叨無關,不過也從一個側面反映了蘊含式的一個特點:其真值只和後件相關,與前件的真值無關。
(d)
後件的兩個個體詞全是代詞,而我們的翻譯,也是根據主觀解讀,不能保證一定正確。或者說,(d)在字面上有可能存在歧義,這種歧義用漢語版的翻譯就是
讚美【彼得】【卡斯帕】→ ~拽【彼得】【卡斯帕】
讚美【彼得】【卡斯帕】→ ~拽【卡斯帕】【彼得】
(e)
第二個體詞是反身代詞,亦即,對前面出現的個體詞的“複製”。和(b)一樣,謂詞邏輯無法區分下列句子:
Alcibiades admires himself.
Alcibiades admires Alcibiades.
(f)
第二個體詞是由兩個單詞“each other”構成的互指代詞。互指代詞是語義學上的一個難點,有許多討論和論文。而翻譯很有意思,翻譯成自然語言的漢語就是:
我和他互相幫助 == 我幫助他、他幫助我。
不過有研究顯示等號兩側的句子有時真值並不總是相等。
(g)
後件中的主格代詞he是否就是Socrates,也是由語境決定,如果這個複合句再沒有更大語境,那麼he和Socrates是同指(co-reference)。
(h)
首次出現形容詞作爲定語成分。而翻譯則無法區別是表語還是定語。換句話說,謂詞邏輯無法區分下列句子
Socrates is a mortal man.
Socrates is a man and Socrates is mortal.
從上面的討論我們可以看出,謂詞邏輯的表達力,要高於命題邏輯;例如(a),我們可以從謂詞和個體詞就能判斷這個句子的析取是相容的還是排他的。
但另一方面,謂詞邏輯的表達力仍然很弱,特別是和自然語言相比。自然語言中的許多語言現象無法用謂詞邏輯精確描述。尤其是一開始,我們定義個體詞時就說過,謂詞邏輯的個體詞和自然語言的主語、賓語不完全一樣,主要是覆蓋的範圍不同。謂詞邏輯到現在爲止,我們只能處理專有名詞、和帶定冠詞、指示代詞的單數普通名詞,而一般的普通名詞則是作爲謂詞處理的。
總之,謂詞邏輯的表達力只適合“粗粒度”地描述自然語言的一小部分句子。
三、量詞和量詞表達式
邏輯(包括命題邏輯和謂詞邏輯)研究【量詞】的基本動機是因爲出現在命題中個體的數量直接影響着單句命題的數量和推理的有效性。邏輯中【量詞】的概念是指出現在單句(我們在謂詞邏輯中成爲“原子句”)個體的“數”。在邏輯中,“數”的概念包括定量和不定量。邏輯只研究包括相當於“無、若干、全部”的不定量,並把這些詞稱作【量詞】。命題中出現量詞的句子稱作量化表達式(quantifying expression),亞氏邏輯將含有量詞的句子看做是兩個謂詞的連接;用這種方法只能處理含有一個量詞的句子。含有量詞的句子在邏輯中無法按照自然語言語法的分析法。爲此引入了謂詞邏輯的兩個重要符號: ∀(Any/All):全稱量詞 (universal quantifier) ∃(Exist):存在量詞 (existential quantifier)
量詞作用於謂詞時需要引入一個指導變元,同時放在量詞後面和謂詞填式中:∀xP(x)、 ∃xP(x)。指導變元是不可取值代入的,稱作約束變元(bound variables),約束變元可以改名而不改變語句含義可以取值代入的個體變元稱作自由變元(free variables)
量詞所作用的謂詞或者複合謂詞表達式,稱作量詞的轄域(domainof quantifiers)
〉 對於一元謂詞,∀xP(x)和 ∃xP(x)都是命題,對於有窮的個體域
〉 ∀xP(x)等價於P(a1)∧…∧P(aN)
〉 ∃xP(x)等價於P(a1)∨…∨P(aN)
- 量詞用例:
① 個體域是所有人,∃xFRD(x,張三)表示“張三在這個世界上有朋友”
② 個體域是{1,2},∀x(x>0)等價於(1>0)∧(2>0)
③ 個體域是所有正整數:歌德巴赫猜想
〉 所有大於2的偶數,均可表示爲兩個素數之和
〉 ∀x∃p∃q(Even(x)∧(x>2)→(x=p+q)∧Prime(p)∧Prime(q))
四、謂詞邏輯語言句法形式定義
接下來我們將重點介紹如下幾個問題:
1. 句子、公式、命題和命題函數的定義; 2. 謂詞邏輯語言句子的良形性(well-formedness)
3. 量詞轄域的問題; 4. 謂詞邏輯語言句法的形式化定義
需要明確一點的就是關於句法的學習重點是掌握如何對任何一個形式系統建立相應的句法體系,也是對之前已學過的命題邏輯語言句法定義的延伸,這是後面學習語義的基礎。掌握的重點是:如果自己要設計一個形式系統,需要做些啥?
- 第一個問題:句子(sentence)、公式(formula)、命題(proposition)、命題函數(propositional function),這四個概念。
- 首先,這四個概念,都屬於謂詞邏輯語言的概念,而不是任何自然語言,如英語、漢語等句子,是句法概念,謂詞邏輯語言的句子,是指由謂詞和個體詞常量構成的原子句和由邏輯常項連接的多個原子句構成的複合句構成。因此,謂詞邏輯語言的任何表達式,只要有命題真值,都可以構成句子。後面當我們學習了量詞轄域的概念後,將重新定義句子的概念。
- 命題,是語義概念,在謂詞邏輯語言中所有具有真值的句子都可以構成命題。換句話說,命題,是句子的語義映射,或者說是句子的語義值(semantic value)。
- 命題函數:句法上具有句子形式但個體詞是變量因而整個表達式沒有真值的“句子”,稱作命題函數。例如:紅色(x),高興(x)∧快樂(x)等,前者是原子句形式,後者是兩個原子句的合取,但都沒有命題真值,所以稱作命題函數,換句話說,命題函數是命題的待定形式,它的真值取決於所選取的x的語義。由於命題函數沒有真值,故不是句子。
- 公式:句子和命題函數的合稱,叫做公式;換句話說,凡具有句子形態,不管是原子句或複合句形態,也無論有無真值,統稱叫做公式。從這個意義上說,句子既可以叫作句子,也可以稱作公式,而命題函數只能稱作公式。
上面四個概念之間的關係,如下圖所示:
這個表橫着看,區分有無真值,第一行的句子和命題其實是一個東西的兩面:句子是句法側面,命題是語義側面;第二行的公式和命題函數沒有真值,但仍然具有句子的句法結構;
這個表豎着看,區分句法和語義,左面是句法範疇,右面是語義範疇,通常談論謂詞邏輯語言的句法結構時,我們通常用句子(有真值)或公式(無真值),但有時句子和公式統稱公式;在談論句子、公式的語義側面時,通常用命題(有真值)或命題函數(無真值)。
- 第二,謂詞邏輯語言中公式的良形性
謂詞邏輯語言的句子和命題邏輯語言的句子最大不同是,謂詞邏輯的句子是由可分析的原子句構成,而原子句加上量詞成爲量化表達式之後,就會遇到命題邏輯語言不曾遇到的問題。
例如:我們知道,∀xAx、∀y(Ay→By)、AxBy∧By都是合法的表達式,屬於良性結構,但是下列結構呢?∀xAy、∀x(Ax→∃xBx)
我們知道,對良形性定義選擇一個重要基準是簡單性,定義越簡單,歸納性就越強,就越容易抓住對所定義對象的一般特徵。例如,我們通常用希臘字母𝜙表示任意的公式,那麼對謂詞邏輯公式的定義如果是:若𝜙是公式,那麼∀x𝜙和∃x𝜙也應當是公式。現在的問題是我們不知道𝜙是否含有x,假定𝜙中沒有x,那這個公式還合法嗎?還是良形的嗎?按照簡單性原則,如果前面的定義不會引起“一致性”(consistency)問題,那麼就應當採取這種定義。進一步而言,∀xAy、∀x(Ax→∃xBx)那樣的結構,基於同樣的理由,也可以接納爲良形的結構。這一點,對於任何定義的形式系統都是非常重要的:一致性問題是形式系統能否引起悖論的一個重要基準。
前面我們討論過,一個確定的邏輯系統,可以定義多個邏輯語言,謂詞邏輯也不例外。每個謂詞邏輯語言都有自己獨特的基本詞彙,其中每個謂詞都有固定的“元”(arity),每個語言因論域不同,所定義的個體詞常項也不一樣。但所有語言都有一套共同的標準元素,如全稱量詞和存在量詞、邏輯連接符、輔助符號括號等。因此對謂詞邏輯語言句法的定義,和命題邏輯語言類似,我們對謂詞和個體詞常項的語義不會做任何直接定義,而是假定這個語言本身已經對應於某個特定的論域,相應的每個個體詞常項都可以在相應的論域中找到所定義的客體對象,而謂詞也可以在論域中對應相應的客體對象子集合。
- 第三,謂詞邏輯語言句法的形式化定義(定義1):
設所定義的謂詞邏輯語言爲L,
(i) 如果A是L語言詞彙表中的n元謂詞,且t1,…tn是詞彙表中的個體詞常項或變項,則A(t1),…A(tn)是L中的公式;
(ii) 如果𝜙是L中的公式,那麼~𝜙也是公式;
(iii) 如果𝜙和𝜓是L中的公式,那麼(𝜙∧𝜓)、(𝜙∨𝜓)、(𝜙→𝜓)也是公式;
(iv) 如果𝜙是L中的公式,x是變項,那麼∀x𝜙和∃x𝜙也是L中的公式;
(v) L中的公式只能通過上述(i)-(iv)方式以有限的步驟所生成。
上述的定義方式,基本上和命題邏輯語言的句法定義一樣,是無外延歸納法,規則第(i)條規定了原子句、原子公式的生成方式,而(ii)和(iii)則基本上和命題邏輯語言相同;(iv)規定了量化表達式的生成方式。
同樣和命題邏輯語言一樣,對每一個複合公式,我們都可以定義一個句法樹,這個句法樹有兩個意義:第一,可以使我們更清楚地瞭解子句、子公式的意義;第二,可以理解一個複雜表達式的生成過程和每個生成步驟所依據的規則。例如下列句法樹:
這個句法樹最終生成的公式是:
(51) ∃x∃y(∀z(∃wA(z,w)→A(y,z))∧A(x, y))
而其中原子公式的句法樹是:
這個句法樹在生成過程中,產生了下列子公式:
∃x∃y(∀z(∃wA(z,w)→A(y,z))∧A(x, y))
∃y(∀z(∃wA(z,w)→A(y,z))∧A(x, y))
∀z(∃wA(z,w)→A(y,z))∧A(x,y)
∀z(∃wA(z,w)→A(y,z), A(x,y)
∃wA(z,w)→A(y,z)
∃wA(z,w), A(y,z)
A(z,w)
可以證明,任何子公式都是從公式𝜙中取出的任意連續字符所形成的字符串,這些字符串本身也是公式。確定了公式以後,我們就要從公式定義句子,也就是,定義有真值的公式,要做到這一點,還有一項工作要做:確定公式中每個量詞的【轄域】(scope)。
量詞轄域的形式化定義(定義2):
當∀x𝜓或∃x𝜓是𝜙中的子公式時,𝜓稱作是該量詞在𝜙中的【轄域】(scope)。
以上面(51)爲例,看看下面看幾個例子:
按照定義2的定義,下面公式
(54) ∀xA(x) ∧ ∀xB(x)
中有兩個量詞,第一個量詞∀x的轄域是A(x),第二個量詞∀x的轄域是B(x)。每個變項x分別都有一個相應的轄域。如果變量x前面沒有相應的量詞,如,A(x),這樣的變項就不屬於任何轄域。爲此,我們有如下的定義:
自由變項和束縛變項定義(定義3):
1. 在公式𝜙中,如果變項x不在任何量詞∀x和∃x的轄域範圍內,那麼該公式𝜙中的x被稱作是自由變項(free variable);
2. 如果∀x𝜓或∃x𝜓是公式𝜙中的子公式,且x是𝜓中的自由變項,那麼這個x被稱作是量詞∀x或∃x的束縛變項;
這個定義的第二項需要做一點說明:在一個公式中,如果一個變項前面有一個以上的量詞,那麼這個變項只能被距離最近的變項束縛。舉個例子:
∀x(A(x) ∧ ∃xB(x))
在這個公式中,B(x)中的x只能受存在量詞∃x束縛,而和外層的∀x無關;相反,而A(x) 在括號內是自由變項,根據定義3.2,這個x應當受∀x束縛。
- 現在可以根據轄域的概念定義什麼是句子(定義4):
如果一個公式不包含自由變項,則稱爲句子。
如果一個公式包含自由變項,則稱爲命題函數。
例如:∀xA(y)不是句子,而是命題函數,因爲y是自由變項;而∀x(A(x) ∧ ∃xB(x))是句子,因爲公式中每個x都是束縛變項,但是全稱量詞後括號中的公式A(x) ∧ ∃xB(x)不是句子,因爲A後面的x是自由變項。
最後,我們介紹一下替換(帶入)規則,由於這個規則,我們可以將命題函數轉化爲命題。
如果𝜙是含有自由變項的公式,設c對應給定論域中的某一對象,則[c/x]𝜙將使𝜙中所有x被c替換,由於c已經對應論域中的對象,使得公式𝜙成爲沒有自由變項的句子。
例如:
上面的替換,原理很簡單,常項c只對自由變項替換而對束縛變項無效,這一點需要注意。
替換規則,實際上就是函數的帶入規則,在邏輯語言中,則是外延性的形式化表示。後面的許多內容,都將用到這個規則。
五、自然語言中的量化表達及語句形式化
接下來,我們來看一下自然語言中的量化表達及語句形式化,因爲多量詞的自然語言表達式的問題相比一階邏輯的謂詞邏輯來說更加複雜一些。所以將一階謂詞邏輯的量化理論擴大到自然語言,要藉助很多的數學、邏輯工具,光憑謂詞邏輯一己之力是不夠的。這就要求我們掌握更多的邏輯知識、數學知識和哲學(本體論和知識論)。此外,量化表達的研究,至少牽涉語言學、邏輯學和哲學方面的知識,除此之外也和理論計算機科學、人工智能/自然語言處理、認知科學等學科相關,同時也是當前形式語義學研究的重點之一。
下面我們僅僅看一些簡單的例子,更爲複雜且貼近生活的屬於語言學範疇了,再次就不深究了。
設個體域爲實數域,E(x,y)表示x=y,L(x,y)表示x<y,那麼
〉 ∀xL(0, x2+1)真,∃xE(x2+x+1, 0)假,當個體域變成複數域,則上面的真值將改變。
〉 我們可以使用常用的數學公式代替謂詞的形式 ,∃x(x2+x+1=0)
〉 有人勇敢,但不是所有人都勇敢 ∃xBrave(x)∧¬∀xBrave(x)
〉 勇敢者未必是成功者, ¬∀x(Brave(x)→Success(x)) 或 ∃x(Brave(x)∧¬Success(x))
〉 君子坦蕩蕩,小人常慼慼, ∀x(P(x)→Q(x))∧∀x(R(x)→S(x))
〉 張三孤獨走完一生, ∀x(¬FRD(x,張三)) 或者 ¬∃xFRD(x,張三)
到這裏關於謂詞邏輯的句法就結束了。下面的介紹我們將開始謂詞邏輯的語義。這部分需要一些離散數學的知識,特別是:集合、函數、關係的概念,內容基本上就是Tarski的真值語義論的介紹。