用布尔巴基的方式重学数学
“理解”数学和”会算”数学,区别到底在哪里?本科学的电子信息工程,上过数学课,毕业之后这个问题越来越清楚:会解积分、会对角化矩阵,但说不出群为什么重要,也说不出拓扑到底是什么。计算能力有了,但整体脉络缺失。
布尔巴基学派提供了一种重建全局认识的方式:结构、公理、映射在先,计算在后。核心想法出奇简单:每一个数学对象都是一个带有额外结构的集合。这一个想法就能把所有东西重新组织起来。以下是尝试用这个想法重学数学的笔记。
集合是一切的底座
为什么几乎所有数学定义都以”设 S 是一个集合”开头?因为在布尔巴基的视角下,集合不只是容器,而是承载一切结构的底座。线性空间是集合加上加法和数乘,群是集合加上二元运算,拓扑空间是集合加上一族开集。一旦看到这个模式,一下子就通了。
集合就是一些对象构成的整体。如果 x 属于 A,记作 x∈A。集合不关心顺序,也不重复计数:{1,2,3}={3,2,1},{1,1,2}={1,2}。子集 B⊆A 意味着 B 的每个元素也属于 A:
A⊆B⟺(∀x, x∈A⇒x∈B)
这种”对所有元素施加条件”的定义模式在数学中到处都是。值得一提:空集 ∅ 是任何集合的子集,因为”空集中的每个元素都属于 A“这句话无法被违反,根本没有元素可以违反它。
映射到底是什么?
通常把函数理解成一个表达式,比如 f(x)=x2+1,把数字代进去就行。但这忽略了关键问题。g(x)=1/x 是从 R 到 R 的函数吗?不是,因为 x=0 时没有像。把定义域改成 R∖{0} 才行。映射不是公式,而是两个集合之间的对应关系,在哪里有定义本身就是定义的一部分。
形式上说,映射 f:A→B 对每个 x∈A 指定唯一的 f(x)∈B。三个分类性质很基本。单射:不同输入不会撞到同一个输出(f(x)=x2 就不是单射,因为 f(1)=f(−1))。满射:陪域中每个元素都真正被映到。双射:既单又满。双射是”两个集合一样大”的结构基础,到这里,结构化的语言已经开始显示出它的作用。
等价:分类的机器
一个看似简单但其实很深的问题:什么时候两个东西应该被看成”一样的”?不是相等,而是在当前讨论中”一样”。在 Z 上,如果只关心奇偶性,那么 2 和 4 是”一样的”,但 2 和 3 不是。关系 a∼b⟺a−b 是偶数,恰好刻画了这一点。
等价关系需要三条性质:自反性(a∼a)、对称性(a∼b⇒b∼a)、传递性(a∼b 且 b∼c⇒a∼c)。看起来几乎是显然的,但这个定义承载着很多东西。同样的结构出现在模运算、商群、商拓扑背后。认出这一个模式,不同分支里的很多东西就豁然贯通了。
什么时候运算不是运算?
自然数 N 上的减法看起来很自然。但 2−5=−3,而 −3∈/N。所以减法其实不是 N 上的运算,因为结果跑到集合外面去了。
结构化的视角是:集合 A 上的二元运算是一个映射 ∗:A×A→A。关键词是封闭性,结果必须留在 A 里面。重新表述很简单,但思维方式变了。算术说”减法当然存在”。结构化数学先问”在哪个集合上?”
接下来的问题是:一个运算可以满足哪些性质?结合律:(a∗b)∗c=a∗(b∗c)。交换律:a∗b=b∗a。单位元:某个 e 使得 e∗a=a∗e=a。逆元:对每个 a,存在 b 使得 a∗b=b∗a=e。整数加法全部满足。减法不满足结合律:(5−3)−1=1,而 5−(3−1)=3。
用性质给结构命名
布尔巴基的做法不是逐个研究运算,而是按满足的性质组合来命名结构。半群:有结合律的运算。幺半群:加上单位元。群:加上逆元。再加交换律,就是阿贝尔群。
于是熟悉的对象有了干净的分类。(N,+) 是交换幺半群但不是群(3 在 N 中没有加法逆元)。(Z,+) 是阿贝尔群。(Z,×) 是交换幺半群但不是群(2 在 Z 中没有乘法逆元)。这些不是新事实,而是旧事实被一个统一的原则重新组织了。
为什么数系要不断扩张?
在标准教育中,N→Z→Q→R 看起来像是每种数系就那样”出现”了。但从结构的视角看,每一次扩张都是被迫的。在 N 中,x+3=1 无解。为了让加法可逆,扩展到 Z。在 Z 中,2x=1 无解。为了让乘法(对非零元素)可逆,扩展到 Q。
每一步背后都是同一种结构压力:需要给每个元素补上逆元。负数和分数不是随意发明的,而是被逼出来的。
Z 还展示了两种运算共存时会发生什么。加法构成阿贝尔群,乘法构成交换幺半群,分配律 a(b+c)=ab+ac 把它们绑在一起。这种组合本质上就是环的定义。
什么样的映射值得研究?
并非所有映射都有意义。f:(Z,+)→(Z,+),f(n)=2n。验证:f(m+n)=2(m+n)=2m+2n=f(m)+f(n)。运算在映射中被保持了。再试 g(n)=n+1:g(m+n)=m+n+1,而 g(m)+g(n)=m+n+2。不一致。看起来简单不等于保持结构。
同态是满足 f(a∗b)=f(a)∘f(b) 的映射。先运算再映射,和先映射再运算,结果一样。仅凭这一个条件就能推出很多:单位元必须被送到单位元,逆元必须被送到逆元。
也许最漂亮的例子是指数映射 φ(x)=ex,从 (R,+) 到 (R>0,×)。因为 ex+y=exey,加法被变成了乘法。两个看似完全不同的世界,被一个保持结构的映射联系起来了。
像、核,以及关于奇偶性的意外发现
每个同态 f:G→H 产生两个自然的对象。像 Im(f) 是 H 中真正被映到的部分。核 ker(f)={x∈G∣f(x)=eH} 是被压到单位元的元素集合。
这里有一个小惊喜。定义 ε:(Z,+)→({1,−1},×),ε(n)=(−1)n。这是同态(验证:(−1)m+n=(−1)m(−1)n)。它的核是 2Z,即所有偶数。所以”奇偶性”这个看起来像算术小性质的东西,其实是一个同态的核。这正是结构化数学的特点:在熟悉的事实背后发现深层的结构。
一个干净的定理把这些联系起来:同态是单射当且仅当核只含单位元。核控制着映射中是否有信息丢失。
什么时候两个结构”一样”?
同态加上双射就是同构,记作 G≅H。意思是两个群在结构上完全相同,即使表面看起来完全不同。
(Z,+)≅(2Z,+),通过 f(n)=2n。这两个是不同的集合(1∈Z 但 1∈/2Z),但结构相同。指数映射给出 (R,+)≅(R>0,×):加法世界和乘法世界其实是同一个群换了个面目。反过来,(Z,+)≅(N,+),因为前者是群而后者不是,而同构保持所有结构性质。
同构本身是一个等价关系(恒等映射给出自反性,逆映射给出对称性,复合给出传递性)。所以数学对象可以按同构来分类。这正是现代代数在做的事情:不研究单个对象,而研究同构类。
商:系统性地遗忘
最后一个基础概念是商。当只有部分区别是重要的,其余的就可以被压缩掉。如果只关心奇偶性,Z 压缩成 {[0],[1]}:两个等价类,一个偶数,一个奇数。模 3 给出三个类。模 12 给出时钟。
给定等价关系 ∼ 在 A 上,x 的等价类是 [x]={y∈A∣y∼x}。商集 A/∼ 是所有等价类组成的集合。注意:这是一个新集合,不是子集。它的元素是类,不是原来的元素。子集是从原集合中选取,商集是把原集合压缩成新东西。这个区别很重要。
自然投影 π:A→A/∼ 定义为 π(x)=[x],忘掉类内部的差异。任何映射 f:A→B 都会诱导一个等价关系(x∼y⟺f(x)=f(y)),其等价类就是 f 的纤维。对群同态来说,这直接和核联系起来:a∼b⟺a−b∈ker(f)。核精确地告诉你什么被等同了。这就是商群出现的动机,一旦看到就到处都是。
骨架
一条线索贯穿了所有这些内容:
集合⟶结构⟶同态⟶同构⟶商⟶分类
从集合开始。装上结构。研究保持结构的映射。辨认什么时候两个结构一样。压缩掉非本质差异。对剩下的东西分类。群、环、向量空间、拓扑空间:对象不同,方法论相同。
这就是布尔巴基视角的力量。不在于任何单独的定义,而在于它为整个数学提供了统一的语言。直觉和计算的血肉早就有了。缺的是骨骼。