从朴素集合论到 ZFC¶
朴素集合论的出发点非常自然:把数学对象看成“若干元素的收集”,然后直接写出
表示所有满足性质 \(\varphi(x)\) 的对象所组成的集合。这个想法在日常数学里很好用,但如果不加限制地接受它,就会立刻遇到悖论。ZFC 的作用,正是把这种直觉改写成一套可操作、可推理、且尽量不出矛盾的公理系统。
本文想说明的主线是:
- 朴素集合论的问题,不是“集合这个概念错了”,而是“任意性质都能定义集合”错了。
- ZFC 不再允许随意宣称一个集合存在;集合必须由公理保证存在。
- 一旦这套公理建立起来,日常数学中需要的大部分对象仍然可以在其中构造出来。
朴素集合论与理解原则¶
朴素集合论背后的核心口号通常叫做 理解原则 (comprehension principle):
给定任意性质 \(\varphi(x)\),总存在一个集合,恰好由所有满足 \(\varphi\) 的对象组成。
也就是说,人们默认
都是合理的。这里的“\(\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 \in R\) 是否成立?
- 若 \(R \in R\),那么由定义必须有 \(R \notin R\)
- 若 \(R \notin R\),那么由定义又必须有 \(R \in R\)
于是得到矛盾:
这说明朴素的“任意性质都定义集合”是不能接受的。
问题出在哪里
Russell 悖论并不是说“集合论内部推理有问题”,而是说“集合存在的准入规则”太宽了。
真正需要限制的是:
这种对象并不总能当作一个集合。某些“太大”的对象只能作为一种元语言里的描述存在,而不能在系统内部被当成集合操作。
除了 Russell 悖论,还可以提到另外一种“太大对象”问题:如果“全体序数”形成一个集合,就会得到 Burali-Forti 悖论。它和 Russell 悖论表达的是同一类信息:不是每个可描述的总体都是集合。
为什么需要公理化¶
朴素集合论失败之后,一个自然想法是:
- 保留“元素属于集合”这个直觉;
- 放弃“任意性质都能定义集合”;
- 明确写下哪些集合一定存在,哪些构造是被允许的。
这就走向了公理化集合论。
ZFC 是最常用的一套公理系统:
- Z = Zermelo
- F = Fraenkel
- C = Choice
其中 ZF 指不含选择公理的部分,ZFC 指在 ZF 基础上再加上 Choice。
ZFC 的语言与目标¶
ZFC 工作在一阶逻辑里,其语言极其简洁:
- 只有一个原始的二元关系符号:\(\in\)
- 相等符号 \(=\) 来自一阶逻辑本身
换句话说,ZFC 不把“并集”“幂集”“函数”“自然数”“有序对”当作原始对象;这些都要在 \(\in\) 的基础上定义出来。
因此,ZFC 的立场和朴素集合论很不一样:
- 朴素集合论:先有一个性质,再默认对应集合存在
- ZFC:先有公理,再由公理推出某个集合存在
更准确地说,在 ZFC 的语境下,
最多先被理解成一个由性质描述的“类” (class)。它未必是集合;只有在公理能保证它被某个已有集合“截出来”时,它才是集合。
类不是 ZFC 的原始对象
严格来说,纯 ZFC 的一阶语言里并没有“类”这个类型。这里把“类”作为元语言中的方便说法,用来提醒读者:
- 公式 \(\varphi(x)\) 可以描述一个总体
- 但该总体不一定对应一个集合
例如“所有集合的全体”通常记作 \(V\),它是一个类,而不是集合。否则一旦 \(V\) 是集合,就能对 \(V\) 使用分离公理构造 Russell 集,从而重新落入悖论。
ZFC 各公理¶
下面按常见顺序介绍 ZFC 的主要公理。形式写法不追求最底层的逻辑细节,但会尽量保留结构。
1. 外延公理 Extensionality¶
含义:一个集合由它的元素完全决定。只要两个集合拥有完全相同的元素,它们就是同一个集合。
这条公理说明“集合是什么”并不靠名字、写法或构造过程区分,而只靠元素成员关系区分。
例如:
因为它们的元素完全相同。
2. 空集公理 Empty Set¶
含义:存在一个没有任何元素的集合,记作 \(\varnothing\)。
它是很多构造的起点。在后面定义自然数时,\(0\) 就会被定义为 \(\varnothing\)。
Note
有些教材不把空集公理单独列出,而是从其他公理中导出空集的存在。本文仍把它单独写出,因为这样更符合“有哪些集合能被直接保证存在”的理解方式。
3. 配对公理 Pairing¶
含义:对任意两个对象 \(a,b\),都能组成集合 \(\{a,b\}\)。
特别地,当 \(a=b\) 时,得到单元素集合:
这是后面定义后继、构造有序对等对象的基础。
4. 并集公理 Union¶
含义:如果 \(A\) 是一个“集合的集合”,那么所有这些集合中的元素合在一起,仍然形成一个集合,记作
例如:
5. 幂集公理 Power Set¶
含义:任意集合 \(A\) 的所有子集,构成一个新集合 \(\mathcal{P}(A)\)。
这条公理非常强,因为它一次性产生了“大量”新集合。分析、拓扑、测度论中许多结构都需要用到幂集。
例如一个拓扑,本质上就是某个幂集 \(\mathcal{P}(X)\) 的子集。
6. 无穷公理 Infinity¶
含义:至少存在一个归纳集 (inductive set),它包含空集,并且对后继运算
封闭。
这条公理保证系统中确实存在某种“无穷对象”,从而能进一步定义自然数集合 \(\omega\)。
如果没有这条公理,那么前面的公理都只是在说:一旦你已经有一些集合,就可以继续做若干有限步构造;但它们本身并不强迫无穷集合出现。
7. 分离公理模式 Separation Schema¶
对任意公式 \(\varphi(x, p_1,\dots,p_n)\),都有:
含义:给定一个已经存在的集合 \(A\),可以从中筛出所有满足性质 \(\varphi\) 的元素,得到子集 \(B\)。
这条公理是对朴素理解原则的关键修正:
- 朴素版本:直接形成 \(\{x \mid \varphi(x)\}\)
- ZFC 版本:只能形成 \(\{x \in A \mid \varphi(x)\}\)
因此,ZFC 允许“在一个已有集合内部做筛选”,而不允许“向整个宇宙无边界地筛选”。
Russell 悖论之所以被挡住,正是因为我们不能直接写
并断言它是集合。最多只能对某个给定集合 \(A\) 构造
它只是 \(A\) 的一个子集,不会制造“绝对的 Russell 集”。
为什么叫公理模式
这里的 \(\varphi\) 可以换成任意公式,所以这不是一条单独的有限公式,而是一整族公理。每替换一个公式,就得到一条新的公理实例。
8. 替代公理模式 Replacement Schema¶
它的思想是:如果某个公式 \(\varphi(x,y,p_1,\dots,p_n)\) 在集合 \(A\) 上定义了一个“函数式规则”,那么 \(A\) 在这个规则下的像仍然是集合。
半形式地写,就是:
其中 \(\exists! y\) 表示“存在唯一的 \(y\)”。
含义:如果每个 \(x \in A\) 都唯一对应一个输出 \(y\),那么所有这些输出组成的像集也存在。
这条公理比“分离”更进一步:
- Separation 是从一个已有集合里筛元素
- Replacement 是把一个已有集合里的元素逐个送到别处,再把所有输出收集成集合
它对于递归定义、序数上的构造、传递闭包、等级层次等都非常重要。没有 Replacement,很多“把一个集合沿某个规则逐步展开”的操作不能保证仍落在集合之内。
9. 正则公理 / 基础公理 Foundation¶
含义:每个非空集合 \(A\) 都有一个 \(\in\)-极小元素,即某个 \(x \in A\) 与 \(A\) 没有成员交叠。
它排除了某些“病态的向下循环成员关系”,例如通常可以推出:
- 不会有 \(x \in x\)
- 不会有 \(x_0 \ni x_1 \ni x_2 \ni \cdots\) 这样的无限下降链
这使得集合宇宙更像是分层构造出来的,而不是到处存在自指回路。
10. 选择公理 Choice¶
直观表述是:
对任意一族非空集合,总可以从每个集合里选出一个元素。
更准确一点,若 \(\mathcal{A}\) 是一个由非空集合组成的集合,那么存在一个选择函数 \(f\),满足
严格形式化时,函数也要编码成集合的集合,这里不展开编码细节,只保留通常数学中的写法。
Choice 看起来像一句很朴素的话,但它的力量很强,也最容易引发“是否显然成立”的讨论。很多数学领域中的存在性定理都依赖它。
在 ZFC 中构造自然数¶
无穷公理只告诉我们“至少有一个归纳集存在”,但它没有直接把“自然数集合 \(\omega\)”送到你手里。接下来要把熟悉的自然数从公理里构造出来。
von Neumann 自然数¶
先定义
以及后继运算
于是:
一般地,von Neumann 自然数满足
所以每个自然数恰好等于所有比它小的自然数所组成的集合。
从归纳集得到 \(\omega\)¶
称集合 \(I\) 是归纳的,如果:
无穷公理保证至少存在一个归纳集 \(I\)。现在在这个固定的 \(I\) 内部,用分离公理筛出那些“属于每一个归纳子集”的元素,得到最小归纳集:
这样定义出来的 \(\omega\):
- 是归纳集
- 包含在任意归纳集里
- 因而可视为“自然数集合”
这一步很典型地体现了 ZFC 的工作方式:
- 先由 Infinity 得到一个比较大的对象
- 再由 Separation 在这个对象内部切出真正想要的最小结构
选择公理的后果¶
选择公理最重要的一点,不在于“它能帮我们选元素”这句直观表述,而在于它与许多强有力的存在性原则等价。
良序定理 Well-Ordering Theorem¶
良序定理说:
每个集合都可以被良序化。
也就是说,对任意集合 \(X\),存在某个全序 \(\leq\),使得 \(X\) 的每个非空子集都有最小元。
这在有限集合或自然数子集上看起来很自然,但对任意集合并不显然。对例如 \(\mathbb{R}\) 这样的集合,良序定理无法通过通常的显式构造给出;它本质上依赖选择公理。
佐恩引理 Zorn's Lemma¶
佐恩引理说:
若偏序集 \(P\) 中每条链都有上界,则 \(P\) 有极大元。
它是代数、泛函分析和一般拓扑里极其常用的工具。很多“存在某个极大对象”的结论都通过佐恩引理证明,例如:
- 每个向量空间都有一组基
- 每个环上的理想可扩展到极大理想
在 ZF 中的等价性¶
一个标准结论是:
更准确地说,这三者在 ZF 中彼此等价。于是:
- 如果接受 AC,就能使用良序定理和佐恩引理
- 如果能在 ZF 中证明佐恩引理,也就等于已经证明了 AC
这也是为什么数学书里经常不显式写“我们用了 AC”,而是直接调用佐恩引理。逻辑上它们站在同一个层级。
选择公理为什么有争议
AC 往往保证“存在某种选择”或“存在某种基/良序”,但不一定给出构造方法。因此它在可构造性、描述集合论、逆向数学等方向里会被单独审视。
不过在大多数经典数学中,ZFC 仍然是最常用的基础系统。
总结¶
从朴素集合论到 ZFC,真正发生变化的不是“我们不再谈集合”,而是“我们改变了集合存在的规则”。
可以把这个变化压缩成下面几句话:
- 朴素集合论相信:任意性质都能定义集合。
- Russell 悖论说明:这样做会导致矛盾。
- ZFC 改而采用:只有被公理允许的构造,才产生集合。
- Separation 把“任意理解”削弱成“在已有集合内部做筛选”。
- Replacement 保证函数式像集的存在。
- Infinity 让无穷数学得以开始。
- Choice 则补上许多经典存在性原理。
因此,ZFC 不是对朴素集合论的彻底否定,而是对它的严格驯化:保留“集合由元素组成”的核心直觉,同时用精确的公理边界,避免“过大的总体”闯进系统内部。