集合论提供一种共同语言,用来组织对象、比较汇集,并构造新的集合。这里的朴素集合论指以非形式化方式发展普通数学中常用的集合构造:先明确概念、练习证明,不从完整公理清单开始。它不意味着任意想得到的描述都能自动产生一个集合。

集合论存在不同的公理框架,例如 ZF、ZFC 和 NBG,对集合、类以及存在性假设的处理有所区别。本篇只使用初等集合构造,把体系比较放在末尾的探索题中。后面的关系与序会先引入 NBG 中的类,再发展关系和序。Open Logic 的集合论教材也提供了从初等集合走向公理基础的阅读路线 [1][1] T. Button, Set Theory. Open Logic Project, 2026. Fall 2021 course text, revised July 2026. https://builds.openlogicproject.org/courses/set-theory/settheory-screen.pdf。

属于、相等与集合记法

集合由其元素确定。x∈Ax\in A 表示属于,x∉Ax\notin A 表示不属于。列举元素时不计顺序,也不重复计数,例如 {1,2,2}={2,1}\{1,2,2\}=\{2,1\}。成员条件需要有明确的数学含义,但这不保证存在能对任意输入判定成员资格的算法。

外延性原理说的是,元素完全相同的集合相等:

A=B⟺∀x (x∈A↔x∈B).A=B\quad\Longleftrightarrow\quad \forall x\,(x\in A\leftrightarrow x\in B).

沿用 N={0,1,2,…}\mathbb N=\{0,1,2,\ldots\},并使用整数集 Z\mathbb Z、有理数集 Q\mathbb Q 和实数集 R\mathbb R。描述法通常从一个已给集合中选取元素,例如

E={n∈Z:n=2k,其中某个 k∈Z}.E=\{n\in\mathbb Z:n=2k\text{,其中某个 }k\in\mathbb Z\}.

论域是描述的一部分。{x∈R:x2=2}\{x\in\mathbb R:x^2=2\} 有两个元素,但 {x∈Q:x2=2}\{x\in\mathbb Q:x^2=2\} 为空集。

对实数 a<ba<b,区间是用不等式选出的集合:

(a,b)={x∈R:a<x<b},(a,b)=\{x\in\mathbb R:a<x<b\}, [a,b]={x∈R:a≤x≤b}.[a,b]=\{x\in\mathbb R:a\le x\le b\}.

圆括号表示不包含相应端点,方括号表示包含端点。例如 (a,b](a,b] 包含 bb,不包含 aa。

元素、子集与空集

定义子集与真子集

A⊆BA\subseteq B 表示 AA 的每个元素都属于 BB。若还要求 A≠BA\ne B,则称为真子集,记作 A⊊BA\subsetneq B。

属于关系比较对象与集合,包含关系比较两个集合中的元素。若 A={1,2}A=\{1,2\},则 1∈A1\in A、{1}⊆A\{1\}\subseteq A,但 {1}∉A\{1\}\notin A。集合本身也可以是另一个集合的元素,所以花括号的层次有实际意义。

空集 ∅\varnothing 不含元素。对每个集合 AA,都有 ∅⊆A\varnothing\subseteq A,因为要反驳它,必须先找到一个空集中的元素。但这不意味着 ∅∈A\varnothing\in A。另外,∅\varnothing 与 {∅}\{\varnothing\} 不同,后者有一个元素。

定义幂集与有限基数

幂集 P(A)\mathcal P(A) 是 AA 的全部子集组成的集合。有限集合 AA 的基数 ∣A∣|A| 是其元素个数。

例如,A={u,v}A=\{u,v\} 时,

P(A)={∅,{u},{v},{u,v}}.\mathcal P(A)=\{\varnothing,\{u\},\{v\},\{u,v\}\}.

若 ∣A∣=n|A|=n,构造子集时,每个元素都有“选入”或“不选入”两个独立选择,因此 ∣P(A)∣=2n|\mathcal P(A)|=2^n。n=0n=0 时仍有一个子集,即空集。无限基数需要进一步理论,不能把这里的有限计数直接当作无限大小的减法规则。

比较大小:有限、无限与可数

数一个有限集有多少个元素,会得到自然数。要更一般地比较集合的大小,可以把两个集合的元素一一配对,要求两边每个元素都恰好有一个伙伴。这种对应叫作双射;函数与映射会给出正式的映射定义。存在这种配对的两个集合称为等势,记作 ∣A∣=∣B∣|A|=|B|。配对不要求先给元素排大小。

对 n∈Nn\in\mathbb N,记 In={k∈N:k<n}I_n=\{k\in\mathbb N:k<n\}。于是 I0=∅I_0=\varnothing;当 n≥1n\ge1 时,In={0,…,n−1}I_n=\{0,\ldots,n-1\}。

定义有限集与无限集

如果集合 AA 能与某个 InI_n 建立双射,就称 AA 为有限集,并记 ∣A∣=n|A|=n。不是有限集的集合称为无限集。特别地,空集是有限集,其大小为零。

自然数集是无限集:非空的有限个自然数总有最大值,但 N\mathbb N 没有最大值。另一方面,非负偶数集 E={2n:n∈N}E=\{2n:n\in\mathbb N\} 却能与全部自然数一一配对,只需把 nn 配给 2n2n。每个非负偶数恰好出现一次。因此,无限集的真子集可能与整个集合等势;不能直接沿用有限集合中“真子集一定更小”的直觉。

定义可数集与不可数集

与 N\mathbb N 等势的集合称为可数无限集。本系列约定,可数集包括有限集与可数无限集。不是可数集的集合称为不可数集。

有些教材把“可数”仅用于无限情形,换教材时应先核对约定。这里的可数集包括空集。可数无限集可以按 0,1,2,…0,1,2,\ldots 编号,既不遗漏,也不重复。不可数集则无法这样列尽,即使允许重复,也不能用一列以自然数为指标的列表覆盖全部元素。

类型例子需要说明什么
有限∅\varnothing、{2,5,9}\{2,5,9\}与某个 InI_n 存在双射
可数无限N\mathbb N、EE、Z\mathbb Z、Q\mathbb Q与 N\mathbb N 存在双射
不可数R\mathbb R、(0,1)(0,1)、P(N)\mathcal P(\mathbb N)任何可数列表都无法列尽

表中的结论并非都能直接从定义看出。数系、算法与递归会具体列出整数与有理数,并用对角线论证说明实数不可数;幂集的例子放在本章探索中。先在这里建立分类,后面的章节才能一致地使用这些概念[2][2] E. Lehman, F. T. Leighton, and A. R. Meyer, Mathematics for Computer Science. MIT OpenCourseWare, 2015. Revised May 18, 2015; infinite sets, recursive data, and invariants. https://ocw.mit.edu/courses/6-042j-mathematics-for-computer-science-spring-2015/mit6_042js15_textbook.pdf。

有界与否、元素在数轴上是否密集,都不能决定可数性:(0,1)(0,1) 有界却不可数;任意两个不同有理数之间还有有理数,但 Q\mathbb Q 仍然可数。“可以列出”首先是数学上的存在性陈述,不自动意味着计算机能逐项生成这个列表。

在指定全集内进行运算

固定一个集合 UU,包含当前讨论的集合。A⊆UA\subseteq U 的补集为 Ac=U∖AA^c=U\setminus A。更换 UU 会改变补集;这里的 UU 只是当前讨论的全集,不是包含全部数学对象的集合。

运算元素条件
A∪BA\cup Bx∈Ax\in A 或 x∈Bx\in B
A∩BA\cap Bx∈Ax\in A 且 x∈Bx\in B
A∖BA\setminus Bx∈Ax\in A 且 x∉Bx\notin B
A△BA\mathbin\triangle Bxx 恰好属于 A,BA,B 中的一个

对称差满足 A△B=(A∖B)∪(B∖A)A\mathbin\triangle B=(A\setminus B)\cup(B\setminus A)。交集为空的两个集合称为不相交。

例如,取 U={1,2,3,4,5}U=\{1,2,3,4,5\}、A={1,2,4}A=\{1,2,4\}、B={2,3}B=\{2,3\}。交集为 {2}\{2\},并集为 {1,2,3,4}\{1,2,3,4\},差集 A∖B={1,4}A\setminus B=\{1,4\},补集 Ac={3,5}A^c=\{3,5\}。差集的顺序不能随意交换,因为 B∖A={3}B\setminus A=\{3\}。

用任意元素证明恒等式

证明 A⊆BA\subseteq B,就任取 x∈Ax\in A 并推出 x∈Bx\in B。证明集合相等,可以分别建立两个包含关系,也可以把两边的成员条件连接成等价链。反驳包含关系,则给出一个属于前者、不属于后者的元素。这些都是前面证明方法的具体应用。

证明交对并的分配律

对任意 xx,

x∈A∩(B∪C)  ⟺  x∈A∧(x∈B∨x∈C)  ⟺  (x∈A∧x∈B)∨(x∈A∧x∈C)  ⟺  x∈(A∩B)∪(A∩C).\begin{aligned} x\in A\cap(B\cup C) &\iff x\in A\land(x\in B\lor x\in C)\\ &\iff (x\in A\land x\in B)\lor(x\in A\land x\in C)\\ &\iff x\in(A\cap B)\cup(A\cap C). \end{aligned}

中间一步使用逻辑分配律,再由外延性得到集合恒等式。

证明保留全集条件的德摩根律

设 A,B⊆UA,B\subseteq U,任取 x∈Ux\in U。x∉A∪Bx\notin A\cup B 恰好等价于 x∉Ax\notin A 且 x∉Bx\notin B,也就是 x∈Ac∩Bcx\in A^c\cap B^c。因此 (A∪B)c=Ac∩Bc(A\cup B)^c=A^c\cap B^c。UU 外的元素不属于任何一边,所以比较已覆盖两个集合的全部元素。

其他常用定律也可以这样检查:

类别恒等式
交换律A∪B=B∪AA\cup B=B\cup A,A∩B=B∩AA\cap B=B\cap A
结合律(A∪B)∪C=A∪(B∪C)(A\cup B)\cup C=A\cup(B\cup C),交集同理
幂等律A∪A=AA\cup A=A,A∩A=AA\cap A=A
吸收律A∪(A∩B)=AA\cup(A\cap B)=A,A∩(A∪B)=AA\cap(A\cup B)=A
补集A∪Ac=UA\cup A^c=U,A∩Ac=∅A\cap A^c=\varnothing,(Ac)c=A(A^c)^c=A

图示可以帮助发现恒等式,元素论证则说明为什么它对任意集合成立。集合运算与联结词的对应,也解释了它和布尔代数的联系。

集合族、划分与有限计数

带指标的集合族 (Ai)i∈I(A_i)_{i\in I} 为每个指标指定一个集合,不同指标可以对应同一个集合。属于其并集,要求至少属于某个 AiA_i;属于其交集,则要求属于每个 AiA_i。

对固定全集 UU 的子集族,约定

⋃i∈∅Ai=∅,⋂i∈∅Ai=U.\bigcup_{i\in\varnothing}A_i=\varnothing, \qquad \bigcap_{i\in\varnothing}A_i=U.

第一式没有可供选择的见证,第二式没有给 UU 中的元素施加任何条件。第二式依赖指定全集这一约定,并没有断言存在一个不受限制的“所有对象之集合”。

集合 AA 的划分是一族非空、两两不交且并集为 AA 的块。例如,{{1,3},{2,4}}\{\{1,3\},\{2,4\}\} 划分了 {1,2,3,4}\{1,2,3,4\};{{1,3},{2,3,4}}\{\{1,3\},\{2,3,4\}\} 则不是,因为两个块在 33 处重叠。

对有限集合 A,BA,B,把并集分成 A∖BA\setminus B、A∩BA\cap B、B∖AB\setminus A 三个互不相交的区域,每个区域只数一次,得到

∣A∪B∣=∣A∣+∣B∣−∣A∩B∣.|A\cup B|=|A|+|B|-|A\cap B|.

减去交集是为了纠正重复计数,这就是两个集合的容斥原理。

有序对与笛卡尔积

有序对满足:(a,b)=(c,d)(a,b)=(c,d) 当且仅当 a=ca=c 且 b=db=d。与二元素集合不同,有序对的顺序有意义。笛卡尔积定义为

A×B={(a,b):a∈A, b∈B}.A\times B=\{(a,b):a\in A,\ b\in B\}.

有限集合满足 ∣A×B∣=∣A∣∣B∣|A\times B|=|A||B|;任一因子为空时,乘积为空。通常 A×B≠B×AA\times B\ne B\times A,不过交换坐标给出了二者之间的自然对应。R2\mathbb R^2、R3\mathbb R^3 分别由实数有序对和有序三元组组成。这些记号用于描述多元函数,并不要求所有函数的输入都是实数。

无限制概括为什么会出问题

假设任意条件都能定义一个集合,不限制从哪里选取对象,那么就能把 Russell 汇集 R={x:x∉x}R=\{x:x\notin x\} 当作集合。询问它是否属于自身,会得到

R∈R⟺R∉R,R\in R\quad\Longleftrightarrow\quad R\notin R,

产生矛盾。问题出在无限制的集合存在性假设,不是成员资格太难计算。

公理集合论限制哪些汇集可以是集合。ZF、ZFC 以集合为对象并约束集合形成;NBG 还明确处理类,包括不是集合的真类。上面的初等构造不需要先学习完整公理清单,下面的比较练习和后续 NBG 引入会提供下一步 [1][1] T. Button, Set Theory. Open Logic Project, 2026. Fall 2021 course text, revised July 2026. https://builds.openlogicproject.org/courses/set-theory/settheory-screen.pdf, [3][3] T. Banakh, “Classical Set Theory: Theory of Sets and Classes,” arXiv:2006.01613, 2026. Version 6, August 15, 2026; NBG sets, classes, and class existence. https://arxiv.org/abs/2006.01613。

基础练习

练习分清花括号的层次

设 A={∅,{1}}A=\{\varnothing,\{1\}\}。判断 ∅∈A\varnothing\in A、∅⊆A\varnothing\subseteq A、{1}∈A\{1\}\in A、{1}⊆A\{1\}\subseteq A 是否成立,并求 ∣A∣|A| 与 ∣P(A)∣|\mathcal P(A)|。

查看解析
解

前三句成立,第四句不成立,因为 1∉A1\notin A。AA 有两个元素,所以幂集有四个元素。某个元素本身是集合,不代表那个集合内部的元素也自动属于 AA。

练习证明一个带差集的恒等式

证明 A∩(B∖C)=(A∩B)∖(A∩C)A\cap(B\setminus C)=(A\cap B)\setminus(A\cap C)。

查看解析
解

左边的成员条件是 x∈Ax\in A、x∈Bx\in B、x∉Cx\notin C。右边的条件是 x∈A∩Bx\in A\cap B 且 x∉A∩Cx\notin A\cap C。一旦已知 x∈Ax\in A,最后一个条件就等价于 x∉Cx\notin C,因此两边成员条件完全一致。

练习用整数线性组合描述集合

证明 {12m+8n:m,n∈Z}={4k:k∈Z}\{12m+8n:m,n\in\mathbb Z\}=\{4k:k\in\mathbb Z\}。

查看解析
解

每个 12m+8n=4(3m+2n)12m+8n=4(3m+2n) 都属于右边。反过来,对任意整数 kk,选择 m=k,n=−km=k,n=-k,便有 12m+8n=4k12m+8n=4k。两个包含关系得到集合相等,第二个方向明确构造了所需见证。

练习分区后计数

有限集合满足 ∣A∣=8|A|=8、∣B∣=6|B|=6、∣A∩B∣=3|A\cap B|=3。求 ∣A∪B∣|A\cup B| 与 ∣A△B∣|A\mathbin\triangle B|,并说明使用了哪些互不相交的区域。

查看解析
解

并集有 8+6−3=118+6-3=11 个元素,三个区域的大小为 5,3,35,3,3。对称差只保留外面的两个区域,所以有 88 个元素。如果某个区域为空,称其为划分时应去掉这个空块,因为划分的块要求非空。

练习在正确的层次判断大小

判断 ∅\varnothing、{N}\{\mathbb N\}、N\mathbb N、P({u,v})\mathcal P(\{u,v\}) 是有限集还是可数无限集。按本章约定,哪些集合可数?

展开解答
解

四个集合的大小依次为 00、11、可数无限、44,因此都可数。单元素集合 {N}\{\mathbb N\} 只有一个元素;这个元素本身是无限集,不会改变外层集合只有一个元素的事实。

练习有界的可数无限集

设 A={1/(n+1):n∈N}A=\{1/(n+1):n\in\mathbb N\}。说明为什么 AA 可数无限,尽管其全部元素都落在 (0,1](0,1] 中。

展开解答
解

把 nn 与 1/(n+1)1/(n+1) 配对。由 AA 的定义,每个元素都会出现;若两个值相同,则正分母相同,从而指标相同,所以没有重复。这就建立了与 N\mathbb N 的一一对应。有界性描述数值的大小范围,不决定集合含有多少元素。

探索:比较体系,不扩张入门主线

练习无法列尽的幂集

假设有人声称,可以把 N\mathbb N 的全部子集列成 S0,S1,S2,…S_0,S_1,S_2,\ldots,允许重复。考虑

D={n∈N:n∉Sn}.D=\{n\in\mathbb N:n\notin S_n\}.

说明这个列表为什么一定漏掉 DD,以及这为什么能证明 P(N)\mathcal P(\mathbb N) 不可数。

展开讨论
解

对每个 kk,DD 与 SkS_k 对“是否包含 kk”给出相反答案:k∈Dk\in D 当且仅当 k∉Skk\notin S_k。所以 DD 不等于列表中的任何 SkS_k,但它确实是 N\mathbb N 的子集。任意候选列表都漏掉了一个子集。非空有限集合也能通过重复列成无限列表,因此这个论证同时排除了有限与可数无限两种可能。

这个对角线构造是合法的,因为 DD 从已经给定的 N\mathbb N 中选取元素,并没有像无限制的罗素概括那样假设“所有集合组成的集合”。矛盾否定的是“列表已经列尽全部子集”,不是 DD 的存在。

练习用一张小表比较 ZF、ZFC 与 NBG

参考推荐阅读,比较三个名称指什么,以及怎样讨论“所有集合”这样的汇集。此题不要求证明体系的一致性或相对强弱。

讨论提示
解

ZF 是 Zermelo–Fraenkel 集合论,ZFC 在其基础上加入选择公理。二者的量词以集合为对象;可以用记法讨论可定义的类,但不会把每个类都当成集合。NBG 明确提供集合与类的框架,真类不能作为元素。不同作者是否把选择或全局选择包含在 NBG 名称中可能不同,所以比较前要查看具体公理表。两种处理方式都不接受“所有集合组成一个集合”。

这里要关注的是怎样控制存在性和汇集的大小,而不是把体系名称排成所谓难度等级。

练习在给定集合内分离

给定集合 AA,考虑 RA={x∈A:x∉x}R_A=\{x\in A:x\notin x\}。为什么这个受限构造没有产生原来的 Russell 矛盾?若 RA∈AR_A\in A,会发生什么?

讨论提示
解

分离从已给集合 AA 中选出一个子集。若 RA∈AR_A\in A,定义就会给出 RA∈RAR_A\in R_A 当且仅当 RA∉RAR_A\notin R_A,产生矛盾,因此 RA∉AR_A\notin A。得到的是对 AA 不能包含什么的限制,不是受限构造自身不一致。它也说明任何集合 AA 都不能包含全部集合。

练习序关系与公理体系回答不同的问题

为什么同一个集合可以带不同的序关系,而不需要从 ZFC 切换到 NBG?后续章节中类的作用出现在哪里?

讨论提示
解

序关系是在汇集上加入的结构;对集合 AA,可以用 A×AA\times A 的子集表示。改变这个关系,不会改变约束集合的背景公理。后续章节用 NBG 讨论类与更大的构造,再在这一框架中研究具体关系与序。公理背景和选定的序是两件事。

下一篇函数与映射研究集合之间的对应。准备进一步学习类、等价关系和序结构时,再进入关系与序。

参考文献

  1. [1] T. Button, Set Theory. Open Logic Project, 2026. Fall 2021 course text, revised July 2026. https://builds.openlogicproject.org/courses/set-theory/settheory-screen.pdf a b
  2. [2] E. Lehman, F. T. Leighton, and A. R. Meyer, Mathematics for Computer Science. MIT OpenCourseWare, 2015. Revised May 18, 2015; infinite sets, recursive data, and invariants. https://ocw.mit.edu/courses/6-042j-mathematics-for-computer-science-spring-2015/mit6_042js15_textbook.pdf ↩
  3. [3] T. Banakh, “Classical Set Theory: Theory of Sets and Classes,” arXiv:2006.01613, 2026. Version 6, August 15, 2026; NBG sets, classes, and class existence. https://arxiv.org/abs/2006.01613 ↩