這句話是假的:邏輯如何用真值表、量詞與證明檢查自己,又如何撞上極限
從說謊者悖論出發,拆開形式邏輯的引擎——真值表、謂詞量詞、自然演繹——一路推到哥德爾不完備與計算的邊界
「如果這句話是假的」——當邏輯開始檢查自己
你已經知道怎麼分辨有效與無效、演繹與歸納。現在來看一句話:「這句話是假的。」
如果它是真的,那麼照它說的,它就是假的;如果它是假的,那麼它說「我是假的」這件事就說對了,於是它又是真的。無論你賦予它哪個真值,都會立刻翻轉成相反的那個。這就是著名的說謊者悖論(Liar Paradox),而它之所以重要,不只是腦筋急轉彎——它是一道裂縫,從這道裂縫望進去,你會看到整個形式邏輯的地基、它的力量,以及它的極限。
入門篇我們把邏輯當成「評估論證的工具」。這一篇,我們要把工具本身拆開來看:當我們說一個論證「有效」,那個「有效」到底是用什麼機器算出來的?真值表、量詞、推論規則、形式系統——這些零件如何咬合?而當這套機器精密到一定程度,它為什麼會反過來咬到自己,逼出哥德爾(Gödel)那句「有些真理永遠無法被證明」?

命題邏輯:把「有效」變成可計算的事
入門篇說有效性是「不可能前提全真而結論為假」。這個定義很美,但它有個問題:「不可能」要怎麼檢查?你不可能把全宇宙的可能情況都跑一遍。命題邏輯(propositional logic)的天才之處,在於把這個無窮的「所有可能」壓縮成一張有限的表格。
它的做法是:先把日常語句裡那些「真假已定但內容不管」的最小單位抽象成命題變元(propositional variable)$p, q, r$,再用五個邏輯連接詞(logical connectives)把它們組起來:
- 否定 ¬(非)
- 連言 ∧(且)
- 選言 ∨(或)
- 條件 →(如果……則……)
- 雙條件 ↔(若且唯若)
關鍵在於,這些連接詞是真值函數(truth-functional)的——一個複合句的真假,完全由組成它的子句的真假決定,不多不少。「$p \land q$」為真,當且僅當 $p$ 真且 $q$ 真;其他情況一律為假。這個「完全由」是整套機器能運轉的引擎。
於是「不可能前提全真而結論為假」就有了機械的判準:列出所有命題變元的真假組合($n$ 個變元就有 $2^n$ 列),逐列檢查。如果沒有任何一列讓前提全真、結論為假,這個論證就有效。無窮的「所有可能」,被收斂成一張可以用手算完的表。
看一個例子
我們用真值表驗證入門篇提過的「否定後件」(modus tollens):從「$p \to q$」與「¬$q$」,能否保證「¬$p$」?
| $p$ | $q$ | $p \to q$ | ¬$q$ | ¬$p$ |
|---|---|---|---|---|
| 真 | 真 | 真 | 假 | 假 |
| 真 | 假 | 假 | 真 | 假 |
| 假 | 真 | 真 | 假 | 真 |
| 假 | 假 | 真 | 真 | 真 |
我們要找的是「兩個前提($p \to q$ 與 ¬$q$)同時為真」的列。掃一遍:只有第四列符合——$p \to q$ 為真、¬$q$ 為真。而在這一列,結論 ¬$p$ 也是真的。沒有任何一列出現「前提全真、結論假」的反例,所以否定後件有效。
現在對比入門篇警告過的「肯定後件」:從「$p \to q$」與「$q$」推「$p$」。看第一列與第三列,這兩列 $q$ 都為真且 $p \to q$ 也為真(前提全真);但第三列的 $p$ 是假的。逮到了——一列「前提真、結論假」的反例,足以判它無效。
注意這裡發生了什麼事:兩千年來靠直覺與例子爭辯的「這推論對不對」,被化約成一個任何人都能複製、無需天才靈光的判定程序(decision procedure)。這正是現代邏輯與亞里斯多德三段論的分水嶺。
那條讓人不安的「→」:實質條件句
真值表也藏著一個讓初學者皺眉、卻意義深遠的設計:條件句「$p \to q$」的真值表規定,只要前件 $p$ 為假,整句就為真,無論後件如何。
這意味著「如果月亮是乳酪做的,那麼 1+1=3」這句話在邏輯上是真的——因為前件「月亮是乳酪」為假。這違反直覺到近乎荒謬。哲學家稱這種「→」為實質條件句(material conditional),並圍繞它爭論了一個世紀。
為什麼要這樣定義?因為要維持「真值函數」這個引擎不熄火,條件句的真假就必須完全由前後件的真假決定,沒有第三條路。而「前件假則整句真」這個約定,能讓「$p \to q$」等價於「¬$p \lor q$」,使整套系統保持優雅一致。代價是:它捕捉不到日常「如果」裡那層相關性——我們說「如果下雨就帶傘」時,預設了雨和傘之間有真實連結,而實質條件句對此一無所知。
這個落差催生了一整片研究領域。相干邏輯(relevance logic)試圖要求前後件必須「相干」才算數;反事實條件句(counterfactual conditionals)如「假如你昨天讀了書,今天就會過關」更需要可能世界(possible worlds)的語意才能分析。日常的「如果」,遠比真值表那一欄複雜——而看清這個落差,本身就是邏輯素養的進階標誌。
從命題到謂詞:讓「所有」與「存在」進場
命題邏輯有個天花板。回看入門篇的招牌例子:「所有人都會死;蘇格拉底是人;所以蘇格拉底會死。」這個論證明明有效,但命題邏輯證明不了它。為什麼?因為命題邏輯只看得到三個沒有內部結構的整句 $p, q, r$,它看不見「所有」「是人」「會死」這些把句子串起來的關節。對它而言,這只是「$p, q$,所以 $r$」——毫無必然關係。
謂詞邏輯(predicate logic,又稱一階邏輯 first-order logic)打開了句子內部。它引入:
- 個體(如蘇格拉底,記作 $s$)
- 謂詞(如「是人」$H(x)$、「會死」$M(x)$)
- 量詞:全稱量詞 ∀(對所有)與存在量詞 ∃(存在某個)
於是那個論證變成:
前提一:$\forall x\,(H(x) \to M(x))$ (對所有 $x$,如果 $x$ 是人,則 $x$ 會死) 前提二:$H(s)$ (蘇格拉底是人) 結論:$M(s)$ (蘇格拉底會死)
現在有效性看得見了:全稱句「對所有 $x$」當然涵蓋 $x = s$ 這個特例,套進去得 $H(s) \to M(s)$,再配上 $H(s)$,由肯定前件(modus ponens)直接得 $M(s)$。量詞讓邏輯第一次能處理「一般規律如何約束個別事例」——這正是數學與科學推理的命脈。
這裡有個進階陷阱值得提醒:量詞的順序會徹底改變意思。「$\forall x\,\exists y\,(y\text{ 是 }x\text{ 的母親})$」說的是「每個人都有某個母親」(合理);把量詞對調成「$\exists y\,\forall x\,(y\text{ 是 }x\text{ 的母親})$」,卻變成「存在某一個人,是所有人的母親」(荒謬)。同樣兩個量詞、同樣的謂詞,順序一換,真假天差地別。許多日常推理的暗坑,正埋在這種量詞範圍(scope)的混淆裡。
不靠真值表的證明:自然演繹
真值表雖然萬無一失,卻有兩個弱點:變元一多,$2^n$ 列會爆炸;而且它只能對命題邏輯用,謂詞邏輯的論域可能無窮,根本列不完。我們需要另一條路——不是「窮舉所有情況」,而是「一步步推導」。
這就是證明論(proof theory)的領域。以自然演繹(natural deduction,由根岑 Gentzen 與雅斯科夫斯基提出)為例,它給每個連接詞一組引入規則(怎麼推出含該連接詞的句子)與消去規則(怎麼從含該連接詞的句子推出別的)。例如:
- ∧ 引入:有了 $p$,又有了 $q$,就能寫下 $p \land q$。
- ∧ 消去:有了 $p \land q$,就能拆出 $p$(或 $q$)。
- → 引入:假設 $p$,若能推導出 $q$,就能解除假設、得到 $p \to q$。
最後這條最精彩:它讓我們能「暫時假設」某件事,看它導向何方,再把假設收回成一個條件句。這正是數學家寫「設……,則……」的形式化身。整個證明就像搭積木,每一步都由規則授權,無需鋪開整張真值表。
這裡浮現一個深刻問題:自然演繹這套「語法」推導,和真值表那套「語意」判準,會不會兜不攏?會不會有個論證語意上有效(真值表過關)卻推導不出來,或反過來推導得出卻其實無效?這個「兩套系統是否相等」的疑問,把我們直接帶到 metalogic(後設邏輯)的門口。
重點回顧
- 真值表把「不可能前提全真而結論假」這個無窮判準,壓縮成有限可算的程序:找不到反例列就有效,找到一列就無效。
- 邏輯連接詞是真值函數的——複合句真假完全由子句真假決定。這個性質是整套機器的引擎,但也逼出反直覺的實質條件句(前件假則整句真)。
- 謂詞邏輯用量詞 ∀/∃ 打開句子內部結構,才能證明「所有人會死,蘇格拉底是人,故蘇格拉底會死」這類命題邏輯搆不到的推論;量詞順序一換,意思全變。
- 自然演繹用引入/消去規則一步步推導,不必窮舉真值表,並能處理無窮論域;「→ 引入」把「暫時假設再收回」形式化。
- 語意(真值表、模型)與語法(推導、證明)是兩套獨立系統,它們是否吻合,是 metalogic 的核心問題。
深入探討(研究所視角)
入門篇在最後點到完備性與不完備性,這裡我們把它接成一條完整的故事線,並補上機制。
兩套系統的會師:可靠性與完備性。 把語意有效(⊨,「凡前提真之模型結論皆真」)與語法可證(⊢,「依規則推導得出」)分開後,自然要問它們是否外延相等。這拆成兩個方向。可靠性(soundness)說 ⊢ 蘊涵 ⊨——能推導出來的都真正有效,這保證系統不會「證出假貨」,相對好證。困難的是反向的完備性(completeness):⊨ 蘊涵 ⊢——凡有效者皆可證。哥德爾的一階邏輯完備性定理(1929)正是證明了這個方向,常用亨金構造(Henkin construction)來做:把任何一致的語句集擴充成「極大一致集」,再用它蓋出一個讓所有語句成真的模型,從而證明「不可證」必伴隨「有反模型」。可靠加完備,意味我們的證明機器恰好抓住有效性,不多不少。
緊緻性與一階邏輯的盲點。 完備性定理有個威力驚人的推論——緊緻性定理(compactness):一個語句集若其每個有限子集都有模型,則整個(可能無窮的)集也有模型。這催生了非標準分析(nonstandard analysis),讓「無窮小量」獲得嚴格地位。但緊緻性也暴露一階邏輯的天生限制:它無法用單一語句集精確刻劃「自然數結構」——必然存在滿足同樣公理、卻塞進額外「非標準元素」的怪異模型(Skolem 悖論的近親)。想排除這些,得跳到二階邏輯(second-order logic),但代價是失去完備性。這是邏輯學裡反覆出現的權衡:表達力與後設性質往往不可兼得。
回到說謊者:不完備性的引擎。 本文開頭的說謊者悖論,正是哥德爾不完備性定理(1931)的靈感來源。哥德爾的鬼斧神工在於算術化(Gödel numbering):給每個符號、公式、證明編一個自然數,使得「某公式可被證明」這種關於系統的後設陳述,搖身變成系統內部一條關於數字的算術命題。接著他用對角線引理(diagonal lemma)造出一個自我指涉的句子 $G$,其內容恰好是「$G$ 不可在本系統中被證明」——這正是說謊者「這句話是假的」的精密升級版,只是把危險的「假」換成了安全的「不可證」。於是:若 $G$ 可證,系統就證出了一個假命題(不一致);若系統一致,$G$ 必為真卻不可證。任何足夠強(能表達基本算術)且一致的形式系統,都逃不過這道命題。第二不完備性定理更尖銳:這樣的系統無法在自身內部證明自己的一致性——希爾伯特(Hilbert)想用有限手段一勞永逸奠定全部數學的綱領,至此宣告觸礁。
判定性與計算的邊界。 還有最後一塊拼圖。命題邏輯有真值表這個判定程序,是可判定的(decidable)。但一階邏輯呢?邱奇(Church)與圖靈(Turing)在 1936 年各自證明:一階邏輯的有效性不可判定(undecidable)——不存在任何演算法,能對任意一階語句一致地判斷它是否有效。為此圖靈發明了圖靈機(Turing machine)並證明停機問題(halting problem)不可解,這正是計算理論的誕生時刻。於是邏輯與計算在最深處交會:哥德爾的「真而不可證」、邱奇—圖靈的「有效而不可判定」,共同畫出了形式方法的根本邊界。這條邊界也是今日「大型語言模型能否真正進行邏輯推理」爭論的底色——一個系統即便能生成形狀正確的推導,也終究撞上這些任何形式系統都繞不過的天花板。從一句「這句話是假的」出發,我們最後抵達的,是人類理性自我認識的極限地圖。