Day 47 · 2026.08.08

模型论与基础

Model Theory & Foundations — 语言能说什么,世界就有多少种
「泛代数 + 逻辑 = 模型论。」 — C. C. Chang & H. J. Keisler,《Model Theory》

一阶逻辑与完备性

First-Order Logic & Completeness · 证明与真理为何重合
Logic · Foundations
直觉版

写下群的公理——结合律、单位元、逆元。这几行符号本身不指任何东西,它只是一张筛子:整数加法通过,可逆矩阵通过,自然数加法没通过。通过的结构就是它的模型

数学家因此在两个层面工作。语法层:按规则重排符号,一步步推,全程有限、机械、可交给机器($T\vdash\varphi$)。语义层:到每个模型里看它真不真——一句 $\forall x$ 要检查无穷多个 $x$,人查不完($T\models\varphi$)。1929 年哥德尔证明:两层结果完全一样。

别与不完备定理混淆:完备性(1929)说推演规则够用,不完备(1931)说算术公理不够;前者关于逻辑,后者关于某个理论。

语法 · 有限 语义 · 无穷 公理 T ↓ 有限步推导 T ⊢ φ 机器可枚举 所有模型 M ⊨ T T ⊨ φ 无法逐一检查 完备性 定理
左边有限、可枚举,右边无穷、不可遍历——完备性定理宣称两者外延相同。
正式定义
$$T\models\varphi\quad\Longleftrightarrow\quad T\vdash\varphi$$

左边是语义蕴涵:$T$ 的每个模型都让 $\varphi$ 为真;右边是语法可导:存在一串有限长的形式推导。$\Leftarrow$ 是可靠性,容易;内容全在 $\Rightarrow$:不存在「所有模型里都成立、却永远证不出来」的一阶命题。

为什么美

真理是关于无穷的概念,证明是有限的对象,两者外延竟然相等。这是「无穷被有限捕获」的第一个精确版本,也是自动定理证明的地基——机器只会摆弄符号,完备性保证它不会漏掉任何普遍真理。

反面立刻浮现:证明既然有限,就只用得到有限条公理——下一张卡片那台造世界的机器正是从这里长出来。

应用

关系数据库的查询语言就是一阶逻辑的工程化身:关系代数与一阶公式一一对应,SQL 的 WHEREEXISTS 就是联结词与量词,Datalog 与 Prolog 同源。形式化验证里 Lean 与 Coq 的底座虽是更强的类型论,但真正把子目标自动关掉的那一层(SMT)跑的仍是一阶逻辑。

一句话精华 · 思考题
形式证明不是真理的替代品;是完备性定理让它成为真理的等价物。
思考:一阶逻辑既然完备,为什么自动定理证明依然困难?「存在证明」与「找得到证明」之间隔着什么?

紧致性定理

The Compactness Theorem · 一台凭空造世界的机器
Model Theory
直觉版

一堆句子若自相矛盾,矛盾一定在有限多句里就已暴露——推出矛盾的那个证明本身有限,只来得及用到有限条前提。反过来说就是紧致性定理:若每个有限子集都有模型,整个(可以无穷大的)集合就有模型。

这条听着像废话的原理,其实是一台造世界的机器。想要一个「无穷大的自然数」?在算术语言里添一个常数 $c$ 与无穷多条公理 $c>0,\ c>1,\ c>2,\dots$。任取有限多条,最苛刻的无非说 $c>n$,让 $c$ 当 $n+1$ 即可——普通自然数就是模型。于是紧致性断言整套公理有模型:那里面住着一个大于所有标准自然数的元素。结论令人不安——一阶语言说不出「有限」,也钉不死「这就是自然数」。

无穷公理集 T c > 0 c > 1 c > 2 c > n 任取有限多条 → 取 c = n+1,ℕ 即模型 紧致性 T 整体的模型 c:无穷大数 标准自然数全在左侧
每个有限片段都能在普通自然数里满足,于是整体必有模型——而它必定含一个非标准元素。
正式定义
$$\text{每个有限 } T_0\subseteq T \text{ 有模型}\ \Longrightarrow\ T \text{ 有模型}$$

「紧致」不是比喻:把完备理论当作点、单句划出的集合当作基本开集,得到的拓扑空间(Stone 空间)恰好紧致——这条定理就是「有限子覆盖」的逻辑翻版。

为什么美

它把「证明是有限的」这条不值一提的观察,兑换成了无中生有的存在性。Löwenheim–Skolem 是同一台机器的另一个出口——可数语言的理论只要有无穷模型,就有每种无穷基数的模型。于是 ZFC 若一致就有可数模型,尽管它内部证明了不可数集存在。这个 Skolem 悖论不是矛盾:「不可数」是模型内部的判断,指模型里没有那个一一对应,站在外面当然找得到。「有多少」取决于你站在哪里数。

应用

de Bruijn–Erdős 定理:无限图若每个有限子图都可 $k$ 着色,则整图可 $k$ 着色——紧致性直接给出。反过来看更有意思:紧致性在有限模型上失效,这正是数据库理论必须另建「有限模型论」的原因——现实的表都是有限的,经典模型论的主力定理在那里全部作废。

一句话精华 · 思考题
凡一阶语言说得出的,都逃不过紧致性——它永远钉不死一个无穷结构。
思考:分布式系统的安全性质常以「对所有有限执行成立」来论证。在什么条件下,紧致性允许你把它推广到无限执行?

非标准分析

Non-standard Analysis · 无穷小的合法归来
Analysis · Logic
直觉版

牛顿与莱布尼茨的无穷小 $dx$——比任何正数都小却不是零——被 Berkeley 主教讥为「死去量的鬼魂」,19 世纪被 $\varepsilon$–$\delta$ 驱逐。1960 年 Robinson 用上一张卡片那台机器把它请了回来:往实数的理论里加一个常数 $\epsilon$ 与无穷多条公理 $0<\epsilon<1/n$,每个有限子集显然可满足,于是存在一个含真无穷小的有序域——超实数 $^*\mathbb{R}$。

在 $^*\mathbb{R}$ 里,导数不再是「极限」,就是差商本身:算出 $\frac{f(x+\epsilon)-f(x)}{\epsilon}$,再取它的标准部分(离它最近的那个实数)。连续性也不必再动用三重量词:$x$ 与 $y$ 无限接近就蕴含 $f(x)$ 与 $f(y)$ 无限接近。

0 1 2 ⋯ 实数 ℝ ⋯ ω = 1/ε 无穷大 0 ε −ε 0 的单子(halo)
每个实数外面都裹着一层无穷小构成的「单子」;标准部分就是把整层塌回中心那一点。
正式定义
$$\mathbb{R}\models\varphi\quad\Longleftrightarrow\quad{}^*\mathbb{R}\models\varphi\qquad(\varphi\ \text{为一阶句子})$$

这叫转移原理:凡一阶语言写得出的性质,在实数里成立当且仅当在超实数里成立——$^*\mathbb{R}$ 好用的理由全在这里:它自动是有序域,每个实函数自动有延拓。「一阶」是关键限制:「有上界的子集有上确界」量化的是子集,属二阶,不转移,$^*\mathbb{R}$ 确实不完备。老一代无穷小论证偶尔翻车,翻的正是这类车。

为什么美

一个被放逐一个半世纪的直觉,最后不是被分析学、而是被逻辑平反。更漂亮的是它顺带解释了历史:那些「不严格」的推理为何常常给出正确结果——它们是转移原理的非形式版本,而转移原理是定理;同时它也划清了这些推理会在何处出错。

应用
  • 随机分析:Loeb 测度把布朗运动表示成「超有限」多步随机游走,组合式的计数论证于是能用在连续模型上。
  • 简化证明:Tao 反复演示把「$n\to\infty$ 的渐近陈述」换成「取一个无穷大的 $n$」,层层 $\varepsilon$ 记账随之消失。
  • 计算侧近亲:自动微分的对偶数 $a+b\epsilon$($\epsilon^2=0$)不是超实数(缺序与转移原理),但同样让无穷小真正参与算术——JAX 与 PyTorch 的前向模式跑的就是它。
一句话精华 · 思考题
无穷小不是不严格,只是当年缺一门能承载它的语言。
思考:$^*\mathbb{R}$ 上的分析证出的实数定理与经典分析完全相同(它是保守扩张)。既然一个新定理都换不来,用它的价值究竟在哪?

可判定性:理论的可计算性

Decidability & Quantifier Elimination · 表达力的代价
Computability · Logic
直觉版

不完备定理说「PA 里有真而不可证的句子」。这里问的是另一个更工程的问题:给定一个理论,有没有算法判断任意一句话是不是它的定理?

分水岭窄得惊人。只含加法的自然数算术(Presburger)可判定;补上乘法就是 PA,立刻不可判定;而实数上带加法乘法的一阶理论(实闭域),Tarski 1951 年证明它又可判定——看似更大的结构反而更驯服。

关键不在对象多不多,而在能否在理论内部把整数定义出来:有了整数就能编码图灵机,也就把停机问题塞了进来。实闭域里没有一阶公式挑得出整数,于是可判定。不可判定性只有一个源头——自指的能力。

能否编码图灵机 可判定 不可判定 命题逻辑 Presburger 实闭域 PA 一阶逻辑有效性 ZFC 表达力 → NP 完全 双指数下界 可归约停机问题 可判定 ≠ 可行
分水岭不在对象大小,而在能否在结构内部模拟计算。
正式定义
$$\exists x\,(ax^2+bx+c=0)\iff\big(a\neq0\wedge b^2-4ac\ge0\big)\vee\big(a=0\wedge(b\neq0\vee c=0)\big)$$

Tarski 的方法叫量词消去:每个公式都能等价改写成不含量词的形式。上式是最小的例子——左边要在无穷多个 $x$ 里搜索,右边只需对系数做有限次算术判断。无量词公式的真假可以直接算,量词逐个消去,整个理论便可判定。

为什么美

可判定不等于容易:Presburger 算术的判定问题有双指数时间下界,可判定与可行之间还隔着一整片荒原。真正的美在那条分水岭本身——它精确落在「结构能否在自身内部模拟计算」上。哥德尔(不完备)、图灵(停机)、Tarski(真理不可定义)三条路在这里汇成一句话:能自指者,必失判定。

应用

SMT 求解器(Z3、CVC5)正是这些可判定片段的工程化:线性整数算术、位向量、数组、未解释函数各配一套判定过程再拼装,编译器验证(CompCert)、内核验证(seL4)、符号执行与程序合成底下跑的都是它。这条线也反过来指导设计——Datalog 长盛不衰,正因它刻意停在可判定的那一侧:为系统挑规约语言,本质是在表达力与可判定性之间选一个点。

一句话精华 · 思考题
表达力守恒:语言每多说一点,你就少判定一点。
思考:类型系统就是程序的理论。为什么依赖类型(表达力逼近一阶算术)必须交出类型检查或推导的可判定性,而 Hindley–Milner 不必?

深入思考

一阶语言钉不死自然数,我们凭什么仍相信「自然数」是确定的对象?
二阶逻辑的归纳公理量化所有子集,确实唯一钉住了 $\mathbb{N}$(范畴性),代价是它没有完备的证明系统——钉住了对象,却失去机械推理它的能力。范畴性与完备性不可兼得,这是逻辑里的一条测不准。柏拉图主义者说标准模型客观存在,只是语言够不着;形式主义者说「标准」不过是从元理论里挑出的相对概念。能确定的只有:那份确定性不在一阶语法里。
模型论与机器学习有真联系,还是只是类比?
是真联系。Shelah 的稳定性理论按「一个公式能否在结构里编码任意长的二元序」给理论分类,得到的组合参数与学习论的维数一一对应:NIP 理论对应有限 VC 维(PAC 可学),稳定理论对应有限 Littlestone 维(在线可学)。Chase–Freitag 等人把这两套独立发展半个世纪的分类学对齐了。共同的直觉是:能被有限描述的复杂度,等价于无法编码任意复杂的模式。
为什么有限模型论必须另起炉灶?
因为经典模型论的两根支柱都依赖「允许无穷模型」。紧致性直接失效——「模型至少有 $n$ 个元素」这族句子的每个有限子集都有有限模型,整体却没有;完备性也失效,有限结构上有效的一阶句子集不可递归枚举(Trakhtenbrot 定理)。但失去的换来了别的:有限结构上逻辑表达力与计算复杂性精确对应,Fagin 定理证明 NP 恰好是存在二阶逻辑可表达的性质类。这就是描述复杂性——P vs NP 在那里变成一个纯粹关于「语言能说什么」的问题。