1.數理邏輯
1.1命題邏輯
1.1.1命題定義和邏輯聯結詞
命題指的是具有真假意義(要么為真,要么為假)的一句話,它常以陳述句形式出現,而疑問句,感嘆句,祈使句等都不是命題。
- 你多大了?(疑問句,不是命題)
- 出來!(祈使句,不是命題)
- 今天真好!(感嘆句,不是命題)
- 我正在說謊。(不是命題,這是典型的說謊悖論,無法辨明真假)
- 1+101=110。(是命題,只要當環境確定,就能辨明真假)
- 世界上有外星人。(是命題,雖然不清楚真假,但是的確存在真假)
如果命題無法進一步分割成更小的命題,那么命題是復合命題;相反的,如果命題能夠分割為更小的命題,那么命題是原子命題。我們常用大寫字母(比如\(A,B...P_1,P_2\))等表示原子命題。
e.g:考慮該命題是否為復合命題:張三不是個法外狂徒。
該命題是復合命題。因為它可以分割為更小的命題。即:張三是個法外狂徒。
下面闡述如何用邏輯聯結詞將原子命題組合成復合命題。
1.否定聯結詞\(\neg\)或\(\bar{}\).
一元運算符。假設存在命題A,那么\(\neg A\)為真當前僅當\(A\)為假。
2.合取聯結詞\(\wedge\).
二元運算符。假設存在命題A和命題B,那么\(A\wedge B\)為真當且僅當A和B都為真。而通常我們也習慣稱\(A\wedge B\)為A且B。
3.析取聯結詞\(\vee\).
二元運算符。假設存在命題A和命題B,那么\(A \vee B\)為假當且僅當A和B都為假。而通常我們也習慣稱\(A\vee B\)為A或B。
事實上,自然語言具有二義性,或可以分為可兼或和不可兼或。可兼或的表示符即為\(\vee\),比如明天要么下雨或者我考了90分,這個就可以用可兼或,因為二者可以同時發生。而不可兼指的就是不可以同時發生的兩件事,比如我明天9:00鍾會在公司上班或我明天9:00會在家里休息,這兩件事是不可以同時發生的,所以是不可兼或。不可兼或的符號(就我目前接觸到的)有兩種,一種貌似不能用LaTeX打出來,它是這個樣子:
而另外一種不可兼或的符號表示為:\(\oplus\).這與數字電路的異或符號是相同的。當然,也可以說不可兼或和異或就是同一個東西。
事實上,\(P \oplus Q\)和\((P \vee Q) \wedge \neg(P \wedge Q)\)以及\((P \vee \neg Q) \vee(\neg P \vee Q)\)是等價的,因為不管P和Q的真值如何,這三者的真值總是相同的(可參考1.1.3節等價的定義)。
合取聯結詞和析取聯結詞的符號可以采用下列方式來記憶:
- 合取聯結詞\(\wedge\):其實\(\wedge\)和合的上半部分是一樣的,因為合字不是“人一口”嘛,那個人其實長得就像合取的符號。
- 析取聯結詞\(\vee\):因為析諧音西,雙V為W,而W是West的首字母。
4.條件聯結詞\(\rightarrow\).
二元運算符。假設存在命題A和B,那么\(A \rightarrow B\)為假,當且僅當A為真且B為假。A通常被稱為為條件或前因,B通常被稱為是結果或結論。在數理邏輯中,\(A\)和B不一定有聯系,比如A:太陽從西方升起,B:張三數學考試拿了滿分。那么\(A \rightarrow B\)即為真,盡管A和B在現實生活中並沒有什么聯系。而且數理邏輯規定,當前因為F或者結論為T時,整個\(A \rightarrow B\)即為真。我個人習慣將\(A \rightarrow B\)說成A推B,或者A蘊含B。
對於命題\(A \rightarrow B\)而言,我們常說:\(B \to A\)是它的逆命題,\(\neg A \to \neg B\)是它的否命題,\(\neg B \to \neg A\)是它的逆否命題。原命題和逆否命題是等價的,逆命題和否命題是等價的(可參考1.1.3節等價的定義)。
5.雙條件聯結詞\(\leftrightarrow\).
二元運算符。假設存在命題A和B,那么\(A \leftrightarrow B\)為真,當且僅當A和B同為真,或者同為假。在數理邏輯中,A和B在現實生活中不一定有聯系。我個人習慣將\(A \leftrightarrow B\)說成A當且僅當B或者說A與B等價的,而事實上,到后面你會發現\(A \leftrightarrow B\)形式的命題和\((A \rightarrow B) \wedge (B \rightarrow A)\)形式的命題是等價的(可參考1.1.3節等價的定義)。
再次強調,在數理邏輯中,任何二元運算符兩側的命題A和命題B在現實生活中不一定具有聯系。
關於蘊含,等價,它們即可以指\(\to,\leftrightarrow\),也可以指\(\implies,\iff\)。到了1.1.3節就明白它們之間的區別了,以后根據具體語境進行區分即可。
1.1.2命題公式
由1.1.1節可以得知,我們可以用大寫符號去描述原子命題。比如P:Dio不是人。這是大寫符號的一種用法,大寫符號的另外一種用法就是指代任意的原子命題,此時的大寫符號被稱作是命題變元。命題和命題變元的區別是命題是有真值的,而命題變元是無法確定真值的。
考慮如下Java代碼:
public class PropositionLogic {
// 主函數
public static void main(String[] args) {
// A B 均為命題 因為它們有真假值
boolean A = true;// A:太陽從東方升起
boolean B = false;// B:人長生不老
System.out.println(PropositionFormula(A,B));// true
}
/**
*
* @param A 命題變元A 不能確定其真值
* @param B 命題變元B 不能確定其真值
* @return A 異或 B 不能確定其真值
*/
private static boolean PropositionFormula(boolean A , boolean B){
// (A ∨ B) ∧ ¬ (A ∧ B)
return (A || B) && !( A && B);
}
}
那么命題公式是什么呢?簡單來說,命題公式就是用命題變元,T和F(表示真和假),邏輯聯結詞,括號組成的一個符號串。命題公式和命題變元一樣不能確定真假值。嚴謹來說,命題公式是由有限步下列規則形成的符號串:
- A,B,C這些命題變元代表着命題公式。T和F也代表命題公式。
- 如果A是命題公式,那么\((\neg A)\)也是命題公式。
- 如果A和B是命題公式,那么\((A \wedge B)\),\((A \vee B)\),\((A \rightarrow B)\),\((A \leftrightarrow B)\)也是命題公式。
這里強調有限步驟是說,有限步驟內形成的命題公式才有討論的意義。此外,我們常稱在逐漸使用規則1,2,3的過程中所得到的命題公式為最后形成的命題公式的子公式。
比如\((P \to (\neg(Q \vee R)))\)的形成過程是這樣的:
- P是命題公式
- Q是命題公式
- R是命題公式
- \((Q \vee R )\)是命題公式
- \((\neg(Q \vee R ))\)是命題公式
- \((P \to (\neg(Q \vee R)))\)是命題公式
之所以加括號是為了確保運算順序,但是這樣看着很麻煩。所以就又做了一些規定:
- 最外層括號可以去掉.
- 制定優先級從大到小為:\(\neg,\wedge,\vee,\to,\leftrightarrow\).
那么\((P \to (\neg(Q \vee R)))\)就可以看做是\(P \to \neg(Q \vee R)\).其實這個和數學上的加減乘除差不多。
這里再次強調,命題公式本身不能確定真值或者說沒有真值可言,只有給命題公式的命題變元進行賦值(即T或F),命題公式才有真值可言。好比函數\(f(x)=x+1\),只有當x確定了,你才知道\(f(x)\)是什么值,而命題公式也是如此。所以,命題公式也可以看做是n元函數,不過它的每個變元的取值只有\(\{T,F\}\),而值域也只有\(\{T,F\}\)罷了。
而且,如果命題公式有n個命題變元,那么就有\(2^n\)種真值賦值方式(每個命題變元要么取T,要么取F)。如果在\(2^n\)種真值賦值下,命題公式恆為真,那么稱命題公式為永真式(或重言式),如果在\(2^n\)種真值賦值下,命題公式恆為假,那么稱命題公式為永假式(或矛盾式)。假如至少存在一種賦值使得命題公式為真,那么則稱命題公式為可滿足式。顯然,只要命題公式不是永假式,那么它必然是可滿足式。
1.1.3等價與蘊含
對於給定的命題公式A和B,假設\(P_1,P_2,P_3...P_n\)是命題公式A和B出現的全部命題變元。如果對於這些變元的任意的真值指派下,命題公式A和B的真值始終是保持相同的。那么稱A與B等價,記做\(A \iff B\)或者\(A =B\)。當然,這里說的等價和\(\leftrightarrow\)並不是同一個意思,后者是邏輯聯結詞,注意語境區分即可。
比如之前說的命題公式\(A \leftrightarrow B\)和\((A \rightarrow B) \wedge (B \rightarrow A)\)就是等價的,因為在A和B的任意真值指派下,二者的真值都是相同的。下面將闡述一些常見的等價公式:
- 分配律\(P\vee(Q \wedge R)=(P \vee Q) \wedge (P \vee R)\)和\(P \wedge(Q \vee R)=(P \wedge Q) \vee (P \wedge R)\)。當然,准確來講這個是左分配律,同樣地右分配律也是成立的,這里就不贅述。
- 德.摩根律:\(\neg(P \wedge Q)=\neg P \vee \neg Q\)和\(\neg(P \vee Q)=\neg P \wedge \neg Q\).對於德.摩根律的推廣如下:
- \(\neg (P_1 \wedge P_2\wedge P_3...\wedge P_n)=\neg P_1 \vee\neg P_2 \vee\neg P_3... \vee \neg P_n\)
- \(\neg (P_1 \vee P_2\vee P_3...\vee P_n)=\neg P_1 \wedge\neg P_2 \wedge\neg P_3... \wedge \neg P_n\)
- 吸收律:\(P \wedge (P \vee Q)=P\)和\(P\vee (P \wedge Q)=P\)。
- 對於條件命題(即\(\to\))的邏輯等價式:
- \(P \to Q=\neg P \vee Q\)
- \(P \to Q=\neg Q \to \neg P\)(即原命題和逆否命題等價)
- \(P \vee Q=\neg P \to Q\)
- \(P \wedge Q=\neg(P \to \neg Q)\).
- \(P \to (Q \to R) = (P \wedge Q) \to R\)
- 對於雙條件命題(即\(\leftrightarrow\))的邏輯等價式:
- \(P \leftrightarrow Q = (P \to Q) \wedge (Q \to P)\)
- \(P \leftrightarrow Q = \neg P \leftrightarrow \neg Q\)
- \(P \leftrightarrow Q=(P \wedge Q) \vee (\neg P \wedge \neg Q)\)
- \(\neg (P \leftrightarrow Q)=P \leftrightarrow \neg Q\)
關於這些基本的等價公式,可以通過真值表進行驗證。
接下來,闡述等價定理和置換定理:
等價定理:\(A \iff B\)當且僅當\(A \leftrightarrow B\)是重言式(永真式)。
證明如下:一方面,根據命題公式等價的定義,對於命題公式A和B含及的所有變元的任意真值指派下,A和B的真值都是一樣的,即A與B同真或同假,那么可以推出\(A \leftrightarrow B\)是重言式。
另一方面,\(A \leftrightarrow B\)是重言式,即對於命題公式A和B含及的所有變元的任意真值指派下,\(A \leftrightarrow B\)都為T,這意味着,A和B同真或同假,那么根據命題等價的定義可以推斷出\(A \iff B\)。
等價定理的作用是揭示了命題等價和重言式之間的關系。如果我們想證明\(A \leftrightarrow B\)是重言式,那么我們只需證明\(A \iff B\)即可。反過來,如果我們想證明\(A \iff B\),那么也可以證明\(A \leftrightarrow B\)是重言式來完成,即證明\(A \leftrightarrow B \iff T\)。
置換定理:假設X是命題公式A形成過程中的一個命題公式(即子公式),且\(X\iff Y\),那么將X替換為Y得到的新命題公式B與A是等價的。即\(A \iff B\).
舉個例子,對於命題公式\(A:P \to (Q \to R)\),那么\((Q \to R)\)就是命題公式A形成過程中的一個命題公式,而我們知道\(Q \to R \iff \neg Q \vee R\).那么\(P \to (Q \to R) \iff P \to (\neg Q \vee R)\)
現在來整理證明命題公式A和B等價的方法。
1.方法1:采用真值表證明。但是我個人覺得超過3個 (或者說4個)命題變元就沒必要用真值表證明了。
2.方法2:采用置換定理+基本等價式證明。
3.方法3:證明\(A \leftrightarrow B \iff T\)。不推薦這樣做。
補充說明,有時候讓你證明某命題公式A為重言式,其實可以看做是讓你證明\(A \iff T\).
下面闡述關於蘊含的相關定律:
對於給定的兩個命題公式A和B,A蘊含B當且僅當\(A \to B\)為永真式,並記為\(A \implies B\).
當然,\(\implies\)和\(\to\)是不一樣的,后者是邏輯聯結詞。對於蘊含,我們更加關心當A為T時,B是否為T,如果B為T,那么我們就能說\(A \implies B\)。
證明蘊含可以采用真值表法和\(A \to B \iff T\).除此外,還可以采用邏輯推證法:
對於使得A為T的真值指派下,如果也使得B為T,那么即可證明\(A \to B\)為重言式,也即證明\(A \implies B\).當然,如果使得A為F的真值指派,顯然\(A \to B\)為T,所以不考慮A為F的情況。反過來說,對於使得B為F的真值指派下,如果也使得A為F,那么也可以證明\(A \to B\)為重言式。
至於是正着來,還是反着來,根據實際情況來定:
e.g證明\(\neg Q \wedge(P \to Q) \implies \neg P\).
證明1:采用邏輯推證:考慮使得\(\neg Q \wedge(P \to Q)\)為T的真值指派I,那么\(Q\)為F,\(P \to Q\)為T,那么P為F,那么\(\neg P\)為T。
證明2:采用邏輯推證:考慮使得\(\neg P\)為F的真值指派I,那么P為T。對於\(\neg Q \wedge(P \to Q)\),若在真值指派I下,Q為T,那么\(\neg Q\)為F,那么\(\neg Q \wedge(P \to Q)\)為F;若在真值指派I下,Q為F,那么\(P \to Q\)為F,那么\(\neg Q \wedge(P \to Q)\)為F,總之,\(\neg Q \wedge(P \to Q)\)為F。
證明3:置換定理+邏輯推證:\(\neg Q \wedge(P \to Q)=\neg Q \wedge(\neg P \vee Q)=\neg Q \wedge\neg P\).即證明\(\neg Q \wedge\neg P \implies \neg P\)。考慮使得\(\neg Q \wedge\neg P\)為T的真值指派I,有\(\neg P\)為T。證明完畢。
證明4:證明\(\neg Q \wedge(P \to Q) \to \neg P \iff T\)
現羅列基本蘊含式:
- 化簡式:\(P \wedge Q \implies Q,P \wedge Q\implies P\)。
- 附加式:\(P \implies P \vee Q,Q \implies P \vee Q\)。
- 變形附加式:\(\neg P \implies P \to Q,Q \implies P \to Q\)。不難推出\(\neg P \implies \neg P \vee Q = P \to Q\),\(Q \implies \neg P \vee Q = P \to Q\)。
- 變形化簡式:\(\neg (P \to Q) \implies P,\neg (P \to Q) \implies \neg Q\)。不難推出,由於\(\neg (P \to Q)=P \wedge \neg Q\),所以\(\neg (P \to Q) \implies P\)和\(\neg (P \to Q) \implies \neg Q\)。
- 析取三段論:\(\neg P \wedge (P \vee Q) \implies Q\)。不難推出,因為\(\neg P \wedge (P \vee Q)=\neg P \wedge Q\),所以析取三段論是成立的。
- 假言推理:\(P \wedge (P \to Q) \implies Q\)。因為\(P \wedge (P \to Q) =P \wedge (\neg P \vee Q)=P \wedge Q\) 。
- 拒取式:\(\neg Q \wedge (P \to Q) \implies \neg P\)。因為\(\neg Q \wedge (P \to Q) =\neg Q \wedge (\neg P \vee Q)=\neg Q \wedge \neg P\) 。
- 假言三段論:\((P \to Q ) \wedge ( Q \to R) \implies P \to R\)。
- 二難推理:\((P \vee Q) \wedge(P \to R) \wedge(Q \to R) \implies R\)。
我個人覺得至少需要記住1.化簡式2.附加式。8.假言三段論:如果P推Q且Q推R,那么必然推出P推R。9.二難推理:如果P推R,如果Q推R,那么只要其中P或Q成立,那么就有R成立。當然,有必要的話也可以記住6假言推理,7拒取式。
將基本蘊含式考慮在內,那么我們可以有另外一種證明\(A \implies B\)的方式,即\(A =C=D...\implies E \implies F =G =B\)。
關於\(A \iff B\)和\(A \implies B\),\(B \implies A\)之間的關系,有以下定理:
\(A \iff B\)當且僅當\(A \implies B\)且\(B \implies A\)。
這個很顯然,\(A \leftrightarrow B\)和\((A \to B) \wedge (B \to A)\)是等價的。一方面\(A \iff B\)當且僅當\(A \leftrightarrow B \iff T\),即\((A \to B) \wedge (B \to A) \iff T\).那么有\(A \to B \iff T\)和\(B \to A \iff T\),所以\(A \implies B\)且\(B \implies A\)。另一方面,就不用證了。
簡單總結一下,證明命題公式\(A\)和\(B\)等價,可以采用置換定理,真值表法(即任意的真值指派下,命題公式A和B的真值是相同的),當然,也可以通過證明\(A \leftrightarrow B \iff T\),但是這種方法比較少用。
而證明\(A \implies B\),可以采用邏輯推證,真值表法(即任意的真值指派下,\(A \to B\)為重言式。),證明\(A \to B \iff T\),或者采用這種方式\(A =C=D...\implies E \implies F =G =B\)。
1.1.4功能完備集
功能完備集指的是一個邏輯聯結詞的集合,在該集合下,所有的命題公式都能由該集合中的邏輯聯結詞表示。常見的功能完備集如:\(\{\vee,\wedge,\neg\}\).這個功能完備集常用來證明等價和蘊含,因為\(\to ,\leftrightarrow\)都是能由它們轉化的。
而極小的功能完備集指的是一個功能完備集,並且該功能完備集的任意真子集都不能表示所有的命題公式。常見的極小功能完備集如\(\{\vee,\neg\}\)和\(\{\wedge,\neg\}\).對於前者\(\{\vee,\neg\}\),\(P \wedge Q = \neg(\neg P \vee \neg Q)\).對於后者\(\{\wedge,\neg \}\),\(P \vee Q = \neg(\neg P \wedge \neg Q )\)。
1.1.5范式
證明命題公式是否為重言式或矛盾式,或者證明兩個命題公式是否等價時,如果命題變元很多,那么真值表將會很麻煩,除此外,采用等價公式替換可能會使得證明過程不標准(不同的人可能證明方法不一樣)。
而范式的作用則是將證明過程標准化。范式主要分為主析取范式和主合取范式。
先闡述主析取范式:
考慮n個命題變元,\(P_1,P_2,P_3...P_n\),那么稱,\(\hat{P_1}\wedge\hat{P_2}\wedge\hat{P_3}...\hat{P_n}\)為這n個命題變元的一個極小項,且:
顯然,對於n個命題變元而言,它們共有\(2^n\)個極小項,且對於每個極小項而言,有且僅有一組真值指派使其為真。而且進一步不難發現,任意兩個不同的極小項之間的合取產生的命題公式必為矛盾式,不妨設\(m_i\)為極小項的一種表現形式,那么當i不等於j時,有\(m_i \wedge m_j \iff F\)。當然,也不難發現,所有極小項析取產生的命題公式必為重言式。即\(\vee_0^{2^n-1}m_i \iff T\).
而\(m_{k_1} \vee m_{k_2}\vee m_{k_3}...\vee m_{k_s}(0\le k_1 < k_2 <k_3...<k_s \le 2^n -1)\)則是關於n個命題變元\(P_1,P_2,P_3...P_n\)的一個主析取范式。
假設命題公式A含有n個命題變元,且它不是矛盾式,那么A必然能夠等價於一個關於這n個命題變元的主析取范式。而且假設有k組真值解釋使得命題公式A為T,那么該主析取范式涉及的極小項也必然是k個。
關於主析取范式的撰寫過程通常是:
-
將\(\to ,\leftrightarrow\)轉變為\(\neg,\vee,\wedge\)。
-
采用德.摩根律將\(\neg\)符號移到命題變元上去。
-
將命題公式轉為\(A_1 \vee A_2 \vee A_3...\vee A_k\)的格式。對於\(A_i\),它的格式為\(\hat{A_{i1}} \wedge \hat{A_{i2}} \wedge \hat{A_{i3}}...\wedge \hat{A_{is}}\)這種格式。而\(\hat{A_{ij}}\)要么為\(A_{ij}\),要么為\(\neg A_{ij}\),此時的\(A_{ij}\)即為命題變元。
-
如果\(\hat{A_{i1}} \wedge \hat{A_{i2}} \wedge \hat{A_{i3}}...\wedge \hat{A_{is}}\),如果缺命題變元\(A_{ik}\),那么采用如下方法補上,即:
\[\begin{align*} & \quad \hat{A_{i1}} \wedge \hat{A_{i2}} \wedge \hat{A_{i3}}...\wedge \hat{A_{is}} =\hat{A_{i1}} \wedge \hat{A_{i2}} \wedge \hat{A_{i3}}...\wedge \hat{A_{is}} \wedge (\neg A_{ik} \vee A_{ik}) \\ &=(\hat{A_{i1}} \wedge \hat{A_{i2}} \wedge \hat{A_{i3}}...\wedge \hat{A_{is}} \wedge \neg A_{ik}) \vee (\hat{A_{i1}} \wedge \hat{A_{i2}} \wedge \hat{A_{i3}}...\wedge \hat{A_{is}} \wedge A_{ik}) \end{align*} \] -
去除重復的項。
e.g求出\((\neg P \to Q)\wedge (P \leftrightarrow R)\)的主析取范式。
為了便於表示,我們常用二進制對結果進行對應。首先將字母按照從小到大進行排列(比如是\(P \wedge Q \wedge R\),而不是\(R\wedge Q \wedge P\)),其次將\(\neg P_i\)視作0,\(P_i\)視作1。那么\((\neg P \wedge Q \wedge \neg R )\)對應的二進制即為010,對應十進制的2。不難得到,上述的結果即為:\(m_2 \vee m_5 \vee m_7\),更簡便地話,可以表示為\(\sum2,5,7\).
雖然,主析取范式可以用於標准化證明,但是實際操作卻有時候也是麻煩的,比如上面的(1)式,如果將\(P \leftrightarrow R\)替換為\((\neg P \vee R) \wedge (\neg R \vee P)\)那么將會更為麻煩。一個Tip就是在撰寫主析取范式時,盡可能使得\(\hat{P_i}\)和\(\hat{P_j}\)之間的聯結詞是\(\wedge\)。
主合取范式和主析取范式是類似的,主合取范式有極大項的概念,即考慮n個命題變元,\(P_1,P_2,P_3...P_n\),那么稱,\(\hat{P_1}\vee\hat{P_2}\vee\hat{P_3}...\hat{P_n}\)為這n個變元的一個極大項,且:
顯然,有且僅存在一組真值指派使得關於這個n個命題變元的極大項為F,而且也可以得到共有\(2^n\)個極大項。不妨考慮\(M_i\)表示一個極大項,那么顯然\(M_i \vee M_j \iff T\),且\(\wedge_0^{2^n-1}M_i \iff F\)。
而\(M_{k_1} \wedge M_{k_2}\wedge M_{k_3}...\wedge M_{k_s}(0\le k_1 < k_2 <k_3...<k_s \le 2^n -1)\)則是關於n個命題變元\(P_1,P_2,P_3...P_n\)的一個主析取范式。
特別地,關於極大和極小項有這樣的聯系,\(m_i = \neg M_i\),考慮命題公式A可由主析取范式表述為\(\sum k_1,k_2...k_s\),且\(0\le k_1 <k_2<k_3...<k_s\le 2^{n-1}\),那么A必然可以由主合取范式表述為\(\prod j_i,j_2...j_t\).且:
\(\{k_1,k_2...k_s\} \cap \{j_i,j_2...j_t\} =\varnothing\),\(\{k_1,k_2...k_s\} \cup \{j_i,j_2...j_t\} =\{0,1,2,3...2^n-1\}\)
回到最開始,為什么說主合取范式和主析取范式可以證明命題公式是否為重言式或矛盾式呢?一方面,考慮主析取范式的性質\(\vee_0^{2^n-1}m_i \iff T\),如果你命題公式等價的主析取范式涉及到了\(2^n\)個極小項,那么它必然是重言式。另一方面,考慮主合取范式的性質\(\wedge_0^{2^n-1}M_i \iff F\),如果你命題公式等價的主合取范式涉及到了\(2^n\)個極大項,那么它必然是矛盾式。
范式證明公式等價的核心是命題公式A和B有一個相同的主析取范式或主合取范式。
但事實上,利用范式不一定就比真值表簡單,范式是一種相對標准的公式化證明方法,因為它的結果是標准且唯一的,但是途中過程采取的手段卻可能是不同的,比如有可能有些人采用的等價公式是不同的,而導致的時間消耗就可能是不同的。相比而言,真值表更加無腦,但它的問題是當命題變元增多的時候,它的消耗時間也在成倍增加,是個天然的指數問題。
不過到底那個快,那個慢,目前也沒必要去細究,我開始也覺得范式比真值表快,但是后來發現MIT6.042J課程提供的PDF的一段話(鏈接),也就產生了疑惑。
Theorem 3.4.5 (Completeness of the propositional equivalence axioms). Two propositional formula are equivalent iff they can be proved equivalent using the equivalence axioms listed above.
The benefit of the axioms is that they leave room for ingeniously applying them to prove equivalences with less effort than the truth table method. Theorem 3.4.5 then adds the reassurance that the axioms are guaranteed to prove every equivalence, which is a great punchline for this section. But we don’t want to mislead you: it’s important to realize that using the strategy we gave for applying the axioms involves essentially the same effort it would take to construct truth tables, and there is no guarantee that applying the axioms will generally be any easier than using truth tables.
這個問題暫時不用管,略過,略過。
1.1.6命題演算的推理理論
對於條件式\(H_1 \wedge H_1 \wedge H_1 ...\wedge H_n \to R\),我們常稱\(H_1,H_2,H_3...H_n\)為條件式的前提組,而R為條件式的結論。這其實和之前\(A \to B\)的相關概念是一樣的。如果該條件式是恆真式,那么我們就說\(H_1 \wedge H_1 \wedge H_1 ...\wedge H_n \implies R\)。
之前已經闡述過證明蘊含的方法有真值表法,邏輯推證法,證明\(A \to B \iff T\),\(A =C=D...\implies E \implies F =G =B\)。但是,對於上述這種結構\(H_1 \wedge H_1 \wedge H_1 ...\wedge H_n \to R\),我們可以采用演繹推理(形式推理)的方法。
演繹推理有最基本的兩組規則:
P:前提可以在演繹推理的任意步驟中引入。
T:在演繹推理過程中,如果命題公式S由被已引入的公式蘊含或者等價,那么公式S也可以引入推理過程中。
這個T規則其實需要你記住基本等價公式和基本蘊含式后,才能更好運用,相關的式子請參看1.1.3節。
補充說明基本蘊含式:\(P,Q \implies P \wedge Q\).可以將這個當做是規定。
e.g1用演繹推理證明\((P \to Q) \wedge ( Q \to R) \wedge P \implies R\).
- \(P \to Q\) P(表示引入一個前提)
- \(Q \to R\) P
- \(P \to R\) T,1,2(表示由1,2引入3)
- \(P\) P
- \(R\) T 3,4
e.g2用演繹推理證明\((P \to R) \wedge (Q \to S)\wedge (P \vee Q) \implies R \vee S\)。
- \(P \vee Q\) P
- \(\neg P \to Q\) T ,1
- \(Q \to S\) P
- \(\neg P \to S\) T,2,3
- \(\neg S \to P\) T,4
- \(P \to R\) P
- \(\neg S \to R\) T,5,6
- \(S \vee R\) T,7
- \(R \vee S\) T,8
你說,第7步能不能夠直接跳到第9步呢?我覺得是可以的。但是,實際上是會扣分的。😆😆😆。所以還是按照規范來吧。
下面闡述附加前提技巧用以證明\(H_1 \wedge H_1 \wedge H_1 ...\wedge H_n \implies R \to S\)
因為\(H_1 \wedge H_1 \wedge H_1 ...\wedge H_n \implies R \to S\)當且僅當\(H_1 \wedge H_1 \wedge H_1 ...\wedge H_n \to (R \to S)\)為重言式,而它又與\(H_1 \wedge H_1 \wedge H_1 ...\wedge H_n \wedge R \to S\)是等價的,即\(H_1 \wedge H_1 \wedge H_1 ...\wedge H_n \wedge R\implies S\)。附加前提規則簡寫為CP規則。
e.g3用CP證明\((P \to R) \wedge (Q \to S)\wedge (P \vee Q) \implies R \vee S\).
同一道題可以由多種證明方法,比如上述的e.g2就可以用CP來證明。
- \(\neg R\) P附加(表示將這個命題公式引入前提組)
- \(P \to R\) P
- \(\neg P\) T,1,2
- \(P \vee Q\) P
- \(\neg P \to Q\) T,4
- \(Q\) T 3,5
- \(Q \to S\) P
- \(S\) T,6,7
- \(\neg R \to S\) CP
- \(R \vee S\) T,9
這里需要注意一個P附加,那么就必須有個CP。P附加表示的是將某個命題公式引入,而CP則是表明由附加前提和命題前提組能得到有效結論\(\neg R \to S\).因為上面的1到8步只是說明了\((P \to R) \wedge (Q \to S)\wedge (P \vee Q) \wedge \neg R \implies S\),我們要由它轉換到我們的證明目標上去。
下面闡述反證法用以證明\(H_1 \wedge H_1 \wedge H_1 ...\wedge H_n \implies R\)。
因為\(H_1 \wedge H_1 \wedge H_1 ...\wedge H_n \implies R\),那么\(H_1 \wedge H_1 \wedge H_1 ...\wedge H_n \to R\)是重言式,也就是說\(\neg (H_1 \wedge H_1 \wedge H_1 ...\wedge H_n ) \vee R\)是重言式,也就是說\((H_1 \wedge H_1 \wedge H_1 ...\wedge H_n ) \wedge \neg R\)是矛盾式。也即是說\((H_1 \wedge H_1 \wedge H_1 ...\wedge H_n ) \wedge \neg R \iff F\)。也就是說如果\(\neg R\)如果與任意一個前提\(H_i\),有\(\neg R \wedge H_i \iff F\),那么就有\((H_1 \wedge H_1 \wedge H_1 ...\wedge H_n ) \wedge \neg R \iff F\),也就反過來證明了\(H_1 \wedge H_1 \wedge H_1 ...\wedge H_n \implies R\)。
e.g4用反證法證明\((P \to R) \wedge (Q \to S)\wedge (P \vee Q) \implies R \vee S\)
- \(\neg (R \vee S)\) P假設(表示引入假設,也就是表示如若不然)
- \(\neg R \wedge \neg S\) T,1
- \(\neg R\) T,2
- \(\neg S\) T,2
- \(P \to R\) P
- \(\neg P\) T,3,5
- \(Q \to S\) P
- \(\neg Q\) T,4,7
- \(\neg P \wedge \neg Q\) T,6,8
- \(\neg (P \vee Q)\) T,9
- \(P \vee Q\) P
- \(\neg (P \vee Q) \wedge (P \vee Q)\) T,10,11(這里證明出來一個矛盾)