【數理邏輯四】謂詞邏輯及形式系統 【中】

謂詞邏輯及形式系統 (語義)【中】

 

一、概述

一、什麼是語義
簡單地說,所謂語義,不管是自然語言的語義還是形式語言的語義,基本上就是兩個系統之間的映射關係。自然語言的語義,是語言符號和我們大腦中概念之間對應;而形式語言的語義,則是符號系統和某個學科的知識體系之間建立的對應關係,現在研究最多的是符號系統與數學結構之間的映射關係,以及符號系統與哲學體系之間的對應關係。如果要用一個統一的概念表達符號系統所對應的其它學科知識體系,那麼這個概念就是【模型】。
有了模型的概念,對什麼是語義的定義就可以簡明扼要地表示爲:
語義:符號系統 → 模型
模型,在我們日常生活語言中,通常稱作“語境”、“上下文”、“世界”、“背景”、“客觀環境”等,但是這些表達通常意義模糊,無法準確、精確地把握模型的基本概念。

模型的概念,在數學中,又稱作結構,這是對任何數學分支、數學對象的一種統稱。上世紀1930年代,法國的布爾巴基學派曾經企圖用“結構”這個概念統一所有的數學分支。雖然沒有獲得學界完全的接納,但相當一部分數學家是認可這樣的定義的,而且就算不認可的數學家迄今爲止也未曾提出過比“結構”更強有力的概念作爲數學研究的統一概念。結構作爲一個嚴格的數學概念,用不太嚴謹的語言表述就是:一個非空集合、以及在這個集合之上所定義的集合元素間的關係和對集合元素的操作。例如,自然數可以看做是一個結構,它是由所有非負整數構成的集合、加上大小關係以及相應的加法乘法運算構成。不過在邏輯學,模型是更廣泛使用的概念,故我們這裏通常使用“模型”作爲基本的術語。

一個一階謂詞邏輯系統,就是這樣的形式語言符號系統,它的的句法成分就是我們前面內容所介紹的常項、變項、謂詞、量詞和句子。它的句法規則就是我們用統一的歸納法所定義的規則程式:
1. 設定基本概念爲該語言的良形表達式(wff);
2. 如果表達式A是wff,則操作φ(A)生成的表達式也是wff;
3. 如果表達式A是wff且表達式B是wff,則操作ψ(A, Β)生成的表達式也是wff
4. 本語言的任何表達式是wff當且當該表達式是由上述1-3規則生成。

由這樣的句法規則生成的句子的集合,稱作一階語言(first order language)。通常一階語言的句法層面稱作該語言的形式層面。一階語言的形式層面就是一個由有限多、或無限多沒有任何意義的符號按照上面的規則建立的字符串集合。如果要讓我們的一階語言產生意義,就必須要創建/設定一個模型,按照一定的映射規則建立該語言元素與模型對象之間的對應,或者稱作綁定。這裏要注意的是,這個被映射模型,並不屬於一階語言,模型只是某個特定學科、知識體系的數學化表示,或者稱作‘建模’,或者稱作XX理論的形式化。
一階語言的這個特點,或者說形式語言的這個特點,和自然語言大不相同。任何人類使用的日常語言,其詞彙、特別是實詞本身就帶有“天然的”語義。這些詞彙的語義已經作爲該語言母語話者大腦認知世界的一部分。而且,對相同的詞彙,不同語言體系的語義是不相同的。例如,’勉強‘在日語中,是‘學習’的意思。換句話說,同一語言符號,對應不同的模型,所產生的映射關係亦不相同。

因此可以說,自然語言基本元素的語義,原則上說是天然的,不是人爲規定的,但是許多科學新發現導致了新概念新術語的出現,這些新詞,或者是舊詞新用——重新定義,或者是全新的造語。伴隨着網絡的發達,由於網絡交際的需要,交際參與者會創造許多‘經濟實惠’的特殊詞彙。例如在中國,由於嚴格的網絡管制,甚至促使網民利用各種手段創造出獨特的微語言體系,造成了特定語境下的網絡語言。從這個意義上說,人對於自然語言詞彙的語義並非被動接受,相當一部分是重新創造的。如果用我們現在的術語表述的話:
網絡語言符號→特定的概念系統

而一階語言,或者更廣義地說,形式語言的基本元素則沒有固定的(predefined)語義,或者說根本就沒有語義,只有在和一個特定的模型人爲‘綁定’之後才產生語義,這時我們可以說,這個語言得到了‘解釋’ (interpretation)。而‘解釋’,並不屬於這個形式語言的一部分。爲什麼?因爲我可以拿這個語言和其它結構建立綁定關係,這個時候語言中的元素得到新的‘解釋’。換句話說,形式語言的語義論不屬於相關形式系統的一部分,因爲其語義解釋端看和哪個模型綁定。形式語言的這種特性,使得它可以作爲多種學科的基礎語言,這也是爲什麼邏輯學是多門學科精密化基礎的原因。形式語言和模型之間的這種‘解釋’、‘綁定’關係,用我們的日常生活語言表示,就是‘描述’、‘描寫’,例如,某部小說的作者,用一種淡淡哀愁的筆觸描寫了1930年代中國農村的景象。這時,‘筆觸’代表的就是作者使用的語言,‘1930年代中國農村的景象’就是作家心目中的‘世界’,可看做是當時中國農村某個局部的‘模型’。
語言和模型之間是相互獨立的,這就像自然語言,既可以用來描寫想象的世界,例如西遊記,也可以用來寫科學論文,例如關於天文學中的星體運動。這時,西遊記中的人神鬼的世界、論文中的星體,和語言之間是相互獨立的,因爲漢語除了可以描述想象的世界、宇宙中星體,還可以幹別的,例如在網上灌水。總之,語言工具、載體,和語言對應的世界相互獨立的。

由此我們可以得出結論:語義學不屬於形式系統的組成部分,但仍然是理論所關注的重點,這個重點就是——語言符號和所描述世界之間的對應關係:解釋、綁定、指稱、描述、描寫、表達、表述

 

二、 謂詞邏輯語義表達的基本工具

既然語義的本質就是映射關係,那麼熟悉中學數學的我們自然會想到,表達這種關係的最恰當工具就是函數。沒錯,函數就是邏輯學表達語義的基本工具。函數可以把這種映射關係形式化,可以精確地定義什麼是“映射”,“映射”的各種狀態和性質。但是如果要用函數表達映射關係,我們還需要一個非常重要的工具,那就是集合。因爲集合可以精確表達什麼是符號系統,什麼是模型,而函數的本質就是兩個集合之間建立的映射關係

因此,在開始學習謂詞邏輯語言的語義之前,需要熟悉函數、集合的概念。關於集合和集合論,後面的內容會介紹,也可參考任何離散數學教科書的相關內容,這裏就不展開了。而對於函數,由於邏輯學所定義的函數和我們常見的數學函數相比有許多獨特的性質,我們會在後面深入討論。這裏可以說的就一句話,邏輯中的函數,都是離散的,而我們中學時代熟悉的初等函數是連續的。

在命題邏輯部分,我們已經看到了函數的作用,當時我們將命題邏輯的語義定義爲從句子到邏輯真值之間的映射,亦即,
設語義函數爲V,設S是某個命題邏輯語言的所有句子的集合,設真值集合爲{0,1}
那麼我們就可以將該語言所有句子的語義定義爲
V:S → {0,1}
當時,我們將語義函數稱之爲‘賦值函數’(valuation)。賦值函數,使得我們可以根據真值表對該語言內每一個句子都能賦予一個唯一的真值

命題邏輯語言的學習使我們可以看到邏輯學是如何定義和表示語義的——確定邏輯命題句的語義就是求真的過程。由於命題邏輯語言只關注複合句的語義而完全忽略原子句的語義,而複合句的語義則來自於邏輯連接符的語義定義。而邏輯連接詞其語義是固定的,和具體的模型無關。因此,命題邏輯的語義相對是最簡單的,只要通過真值表我們就可以知道句子的語(zhen)義(zhi)。

而謂詞邏輯雖然我們仍然使用賦值函數這個名稱,但是情況有了本質的變化。首先,我們已經深入到單句的內部,要了解單句本身的結構,這樣,我們要處理名稱、屬性,加上量詞,這使得事情變得非常複雜,複雜得使我們不得不重新建立語義論,而不能以命題邏輯的語義論爲基礎加以改造。

首先,謂詞邏輯中的基本元素,常項、變項、謂詞、量詞等,不像句子,它們沒有真值,因此無法用賦值函數賦予它們特定的值。因此,在賦值函數之外,我們會引進【解釋函數】的概念。它的任務就是將語言中的這些非句子的基本元素和模型中的對象建立一對一的賦值關係。形式化的表示就是:
設ƒ爲解釋函數,設形式語言爲L,設模型/結構爲D,則:
ƒ:L → D

這樣,對於句子,我們有賦值函數,對於其它成分,我們有解釋函數,這是命題邏輯語義所沒有的。

三、謂詞邏輯語義論的研究方法

有了基本概念和工具的理解,我們就會不難理解一階語言語義學習的基本內容了。

1. 擴充的函數概念:當我們有了一個句法上嚴格定義的形式語言之後,我們需要用“解釋函數”對謂詞邏輯語言中所有的元素,包括常項、變項、屬性、命題、量詞進行‘解釋’,這時,常項要對應一個具體的概念或實體,變項要對應概念和實體的一個範圍,屬性要對應一個集合,而量詞則對相應集合範圍的界定。這遠比我們在命題邏輯中句子對應真值這單一的情況複雜多了。

由於一階語言符號系統要面對各種不同的模型,因此實際的映射關係並非整齊劃一,會出現各種不同情況。這些情況如果以函數作爲工具表述的話就是我們在中學函數學習中出現的三個概念:函數定義域和值域之間映射的三種狀態:單射、雙射和滿射。這個問題我們會在後面詳細闡述。

2. 確定模型的定義。由於謂詞邏輯中涉及到概念、屬性,而這些東西只能和特定的語境、學科、世界相關,所以我們先要確定我們的形式語言要和哪個具體語境相關。例如我們可以用一個特定的謂詞邏輯語言和《西遊記》綁定,這個時候,這個語言的每個常項都和《西遊記》中某個具體人物產生對應關係;在此基礎上我們可以建立《西遊記》中的人物關係表,確定每個人物的行爲舉止,例如神仙可以飛天,凡人不可,但神仙凡人都可以行走。我們也可以用這個形式語言綁定代數中羣的結構,這個時候,每個常項對應着某個自然數,變項則對應於某個自然數範圍;然後確定確定基本關係自然數的大小關係和基本運算;最後,我們根據自然數的性質,進一步確定關於羣的公理系統。因此,從某種意義上,我們的謂詞邏輯語言真是一種萬金油系統,它的語義是什麼,你說了算。如果將謂詞邏輯,包括形式語言、推理規則全面應用到某個數學理論,那這個邏輯就換了頂帽子,一個非常高大上的、非常耀眼的名稱——數理邏輯。而數理邏輯對數學的應用最深入的部分就是關於算術、或者用一個讓你顫抖的名詞,關於數論的研究。可以說現代數理邏輯的所有內容包括非常“高大上”的哥德爾定理都是關於邏輯在算術應用方面的內容。而謂詞邏輯的語義論和數學一旦掛鉤,由於數學本身的確定性、可定義性,就產生了專門的研究一階謂詞邏輯語義和特定數學結構之間映射關係的數理邏輯學分支——模型論。因此可以說,謂詞邏輯語義論是模型論的起點

3. 賦值函數。和命題邏輯語言一樣,謂詞邏輯語言對命題邏輯句子的語義解釋也是通過賦值函數進行的。由於謂詞邏輯語言是命題邏輯語言的超集,所以命題邏輯語言的複合句的語義解釋、亦即、它的語義賦值函數不變,仍然有效。不過在本章學習中,我們會深入研究各種句子之間的真值【等價】問題,也就是說,許多句子的句法形式不同,但是它們的真值卻總是相同的。而等價關係是所有形式系統進行符號變換、或者說邏輯表達式形式變換的理論依據。這種等價關係就相當於我們在中學數學中學到的許多等式關係一樣,例如 (a+b)² = a²+2ab+b²,同樣,我們也會接觸到類似的邏輯等式。順便說一句,現代邏輯學研究,有兩個研究路線,一個是將邏輯當做推理規則研究。另一個是將邏輯當做代數研究,這個時候,我們只關注抽象的邏輯符號和邏輯式,就像我們在中學中關於實數的代數一樣,只關注抽象的代數式和代數式之間的關係一樣,這就是我們在《離散數學》中所學到的邏輯知識。正因爲如此,我們從一開始就呼籲、提醒要將符號邏輯的學習過程看做是學習外語和代數的過程。

在研究賦值函數的時候,我們需要學習兩個重要概念:分析真(analytical)和合成真(synthetic)。簡單地說,所謂分析真,就是說命題的真值和模型、結構無關,它的真是建立在邏輯關係上的,就像上面的數學等式,和具體的數無關。而合成真,則相反,一個句子的真值和所對應的結構、模型相關。例如1+1=10,在十進制算術中是錯誤的,句子真值爲假,但在二進制算術中,句子真值爲真。換句話說,當我們對形式語言和特定的結構、模型掛鉤之後,我們要區分哪些句子的真值依賴模型、哪些不依賴如果句子間的等價關係不依賴模型,那麼就稱作邏輯等價;邏輯等價的另一個術語就是重言式,或永真式(tautology)。而和重言式相反的句子則稱爲“矛盾式”(contradiction),亦即,在任何模型中真值爲永假。那些依模型不同而真值不同的句子稱作contingency,對此好像沒有統一的譯法,有的叫“偶然式”,或“適然式”,還有的叫“可滿足式”、“權變式”,我這裏權且翻譯作“可變式”,相對於永真式、矛盾式的真值不可改變。

4. 模型的概念

模型的概念是全新的,我們在本文開頭做了簡單的介紹,基本意思就是謂詞邏輯語言所對應的世界、語境,它的數學表述就是結構的概念,因此我們對模型概念的定義、性質描述等,形式化表示都將以結構概念展開。而結構概念本身又是從集合、函數、關係這三個概念定義的。有了嚴格的模型概念,有了嚴格定義的一階語言,再加上賦值函數和解釋函數,我們就可以全面定義一階謂詞邏輯的語言——一階語言的語義了。但是不要忘了,由於【模型】概念的引入,我們的賦值函數就不再是單一的了,因爲句子的真值會隨着模型不同而改變。因此在確定賦值函數之前我們先要確定模型。相對於命題邏輯的單一賦值函數V,在謂詞邏輯中,賦值函數會有多個,具體多少個取決於你所選擇的模型數量,因此對每個模型M,我們都會有相應的賦值函數就是VM和解釋函數VI。(其中字母V代表valuation,賦值函數,M代表model,模型,I代表interpretation,解釋)。

5. 語義解釋中的替換問題

在用模型的概念進行語義解釋時,我們預先假定形式語言和模型之間有一種理想的對應,每個語言元素都可以對應一個模型中的對象。現在的問題是,如果在我們的謂詞邏輯語義建立之後,模型發生改變,例如又添加了新的對象,或者語言和模型之間原本就不存在一對一的滿射情況下,如何確定謂詞邏輯句子、特別是帶全稱量詞的句子的真值就成了問題。舉個簡單例子,在一次考試中,我們班所有同學都及格了。因此,這句話爲真。可是有一天從別的班調來一位新同學在那次考試中不及格,這時這個句子的真值就不再爲真了。這個時候,我們需要的是另一種方法,這種方法比賦值函數方法繁瑣,但可以保證在上述問題出現時仍然可以確定句子的真值有效。這個方法就是在賦值函數賦值之前,對句子中所涉及的所有命題真值做一次掃描。還拿上面的例子,在給“我們班所有同學都及格了”賦予真值之前,需要對班裏每個同學是否及格逐一調查,因爲我們班所有同學都及格了=A同學及格且B同學及格且C同學及格……。換句話說,全稱量詞的一個句子真值相當於多個單一名稱句子合取真值,我們需要一個評估函數,對每個這樣的單一名稱的句子真值進行評估,這樣,當模型中的對象發生改變時,由於賦值函數在應用之前我們先對關於每個對象的命題句進行了掃描,這樣在進行賦值時就不會出現語言符號和對象之間數量不匹配的情況。爲了應對這種現象,當謂詞邏輯語言的句子出現量詞的時候,就需要將命題分拆爲多個以專有名稱爲主詞的句子,同時設定一個特殊的賦值函數獲取每個這樣的句子真值,這時,如果句子的一般形式爲∀xφ(x),那麼對這個句子的賦值函數就是
VM(∀xφ(x)),要獲得這個句子的語義,就要知道x所代表的個體範圍內的元素集合{a1,a2,..an}使得句子φ(a1),φ(a2),..φ(an)的真值都爲真。因此爲了掃描每個這樣的句子,我們將設定一個特殊的賦值函數g使得g(φ(a1))∩g(φ(a2))∩,..∩g(φ(an))爲真,因此我們有 VM(∀xφ(x)) = g(φ(a1))∩g(φ(a2))∩,..∩g(φ(an))

這樣,一個通用的一階語言的賦值函數就成爲:VM,g(ψ),其中ψ代表一階語言的任意句子。

除了以上的內容,謂詞邏輯的語義部分還要引入“同一性”的概念和相應的邏輯運算,除此之外我們還要深入‘關係’的概念在語義的作用,最後討論幾種邏輯學常用但是在數學很少看到的函數表示法。

 

二、量詞的語義

1. 命題邏輯的最小元素是單句,也就是不包含邏輯連接符的句子,所以,命題邏輯的研究對象是複句:複句的句法和語義。而謂詞邏輯則深入到單句內部,將單句分解爲兩部分:主詞和謂詞。在亞里士多德的傳統邏輯中,對單句的分析是根據詞項:主詞詞項和謂詞詞項進行的。而在弗雷格的一階邏輯中,一個邏輯系統,通常是由以下部分組成:
1. 邏輯連接符:¬、∨、∧、→、↔︎
2. 量詞:∀、∃
3. 個體常項:a、b、c、x、y、z...(或該系統定義的特定的個體詞系統),相當於亞氏邏輯中的主詞
4. 謂詞常項:P、Q、R...(或該系統定義的特定的謂詞系統)

其中1-2是一個邏輯系統固有的成分,而3-4則因邏輯系統的定義不同而不同。這一點以前也說過,就和程序語言一樣,前者相當於語言中的關鍵字和預定義運算符,例如+、-、*、/、%等,後者則相當於用戶定義的常量、變量名,以及函數名;語言只規定了定義的方法和格式,因每個應用程序可根據要解決的問題種類具體定義每個常量、變量和函數名。其實,現代程序設計語言就是從邏輯語言演化而來,通過邏輯的學習,我們可以看到這種演化的痕跡。

由於命題邏輯的基本成分是單句,定義它的語義相對就比較簡單,用一個真值表基本就可以解決。不過出於形式化和精確化的需要,我們定義了稱作“賦值函數”(valuation)的工具,用來給每個wff賦予一個真值。
而謂詞邏輯的成分,如上可知,比命題邏輯要多很多,語法句式相應也比較複雜,我們無法像命題邏輯那樣,採用單純的“賦值函數”、根據真值表取得真值了。其中最大的問題,正如我們前面介紹的,謂詞邏輯的所有成分沒有真值。
當然,廣義的謂詞邏輯,包括了命題邏輯,應當是命題邏輯的超集,在這種語境下,謂詞邏輯又稱作“一階邏輯” (first order logic);描述這種謂詞邏輯的語言稱作“一階語言” (first order language);基於謂詞邏輯系統的論證過程稱作“謂詞演算”或“一階謂詞演算” (predicate calculus or first order predicate calculus)。因此,命題邏輯的賦值函數仍然適用於具有複句結構的謂詞邏輯句子。

現在讓我們把上面所說的符號化一番
1. 設:L爲某個有定義的一階語言;
2. 設:T爲真值集合:{0,1}
3. 設:V爲賦值函數,這個函數的定義域是L,值域是T,則賦值函數的一般形式爲:
V:L → T(注意:這裏的箭頭表示函數從定義域到值域的映射關係,而不是蘊含邏輯連接符)
這樣我們就可以重複命題邏輯複句的語義了:
(i) V(¬φ) = 1 當且當 V(φ) = 0
(ii) V(φ ∧ ψ) = 1 當且當 V(φ) = 1 且 V(ψ) = 1
(iii) V(φ ∨ ψ) = 1 當且當 V(φ) = 1 或 V(ψ) = 1
(iv) V(φ → ψ) = 1 當且當 V(φ) = 0 或 V(ψ) = 1
(v) V(φ ↔︎ ψ) = 1 當且當 V(φ) = V(ψ)
除此之外,謂詞邏輯還定義了含有量詞句子的賦值函數,這一點是命題邏輯沒有的:
(vi) V(∀φ) = 1 當且當 V([c/x]φ) = 1,其中c代表L中的任意個體常項
(vii) V(∃φ) = 1 當且當 V([c/x]φ) = 1,其中c代表L中的至少一個體常項

這裏,需要對(vi)和(vii)做進一步的說明和解釋。
一、“∀φ”代表語言L中任意一個含有量詞的句子;
二、“V(∀φ) = 1”表示∀φ這個句子的語義解釋在某個特定語境中真值爲“真”
三、“V([c/x]φ) = 1,其中c代表L中的任意個體常項”,這句話是在說明全稱量詞的意義是:用語言L中定義的所有個體詞替換x,都可以使這個命題成真:V(∀φ) = 1。
換句話說,當含有全稱量詞的某個命題爲真時,相當於多個個體謂詞句子和合取:
設L中個體常項的集合是: C = {c1, c2,…cn} ; V(∀φ) = V(∀φ(c1) ∧ ∀φ(c2) ∧ ∀φ(c3) ∧ … ∀φ(cn))
 

舉個例子
1.
a. 張曉華、李建、王立波這三個人都很聰明。
這句話可以理解爲:
b. 在張曉華、李建、王立波這三個人組成的集合中,所有人都很聰明。

用我們上面定義的一階語言:
個體常項:張曉華、李建、王立波
謂詞常項:很聰明
量詞: 都,或者 所有...都

如果用全稱量詞符號∀代表“所有...都”,用φ代表“人很聰明”,那麼這個句子的語義解釋就是:V(∀φ) = 1 當且當 V(φ(張曉華) 且 φ(李建) 且 φ(王立波)) = 1

翻譯成自然語言就是:
張曉華、李建、王立波這三個人都很聰明 = 張曉華很聰明且李建很聰明且王立波很聰明。

由上面可以看出,全稱量詞的一個句子,相當於使用語言中所有的名詞作主詞加上謂詞形成的多個句子的合取。這跟我們的直覺一致。再舉個例子:
他這學期的所有科目的成績都是A。如果所有科目的意思是:{語文、數學、物理、化學、生物},那麼這句話的意思就是:
他這學期的語文成績是A、他這學期的數學成績是A、他這學期的物理成績是A、他這學期的化學成績是A、他這學期的生物成績是A。
上面的公式:
(vi) V(∀φ) = 1 當且當 V([c/x]φ) = 1,其中c代表L中的任意個體常項
表達的正是這個意思。

如果用類似編程語言的方式表達,那含有全稱量詞的命題句的語義確定是這樣的:
對於 每一個個體常項ci 在{c1,c2,… cn} 其中i是從0開始的自然數
如果V(∀φ(c[i])) = 1,那麼繼續考察下一個個體常項c[i+1]直到c[n]
如果V(∀φ(c[i])) = 0,那麼考察停止,該命題的真值爲0
如果V(∀φ(c[n])) = 1,那麼該命題的真值爲1

這裏最有意思的地方是:我們將語義解釋,對全稱量化句子的語義解釋,變成了一個算法,通過對每個含有具體個體常項命題句真值的解釋,最後得到全稱量化命題句的語義解釋。這一點,對於那些對邏輯與計算感興趣的朋友可以說是非常好的啓發。當然,一般意義上的符號邏輯只關心論證,不關心計算,而一旦邏輯的關注點加入計算,就產生了許許多多新的領域,例如遞歸論,研究函數的可計算性。什麼是可計算性?假如我們把上面例子中的個體常項的集合元素的個數設爲無窮,用上面的公式就無效了,爲什麼?我要考察集合中每個元素看關於這個元素的命題句是否爲真,那麼我就得永遠做下去,永無盡頭。也就是說,我無法在有限的步驟之內得到一個確定的結果。那麼上面那個賦值函數,就不是可計算的,因爲我們永遠無法知道:對所有個體常項來說,含有這些個體常項的命題的合取是否爲真,也就無從知道全稱命題的真值。

存在量詞的語義解釋和全稱量詞基本上一樣,唯一不同的是,全稱量詞要求語言中所有的個體常項代入命題句中真值唯一,而前者只需要一個個體常項代入命題爲真即可。如果用上面的程序語言格式,同樣是對每個常項掃描,只要遇到一個常項使命題爲真,就停止掃描從而獲得整個命題的真值。

小結:

  • 謂詞邏輯的語義解釋涉及單句內部的成分,而這些成分沒有真值,故語義解釋的方法和機制和命題邏輯不同;
  • 命題邏輯可以看做是謂詞邏輯、或者叫一階邏輯的子集,因此謂詞邏輯中關於複句的語義解釋,使用命題邏輯的方法仍然有效;
  • 量詞的語義解釋:相當於對語言內所有名詞進行掃描,把每個名詞代入句子看是否爲真,如果所有這樣句子的合取的真值爲真,那麼全稱量詞句子的真值爲真,如果有一個或以上的名詞代入句子使得命題爲真,那麼存在量詞句子的真值爲真。
  • 從量詞的語義解釋方法可以看出,邏輯學的方法可以轉化爲一系列確定的步驟產生確定的結果,這樣的過程稱作算法。而算法是數理邏輯的分支遞歸論、或者稱可計算理論的核心概念。
  • 我們將討論模型以及單句內部成分的語義問題——解釋函數

 

三、模型

既然謂詞邏輯語言中除了句子,其它成分沒有真值,那麼如何來確定它們的語義呢?正如我們在開篇所述,所謂語義就是符號系統其它系統(大,可以包括我們生活的現實世界或者人類的精神世界,,可以僅僅是一句話、一頓飯之間建立的對應關係
當我們只談論符號系統時,我們是在談論句法,當我們只談論符號外的任何系統,我們是在談論哲學、或者專業知識,只有當我們談論符號與外部系統之間關係時,我們纔是談論語義。當然,語義並非是符號與外部世界的全部,例如如果我們是在談論特定的符號系統,如自然語言,和特定的外部系統,如人的精神,這二者之間的對應,那麼這個對此進行研究的就是語言哲學。如果符號系統是我們現在正在學習的人工語言——謂詞邏輯語言,而外部系統是形式化了的數學理論——數學結構,那麼對此進行研究的就是數理邏輯的模型論數學哲學

所以,談語義,實際上是在談論關係,符號系統和任意其它外部系統之間的關係,而不僅僅是談論符號系統本身。那麼作爲入門的我們,如何把握、或者說學習、理解所謂外部系統呢?換句話說,我們該學習哪些外部系統呢?其實,就像哲學一樣,我們並不是要深入某個專業知識成爲該專業的專家後才能學習邏輯的語義,站在邏輯學的角度,我們只需確定這個所謂外部系統的基本框架和形式定義。這個過程是這樣的:
一、確定我們所說的外部系統的確切含義,可以用形式化的工具精確地描述出來;
二、不管外部系統的基本內容是什麼,這些系統的共同組成部分有哪些?如何表達?
三、給這些外部系統起一個比較科學的、不會引起歧義的名字。

現在我們就來談談這個問題。先從第三個問題談起。起名字,對中國人來說是人生一件馬虎不得的大事,古來早就有“名不正則言不順”的箴言。科學也一樣,科學家對新的研究、新的發現和新的理論都會起一個一般人不太熟悉名稱,以示之“新”。我們現在正在談論的“外部系統”,是爲了幫助大家理解而臨時起的名稱。真正的術語,叫做【模型】。我們見過許多實物模型,例如地產開發商在銷售樓盤時會先在售樓中心展示未建樓盤和小區的模型;除此之外,我們還見過汽車模型、時裝中心展示的模特模型,等等。

如果抽去模型的物質屬性來形式化地描述的話,那就是,把建模對象按比例縮小,省略、忽略或者去除跟建模目的無關的元素和成分,只留下建模對象需要的元素和成分,然後用和實物完全不同的材料和方式仿造建模對象。這段話可以歸結爲幾個關鍵詞——簡化、抽象、形式化

  • 這裏的簡化,有兩個意思,第一就是我們對“簡化”理解的一般意思,去繁就簡,還有一個意思就是:縮小規模,降低複雜度,如果是實物模型,那麼只展示建模者想展示的內容,規模控制在視覺可以容納的範圍之內。例如地圖是對實際上是地理狀況的簡化,一般的地圖不可能做得和原對象一樣大必須縮小到人的視覺可以看到的範圍。小地圖也就一本書大小,大地圖充其量也就一牆之大。同樣,地圖也不可能把實際地理範圍內所有對象都包括在內,總會有所取捨。
  • 而“抽象”的意思是,對模型中的一些對象無法、或者不必詳細一一列舉或展示,而是用一個“替代物”表示即可。例如在世界地圖上找北京,恐怕我們能找到的就是也就是“北京”這兩個漢字和旁邊一個小點。如果較真,這兩個漢字和那個小點和北京城有什麼關係呢?根本沒有!只是地圖的製作者認爲不必告訴你北京是什麼,只要標出位置和名稱即可。這個時候名稱和位置的代表——“北京”和那個小點就是對北京的抽象。“紅樓夢”是一個抽象,是對曹雪芹那部73萬字著作的指稱。我們電腦桌面上的“快捷方式”也是抽象,一個應用程序當在電腦中運行時,需要調用許多電腦的本地資源,所以,對用戶來說通過點擊“快捷方式”我們啓動了電腦的一個應用程序,但是在內部,實際上要調用許多程序使這些程序互相配合工作。但是,作爲用戶的我們關心這個嗎?根本不!我們只要知道那個快捷方式代表那個應用程序就夠了。這個快捷方式和後面被代表的應用程序也是抽象和被抽象的關係。有例如文學作品中有這樣一種表現形式:失散多年的情侶一朝相逢,只有淚千行,沉默良久,心中的萬語千言只化作三個字:你好嗎?這個時候也是一種抽象,用“你好嗎”代替了原本的萬語千言。
  • 形式化是什麼呢?好像這個詞在國內被“神聖化”或者被“妖魔化”了。“神聖化”是說好像什麼東西一說形式化就顯得“高深”、陽春白雪;“妖魔化”是說那些所謂“形式化”的東西一定是枯燥無味符號而已。其實形式化的意思很接地氣。比如對我們人類臉部進行“形式化”,就是忽略你是男的女的,忽略你的顏值,然後做出結論,所有人都是一個鼻子兩個眼睛一張嘴。你覺得還有比這更簡單的“形式化”嗎?售樓中心那些樓盤模型其實也是形式化,它只讓你看到樓盤的外表,你無法知道這個樓盤的內部結構,如,如何供電、供水、下水道系統,也無法知道這個建築物使用的是什麼材料,總之,除了對這個建築物的外表,你不會從這個模型獲得關於這個建築物的任何知識。這就是形式化。例如a+b=b+a,就是跟樓盤模型類似的形式化:你只得到了這是加法運算以及運算形式的外表——“形式”,而不知道這裏a和b是什麼意思(我可沒說a和b一定是數哦)。


由此可見,所謂【模型】,就是一個簡化了的、抽象化了的、形式化了的外部系統

現在談談第一個問題:【模型】在我們的邏輯系統中的確切含義。如果通過上述討論你對【模型】概念有了感性的認識,這裏我們的描述就比較理性化了。
首先,我們要確定這個模型所包含的所有基本元素,使用的工具就是集合(domain、universe of discourse 或論域、域)。即作爲目標的外部系統中的所有對象,或者我們談論話題的最大邊界範圍。也就是說,我跟你談數學的時候你千萬別跟我談人生,否則,‘ideal’這個詞我無法定義(懂抽象代數的人大概知道我在說什麼)。

最後談談第二個問題:一個模型有哪些組成部分。一個模型,大致上要規定構成這個模型的基本要素,還要規定各個元素之間有那些關係,最後,各個元素,包括基本元素和複合元素有哪些功能,換句話說,它們能幹什麼,在模型中起什麼作用。如果用集合論的語言表述:
1. 定義一個論域:U = {x : S(x)},其中的S(x)表示作爲該模型的元素的共同性質;
2. 定義模型中元素的關係 R = {<x,y> : x∈U 且 y∈U}
3. 定義模型中對元素的操作 F = {f(x) : x∈U},其中f(x)是函數,F是由f(x)構成的集合。

有了模型的概念,我們就可以定義謂詞邏輯語言中那些無法賦予真值的元素的語義了,所以接下來介紹的就是——解釋函數(interpretation function)了。

 

四、解釋函數

在前面我們曾經把全稱量詞的語義定義爲關於論域中每個元素命題的合取,把存在量詞的語義定義爲關於論域中每個元素命題的析取。這裏,我們描述謂詞邏輯語言的語義所使用的語言就是集合論的語言。現在,爲了討論方便,我們再把這些定義形式化地重複一遍:
(vi) V(∀φ) = 1 當且當 V([c/x]φ) = 1,其中c代表L中的任意個體常項
(vii) V(∃φ) = 1 當且當 V([c/x]φ) = 1,其中c代表L中的至少一個體常項

(vi)相當於V(∀φ) = 1 當且當 V(φ(a1) ∧ φ(a2) ∧ … ∧ φ(an)) = 1
(vii)相當於V(∃φ) = 1 當且當 V(φ(a1) ∨ φ(a2) ∨ … ∨ φ(an)) = 1

在這個過程中,我們其實少了一個最重要的步驟,這個步驟就是對每個子命題句中ai的定義,這裏的ai,是形式語言中的任意符號,i表示從1開頭的任意自然數。現在的問題是,在沒有ai確切語義的情況下,你憑什麼說V(φ(ai)) = 1。換句話說,在不知道句子的主語是什麼的情況下,你憑什麼說這句話對還是不對?
對這個問題的回答是:對於一套符號系統,這個符號系統的基本元素是a1,…,an,如果使這些符號能夠得到相應的語義解釋,我們必須要有一個【模型】。這個【模型】中的論域是該模型所包含的所有對象的集合。如何才能讓符號和對象建立語義解釋關係呢?說成大白話就是:某個符號ai,怎麼才能讓它代表某種意思?我們前面已經說過,形式語言的符號系統本身沒有天然的語義,符號的語義,端看你把它“綁定”到什麼【模型】上。接下來,我們就來談論這個問題。

首先要搞清幾個術語
形式語言的語義研究,實質上就是符號系統與【模型】之間的對應關係研究,因此我們需要熟悉幾個關鍵詞,以及表示這些關鍵詞的拉丁字母:
1. 【符號系統】:通常是用“L”表示,L的意思是language,語言。
2. 【模型】:用“M”表示,M就是模型,相對應的英語是model。
3. 【】:這裏的域,是指模型中對基本元素集合的定義,通常用“D”表示,對應英語單詞是domain。
4. 符號和模型域中的元素建立對應關係的過程稱作【解釋】,英語是Interpretation,所以關於解釋的符號通常用“I”表示。
5. 建立解釋關係後,被解釋的符號稱作【常項】,相當於自然語言中的專有名詞或名稱。這種詞的特點就是一旦賦予瞭解釋一般不會再改變,例如“孔子”、“漢武帝”等名稱。如果用編程語言,相當於程序中的符號常量,例如,pi=3.1415926。這個時候,符號pi就具有了不變的的語義解釋:代表圓周率的值。常項,通常用“c”表示,相當於英語的constant。
6. 建立解釋關係後,對應於符號的模型域中的對象,稱作【指稱】(reference),或者【指稱義】(denotation)。reference多用於自然語言的語義研究,而denotation則是程序設計語言語義學的專用術語——denotation semantics。模型中的指稱客體,通常用“e”表示,相當於英語的entity(【實體】)。
7. 【解釋函數】:建立符號和指稱實體之間對應關係的過程,書中稱作【解釋】(interpretation),有些書特別是面向計算機專業的數理邏輯書籍稱作【綁定】(binding),反正意思就是使符號和實體對應。如果你是程序員,那麼這個對你就更好理解了,其實就是定義一個變量後給變量賦值。在謂詞邏輯語義學中,這個過程通過一個稱作【解釋函數】的機制完成。定義一個函數“I”,設該函數的定義域爲符號集合L,值域爲模型域中的對象集合D,這樣的函數就稱作解釋函數。它的定義爲:
I : L → D
解釋函數的一個實例就是:
I (c) = e
意思是,解釋函數接受一個符號,返回一個所對應的實體。例如,上面的例子“孔子”,“孔子”是兩個漢字,
I (“孔子”) = 孔子
這裏我們用帶引號的“孔子”代表符號,用不帶引號的孔子代表孔子這個實體的概念。

有了上面的術語、概念和說明,下面看一個例子:

(93) Some are white. [1]

這裏沒有任何上下文,我們無從知道這句話究竟在說什麼。爲了使這句話的意思更明確,我們先確定“指稱”的域,D,這樣我們就可以確定這句話的主題範圍。假定D是雪花的集合,如果用a代表一片雪花,那麼,a is white 就可以理解爲:名稱a所代表的實體“雪花”具有“白”這種屬性。這裏,我們從模型的域中,任意選取了一個指稱對象,然後給它冠以“a”的名稱,並以命題句“a is white”的形式陳述關於“a”的性質。如果用這種辦法定義前面關於量詞語義的定義,我們需要做的第一件事就是要對D中的所有實體賦予一個名稱,這些名稱的符號表示就是L中的符號元素。不過這種辦法有一個缺陷就是,在定義符號系統L的時候,我們不知道有多少符號合適。一旦建立和特定模型的解釋/綁定關係時,符號的數量和實體數量可能不匹配,如果實體數量多於符號數量就要增加符號,如果可以定義的符號用盡,就必須改變符號系統的定義。舉個例子,車牌號。例如我們可以用三個拉丁字母和三個阿拉伯數字組合形成車牌號。如果規定字母和數字不能混合,只能是XXX-999的形式,那麼這個車牌號系統只能對應從26個字母取3得到的排列和從0-9這10個數字取3的排列的和。所以,每當有新的車主申請車牌號,就得從這種排列和的方法中找出尚未使用的字母數字組合。但是當城市人口增加,買車的人數超過了這種組合方式最大容許量,那麼只能修改組合方式,例如增加字母或數字的位數以適應新的需要。
爲此,用解釋函數對指稱實體冠名的辦法就必須改變。當然,如果預先知道模型域的大小是固定的,不會改變,前一種辦法也是一種不錯的辦法。而面對不斷膨脹或收縮的模型域,就得有另外一種辦法。後面便會分別介紹這兩種方法。第一種,我們稱作替換法(Interpretation by substitution),第二種,稱作評估法 (Interpretation by means of assignments)。
 

五、替換法

上面我們討論了一階謂詞邏輯語義中的解釋函數。如果這個名詞對你過於抽象難以理解的話,不妨想象一下風景畫。一副寫實的風景畫必然是對自然界的某一部分的描述,但這個描述並非百分之百地還原自然,而是由作畫者的主觀感受決定取捨。這個時候畫中的每個元素都對應着作畫者眼中自然界中相應的元素,例如一棵樹、一塊石頭、一株草、一朵花等。我們可以把這幅畫看做是對自然界某個部分的映射,從而建立畫與自然之間的“解釋函數”:只要找到畫中的一個元素,我們就可以找到相應自然界的對應元素,換句話說,在畫板上由各種顏料組成的某個區域,可以看做是一種符號,這個符號對應着自然界中某個空間中的某個自然物,畫中所有元素與所有自然物對應關係的集合,就是一種“解釋函數”。當然,這個比喻不是很嚴謹,因爲邏輯語義學中的元素必須是離散了,可數的,可枚舉的,而自然物,例如,天,河流等,是連續的,是無法精確劃分成離散的個體。不過這個例子可以讓我們重新複習一下前面討論過的一些概念:模型、域和符號系統。

所謂【模型】在這裏就是作畫者所選取的自然空間,而且這個空間應當不是那個自然空間本身,而是作畫者本人有所取捨的概念化的自然空間。這個空間可能會忽略一些作畫者認爲不需要表現的元素,或者,因人類視力所限無法看到或看清的元素,因此畫畫的對象是自然空間的“模型”而不是自然空間本身。

所謂【】,就是在這個模型中出現的所有元素的集合。就像上面所說,元素必須離散、可數的,這個只有在【模型】中才辦得到。比如“天”,自然界中的天應當是不可數的,但是在作畫者看來,所謂的“天”無非就是在畫布上由其它元素隔開的幾塊不同區域,因此是“可數的”。

所謂【符號系統】這裏就是風景畫中的所有元素的集合。所以,這幅風景畫的“語義”就是:作畫者根據自己的視覺可及和主觀感受在大腦中對某個自然空間景色“建模”,形成【模型】;在這個模型中,確定要畫的所有元素,這就是【域】;而完成的作品,用顏料組成一個【符號系統】。當熟悉畫中自然景觀的觀畫者看到這幅畫時就會聯想實際的自然景觀,從而形成從畫到景觀的【映射】關係。

理解了【模型】、【域】、【符號系統】、【解釋】、【解釋函數】,我們就可以進入正題,談談【替換法】和【評估法】。

替換法又稱作替換解釋(interpretation by substitution)。這種方法其實在前面的量詞的語義處已經說明,主要是用來說明量詞的語義。前面我們已經給出了精確的一階謂詞邏輯語言的描述,這裏再用比較通俗的語言重複一遍:【全稱量詞】的語義就是:當我們說:“所有的人都會死”時,存在一個模型,這個模型中的元素都具有“人”的性質。同時,存在一個【符號系統】使得模型中的每個元素都對應着該符號系統中至少一個符號,說白了,就是每個人至少都有一個名字。所以,“所有的人都會死”的語義就是用每個人的名字【替換】“所有人都”出現的位置,例如,“張三會死”、“李四會死”,…同時用“合取”連接符將對應【域】所有元素的名稱都替換一遍,這樣,量化句就轉化爲N個個體名稱+謂詞句的合取操作。此時,解釋函數的任務就是保證域中的所有元素都被賦予了至少一個名稱。這個說明如果用一階語言表述的話就是

                                          


類似地,我們還可以建立一般謂詞的“語義”:在【域】中存在一個子集合,這個子集合與【符號系統】中的某個符號具有對應關係。所以,“張三很聰明”的意思就是:在人這個【域】中,存在一個子集合,這個子集合與漢語這個符號系統中“很聰明”具有對應關係,而張三是這個子集合的成員,使得“張三很聰明”這個句子爲真。
這樣,我們就可以爲“謂詞”建立解釋函數:
                                              

其中,I是解釋函數,A是謂詞,a是名稱,I(A)是域中的子集,I(a)是域中的個體元素,Aa相當於A(a),是邏輯句子的一般表示法。所以上面公式的通俗解讀就是:
等號左面:A的解釋函數I(A)的意思是:
等號右面:由名稱a所對應的個體集合,使得“a是A”這個句子爲真。
上面的公式還可以寫成:
                                               

意思是:名稱爲a的個體是名稱爲A的謂詞所對應個體子集的成員

無論用什麼樣的方式表示,用域中子集合的方式表示謂詞語義通常稱作“外延語義”。這種語義最常見的應用就是,當我們無法用“語言”說明某個事物或事件時,通常用是“舉例”方法。例如,到外地或國外旅遊,品嚐到一種美味小喫,但是這種食品叫什麼或者是一種方言或者是外語單詞,我們無法從自己熟悉的語言中找到相應名詞。要向自己的親友解釋,最好的辦法就是把實物放在他們面前,“眼見爲實”、“百聞不如一見”。這實際上就是用概念的外延在解釋概念。
這種解釋法的核心,就是替換,將全稱量詞句替換成個體名稱的合取運算,將個體名稱+謂詞句替換成是這個句子爲真的域元素的集合。
如果謂詞是二元的,亦即,有兩個個體詞,那麼其語義就成爲所對應域元素有序對的集合
                                       
或者,
                                         


這裏要注意的是,I(a)和I(b)可能分屬兩個不同,或者兩個相同的域。如果是不同的域,例如D1和D2,就會寫作D1xD2;如果是相同的域, 在多域的情況下,通常會用D^n
的方式表示,其中n是D的指數,例如上面的例子兩個相同的域,故寫作是D²。

有了上面的討論,我們就可以給出謂詞邏輯語言中關於【模型】的形式定義,以及謂詞邏輯句子語義的賦值函數的定義
模型
相對於謂詞邏輯某個語言的模型是由【域】和解釋函數構成;域是一個非空集合;而解釋函數有兩種:個體名稱的解釋函數和謂詞的解釋函數
如果c是語言L中的一個個體符號,那麼I(c)的意思就是c所對應域中的個體元素;
如果B是語言L中的一個n元謂詞符號,那麼I(B)的意思就是域中的某個子集合,滿足
                                                    


賦值函數
如果M是對應語言L的模型,其解釋函數I是語言L中個體名稱到域D的映射,那麼,

                                                                          
就是基於M的賦值函數。這樣,關於一階謂詞邏輯語義的賦值函數就成爲

                     

好了,現在小結一下:

謂詞邏輯語言的語義是基於模型的映射關係。
1. 模型:由域和解釋函數構成;解釋函數的任務是爲域中的元素起名字;
2. 賦值函數:對謂詞邏輯中的每個句子分配真值
3. 謂詞邏輯的語義稱作外延語義,這種語義的實質不是定義,而是舉例,用實例說明概念。
4. 所謂替換法就是利用賦值函數對句子賦予真值一種方法,它將量化句子中的變量用符號系統(亦稱語言)中的名稱一一替換,如果是全稱量詞則進行合取運算,若是存在量詞則進行析取運算,從而獲得該量化句子的真值。如果是謂詞,則取域中的某個子集,並賦予名稱,這樣,像P(A)這樣句子語義解釋酒可以看作是域中某元素是該子集合的成員。判斷這類一階謂詞句子的真值,就可以利用解釋函數看看當前給定的名稱所對應的域中個體是否是謂詞所對應的子集合的成員,如果是該句子爲真,如果不是則真值爲假。
解釋函數賦值函數的基本過程是將單句轉化成含有所有域元素名稱的個體名稱句子的合取操作

 

六、評估法

當我們面對一個一階謂詞邏輯系統,設語言(符號系統)爲L、域爲D、解釋函數爲I,那麼解釋函數定義爲:
I:L → D
其中L是I的定義域,D是I的值域。前面討論的替換法有一個前提,解釋函數I是滿射函數,亦即,對於值域D的任何𝑦元素,都可以找到L的元素𝑥使得
I(x) = y
這時,當我們對句子∃𝑥Φ和∀𝑥Φ進行語義解釋時,就可以利用常量c替換束縛變量𝑥得到關於c的句子的語義解釋,然後利用析取或合取公式得到∃𝑥Φ或∀𝑥Φ的語義解釋。爲此,我們再來複習一下量化表達式語義賦值函數的定義:

                                 
其中,“for all”意思是要通過合取運算對域中所有的元素進行替換,如果合取句子的真值爲真,則對整個量化句子的語義解釋也爲真;類似地,“for at least one”意思是,析取句子的真值爲真,則對整個量化句子的語義解釋也爲真。

而我們這裏所要介紹的“評估法”(Interpretation by means of assignments)是假定解釋函數並非滿射,換句話說,值域中的元素未必可以找到可對應的定義域元素,再通俗點說就是現實生活中有些物體在我們所選擇的語言中找不到相應的名稱(例如以前舉例外地外國小喫找不到合適的名稱形容); 此時用替換法就不可行了,因爲我們的語言符號無法“覆蓋”所對應的域元素,句子∃xΦ和∀xΦ的真值無法歸結爲[c/x]Φ的形式。如果我們仍然記得語義的“組合性原則”的話,那麼知道這個原則是說:一個表達式的語義是由組成這個表達式各個部分的語義決定的。前面我們用了替換法,用c替換x,得到句子Φ(c)的真值。這裏的問題是Φ(c)並非是∃xΦ或∀xΦ的一部分,因此我們無法通過“組合性原則”獲得語義。這種量化句子是由量詞∃x或∀x加Φ構成,所以嚴格地說Φ是這個量化表達式的一部分。如果Φ中含有變量x,那麼這個x脫離了量化的束縛,就成爲自由變量,因此可以寫成Φ(x),和量化表達式不同,這種形態不再是句子,而只能是具有自由變量的命題函數。我們知道命題函數和命題的區別就在於後者有確定的真值而前者沒有。束縛變量,從某種意義上說是指在一個確定了範圍內的確定的量,但是自由變量卻只是沒有任何意義的佔位符。那麼如何對含有自由變量的句子賦予語義解釋呢?還是拿個例子說明吧。前面我們有個英語句子,如下:

        (96) Some are white
 
如果域模型設定是由所有“雪花”構成,那麼作爲含有自由變量的句子“x is white”的語義解釋自然可以以這個域模型作爲其指稱對象。其中的 𝑥 當然沒有指稱對象,不過,此時如果我們將𝑥看做是類似自然語言中的代詞,而且我們已經設定了域模型就是雪花的集合,那麼,就可以認定在特定語境中,𝑥可以作爲一個名稱的“代詞”而具有和那個名稱相同的指稱對象,使得“x is white”獲得真值。這樣我們就可以以這種方式使得(96)獲得真值,亦即,(96)爲真當且當域模型中某個元素與𝑥建立了指稱關係儘管此時的指稱關係是間接的。

下面再看一個例子:  ∃x∃y(Hxy ∧ Hyx)
這個句子含有兩個變量,如果依照上面的分析,可知這個句子子句Hxy ∧ Hyx有兩個自由變量。很明顯,我們可以造出包含三個、四個甚至更多變量的句子,那麼如何對每個自由變量賦予指稱對象呢?上面我們用的的是代詞法,假定有一個名稱a指稱對象綁定,而x是作爲a的一個別名,類似代詞一樣的作用;但現在自由變量一多這個方法就不再有效。爲此,我們可以建立一個評估函數g,這個函數以句子中所有自由變量爲定義域,以相應的域模型D爲值域。有些朋友可能要問,這個評估函數和前面的解釋函數之間是什麼關係?這個關係是這樣的:
<g(x1), g(x2), ..g(xn)> ∈I(A)
換句話說,每個評估函數值都是域模型子集合A的成員。這時,我們對多變量句子的語義賦值函數就寫成了

                                             

這裏的區別就是,評估函數的參數是句子中出現的自由變量,而前面解釋函數的參數是語言中的常量——名稱。但是如果句子中出現變量、常量混合的情況怎麼辦?爲此,我們將引入另一個術語——【】(term)作爲常量或變量的統稱(collective name),【項】通常用字母 t 表示,而對 t 在模型 M 的語義解釋則定義爲

                                          

這樣,我們對一階謂詞邏輯句子的語義解釋函數定義可以修改爲:

                                             

在這個解釋框架下,一個句子的語義既取決於所選的模型也取決於對每個【項】的語義評估。

現在有個問題,當句子出現多個變量既有自由變量又有束縛變量時該如何處理:
例如:
x loves someone        翻譯成一階語言是              ∃yLxy
其中,x是自由變量,而y則是束縛變量。那麼如何定義

                                                        


由於x是自由變量,我們可以用g(x)表示,也就是g(x)喜歡某人的意思。這時,我們無法簡單地,直接將量詞分離得到Lxy,因爲這樣一來,xy都變成自由變量了,不符合原句的意思。因此,我們必須在分離之前,將束縛變量的指稱對象看做是未具名的個體,用d ∈ H表示,那麼,模型中對L(love)的解釋則成爲:<g(x), d> ∈ I(L),其中,someone在模型中並沒有相應的名稱項表示,而直接用實體d表示。有人會問,那爲什麼不用g(y)表示?如果要用g(y)表示,那就意味着x和y的評估函數是一個,但這並不符合事實,因爲前者是自由變量後者是束縛變量。作爲權宜之計,我們可以設一個和g(y)類似的函數:g’(y),這樣我們就得到:
<g(x), g’(y)> ∈ I(L)
使得

                                      

不過,我們知道g’(y)實際上指的就是d,因此可以用g[y/d]表示g’(y),意思是用d取代對y的評估函數。這裏值得注意的是,不要把g[y/d]和前面的[c/x]Φ混淆,後者是句法層次的符號替換,而前者則是對域對象的替換。這樣,對於∃yLxy語義賦值函數的最後版本就是:

                        

第一次使用這樣真值定義的學者是波蘭數學家阿爾弗萊德·塔爾斯基。這樣,我們的一階謂詞邏輯的語義真值定義爲:

                                       

小結

本次討論了賦值函數的另一種形式:評估法,這種方法的實質是對句子中的自由變量獨立賦值,因爲變量是語言中沒有固定名稱的符號。當句子中即含有變量又含有常量,既含有自由變量又含有束縛變量時,情況變得更加複雜,因此我們的處理辦法就是無論是常量還是變量、無論是自由變量還是束縛變量,統稱作【項】,然後統一對【項】進行處理。在處理過程中,將變量的指稱對象在解釋函數中統一用評估函數替換確定,使得整個句子得到真值。

 

本文大部分內容整理與豆瓣邏輯小站,對邏輯學感興趣的朋友可以關注:邏輯小站

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章