第二章命題邏輯等值演算
2.1等值式
設公式A,B共同含有n個命題變項,A或B可能有啞元.若A與B有相同的真值表,則說明在所有2n個賦值下,A與B的真值都相同,因而等價式A<->B爲重言式
定義2.1設A,B是兩個命題公式,若A,B構成的等價式A<->B爲重言式,則稱A與B是等值的,記作A<=>B
定義中的符號<=>不是聯結符,它是用來說明A與B等值(A<->B是重言式)的一種記法,因而<=>是元語言符號.千萬不要將臺<=>與<->混爲一談,同時也要注意它與一般等號=的區別
下面討論判斷兩個公式A與B是否等值的方法,其中最直接的方法是用真值表法判斷A<->B是否爲重言式
例2.1判斷下面兩個公式是否等值:
┓(pvq) 與 ┓P^┓q
解用真值表法判斷┓(pVq)<->(┓p^┓q)是否爲重言式.此等價式的真值表如表2.1所從表示,從表可知它是重言式,因而┓(pVq)與┓P^┓q等值,即┓(pVq)<=>(┓p^┓q)
其實,在用真值表法判斷A<->B是否爲重言式時,真值表的最後一列(即A<->B的真值表的最後結果)可以省略.若A與B的真值表相同,則A<=>B,否則,A<≠>B(用來表示A與B不等值,
<≠>也是常用的元語言符號)
例2.2判斷下列各組公式是否等值
- P->(q→r) 與 (p^q)→r
- (P→q)→r與 (P^q)→r
解 表2.2中列出了p→(q→r),(P∧q)→r和(p→q)→r的真值表.不難看出p→(q→r)與(P^q)→r等值,即
p→(q→r)<=>(P∧q)→r
而(p→q)→r與(p∧q)→r的真值表不同,因而它們不等值,即
(p→q)→r<≠>(P∧q)→r
雖然用真值表法可以判斷任何兩個命題公式是否等值,但當命題變項較多時,工作量是很大的,證明公式等值的另一個方法是利用已知的等值式通過代換得到新的等值式.例如,用真值表很容易驗證p<->┓┓P是重言式如果用任意一個命題公式替換式子中的P,如用p^q替換p得到p^q<->┓┓(P^q),直覺上所得到的新式子也是重言式,事實上,有下述命題:
設A是一個命題公式,含有命題變項p1,P2,…,Pn,又設A1,A2,…,An,是任意的命題公式.對每一個i(i=1,2,…,n),把Pi在A中的所有出現都替換成Ai,所得到的新命題公式記作B.那麼,如果A是重言式,則B也是重言式
這是顯然的.事實上,對任意的真值賦值,把在這個真值賦值下A1,A2,...,An的真值代人A中的命題變項P1,P2,…,Pn與把這個真值賦值直接代入B是一回事.如果A是重言式,A必爲1,B也必爲1.從而,B也是重言式
根據這個命題和P<->┓┓p是重言式,我們得到A<=>┓┓A,其中A是任意的命題公式,稱這個式子爲等值式模式,下面給出16組常用的重要等值式模式,以它們爲基礎進行演算,可以證明公式等值
- 雙重否定律冪等律 A<=>┓┓A (2.1)
- 冪等律 A<=>AVA , A<=>A^A (2.2)
- 交換律 AVB<=>BVA , A^B<=>B^A (2.3)
- 結合律 (AVB) V C <=> A V (BVC)
(A^B) ^ C <=> A ^ (B^C) (2.4)
以上16組等值式模式共包含了24個重要等值式,它們都是用元語言符號書寫的,等值式模式中的A,B,C可以替換成任意的公式,每個等值式模式都可以給出無窮多個同類型的具體的等值式.例如,在蘊涵等值式(2.12)中,取A=p,B=q時,得到等值式
- >q<=>┓pVq
當取A= pVqVr,B=p^q時,得到等值式
(pVqvr)->(p^q) <=> ┓(pvqvr)V(p^q)
這些具體的等值式稱爲等值式模式的代入實例
由已知的等值式推演出另外一些等值式的過程稱爲等值演算.等值演算是布爾代數或邏輯代數的重要組成部分
在等值演算過程中,要使用下述重要規則,它的內容如下:
置換規則 設Φ(A)是含公式A的命題公式,Φ(B)是用公式B置換Φ(A)中A的所有出現後得到的命題公式,若B<=>A,則Φ(A)<=>Φ(B)
這也是顯然的,因爲如果B<=>A,那麼在任意的真值賦值下B和A的真值相同,把它們代入Φ(・)得到的結果當然也相同,從而Φ(A)<=>Φ(B)
例如,在公式(p→q)→r中,可用┓pVq置換其中的p→q,由蘊涵等值式可知,p→q<=>┓pvq,所以
(p→q)→r<=>(┓pVq)→r
在這裏,使用了置換規則.如果再一次地用蘊涵等值式及置換規則,又會得到
(┓pvq)->r<=>┓(┓pvq)vr
再用德摩根律及置換規則,又會得到
┓(┓pvq)vr<=>(p^┓q)vr
再用分配律及置換規則,又會得到
(P^┓q)Vr<=>(pvr)^(┓qvr)
將以上過程連在一起,得到
公式之間的等值關係具有自反性、對稱性和傳遞性、所以上述演算中得到的5個公式彼此之間都是等值的.在演算的每一步都用到了置換規則,因而在以後的演算中,置換規則均不必寫出.
下面用實例說明等值演算的用途
例2.3用等值演算法驗證等值式:
(pVq)→r<=>(P→r)∧(q→r)
證可以從左邊開始演算,也可以從右邊開始演算.現在從右邊開始演算
(p→r)∧(q->r)
<=>(┓pvr) ^ (┓qvr) (蘊涵等值式)
<=>(┓pv┓q)v (分配律)
<=>┓(pVq)Vr (德摩根律)
<=>(pVq)→r (蘊涵等值式)
所以,原等值式成立.讀者亦可從左邊開始演算驗證之.
例2.3說明,用算值演算法可以驗證兩個公式等值,但一般情況下,不能用等值演算法直接驗證兩個公式不等值
例2.4證明:
(p→g)->r <≠> p->(q->r)
證 方法一:真值表法.讀者自己證明
方法二:觀察法.只要給出一個賦值使得這兩個命題公式的真值不同,就表明它們不等值容易看出,010是(p→q)→r的成假賦值,是p→(q->r)的成真賦值,兩式不等值得證
方法三:當兩個式子比較複雜,一時看不出使它們一個成真另一個成偲的賦值時,可以先通過等值演算將它們化成容易觀察真值的情況,再進行判斷
A=(p→q)→r
<=>(┓pvq)->r (蘊涵等值式
<=>┓(┓pVq)Vr (蘊涵等值式)
<=>(p^┓q)vr (德摩根律)
B=p->(q->r)
<=>┓pv(┓qvr) (蘊涵等值式)
<=>┓pv┓qvr (結合律)
容易觀察到,000,010是A的成假賦值,而它們是B的成真賦值
例2.5用等值演算法判斷下列公式的類型
- (p→q)^p→q
- ┓(p→(pVq))^r
- P^ (((pVq)^┓p)->q)
解 在以下的演算中沒有寫出所用的基本等值式,請讀者自己填上
(2) ┓(p->(pvq)) ^r
- P^(((pvq)^┓p)->q)
等值演算中各步得出的等值式所含命題變項可能不一樣多,如(3)中最後一步不含q,此時將q看成它的啞元,考慮賦值時應將啞元也算在內,因而賦值的長度爲2.這樣,可將(3)中各步的公式都看成含命題變項p,q的公式,在寫真值表時已經討論過類似的問題
下面舉一個如何利用等值演算解決實際問題的例子
例2.6在某次研討會的中間休息時間,3名與會者根據王教授的口音對他是哪個省市的人判斷如下
甲:王教授不是蘇州人,是上海人
乙:王教授不是上海人,是蘇州人
丙:王教授既不是上海人,也不是杭州人
聽完這3人的判斷後,王教授笑着說,你們3人中有一人說得全對,有一人說對了一半,另一人說得全不對.試用邏輯演算分析王教授到底是哪裏人
解 設命題
p:王教授是蘇州人
q:王教授是上海人
R:王教授是杭州人
p,q,r中必有一個真命題,兩個假命題,要通過邏輯演算將真命題找出來
甲的判斷爲┓p^q
乙的判斷爲p^┓q
丙的判斷爲┓q^┓r
於是
甲的判斷全對爲 B1=┓p^q
甲的判斷對一半爲 B2=(┓p∧┓q)V(p∧q)
甲的判斷全錯爲 B3=P^┓q
乙的判斷全對爲 CI=P^┓q
乙的判斷對一半爲 C2=(P^q)V(┓p∧┓q)
乙的判斷全錯爲 C3=┓p^q
丙的判斷全對爲 D1=┓q^┓r
丙的判斷對一半爲 D2=(┓q∧r)V(q∧┓r)
丙的判斷全錯爲 D3=q^r
由王教授所說
E=(B1^C2^D3)V(B1^C3,^D2)V(B2^C1^D3)V
(B2∧C3∧D1)V(B3^C1^D2)V(B3^C2AD1)
爲真命題.