在正式形式化定义集合之前,你不妨先自己来尝试定义一下集合。概念3.2是我推敲了良久却仍不满意但也无计可施的措辞。我一开始很想定义说“集合是一堆东西构成的……”什么呢?“构成的集合”……嘣,不行,这是在用集合定义集合。还能怎么说呢?用英文我倒还能取巧地定义为“A set is a collection of distinct objects”,巧(狡)妙(猾)地借助了英文中“set”与“collection”这两个直观上同义的不同单词。其实中文里我也可以说“集合是一簇各异的对象”,利用“簇”这个“集合”的别名。但种种这般努力后,相信你也会遗憾地发现,若要用自然语言来定义集合,无法避免模糊与歧义,难以绕开诉诸同义反复与偷梁换柱。
那要怎么办呢?不知你是否还记得我们曾说过,应通过期望对象所满足的性质来定义它(洞察2.7与洞察2.8)!对于集合,数学家们精心挑选了不多不少七个性质,即下面我们将要看到的七条 公理 。
定义3.13 公理化集合论 (axiomatic set theory)是一个建立在谓词逻辑上的公理系统,其中:
· 字母表:增加了一个符号∈;
· 语法:增加了一个二元原子谓词 x ∈ y ;
· 公理:下文所定义的空集公理3.1、无穷公理3.2、对集公理3.3、并集公理3.4、替换公理3.5、幂集公理3.6、基础公理3.7七条公理。
我们不加定义地直接引入一个毫无意义的形式符号∈,并将通过规定若干条公理的方式框定它的性质,使得在直观上它将扮演我们熟悉的“属于”符号。
定义3.14 在给定解释下,我们将谓词 x ∈ y 中变量 x,y 可被赋予的值称为 集合 (set)。
这里我们就得仔细说道说道了。集合是什么?是变量可能的赋值。可变量是能被赋予不特定值的符号(定义2.50)。那这样一来,任何东西不都成了集合?!别急,我们知道若一个符号是谓词,那么它在其自由变量的任何赋值下都必须要成为一个命题(定义2.51)。因为 x ∈ y 是一个二元原子谓词(定义3.13),故变量 x 、 y 的论域不是随便的,只有那些使得 x ∈ y 成为一个命题的值才有资格置于 x 与 y 的论域之中!你可能仍然感到纳闷,难道还有不能让 x ∈ y 成为命题的赋值?还真有!这又得回到命题的定义了。什么是命题?命题要么是原子命题,要么是它们通过逻辑连词的连接(定义2.32)。原子命题是只能被解释为真或假的符号(定义2.31),而逻辑连词仅定义了连接后符号的真值如何依赖各部件,于是我们不难得到,与原子命题一样,命题也是只能被解释为真或假的符号。进而我们其实证明了:
断言3.15 在给定解释下,如果符号 x 、 y 存在赋值 x := a 、 y := b 使得符号 a ∈ b 并非为真或为假,那么在该解释下至少 a 、 b 二者之一不是集合。
举个例子,以我们的直觉作为解释,考察两个变量 x 和 y ,它们的论域都是水果。若将 x 赋值为“苹果”, y 赋值为“梨”,那么“苹果∈梨”会被解释为“苹果属于梨”,这是一个毫无意义的话,无所谓真假。于是,至少“苹果”和“梨”二者之一不是集合——当然,它们全都不是集合。
排除了“苹果”是集合似乎无关痛痒,但不知你有没有意识到,借助断言3.15,我们其实从最一开始就已经剥夺了导致罗素悖论的那个自指的“集合”(3.1)成为集合的资格!
断言3.16 在朴素集合论中构造的集合(3.1),即
不是公理集合论允许的集合。
证明 以朴素集合论为解释,将符号 x ∈ y 理解为断言“ x 属于 y ”,并将 x 与 y 均赋值为 R 。我们下面检查此时 x ∈ y 是否是一个命题,即是否或真或假。
若 x ∈ y 为真,这即表明 R 属于 R 。但按照 R 的定义,这意味着 R 不属于 R ,矛盾,故 x ∈ y 不能为真。
若 x ∈ y 为假,这即表明 R 不属于 R 。但按照 R 的定义,这意味着 R 属于 R ,又矛盾,故 x ∈ y 不能为假。
于是, x ∈ y 在该解释下既不能为真,也不能为假,故 R 不是公理集合论中的集合(断言3.15)。 □
我们一个公理还没有提,尚未施加任何额外限制,仅仅通过明确了定义,便将曾经不可一世的罗素悖论拒之门外。可见正如第2章开头所说过的,在开始研究问题之前明确定义是多么重要!
其实吧,定义3.14直观上就是在说——脑子里把∈想象成我们期望建模的“属于”符号——仅那些能够被判断属于关系的两个事物才能被称为集合。但什么叫“属于”又只可意会不可言传了。接下来,我们便要通过公理的方式为符号∈加上限制,使其刻画了直观上“属于”的概念,不然的话它与任意一个二元谓词就没区别了。
为了说话方便,我们先来定义一些新的记号。
定义3.17 我们定义如下缩写记号:
·
· x ⊂ y :=∀ a :( a ∈ x → a ∈ y )
· x = y :=( x ⊂ y )∧( y ⊂ x )
· x ≠ y :=¬( x = y )
· x ⊊ y :=( x ⊂ y )∧( x ≠ y )
这些记号在朴素集合论中都出现过(比如概念3.6),分别对应“不属于”“子集”“相等”“不相等”“真子集”,想必直观上你也看得出来。但一定要知道 、⊂、=、 ⊊ 都不是公理集合论中的符号,它们只是我们用来写下其中公式时为了偷懒与清晰而定义的缩写。特别的,两个集合相等被定义为它们包含彼此。
另外,我们再定义一个新的量词:
定义3.18 令 P 为一个一元谓词,我们定义如下记号 [2]
(∃ 1 x : P ( x )):=(∃ x : P ( x ))∧(∀ y :∀ z : P ( y )∧ P ( z )→ y = z )
称∃ 1 为 存在唯一量词 (unique existential quantifier)。
直观说来,“存在唯一 x 满足 P ”即被定义为“存在 x 满足 P ,且对任何同时满足 P 的 y 和 z 一定有 y = z ”。
前面说过,我们需要七条公理来刻画“属于”的概念。需要特别说明的是,别忘了公理是一些系统中的命题(定义2.38),所以下面的每条公理在给出中文描述之余,我都会列出其作为命题的严格形式符号。可以对照着公理的中文叙述看看它们。虽无需深究,但心里要知道,形式符号才是定义本身,中文的描述乃这些符号在我们直观中的翻译。
公理3.1 (空集公理Axiom of Empty Set) 存在一个不包含任何元素的集合。
我们记这个集合为Ø。
作为第一个公理,不妨稍微解读一下符号。 是¬ x ∈ y 的缩写,其是一个二元谓词,有两个自由变量,绑定两个量词后,整体就变成一个命题了,我们正是将这个命题规定为公理。
空集公理很好理解,它规定了空集存在。何必呢?空集当然存在啊!没错,这是我们天然的直观。但是别忘了,在我们初生的公理系统中现在还什么都没有呢。空集便是我们通过公理为系统注入的第一个存在!碰巧,“空”有“无”的意思,古人言“无中生有”,别小看了这孤零零的一个空集,我们下面就要从它开始生出“有”来。不仅有,而且直接上无穷!
公理3.2 (无穷公理Axiom of Infinity) 存在一个集合,其包含空集,且若 y 是它的一个元素, y ∪{ y }也是它的一个元素。
∃ x :Ø∈ x ∧∀ y :( y ∈ x → y ∪{ y }∈ x )
我们记这个集合为 ω 。
这个公理叫无穷公理,可它与无穷有何关系?让我们来看看它在说什么。说存在一个叫 ω 的集合,空集是它的元素:
ω ={Ø,?}
还有吗?由后半句我们知道,由于Ø是它的元素,Ø∪{Ø}={Ø}也是它的元素 [3] !故它又多了一个元素:
ω ={Ø,{Ø},?}
再对{Ø}施加同样的操作,我们得到{Ø,{Ø}}也是它的元素……显然,这个过程可以不断重复下去:
ω ={Ø,{Ø},{Ø,{Ø}},{Ø,{Ø},{Ø,{Ø}}},…}
正所谓无中生有!老子曰“道生一,一生二,二生三,三生万物。”要这么说来,这空集就是老子所谓的“道”了!你还别说,真就这么巧,这“一”“二”“三”真是被它生出来的,因为我们的确打算把自然数定义成上面这个 ω 的元素!
动机3.19 我们定义如下新记号:
· 0:=Ø
· 1:={Ø}
· 2:={Ø,{Ø}}
· 3:={Ø,{Ø},{Ø,{Ø}}}
并想要定义自然数集为:
N :={0,1,2,3,…}
不过别急,仔细琢磨一下我们会遗憾地发现时机尚不成熟,至少有如下两个问题:
问题3.20 为什么{ y }是一个集合?
问题3.21 为什么 y ∪{ y }是一个集合?
这两个问题可能还好办,还有一个更要命的。无穷公理只是说存在一个集合包含Ø,但没有排除它包含其他“杂质”,比如若从 开始不断套用无穷公理,我们会得到很多除了自然数1,2,3之外的元素比如“梨子 ”。换言之:
洞察3.22 无穷公理只保证了存在一个集合包含自然数作为子集。
要怎么把杂质踢掉呢?直观上显然我们能感受到,不管公理保证存在的那个集合是什么,自然数集就是其中“最小”的那个满足公理条件的子集。而最小的那个显然是 只 从空集Ø迭代出来的。为了说话方便,做一个定义:
定义3.23 我们称一个集合是 归纳的 (inductive),如果其包含空集Ø,且满足若 y 是它的一个元素, y ∪{ y }也是它的一个元素。
于是,无穷公理便是在说“存在一个归纳集 ω ”。现在我们很想定义自然数为“最小”的归纳集。可数学上要如何表达“最小”呢?把所有归纳集交起来!
动机3.24 我们想将自然数定义为 ω 的所有归纳子集的交集:
其中 ω 为无穷公理保证的那个归纳集。
那么问题又来了,我们连{Ø}是不是集合都不能保证,这么凶猛的交集真的可以?要搞明白能写下它需要些什么,我们把这个符号拆解一下。它无非是一些 ω 的满足特定性质的子集的交,而子集无非就是幂集的元素,于是我们得到:
右边的记号看起来已经可以把握了,在朴素集合论中,它无非是若干通过受限概括原则3.12构造的集合的交集,但要想在我们的公理集合论中合理合法地写下它,我们还必须解决下面这些问题:
问题3.25 为什么幂集是一个集合?
问题3.26 任意多个(可能无限个)集合的交集为什么是一个集合?
问题3.27 为什么可以使用受限概括原则?
问题3.28 如何形式地表达一个集合是归纳的?
只有这些以及前面的问题解决了,我们才能正式定义出自然数!最后一个问题3.28可以立马回答,因为无穷公理3.2定义中的符号正是“归纳的”的形式表达。接下来的四条公理,便是在为解决其他问题铺平道路。
公理3.3 (对集公理Axiom of Pair Sets) 对任意两个集合 x 与 y ,存在一个集合恰好以 x 与 y 作为其元素。
∀ x :∀ y :∃ m :∀ u :( u ∈ m ↔( u = x ∨ u = y ))
我们记这个集合为{ x,y }。
到目前为止我们手头只有一个集合,即空集Ø,连 、{ a,b,c }这样的东西都尚不是集合。对集公理提供了一个产生集合的方法,我们来看看它让我们可以做些什么。
从我们仅有的空集Ø开始,由对集公理,令 x = y =Ø,我们能得到一个新的集合:
{Ø,Ø}
这看起来不像个集合呀?朴素集合论(以及高中课本)都一再强调集合的元素是不同的,这里却是两个相同的元素?其实并无大碍,我们直接定义一个记号缩写:
{Ø}:={Ø,Ø}
把由对集公理构造出的具有两个相同元素的集合,直接缩写为单个元素的样子!
定义3.29 给定一个集合 x ,对集公理保证了{ x }:={ x,x }是一个集合,称为 单元素集合 (singleton)。
很好,问题3.20有了答案:{ y }由对集公理保证了是一个集合!当然,我们可以不断利用对集公理,构造出更多的集合,比如
· 令 x =Ø ,y ={Ø},得到{Ø,{Ø}};
· 令 x ={Ø} ,y =Ø,得到{{Ø},Ø};
· 令 x ={Ø} ,y ={Ø},得到{{Ø}}
可问题是它们都只有一个或两个元素,难道三个元素的集合如
{{Ø},{Ø},{Ø}}
都不配存在吗?看来我们还需要更多的公理。
公理3.4 (并集公理Axiom of Union Sets) 对任意集合 x ,存在一个集合,其元素为 x 的元素的元素。
∀ x :∃ u :∀ y :( y ∈ u ↔∃ s :( y ∈ s ∧ s ∈ x ))
我们记这个集合为 。
从名字我们不难猜出,这条公理确认了并集是集合。可看起来它又和我们熟悉的集合的并不太一样?让我们来看个例子。假设我们有集合 A ={ a,b }和 B ={ c },由对集公理我们知道
x ={{ a,b },{ c }}
是一个集合。于是,并集公理告诉我们 x 的元素的元素构成一个新的集合,它是什么呢 ?
没错,它正是我们熟悉的 A 与 B 的并!在公理化集合论中,一切都是集合,无所谓“元素”与“集合”的区别。最最“底层”的集合是空集Ø,其他的一切,都是集合的集合这样嵌套起来的。所以,我们用了如此这般看似奇怪的方式来定义集合的并。
定义3.30 给定两个集合 A 和 B ,(对集公理和)并集公理保证了
是一个集合,称为它们的 并集 (union)。
于是,问题3.21也得到了解答:放心, y ∪{ y }是一个集合。不仅如此,集合(3.3)可是有三个元素咯!那四个、五个、六个元素的集合能存在吗?当然!一般的,对 n ⩾3,我们只要递归定义记号
就写下了包含 a 1 ,a 2 ,… ,a n 这 n 个元素的集合!当然,当 n 降到2时,我们直接用对集和并集公理写
所以,今后我们可以放心大胆的写下任何一个有限集,而不用担心它不是集合了!
洞察3.31 并集公理允许了超过两个元素的有限集合。
我们会想“扩大”集合,也会想“缩小”集合。并集是集合了,那子集呢?我们拒绝承认 任意 子集都是集合,而是由受限概括原则3.12启发,我们只承认基于给定性质从一个集合中选出的那些元素构成的子集是一个集合。
公理3.5 (替换公理Axiom of Replacement) 令 ψ 是一个二元谓词。对任意集合 a ,若对其任意元素 x ,存在唯一的 y 使得 ψ ( x,y )为真,那么这些 y 的全体构成一个集合。
∀ a :∀ x ∈ a :∃ 1 y : ψ ( x,y )
→∃ b :∀ y :( y ∈ b ↔∃ x : x ∈ a ∧ ψ ( x,y ))
我们记这个集合为 ψ ( a ),称为 a 在 ψ 下的 像 (image)。
这一条公理 [4] 看起来就没那么友好了,但直观上其实是很简单和自然的,无非就是在说任何映射的像 依旧是集合。这给我们提供了一个很强的构造集合的武器!前几个公理都还只能简单地进行拼装,而现在只要我们能定义出一个映射,就能构造一个集合!更妙的是,受限概括原则是其自然的推论 [5] 。
定理3.32 受限概括原则3.12是替换公理3.5(和空集公理3.1)的推论。即,若 Σ 为一个集合, P 为一个一元谓词,那么 Σ 中所有使得 P 成立的元素全体构成一个集合:
X :={ x ∈ Σ | P ( x )}
写成符号即
∀ Σ :∃ X :∀ x :( x ∈ X ↔ x ∈ Σ ∧ P ( x ))
证明 分两种情况讨论。若 Σ 中不存在令 P 成立的元素,那么定义 X 为空集。否则,我们选取一个这样的元素 x 0 并构造一个二元谓词:
ψ ( x,y ):=( P ( x )∧( y = x ))∨(¬ P ( x )∧( y = x 0 ))
定义 X 为 Σ 在 ψ 下的像。 □
不要被证明 中的 ψ ( x,y )吓到,其实很简单。我们现在想通过 ψ 把集合 Σ 中满足性质 P 的元素“打”出来,那就对其中的元素挨个检查呗。如果这个 x 满足 P ,那好办,直接映射到它自己。但如果这个 x 不满足呢?没事,把它映射到随便一个已知满足的元素——比如那个提前挑好的 x 0 ——不要捣乱就成。但若一个满足 P 的元素都没有呢?那没办法,只能把像定义成空集了。这便是证明中定义 ψ 的形式符号的直观意思。
有了替换公理,从此我们可以放心地通过性质来从集合中挑选元素构成新的集合了!问题3.27随之而解。除此之外,之前基于并集公理我们得以构造集合的并,但是交集和补集似乎还没有定义,现在我们也可以定义它们了!
定义3.33 令 A 、 B 为两个集合。它们的 交集 (intersection)是集合
A ∩ B :={ x ∈ A ∪ B | x ∈ A ∧ x ∈ B }
A 相对于 B 的 补集 ( complement )是集合
如果没有替换公理,进而没有受限概括原则,我们即使能定义出两个集合的交集和补集,也没法声称它们是集合。
不过,虽然交集合法了,但事情并没有结束。因为这里我们最多将两个集合的交集推广到有限个集合的交集,可是问题3.26中我们需要把 无穷多个 集合交起来呀!好在这并不困难,因为我们能定义出一个集合的全部元素(它们还是集合)的交集。举个例子,若
m ={{1},{1,2},{1,2,3},…}
其元素是无穷多个集合,我们想定义出它们的交集(目测等于{1}):
要怎么做呢?自然是想利用受限概括原则:
但这要求我们指明两个东西:一个预置的全集,和一个筛选规则。哪一个已知的集合囊括了所有候选的元素呢?交集撑死不可能超过并集 嘛!而并集公理又恰好保证了它是一个集合。那筛选规则是什么呢?很简单:“这个元素属于 m 中的任一个元素”。
定义3.34 令 m 是一个集合,其所有元素的交定义为
很好!问题3.26也解决了!
洞察3.35 替换公理允许了补集、有限交集以及任意交集。
至此,只剩下最后一个问题3.25没有回答了。为啥幂集是集合呢?你不妨试着用上面的公理推导推导,看看能不能证明出来——放心,是证不出来的!那怎么办呢?加一条公理呗!
公理3.6 (幂集公理Axiom of Power Set) 一个集合的所有子集全体构成一个集合。
∀ a :∃ b :∀ x : x ∈ b ↔ x ⊂ a
我们记这个集合为2 a ,称为 a 的 幂集 (power set)。
终于万事俱备,我们可以来定义自然数了!不过我们把这件事放到下一章去做,我们先采纳前人的经验,用最后一个公理堵上系统中还存留的一丝隐患。
公理3.7 (基础公理Axiom of Foundation) 任何非空集合都存在元素与其自身没有交集。
诚然罗素悖论已经通过断言3.16被排除在系统之外了,但是不免有其他更高级的构造矛盾的方法。这条公理便是为了堵住自指的口子,防止悖论的产生。特别的,基于它我们能够得到:
命题3.36 任何集合都不属于自身。
证明 反证法。假设存在一个集合 x 属于自身,即 x ∈ x 。考虑集合
I :={ x }
注意到 x 与 I 的交集非空:
x ∩ I = x ∩{ x }={ x }
故 I 不存在元素与其自身没有交集,与基础公理矛盾。 □
至此,我们列举完了公理化集合论的全部公理。别看我们也就用了几页纸,仿佛一切都水到渠成、一帆风顺,如果从康托尔发表其第一篇关于集合论的论文(1874年),到希尔伯特提出其计划(1900年),再到罗素发现其悖论(1901年),直至哥德尔发表其不完备性定理(1931年),数学前辈们为了夯实数学的基础没有少走弯路啊!我们现在看到的系统(定义3.13)于20世纪上半叶成型,被冠名于两位德国数学家 策梅洛(Zermelo)与弗兰克尔(Fraenkel),如今被称为 策梅洛 - 弗兰克尔集合论 (Zermelo–Fraenkel set theory),并缩写为 ZF 公理系统 。
尽管哥德尔不完备性定理表明了形式化方法终究有其边界与局限,但这并未否定其本身的强大。如今,数学界约定俗成的潜规则是,我们仍旧使用中文、英文、俄文等自然语言来谈论数学、叙述定理、书写证明,但是我们相信(以及要求)所有这些都能被翻译成公理集合论中纯形式的符号,由这个形式系统作为其最底层的根基与保障。所以,在本书接下来的章节,我们会回到像第一章中那样,用通俗直观的语言来进行叙述与论证。但是与之前不同的是,这回我们心里是踏实的,是有底的,我们知道任何概念都有其最终的严格无歧义的定义,我们一切推理的合法性都由一个强大的底层形式系统在保障着!
接下来,我们就要用集合论 的语言,来刻画数学中最天然的概念,也即其名称 中的“数”。