5.3 謂詞邏輯成為程式語言與 AI 知識表示的基礎#
從量詞到查詢:邏輯成為機器語言#
弗雷格 1879 年鑄造謂詞邏輯(→ 詳見 1.3)時,夢想的是「思維的形式語言」。他沒有夢到的是:一百三十年後,這門語言每天被數十億次機器執行——在資料庫查詢、在程式驗證器、在 AI 的推理引擎裡。本節追蹤謂詞邏輯的四條工程血統:邏輯程式設計、關聯式資料庫、知識表示、自動推理與驗證。
血統一:Prolog 與邏輯程式設計#
1972 年,馬賽的 Alain Colmerauer 與愛丁堡的 Robert Kowalski 各自發展出一個激進想法:程式即邏輯子句,執行即證明。這就是 Prolog(Programming in Logic):
parent(tom, mary).
parent(mary, ann).
ancestor(X, Y) :- parent(X, Y).
ancestor(X, Y) :- parent(X, Z), ancestor(Z, Y).
?- ancestor(tom, ann). % true
- 事實與規則就是霍恩子句(Horn clauses)——量詞邏輯的受限片段;
- 查詢
?- ancestor(tom, ann)的求值過程,就是歸結(resolution)證明; - 證明論(→ 詳見 5.1)從元數學變成了執行模型。魯濱遜 1965 年的歸結原理,把弗雷格—根岑的演繹規則壓縮成一條機器可執行規則。
第五代電腦計畫(1982–1992,日本)把 Prolog 推上國家戰略,雖然目標未竟,卻使「邏輯即計算」深入人心。Kowalski 的口號「算法 = 邏輯 + 控制」正是弗雷格式思想的編程版本:寫下什麼為真(邏輯),機器自己找出怎麼算(控制)。
血統二:SQL 與關聯式資料庫#
1970 年,IBM 的 E. F. Codd 發表關聯式模型:資料是關係(relation),查詢是謂詞邏輯公式。Codd 明言其數學基礎是一階謂詞演算:
SELECT name FROM emp
WHERE salary > 50000
AND EXISTS (SELECT 1 FROM dept
WHERE dept.id = emp.dept_id AND city = 'Jena');
這句 SQL 正是下式的語法糖:
- 關係代數與關係演算被 Codd 證明等價——演算的那一半就是弗雷格的量詞邏輯;
- 今日每一筆 SQL 查詢,本質上都是一次量詞邏輯求值;
- 查詢優化器的核心問題(查詢蘊含、可滿足性檢查)直接是邏輯問題(→ 詳見 5.1 的模型論分支)。
血統三:AI 知識表示#
人工智慧的「知識表示與推理」(KR&R)傳統,把弗雷格邏輯當作知識的通用編碼:
| 系統 | 年代 | 邏輯基礎 |
|---|---|---|
| 邏輯理論家(紐厄爾—西蒙) | 1956 | 命題邏輯證明器 |
| 描述邏輯(DL) | 1980s– | 一階邏輯可判定片段 |
| OWL 語義網本體語言 | 2004 | 描述邏輯的 Web 標準化 |
| 知識圖譜(Google 等) | 2012– | 三元組+蘊含推理 |
| SMT 求解器(Z3 等) | 2000s– | 一階邏輯可滿足性模理論 |
描述邏輯是最佳範例:它用「概念(類)+角色(關係)+公理」表示本體,正是弗雷格概念—對象之分(→ 詳見 2.2)的工程化。OWL 語句:
(教授是被「教授」這一概念包含、且教授課程的人)——語法是描述邏輯,語義仍是一階模型論。2023 年以降的大型語言模型浪潮並未淘汰這條血統,反而凸顯其價值:LLM 負責語言生成,符號邏輯負責可驗證的推理——「神經+符號」架構中的符號一側,依然是弗雷格的遺產。
血統四:自動推理與形式驗證#
1936 年圖靈證明希爾伯特判定問題無解(→ 詳見 5.1),但這個否定結果內藏建設性:
- 半可判定:一階邏輯的有效式可以列舉——自動定理證明器因此可能(歸結原理 1965);
- 可判定片段:描述邏輯、霍恩子句、可判定算術理論——SMT 求解器(Z3 等)靠這些片段驗證晶片、協定與編譯器;
- 證明助手:Lean、Coq 用依值類型論(→ 詳見 5.2)把「弗雷格式機械可查的證明」變成日常工具,數學家已用它形式化了素數定理與液態晶體的存在定理。
三條血統的合流圖#
flowchart TD
A["1879 弗雷格謂詞邏輯"] --> B["1965 魯濱遜歸結原理<br/>機器可執行推理"]
B --> C["1972 Prolog<br/>程式即邏輯"]
C --> D["1982 第五代電腦計畫"]
A --> E["1970 Codd關聯式模型"]
E --> F["SQL 與查詢優化<br/>量詞邏輯的日常執行"]
A --> G["1980s 描述邏輯<br/>概念與對象的工程化"]
G --> H["2004 OWL 語義網"]
H --> I["2012+ 知識圖譜與本體推理"]
A --> J["1936 可計算性論題"]
J --> K["2000s SMT求解器<br/>硬體驗證與AI"]
K --> L["神經+符號架構<br/>LLM 時代的可驗證推理"]為什麼是弗雷格的邏輯勝出#
工程史選擇謂詞邏輯而非其他形式系統,有三個弗雷格式理由:
- 表達力恰好:一階邏輯足以表達關係、量詞、組合結構,又比高階邏輯可判定性好——這個「恰到好處」的系統正是弗雷格 1879 年定下的範圍;
- 組合性可機械化:語義由部分機械決定(→ 詳見 2.2),這才可能有解析器、優化器、求解器;
- 句法語義分離:證明(句法)與真理(語義)的分離(→ 詳見 5.1),使「程式正確性」本身成為可證明的數學命題。
關鍵事件年表#
| 年份 | 事件 | 意義 |
|---|---|---|
| 1879 | 弗雷格謂詞邏輯 | 一切工程血統的源頭 |
| 1936 | 圖靈機與 λ 可定義性 | 邏輯與計算合流(→ 詳見 5.2) |
| 1956 | 邏輯理論家程式 | AI 用邏輯推理起家 |
| 1965 | 魯濱遜歸結原理 | 自動定理證明的引擎 |
| 1970 | Codd 關聯式模型 | 資料庫奠基於一階邏輯 |
| 1972 | Prolog 誕生 | 邏輯程式設計成形 |
| 1982 | 日本第五代電腦計畫 | 邏輯推理的國家級賭注 |
| 1980s | 描述邏輯成形 | 知識表示的可判定基礎 |
| 2004 | OWL 成為 W3C 標準 | 語義網落地 |
| 2012– | 知識圖譜、LLM 時代 | 符號邏輯與神經網路互補 |
小結#
弗雷格鑄造謂詞邏輯,是為了讓思想有一種無歧義的語言;工程世界拿走這門語言,讓機器執行思想。SQL 每秒數百萬次的查詢、OWL 本體裡的每條公理、SMT 求解器驗證的每片晶片,都是 1879 年那本無人問津小書的後裔。弗雷格生前說他的著作「或許有一天值得一看」(→ 詳見 3.3)——這一天不僅來了,而且是以他無法想像的形態到來:他的邏輯不再只是被閱讀,而是被執行。從維斯馬的港灣到矽谷的晶片,這條邏輯之路走了近一百五十年,而且仍在延伸。