數理邏輯/形式與符號


首頁 > 維基書架 > 數學書架 > 邏輯學 > 形式與符號

形式

從眾多具體現象中抽象出的具有某種同樣性質的模式,稱為形式。比如老鼠會打洞可以模板化為老鼠 會 打洞,同時將具體對象和謂詞抽象化,形式化為  是一個動物, 為一個動作, 為一個謂詞。當然也可以進一步形式化為  是不同的名詞, 是一個動詞 )乃至進一步為  各為一個不同的詞)。

老鼠會打洞(實例)→老鼠 會 打洞(模板)→動物名詞 謂詞 行為名字(形式)→名詞 謂詞 名詞(形式)→詞 詞 詞(形式)

從左往右,距離實例越來越遠。直觀的來看,越右的形式能創建的實例越多。

從形式反過來到實例的過程則稱為實例化,顯然,「動物名詞 謂詞 行為名字」形式除了可實例化老鼠會打洞。也可實例化為貓會吃老鼠或老鼠會吃貓。這是形式化的一個主要用處,假如一個形式可以反映一個對象的某些特性,則只要定義或推演這個形式的特性或屬性,就等同於定義或推演了這個形式下所有可能實例的屬性。這樣,我們可以定義一套形式化程度恰到好處的公理或規則,然後將現實世界的某些事物或現象「掛靠」或稱形式化到形式上,這樣就獲得形式的正確性。

過程:

提前定義形式1→形式1具有性質1→發現實例1→發現實例1可以形式化為形式1→實例1具有性質1

變量

一個對象是。。。隨便什麼東西,只要是思想可以生成的,比如「可惡的老鼠」或「爬過一條下水道」。對象一般受到一組定義的規則限制,從而縮減了其範圍。比如規則「禁止前兩個字是「可惡的」」就使這個對象排除了「可惡的老鼠」這一可能的選擇。

一個變量包含一個對象和對這個對象的限制規則,一般用英文小寫字母表示。形如:  是一個自然數).顯然,這個變量可以包含1,2,3,4,5….以內所有的數字。將一個變量實例化的過程稱為賦值。如 .代表之後 表示數字1。而一個 的賦值將導致邏輯錯誤。因為規則是先於賦值定義的。

命題變量是一個變量與並且這個變量只能是命題(規則)。

命題變量里的命題限制是比較鬆散的,可以允許  一類的形式。其中  都是可以增加任意多形容詞(乃至定語從句,只要是形容詞性的部分)的名詞。如小灰狗 是 小的灰色的長有牙齒的犬科動物,這種動物是人類的朋友。又比如,自然數的基數小於實數。

命題變量有一個真值,換句話說,命題變量有一個屬性,那個屬性可以是「真」或「假」,也可以是「未定義」。這個屬性是命題邏輯賦予變量的(即變量本身沒有這個性質,只是在命題邏輯系統中被附加了這個性質),這類變量在更高級的一階邏輯有類似但不相同的使用方式。

有時我們需要表示兩個命題實際上是一個命題,或兩個變量應是一個變量。這可以有很多表示方法,比如a,b (a=b)或像命題邏輯做得那樣。應是同一個變量的位置使用同一個字母表示,相應的,不同變量之間嚴禁使用同樣的字母表示。

雖然並不明顯,但我們自然語言中的大多數部分都可以用  句型表示,也就是說,大多數自然語言中出現的命題都可以以命題邏輯方式形式化。比如扶老太太過馬路是好的可形式化為a,金胖子是會被撐死的人形式化為a,飛機是飛機形式化為 。當然,它們只能在不同的論證中被形式化為同一個符號。但在特別指定一個實例前, 可以實例化為其中任意一個命題。

這看起來很無聊,因為符號 並沒有任何性質,可以讓我們將實例「掛靠」到(形式化為) 上後推出任何關於 的「新」信息(嚴格的說,演繹推理不會產生任何新信息,因為信息在指定公理和實例後就應該「自動得到」了。但這一點並不明顯,比如你並不能總那麼容易的做出幾何證明題,雖然那些題在無限窮舉下總是可以被做出的)。

推理

現在我們來考慮命題之間的交互。假設有這麼一個問題「我是男人或是女人 我不是女人 是否可以推出我是男人」?

答案是「可以推出」,這樣一類陳述稱為複合命題。至於它怎麼形式化來獲得對「可以推出」這一答案的正確性的證明,馬上就可以見到。現在先以一般的方式推理這個問題,假如你覺得這個問題太簡單,明顯了。那麼令人高興的,命題邏輯就是建立在這些顯而易見正確的思維之上,在此之外,命題邏輯排除了一些人類思維中含糊的地方,並使大規模的推理(以以上語句組成,但長度翻一百倍的陳述。人類通常能直達問題命門的感覺性的思維毫無用途,只能依賴命題邏輯的一種機械計算。)

根據自然語言的定義,「我是男人或是女人」可以轉化為「我是男人或我是女人」,「我不是女人」可以轉化為「我是女人,這一命題為假」。現在開始形式化,顯然以上語句都可以形式化為  形式,令 為命題「我是男人」,令d為命題「我是女人」。

現在有兩個命題  分別代表不同的意思。我們得有一種方式表示「我是男人或我是女人」,我們使用符號 ,轉為「 」。 「 」也可表示為另一個命題 ,對於這一點,只需構建「變量命題 是「我是男人或是女人」這一命題(定語從句)」即可。不過直觀的來看,這麼做除了減少了信息毫無意義,不過注意到這一點有助於加深對複合命題的理解,這種方法在推理算法中也有應用。由於可以表示為另一個命題,所以「 」也有一個真值(這一過程可以複習形式化的用途,我們將「 」形式化為命題,然後根據命題邏輯對命題的定義,「 」這一命題的實例有一個真值。)。更一般化的,所有經「 」之類的符號計算的複合命題都可以視為另一命題並擁有真值。而「 」之類的符號就是將參數(如符號左右兩邊的命題)的真值經過計算後得到一個新命題的新真值,並通過一系列這樣的複合表示一整個陳述。

對於任何類似「我是男人或女人」,「我是女人,這一命題為假」的語言,我們稱為為條件,所有條件都是真的。這就是說「 」的真值為真。可像「我是女人,這一命題為假」這種語句中就表示這一命題為假的語句應該怎麼表示呢?只要令「命題為假」這一斷言為真即可。換句話說,假設a表示命題「我是人」,而且這是一個條件。則 的真值為真。而「我不是人」=「我是人,這一命題為假」這一命題可以先用某種符號將其表示為「 命題為假」,那自然「 命題為假」為真就代表 命題本身為假了。使命題從直接的含義轉為對直接的含義的否定的符號是 ,如 表示「我是人」,則 表示「我是人,這一命題為假」即「我不是人」。注意「這一命題為假」這種用法並不一定必然可以轉化為「我不是人」這種「自然的」表述。可以是「「我不是人,這一命題為假」這一命題為假」之類的句子。其中根據日常語法的定義,這種雙重否定句將導致肯定,邏輯中有一條類似的規則 ,這裡暫不詳述。

現在,我們有兩個斷言,  。我們想知道它是不是能推出命題 (這種符號單獨出現時代表這一命題為真,在這裡代表「我是男人」或稱「我是男人,這一命題為真」)。為此,我們形式化的定義  的意思,以符合我們推理的直覺。前面已經提到過, 是讓一個命題附加一個「該命題為假」陳述的方式。更一般化的, 也可使一個為假的命題變為真,用之前提到過的雙重否定規則。所以可以這麼說, 符號使一個真命題變為假命題,使一個假命題(根據定義,符號單獨出現時不可能,但當做複合命題時可能)變為真命題。我們使用所謂的真值表表示:

真值表是複合命題的新命題的新真值的一種表現方式,它遍歷所有可能的參數賦值並標出對應情況的新命題的新真值。 表示true,即 當時的真值為true時, 表示false,即 當時的真值為假。易見這確實覆蓋了所有的情況。

 
   
   

     
     
     
F    
     

邏輯方程

為了加深理解,我們可以將「 」,「  」之類的符號稱為邏輯運算符,他們本身可以視為一個函數。如  。事實上在一些程式語言里就是這樣做的, 原形 只是一種「語法便利」,是等價的。之後我們會更有意義的使用運算符是一種函數的這種概念。

現在我們提前涉及一下「邏輯方程」這種概念,正式定義中並不存在這個概念,不過我覺得這使邏輯推理的某些部分變得容易理解。然而比較糟的是,「方程」自己的含義卻有些含糊,我們可以把它當做日常的方程來考慮。即給出幾個條件去限制另一個條件,會產生一個或幾個令「等式」成立的「解」。這裡我們看看 是否是原陳述的一個解。

在此之前,再加入一個運算符 符號表示and,並,而且之類的意思。真值表為

     
     
     
F    
     

可以自己測試一下,會發現正像自然語言的里的意思。

列出形式:  

查詢真值表,發現 僅當  都為真時才會出現。所以這裡 都為真,這就反映了條件的性質(都為真)。

然後,由 為真得到 為假,然後將這個 的真值代入到  中,又由 真值表中當其為真且其中一項為假,則另一項為真的「性質」(可以看得出來的)。得到  ,從而,我們證明了