動機
命題邏輯把完整句子當作一個不可分割的命題,但「所有人都會死」和「有一個人不喜歡芝士」還需要說明對象及其性質。謂詞邏輯加入變數、謂詞和量詞,使質數定義、先修要求、函數和關係中的對象及條件得以明確表達。可靠的方法是由外向內閱讀:先確定定義域,再確定每個量詞的作用域、連接詞和見證的依賴關係。否定時也要由外向內,保留變數所受的每個條件。
「所有人都會死;某人是人;所以某人會死」可以寫成 ∀x(H(x)→M(x))、H(s),從而得到 M(s)。先把全稱前提代入指定的 s,再使用蘊含。
定義
定義
謂詞與命題
謂詞是其真值可能依賴一個或多個變數的公式。沒有被量詞控制的變數出現稱為自由出現。給自由變數賦值,可以在該賦值下評估公式的真值,但不會消除自由變數。用量詞綁定所有自由出現,才得到語法上封閉的句子。
定義
定義域與賦值
定義域是量詞變數可以選取的集合。賦值為自由變數指定值。若定義域為整數,P(x,y) 表示 x=y,賦值 x=1、y=2 使 P(x,y) 為假。在 ∀xP(x,y) 中,x 被綁定而 y 仍然自由,所以公式在語法上仍然開放;賦值可以評估 y,但自由狀態本身不預設真值一定改變。量詞只在自己的作用域內控制變數;內層量詞重用字母時,指的是內層綁定。
定義域是陳述的一部分。x2=1 在自然數中有一個解,在整數、有理數和實數中有兩個解。因此 ∀xP(x) 在說明定義域前並不完整。有界寫法把集合直接寫出:∀x∈SP(x) 和 ∃x∈SP(x)。
定義
全稱量詞與存在量詞
∀xP(x) 表示定義域內每個 x 都使 P(x) 為真。∃xP(x) 表示至少有一個允許的 x 使 P(x) 為真;這個值叫做見證。證明全稱句要從任意元素開始,證明存在句要給出並檢驗一個見證。否定全稱句只需一個反例,否定存在句則必須說明所有候選都失敗。
例題
賦值後再觀察量詞
令有界定義域 D={1,2},賦值的環境域為 Z,P(x,y) 表示 x=y。賦值 x=1、y=2 時開放公式為假。在 ∀x∈DP(x,y) 中,x 已綁定而 y 自由,所以它在語法上仍是開放公式;自由變數不保證真值一定隨賦值改變。例如 ∀x∈Z(x=y) 仍因 y 自由而開放,卻對每個整數賦值都為假,因為 x=y+1 是反例。回到有界公式,y=1 時因 x=2 失敗而為假,y=3 雖不屬於有界見證域,卻可作為環境中的外部賦值。公式 ∀x∈D∃y∈DP(x,y) 則是命題:對每個 x 取 y=x 即可。量詞綁定變數,但沒有改變謂詞本身。
量詞的語法與作用域
量詞的作用域是緊接其後的公式,括號可以把作用域擴大。例如
∀x(P(x)→∃y(Q(x,y)∧R(y)))
外層 ∀ 控制括號中的 x,內層 ∃ 只控制自己的括號中的 y。y 可以依賴已選定的 x,但不能在內層作用域外使用。綁定變數只是局部佔位符;若 z 在公式體內沒有出現,可把 ∀xP(x) 改寫為 ∀zP(z)。若替換字母已被內層量詞使用,就可能發生變數捕獲,真值隨之改變。
量詞也決定證明的開頭。證明 ∀x∈DP(x) 時寫「令 x∈D 任意」,不能只檢驗一個方便的數。證明 ∃x∈DP(x) 時要先說出候選,再驗證它屬於 D 並滿足 P。在 ∀x∃yP(x,y) 中先給定任意 x,y 可以依賴 x;在 ∃y∀xP(x,y) 中必須先選一個固定 y。
若有界定義域為空,則由展開式可見:∀x∈∅,P(x) 為真,因為每個蘊含 x∈∅→P(x) 的前件都為假;而 ∃x∈∅,P(x) 為假,因為不存在能使合取 x∈∅∧P(x) 為真的對象。
否定如何翻轉量詞
定理
量詞否定律
在固定定義域上,
¬∀xP(x)≡∃x¬P(x),¬∃xP(x)≡∀x¬P(x).否定會翻轉外層量詞並否定其完整作用域,定義域不變。
定理
有界量詞與德摩根律
有界寫法是縮寫:
∀x∈SP(x)≡∀x(x∈S→P(x)),∃x∈SP(x)≡∃x(x∈S∧P(x)).所以
¬∀x∈SP(x)≡∃x∈S¬P(x),¬∃x∈SP(x)≡∀x∈S¬P(x).內部還要使用 ¬(A∧B)≡(¬A∨¬B)、¬(A∨B)≡(¬A∧¬B) 以及 ¬(A→B)≡A∧¬B。
證明思路
「並非每個對象都滿足 P」的意思,正是「存在一個對象使 P 失敗」;「沒有對象滿足 P」的意思,則是「每個對象都使 P 失敗」。遇到巢狀量詞時一次只翻轉一個,由外向內進行:
¬∀x∃yP(x,y)≡∃x¬∃yP(x,y)≡∃x∀y¬P(x,y).
最後的 x 是使原全稱句失敗的對象;對這個 x,所有 y 都使 P 失敗。若只翻轉第一層,就會漏掉內層作用域。
保留定義域並追蹤見證
例題
否定質數的定義
全程固定自然數 n≥2;這個假設不能刪除,因為 1 不是質數。質數定義為
∀d∈N(d∣n→(d=1∨d=n)).逐層否定:
¬∀d∈N(d∣n→(d=1∨d=n))≡∃d∈N¬(d∣n→(d=1∨d=n))≡∃d∈N(d∣n∧¬(d=1∨d=n))≡∃d∈N(d∣n∧d=1∧d=n).讀法是:存在自然數 d,它整除 n,而且既不是 1 也不是 n。這正是非平凡除數。否定保留了 n≥2 這個例子的假設。
例題
有界條件必須隨見證保留
否定
∀n∈Z(n>0→n2>n)得到
∃n∈Z(n>0∧n2≤n).n=1 同時滿足 n>0 和 n2≤n,所以是見證。0 雖滿足 02≤0,卻不滿足 n>0,不能作為見證。
一個固定見證,還是隨輸入選擇
例題
量詞次序與依賴見證
在 N 上,
∀x∈N∃y∈N(x<y)為真,給定任意 x 後取 y=x+1。但
∃y∈N∀x∈N(x<y)為假,因為固定的 y 會被允許的 x=y 反駁。有限集合也有相同現象:在 X={1,2}、P(x,y) 表示 x=y 時,∀x∈X∃y∈XP(x,y) 由 y=x 成立;∃y∈X∀x∈XP(x,y) 為假,因為 y=1 在 x=2 失敗,y=2 在 x=1 失敗。
例題
量詞的分配與同類交換
在固定定義域上,有以下兩個恆等式
∀x(P(x)∧Q(x))≡(∀xP(x))∧(∀xQ(x)),∃x(P(x)∨Q(x))≡(∃xP(x))∨(∃xQ(x))第一個從任意元素出發:同一元素的合取為真,當且僅當兩個性質都成立。第二個按見證屬於哪個析取分支分類,反向則直接使用該見證。同類量詞也可交換,但含義要說準確:∀x∀y,P(x,y) 檢查每個有序對,∃x∃y,P(x,y) 只需一個有序對。不同類量詞通常不可交換。
在 {1,2} 上令 P(x) 為 x=1、Q(x) 為 x=2,則 ∀x(P(x)∨Q(x)) 為真,而 (∀xP(x))∨(∀xQ(x)) 為假;同樣,∃x(P(x)∧Q(x)) 為假,而 (∃xP(x))∧(∃xQ(x)) 為真。這是兩個交叉失敗的具體反例。
定理
見證傳遞
若 ∀x(P(x)→Q(x)) 且 ∃xP(x),則 ∃xQ(x)。取滿足 P(a) 的見證 a;把全稱前提代入 a 得 P(a)→Q(a),所以 Q(a),同一個 a 就是結論的見證。
例題
否定存在合取
由外向內使用量詞否定律和德摩根律:
¬∃x(P(x)∧Q(x))≡∀x¬(P(x)∧Q(x))≡∀x(¬P(x)∨¬Q(x))最後一句表示每個對象至少有一個性質失敗,並不表示每個對象兩個性質都失敗。
例題
在指定定義域中讀回有序量詞
公式
∃y∀x(x≤y)表示存在一個固定的 y,使定義域中的每個 x 都滿足 x≤y。它是否為真取決於定義域;未說明定義域時,不能把它誤讀成關於所有數的斷言。
例題
不同圖書與不同借閱者
設 People 和 Books 分別為人和書的集合。兩句陳述是
∀b∈Books∃x∈PeopleBorrows(x,b)和
∃x∈People∀b∈BooksBorrows(x,b).第一句表示每本書至少有一個借閱者;第二句表示同一個人借閱所有書。兩本書由不同的人分別借走時,第一句為真而第二句為假,所以量詞次序確實改變了意思。
「每個人至少讀兩本書」要求對每位讀者給出兩本不同的書:
∀x∈People∃b1,b2∈Books(b1=b2∧Reads(x,b1)∧Reads(x,b2))
例題
課程先修要求的否定
設 Student(x)、Enrolls(x) 和 Prereq(x) 分別表示學生、選課和符合先修要求。考慮以下陳述
∀x((Student(x)∧Enrolls(x))→Prereq(x)).否定是
∃x(Student(x)∧Enrolls(x)∧¬Prereq(x)).見證必須是已選課而又不符合先修要求的學生。沒有選課的人不反駁原蘊含,因為原句沒有對他作出要求。
例題
在學生定義域中翻譯
定義域為某大學的所有學生。若 S(x) 表示「x 修讀數學」,P(x) 表示「x 通過考試」,則「所有修讀數學的學生都通過考試」「至少一名學生通過考試」「至少一名修讀數學的學生沒有通過考試」分別寫成
∀x(S(x)→P(x)),∃xP(x),∃x(S(x)∧¬P(x))定義域已經包含「學生」;謂詞只表達題目要求的性質。
先表達依賴關係,再寫符號
例題
從英文建立量詞公式
「每個學生至少修過一門數學課」是
∀x(Student(x)→∃m(MathCourse(m)∧Taken(x,m))).「有一位教授教授系內的每一門課」是
∃p(Professor(p)∧∀c(DepartmentCourse(c)→Teaches(p,c)))「每場考試都有一道每個學生都覺得困難的題目」是
∀e(Exam(e)→∃q(Question(q,e)∧∀s(Student(s)→Difficult(s,q)))).題目可以隨考試改變,但對該考試選定的題目必須對每個學生都困難。把存在量詞移到最外層,就錯誤地聲稱有一道題適用於所有考試。
用見證診斷錯誤的陳述
例題
識別錯誤形式化與安全改名
公式
∃d∈N(d∣n→(d=1∨d=n))太弱。保留 n≥2 的假設時,取 d=n+1;它不整除 n,所以蘊含以前件為假而真,存在式無需檢查所有除數。(當 n=0 時不要用這個特定見證,因為 1 整除 0。)質數定義需要 ∀d。事實上,取 d=1 就能對任何 n 成為見證,因為 1∣n 且 d=1;d=n+1 則突出了 n≥2 時的真空成立。同樣,∀a∃dSubmittedBefore(a,d) 允許每份作業有自己的期限;單一期限應寫成 ∃d∀a(Assignment(a)→SubmittedBefore(a,d))。
∀x∃yAttends(x,y) 也不是「每場講座至少有一名學生參加」的正確寫法;它沒有說明 x 和 y 的類型。正確形式是
∀ℓ(Lecture(ℓ)→∃s(Student(s)∧Attends(s,ℓ))).替換字母在公式體內處處不出現是充分的安全保障,並非必要條件;必要條件是改名不能改變相關出現位置的綁定狀態,不能造成變數捕獲。X={1,2} 上的
∀x∈X∃y∈X(x=y)為真。若把外層 x 草率改成已有的 y,便得到 ∀y∈X∃y∈X(y=y),內層量詞捕獲了兩個出現位置,公式為假。改用全新的 z 才得到等價的 ∀z∈X∃y∈X(z=y)。
例題
唯一性包含兩個證明要求
「存在唯一的 x∈D 使 P(x)」表示存在性和至多一個:
∃x∈D(P(x)∧∀y∈D(P(y)→y=x)).先給一個見證並驗證 P,再令 y 為任意滿足 P 的元素並證明 y=x。在整數中 x2=1 有 1 和 −1 兩個見證,存在但不唯一。對 x2=0,0 是見證;若整數 y 滿足 y2=0,平方非負且只有 y=0 時平方為零,所以 y=0,這就完成了至多一個的證明。「我的同學恰有一個朋友」也用同一模式:以人為定義域、o 指定該同學時,∃!xFriend(o,x) 同時要求朋友存在且至多一人。
例題
函數與關係的量詞定義
把「f:X→Y 是單射」寫成
∀x1,x2∈X(f(x1)=f(x2)→x1=x2).證明時先取任意 x1,x2∈X,假設像相等,再推出輸入相等;反例則給出兩個不同輸入而像相等。偏序的完整條件是
∀x∈X(xRx),∀x,y∈X(xRy∧yRx→x=y),∀x,y,z∈X(xRy∧yRz→xRz)等價關係把中間一項換成 ∀x,y∈X(xRy→yRx)。每一項都要單獨履行證明要求,不能用一個樣本代替全稱證明。
從符號讀回句子
若人的定義域滿足
∀x∃y(x=y∧Friend(x,y)),
它表示每個人都有一個與自己不同的朋友。若定義域包含人和學生,
∃x∀y(Student(y)→Older(x,y))
表示存在一個人比每一名學生年長,並不表示每個人都比每名學生年長,也不自動要求這個人是學生。讀回句子時,要明確第一個見證是誰,以及後面的見證是否可以依賴它。
常見錯誤
在 ∃x(Student(x)→P(x)) 中,非學生就能令蘊含為真而成為見證,即使他不滿足 P;若見證必須是學生,應寫成 ∃x(Student(x)∧P(x))。「只有學生可以提交」是
∀x(Submitted(x)→Student(x)),而「所有學生都提交」是
∀x(Student(x)→Submitted(x));「只有」決定蘊含方向。
常見錯誤
蘊含不等於合取
否定 A→B 得 A∧¬B。不要寫成 ¬A→¬B,也不要丟掉原蘊含的前件。普遍量化的反例必須屬於限制的類別並且使結論失敗。
常見錯誤
不要交換混合量詞
同類量詞有時可以交換,但 ∀x∃y 和 ∃y∀x 通常不同。有限集合 X={1,2} 的等式例子給出了具體反例。
常見錯誤
真值表不能枚舉無限定義域
謂詞邏輯擴展命題邏輯。真值表可以處理連接詞的真值,卻不能代替在 N 上對所有元素作證明。全稱句要用任意元素證明或一個反例否定,存在句要給見證或說明所有候選失敗。
逐步追蹤否定
使用 stepper 逐層在陳述和否定之間轉換:翻轉一個量詞,否定完整作用域,再化簡連接詞。它只是輔助檢查,不替代書面證明。
邊讀邊試
仔細否定一個帶量詞的陳述
這個示範逐步顯示量詞否定的每一步。
- 1. 先從外層量詞開始:「對每個 x」。
總結
量詞在固定定義域內綁定變數;自由變數仍需要賦值。有界全稱使用蘊含,有界存在使用合取,否定時定義域不變。由外向內翻轉量詞並使用德摩根律,尤其要記住 ¬(A→B)≡A∧¬B。量詞次序決定見證能否依賴輸入;全稱證明從任意元素開始,存在證明給出已檢驗的見證,唯一性則要分別證明存在與至多一個。
練習:作用域、見證與證明
練習 1
在固定定義域上,完全化簡 ¬∀x∃yP(x,y)。
解答 · 提示
解答 · 參考解答
∃x∀y¬P(x,y)。第一個見證使原全稱句失敗,並且對它所有 y 都失敗。
練習 2
形式化:有一名學生,在每場考試中都覺得至少一道題目困難。使用 Student、Exam、Question 和 Difficult。
解答 · 提示
解答 · 參考解答
∃s(Student(s)∧∀e(Exam(e)→∃q(Question(q,e)∧Difficult(s,q)))).學生的見證位於考試的量詞之外。給定任意考試後,再為同一名學生選擇一道題目。
練習 3
假設 n≥2。為甚麼 ∃d∈N(d∣n→(d=1∨d=n)) 太弱,不能定義質數?
解答 · 提示
解答 · 參考解答
在 n≥2 下取 d=n+1。它不整除 n,所以蘊含以前件為假而真;存在式沒有檢查所有除數,質數定義必須使用 ∀d。
練習 4
當定義域為 N 時,有限真值表能單獨判定 ∀xP(x) 嗎?請說明正確的證明方法。
解答 · 提示
解答 · 參考解答
不能。真值表只處理有限個原子命題的真值,不能枚舉所有自然數。應對任意自然數作全稱證明,或給出一個自然數反例。
先讀這一頁
如果想先重溫命題邏輯,請讀
1.1 命題邏輯。