形式陈述
集合记录哪些对象属于它。写作 x ∈ A ,表示“x 是集合 A 的元素”;x ∉ A 表示它不是元素。一个集合的身份完全由成员决定,而不由成员的排列、出现次数或描述方式决定。这就是外延性 理路 集合外延性公理 Axiom of extensionality · Extensionality 两个集合恰在拥有相同元素时相等。 :
A = B ⟺ ∀ x ( x ∈ A ↔ x ∈ B ) . 例如,{ 1 , 2 , 3 } 、{ 3 , 1 , 2 , 2 } 和“正整数中小于 4 的数所成的集合”描述同一个对象。重复写出 2 不会增加一个元素。与之不同,序列 ( 1 , 2 , 2 ) 会保留次序和重复。[1,2]
描述集合有两种常见记号。列举式 { a , b } 给出成员;受限描述式
{ x ∈ A : φ ( x ) } 表示从已经给定的集合 A 中筛出满足条件 φ 的元素。例如 { n ∈ Z : n 2 = 1 } = { − 1 , 1 } 。冒号后的条件决定筛选规则,冒号前的 A 指定筛选范围。
若 A 中的每个元素都属于 B ,则称 A 是 B 的子集 理路 子集 Subset · Set inclusion A 的每个元素都属于 B 时成立的包含关系;它在集合之间形成偏序。 ,记作
A ⊆ B ⟺ ∀ x ( x ∈ A ⇒ x ∈ B ) . ∈ 问“一个对象是否是成员”,⊆ 问“一个集合的成员是否全部被另一个集合包含”。这是两种不同的判断;当对象本身也是集合时,两种问题都可以提出,但答案不必相同。
直觉
可以把集合看成一份只回答“在不在其中”的成员记录。它不记录存储地址、加入时间或重复次数;所以程序中两份占用不同内存的集合对象,仍可能表示同一个数学集合。列表、多重集合和图还要记录顺序、重数或连接方式,这些信息不是底集自动提供的。
集合也能作为另一个集合的元素。关键是先认清当前正在数哪一层:∅ 没有元素,{ ∅ } 有一个元素,那个元素恰好是空集;{ { ∅ } } 也有一个元素,但那个元素是“装着空集的单元素集”。花括号不是可以随意省略的装饰。
这种层次也解释了幂集 理路 幂集 Power set 把 A 的每一种子集选择提升为元素所得的集合,记作 P(A)。 :P ( A ) 的元素不是通常意义下“从 A 抽出的一个成员”,而是 A 的整个子集。若 a ∈ A ,则 { a } ⊆ A ,进而 { a } ∈ P ( A ) ;同时 A ⊆ A ,所以 A ∈ P ( A ) 。从“成员”提升到“成员组成的集合”,会改变正在讨论的对象。
例子与边界
同一对象上的两个问题
令 A = { ∅ , { ∅ } } 。逐项查看便有
∅ ∈ A , ∅ ⊆ A , { ∅ } ∈ A , { ∅ } ⊆ A . 第一式是因为空集被直接列为成员;第二式则是因为空集没有任何元素可以违反包含条件。第三式检查另一个直接列出的成员,第四式只需检查 ∅ ∈ A 。四式虽然都成立,理由分别对应“查看成员名单”和“逐元素核对”。
成员关系不具有传递性。取 B = { ∅ } 、C = { B } ,有 ∅ ∈ B 和 B ∈ C ,但 ∅ ∉ C 。反之,包含关系具有传递性:A ⊆ B ⊆ C 时,A 的元素经由 B 仍是 C 的元素。
从成员判断得到集合运算
并集 A ∪ B 收集至少属于一边的对象,交集 A ∩ B 收集同时属于两边的对象,差集 A ∖ B 保留属于 A 却不属于 B 的对象。例如 A = { 1 , 2 } 、B = { 2 , 3 } 时,它们依次为 { 1 , 2 , 3 } 、{ 2 } 、{ 1 } 。
幂集 理路 幂集 Power set 把 A 的每一种子集选择提升为元素所得的集合,记作 P(A)。 P ( A ) = { S : S ⊆ A } 的成员是 A 的所有子集。若 A = { a , b } ,则
P ( A ) = { ∅ , { a } , { b } , { a , b } } . 这里空集和 A 自身都必须出现。若有限集 A 有 n 个成员,每个成员都有“选入或不选入”两种选择,故其幂集有 2 n 个成员。
顶点与边为什么要分清
设网络的顶点是三个不同标签 u , v , w ,有向边表示为有序对 理路 有序对 Ordered pair 区分第一、第二分量且由分量逐项相等刻画相等性的二元对象。 ,并约定顶点标签与边记录是不同类型的对象。于是
V = { u , v , w } , E = { ( u , v ) , ( v , w ) } ⊆ V × V . u 是顶点,( u , v ) 是边记录;E 的元素是有序对,E 本身是笛卡尔积 理路 笛卡尔积 Cartesian product · Direct product of sets 由各坐标分别取值形成的有序元组集合;二元情形记作 A×B。 的一个子集。把 ( u , v ) 改写为 { u , v } 会丢失方向。这里的类型区分是建模约定,并不是集合论禁止“某个有序对恰好又被选作顶点”;需要区分时,可以用标签明确区分。
花括号并不保证存在
在纯 ZF 集合论 理路 ZF 集合论公理系统 ZF set theory · Zermelo–Fraenkel set theory 以成员关系为唯一非逻辑关系,并受控规定集合存在性的标准一阶公理系统。 中,所有对象都是集合,成员关系 ∈ 是基本符号。日常的数、点、函数可以通过集合编码,但使用它们时通常不展开这些编码。
ZF 的分离模式允许在已有集合内按性质筛选,不能由任意性质直接制造集合。假设无条件允许
R = { x : x ∉ x } , 就会得到 R ∈ R ⟺ R ∉ R ,即 Russell 悖论。因此“所有集合组成的集合”不存在;“所有序数”也不是一个集合,可以在元语言中作为真类讨论。限制成集规则保护的是论证的一致性,而不是禁止描述这些总体。[2,3]
受限版本 R A = { x ∈ A : x ∉ x } 则确实存在。它不会导致矛盾,而是推出 R A ∉ A :只有再假设 R A ∈ A ,才会出现 R A ∈ R A ⟺ R A ∉ R A 。所以任何给定集合 A 都不可能包含所有集合;关键区别是先有筛选范围,还是无条件收集所有对象。
推论与应用
外延性给出一个非常实用的证明方法:要证集合相等,分别证明两边包含;要证不等,找一个只属于其中一边的元素。表达式长得不同,并不妨碍它们具有相同成员。
分配律 A ∩ ( B ∪ C ) = ( A ∩ B ) ∪ ( A ∩ C ) 的完整逐元素证明见集合运算 理路 集合运算 Set operations · Union, intersection, difference 用逻辑条件逐元素定义并、交、差、补与对称差,并扩展到集合族。 。这类证明先展开任意对象的成员条件,再由外延性得到集合等号;只检查几个列出的元素还不够。
从集合出发,乘积把选择装入坐标,关系 理路 关系 Relation · Binary relation 带源集与目标集的二元关系,其底层关系图是 A×B 的子集。 挑选允许出现的对象对,函数 理路 函数 Function · Map · Mapping 由定义域、陪域和单值图共同组成,并把每个输入送到唯一输出的映射。 再要求每个输入恰有一个输出。给同一底集添加不同运算、次序或测度,则会得到不同数学结构。外延性判断底集是否相同;附加结构是否相同,还要核对各自的数据。
统一的集合编码让这些对象可以放进同一基础体系;抽象使用则让证明只依赖公开的相等判据和操作规则。区分这两层,既能追问对象如何构造,也不会把某种底层编码的偶然成员关系误当成数学性质。
参考资料
[1] Jiří Lebl, Basic Analysis I: Introduction to Real Analysis ,作者在线版,§0.3“Basic set theory”,访问于 2026-09-21;集合、包含与函数的入门解释。
[2] Paul R. Halmos, Naive Set Theory , Dover 重印版,2017(初版 1960),§§1–6;外延性、成集与集合运算。
[3] Herbert B. Enderton, Elements of Set Theory , Academic Press, 1977,Chapters 1–2;集合论语言、悖论与公理化成集。