跳转至

从朴素集合论到 ZFC

朴素集合论的出发点非常自然:把数学对象看成“若干元素的收集”,然后直接写出

\[ \{x \mid \varphi(x)\} \]

表示所有满足性质 \(\varphi(x)\) 的对象所组成的集合。这个想法在日常数学里很好用,但如果不加限制地接受它,就会立刻遇到悖论。ZFC 的作用,正是把这种直觉改写成一套可操作、可推理、且尽量不出矛盾的公理系统。

本文想说明的主线是:

  • 朴素集合论的问题,不是“集合这个概念错了”,而是“任意性质都能定义集合”错了。
  • ZFC 不再允许随意宣称一个集合存在;集合必须由公理保证存在。
  • 一旦这套公理建立起来,日常数学中需要的大部分对象仍然可以在其中构造出来。

朴素集合论与理解原则

朴素集合论背后的核心口号通常叫做 理解原则 (comprehension principle):

给定任意性质 \(\varphi(x)\),总存在一个集合,恰好由所有满足 \(\varphi\) 的对象组成。

也就是说,人们默认

\[ \forall \varphi \quad \exists A \quad \forall x \, (x \in A \Leftrightarrow \varphi(x)) \]

都是合理的。这里的“\(\forall \varphi\)”当然不是一阶逻辑中的正式写法,它只是表达一种朴素信念:只要能说清楚一个性质,就能对应得到一个集合。

这套想法之所以诱人,是因为很多熟悉的对象确实都能这样描述:

  • 偶数集:\(\{n \in \mathbb{N} \mid n \text{ 是偶数}\}\)
  • 开区间:\(\{x \in \mathbb{R} \mid 0 < x < 1\}\)
  • 线性空间中的解集:\(\{x \in V \mid T(x) = 0\}\)

从这种经验出发,很容易进一步相信“任何性质都能切出一个集合”。问题就出在这里。

Russell 悖论

考虑“所有不属于自己的集合”组成的对象:

\[ R = \{x \mid x \notin x\} \]

现在问:\(R \in R\) 是否成立?

  • \(R \in R\),那么由定义必须有 \(R \notin R\)
  • \(R \notin R\),那么由定义又必须有 \(R \in R\)

于是得到矛盾:

\[ R \in R \Leftrightarrow R \notin R \]

这说明朴素的“任意性质都定义集合”是不能接受的。

问题出在哪里

Russell 悖论并不是说“集合论内部推理有问题”,而是说“集合存在的准入规则”太宽了。

真正需要限制的是:

\[ \{x \mid \varphi(x)\} \]

这种对象并不总能当作一个集合。某些“太大”的对象只能作为一种元语言里的描述存在,而不能在系统内部被当成集合操作。

除了 Russell 悖论,还可以提到另外一种“太大对象”问题:如果“全体序数”形成一个集合,就会得到 Burali-Forti 悖论。它和 Russell 悖论表达的是同一类信息:不是每个可描述的总体都是集合。

为什么需要公理化

朴素集合论失败之后,一个自然想法是:

  1. 保留“元素属于集合”这个直觉;
  2. 放弃“任意性质都能定义集合”;
  3. 明确写下哪些集合一定存在,哪些构造是被允许的。

这就走向了公理化集合论。

ZFC 是最常用的一套公理系统:

  • Z = Zermelo
  • F = Fraenkel
  • C = Choice

其中 ZF 指不含选择公理的部分,ZFC 指在 ZF 基础上再加上 Choice。

ZFC 的语言与目标

ZFC 工作在一阶逻辑里,其语言极其简洁:

  • 只有一个原始的二元关系符号:\(\in\)
  • 相等符号 \(=\) 来自一阶逻辑本身

换句话说,ZFC 不把“并集”“幂集”“函数”“自然数”“有序对”当作原始对象;这些都要在 \(\in\) 的基础上定义出来。

因此,ZFC 的立场和朴素集合论很不一样:

  • 朴素集合论:先有一个性质,再默认对应集合存在
  • ZFC:先有公理,再由公理推出某个集合存在

更准确地说,在 ZFC 的语境下,

\[ \{x \mid \varphi(x)\} \]

最多先被理解成一个由性质描述的“类” (class)。它未必是集合;只有在公理能保证它被某个已有集合“截出来”时,它才是集合。

类不是 ZFC 的原始对象

严格来说,纯 ZFC 的一阶语言里并没有“类”这个类型。这里把“类”作为元语言中的方便说法,用来提醒读者:

  • 公式 \(\varphi(x)\) 可以描述一个总体
  • 但该总体不一定对应一个集合

例如“所有集合的全体”通常记作 \(V\),它是一个类,而不是集合。否则一旦 \(V\) 是集合,就能对 \(V\) 使用分离公理构造 Russell 集,从而重新落入悖论。

ZFC 各公理

下面按常见顺序介绍 ZFC 的主要公理。形式写法不追求最底层的逻辑细节,但会尽量保留结构。

1. 外延公理 Extensionality

\[ \forall A \forall B \left[ \forall x (x \in A \Leftrightarrow x \in B) \rightarrow A = B \right] \]

含义:一个集合由它的元素完全决定。只要两个集合拥有完全相同的元素,它们就是同一个集合。

这条公理说明“集合是什么”并不靠名字、写法或构造过程区分,而只靠元素成员关系区分。

例如:

\[ \{1,2,3\} = \{3,2,1\} \]

因为它们的元素完全相同。

2. 空集公理 Empty Set

\[ \exists E \, \forall x \, (x \notin E) \]

含义:存在一个没有任何元素的集合,记作 \(\varnothing\)

它是很多构造的起点。在后面定义自然数时,\(0\) 就会被定义为 \(\varnothing\)

Note

有些教材不把空集公理单独列出,而是从其他公理中导出空集的存在。本文仍把它单独写出,因为这样更符合“有哪些集合能被直接保证存在”的理解方式。

3. 配对公理 Pairing

\[ \forall a \forall b \, \exists P \, \forall x \, \left(x \in P \Leftrightarrow (x=a \lor x=b)\right) \]

含义:对任意两个对象 \(a,b\),都能组成集合 \(\{a,b\}\)

特别地,当 \(a=b\) 时,得到单元素集合:

\[ \{a\} \]

这是后面定义后继、构造有序对等对象的基础。

4. 并集公理 Union

\[ \forall A \, \exists U \, \forall x \, \left(x \in U \Leftrightarrow \exists B \, (B \in A \land x \in B)\right) \]

含义:如果 \(A\) 是一个“集合的集合”,那么所有这些集合中的元素合在一起,仍然形成一个集合,记作

\[ \bigcup A \]

例如:

\[ A = \{\{1,2\}, \{2,3,4\}\} \quad \Rightarrow \quad \bigcup A = \{1,2,3,4\} \]

5. 幂集公理 Power Set

\[ \forall A \, \exists P \, \forall X \, (X \in P \Leftrightarrow X \subseteq A) \]

含义:任意集合 \(A\) 的所有子集,构成一个新集合 \(\mathcal{P}(A)\)

这条公理非常强,因为它一次性产生了“大量”新集合。分析、拓扑、测度论中许多结构都需要用到幂集。

例如一个拓扑,本质上就是某个幂集 \(\mathcal{P}(X)\) 的子集。

6. 无穷公理 Infinity

\[ \exists I \, \left( \varnothing \in I \land \forall x (x \in I \rightarrow x \cup \{x\} \in I) \right) \]

含义:至少存在一个归纳集 (inductive set),它包含空集,并且对后继运算

\[ S(x) = x \cup \{x\} \]

封闭。

这条公理保证系统中确实存在某种“无穷对象”,从而能进一步定义自然数集合 \(\omega\)

如果没有这条公理,那么前面的公理都只是在说:一旦你已经有一些集合,就可以继续做若干有限步构造;但它们本身并不强迫无穷集合出现。

7. 分离公理模式 Separation Schema

对任意公式 \(\varphi(x, p_1,\dots,p_n)\),都有:

\[ \forall A \, \exists B \, \forall x \, \left(x \in B \Leftrightarrow (x \in A \land \varphi(x,p_1,\dots,p_n))\right) \]

含义:给定一个已经存在的集合 \(A\),可以从中筛出所有满足性质 \(\varphi\) 的元素,得到子集 \(B\)

这条公理是对朴素理解原则的关键修正:

  • 朴素版本:直接形成 \(\{x \mid \varphi(x)\}\)
  • ZFC 版本:只能形成 \(\{x \in A \mid \varphi(x)\}\)

因此,ZFC 允许“在一个已有集合内部做筛选”,而不允许“向整个宇宙无边界地筛选”。

Russell 悖论之所以被挡住,正是因为我们不能直接写

\[ \{x \mid x \notin x\} \]

并断言它是集合。最多只能对某个给定集合 \(A\) 构造

\[ \{x \in A \mid x \notin x\} \]

它只是 \(A\) 的一个子集,不会制造“绝对的 Russell 集”。

为什么叫公理模式

这里的 \(\varphi\) 可以换成任意公式,所以这不是一条单独的有限公式,而是一整族公理。每替换一个公式,就得到一条新的公理实例。

8. 替代公理模式 Replacement Schema

它的思想是:如果某个公式 \(\varphi(x,y,p_1,\dots,p_n)\) 在集合 \(A\) 上定义了一个“函数式规则”,那么 \(A\) 在这个规则下的像仍然是集合。

半形式地写,就是:

\[ \forall A \left[ \left(\forall x \in A \, \exists! y \, \varphi(x,y,p_1,\dots,p_n)\right) \rightarrow \exists B \, \forall y \left(y \in B \Leftrightarrow \exists x \in A \, \varphi(x,y,p_1,\dots,p_n)\right) \right] \]

其中 \(\exists! y\) 表示“存在唯一的 \(y\)”。

含义:如果每个 \(x \in A\) 都唯一对应一个输出 \(y\),那么所有这些输出组成的像集也存在。

这条公理比“分离”更进一步:

  • Separation 是从一个已有集合里筛元素
  • Replacement 是把一个已有集合里的元素逐个送到别处,再把所有输出收集成集合

它对于递归定义、序数上的构造、传递闭包、等级层次等都非常重要。没有 Replacement,很多“把一个集合沿某个规则逐步展开”的操作不能保证仍落在集合之内。

9. 正则公理 / 基础公理 Foundation

\[ \forall A \, \left( A \neq \varnothing \rightarrow \exists x \in A \, (x \cap A = \varnothing) \right) \]

含义:每个非空集合 \(A\) 都有一个 \(\in\)-极小元素,即某个 \(x \in A\)\(A\) 没有成员交叠。

它排除了某些“病态的向下循环成员关系”,例如通常可以推出:

  • 不会有 \(x \in x\)
  • 不会有 \(x_0 \ni x_1 \ni x_2 \ni \cdots\) 这样的无限下降链

这使得集合宇宙更像是分层构造出来的,而不是到处存在自指回路。

10. 选择公理 Choice

直观表述是:

对任意一族非空集合,总可以从每个集合里选出一个元素。

更准确一点,若 \(\mathcal{A}\) 是一个由非空集合组成的集合,那么存在一个选择函数 \(f\),满足

\[ \forall X \in \mathcal{A}, \quad f(X) \in X \]

严格形式化时,函数也要编码成集合的集合,这里不展开编码细节,只保留通常数学中的写法。

Choice 看起来像一句很朴素的话,但它的力量很强,也最容易引发“是否显然成立”的讨论。很多数学领域中的存在性定理都依赖它。

在 ZFC 中构造自然数

无穷公理只告诉我们“至少有一个归纳集存在”,但它没有直接把“自然数集合 \(\omega\)”送到你手里。接下来要把熟悉的自然数从公理里构造出来。

von Neumann 自然数

先定义

\[ 0 := \varnothing \]

以及后继运算

\[ S(x) := x \cup \{x\} \]

于是:

\[ 1 = S(0) = \{\varnothing\} \]
\[ 2 = S(1) = \{\varnothing, \{\varnothing\}\} \]
\[ 3 = S(2) = \{0,1,2\} \]

一般地,von Neumann 自然数满足

\[ n = \{0,1,\dots,n-1\} \]

所以每个自然数恰好等于所有比它小的自然数所组成的集合。

从归纳集得到 \(\omega\)

称集合 \(I\) 是归纳的,如果:

\[ \varnothing \in I \quad \text{且} \quad \forall x \in I,\; S(x) \in I \]

无穷公理保证至少存在一个归纳集 \(I\)。现在在这个固定的 \(I\) 内部,用分离公理筛出那些“属于每一个归纳子集”的元素,得到最小归纳集:

\[ \omega := \{x \in I \mid x \text{ 属于 } I \text{ 的每个归纳子集}\} \]

这样定义出来的 \(\omega\)

  • 是归纳集
  • 包含在任意归纳集里
  • 因而可视为“自然数集合”

这一步很典型地体现了 ZFC 的工作方式:

  • 先由 Infinity 得到一个比较大的对象
  • 再由 Separation 在这个对象内部切出真正想要的最小结构

选择公理的后果

选择公理最重要的一点,不在于“它能帮我们选元素”这句直观表述,而在于它与许多强有力的存在性原则等价。

良序定理 Well-Ordering Theorem

良序定理说:

每个集合都可以被良序化。

也就是说,对任意集合 \(X\),存在某个全序 \(\leq\),使得 \(X\) 的每个非空子集都有最小元。

这在有限集合或自然数子集上看起来很自然,但对任意集合并不显然。对例如 \(\mathbb{R}\) 这样的集合,良序定理无法通过通常的显式构造给出;它本质上依赖选择公理。

佐恩引理 Zorn's Lemma

佐恩引理说:

若偏序集 \(P\) 中每条链都有上界,则 \(P\) 有极大元。

它是代数、泛函分析和一般拓扑里极其常用的工具。很多“存在某个极大对象”的结论都通过佐恩引理证明,例如:

  • 每个向量空间都有一组基
  • 每个环上的理想可扩展到极大理想

在 ZF 中的等价性

一个标准结论是:

\[ \text{AC} \Longleftrightarrow \text{Well-Ordering Theorem} \Longleftrightarrow \text{Zorn's Lemma} \]

更准确地说,这三者在 ZF 中彼此等价。于是:

  • 如果接受 AC,就能使用良序定理和佐恩引理
  • 如果能在 ZF 中证明佐恩引理,也就等于已经证明了 AC

这也是为什么数学书里经常不显式写“我们用了 AC”,而是直接调用佐恩引理。逻辑上它们站在同一个层级。

选择公理为什么有争议

AC 往往保证“存在某种选择”或“存在某种基/良序”,但不一定给出构造方法。因此它在可构造性、描述集合论、逆向数学等方向里会被单独审视。

不过在大多数经典数学中,ZFC 仍然是最常用的基础系统。

总结

从朴素集合论到 ZFC,真正发生变化的不是“我们不再谈集合”,而是“我们改变了集合存在的规则”。

可以把这个变化压缩成下面几句话:

  • 朴素集合论相信:任意性质都能定义集合。
  • Russell 悖论说明:这样做会导致矛盾。
  • ZFC 改而采用:只有被公理允许的构造,才产生集合。
  • Separation 把“任意理解”削弱成“在已有集合内部做筛选”。
  • Replacement 保证函数式像集的存在。
  • Infinity 让无穷数学得以开始。
  • Choice 则补上许多经典存在性原理。

因此,ZFC 不是对朴素集合论的彻底否定,而是对它的严格驯化:保留“集合由元素组成”的核心直觉,同时用精确的公理边界,避免“过大的总体”闯进系统内部。

评论