从后往前看的教科书


用集合论的语言,一个关于集合 A1, A2, … , An 中的元的 n 项关系,定义为集合 A1 × A2 × … × An 的子集 R。对于 a1A1, a2A2, … , anAn,如果 ( a1, a2, … , an ) ∈R,我们就说 a1, a2, … , an满足关系 R

但是这定义其实也是怎么都好。一个关系,就是数学语言中的一个谓语,我们用它来构成一个句子或者说命题的主干部分。最为常见的关系,大概是要数表示相等的“等于”和表示大小的“大于”、“小于”了吧。几乎每一个数学系的学生都会首先学到这两种关系,或者更精确的说,这两种关系中的逻辑结构。

等价关系

如果一个二项关系~满足以下条件,我们就称其为等价关系:

  1. x ~ x
  2. 如果 x ~ y,则 y ~ x
  3. 如果 x ~ yy ~ z,则 x ~ z

相等当然是等价关系。对于任意一个对象 x,所有和 x 等价的对象的全体称为 x等价类。如果这是定义在某个集合 A 上的等价关系,那么等价类把 A 分成几个互不相交的子集。我们把每个等价类看作是一个单独的对象,由这些等价类为元组成的集合称为集合 A 的(关于 ~ 的)商集合

“明白了商集合,就是数学初段。”(XX语)这话很有道理。商集合体现了数学的一个重要特征,那就是一个对象的表示不一定是唯一的。比如说我定义如果两个自然数除以6的余数相同,就称它们同余。同余是一个等价关系。在这个等价关系下,我说“1”怎么怎么样和说“7”怎么怎么样是一个意思,因为我们已经把1和7看成是一样的东西了。我想每个小学生在听到“1 = 0.9999999…”的时候心灵都会受到一定的冲击。在我看来,这个时候对他们解释实数、极限之类,或者小数的分数表示之类,或者小数的加减法之类,都是没有说到点子上。在这件事上我们的心灵受到的冲击是来自于一种原始的直观我们认为在我们的十进制记数系统下每个数的表示都是唯一的,但其实不是的。在我看来正是这种不唯一性让我们感到焦虑不安。在那一瞬间我们开始怀疑自己本能的感觉:我们甚至不知道两个东西是不是相等。

在我上面举的两个例子中,情况还稍微有点不同。比如我们可以规定说,总是用0,1,2,3,4,5来表示除以6的6个同余等价类。我们遇到说7怎么怎么样的时候都自动的把7换成1。对于小数也是一样。我们遇到说0.2199999…怎么怎么样的时候都自动把它换成0.22。我想大多数的普通人都是这么处理的。但是在真正的数学中,这样的“规定”很多时候都不现实而且没有意义,甚至会让论证变的复杂。你要做的是习惯于面对“表示不是唯一的”这样的状况。这种状况的最典型的例子出现在要定义一个商集合到另一个集合的映射的时候。请不要把商集合单纯的理解成“等价类们的集合”,虽然我们确实是这么定义的。除非在很特殊的情况下,等价类通常都是抽象的虚无飘渺很难把握的概念。请把一个集合的商集合理解成,“还是那个集合,只不过把其中的一些元看成是一样的”。所以说一个集合 A 的商集合的元,通常写成 [ a ] 的形式,其中 a 是集合 A 的元而中括号 [ ] 提醒我们现在正在讨论的是另一种等价关系。在不至于引起误解的时候,甚至连中括号都省略。这样你该很容易明白了,要定义集合 A 的一个商集合到另一个集合B的映射,等于说是定义一个从 AB 的映射,满足“等价的两个元的像是相等的”这个条件。这个条件通常被称为well-defined,映射能够正当地被定义的意思。

等价类的一个元有时被称为这个等价类的代表元。如果从每个等价类中都选出一个代表元,这些代表元组成的集合被称为代表系。选取一个代表系的过程相当于上一段开头所说的“规定”的过程。

顺序关系

如果一个二项关系 ≤ 满足以下条件,我们就称其为偏序关系

  1. xx
  2. 如果 xyyx,则 x = y
  3. 如果 xyyz,则 xz

偏序关系是数的大小关系的类似,这种类似的唯一不足之处在于,偏序关系并不保证任意的两个元总可以比较大小。补上这个不足之后的关系称为全序关系

如果在某个集合上定义了一个偏序关系,我们有时会说这是一个偏序集合或这个集合具有偏序结构。有“结构”就有“保持结构不变的映射”。所以对于两个偏序集合 AB,一个从 AB保序映射 f 定义为从 AB 的满足以下条件的映射:
对于 A 中任意两个元 xy,如果 xy,则(在 B 中)有 f ( x ) ≤ f ( y )。

具有非全序的偏序结构的一个典型例子是一个集合 A 的幂集合 ℘ ( A ) ( A 的所有子集组成的集合)上由包含关系 ⊆ 定义的偏序关系。对于任意的映射 f: AB,我们可以定义 f: ℘ ( A ) → ℘ ( B ) 和 f-1: ℘ ( B ) → ℘ ( A ) 分别把 A 的子集 U 映到 f ( U ) 和把 B 的子集 V 映到 f-1 ( V )。(参看前一篇《映射》。)显然这两个映射都是保序映射。但是如果我们还另外在幂集合上考虑 ∩、 ∪ 两项运算,这运算在幂集合上定义了另一种结构(这结构有时叫做“布尔代数”,把布尔代数和包含关系放在一起考虑的结构则称为“lattice”),这时 f-1 仍然是保持这种结构不变的,但 f 就不是了。(仍然参看前一篇《映射》。) f: ℘ ( A ) → ℘ ( B ) 和 f-1: ℘ ( B ) → ℘ ( A ) 有时被称为是由 f: AB 诱导的映射,由于 f-1 是从 ℘ ( B ) 到 ℘ ( A ),所以称为反变,相应的 f 是从 ℘ ( A ) 到 ℘ ( B ) 所以称为共变。诱导、共变、反变云云,都是范畴论的概念,这里就不多说了。

对于一个定义了偏序关系的集合,显然在它的任意子集上也同样定义了偏序关系。这个子集上的偏序关系有时被说成是“子集继承的偏序结构”。如果一个子集继承的偏序结构在这个子集上正好是一个全序,则把这个子集叫做全序子集

我们说 a 是一个偏序集合中的极大元,如果这集合中再没有比 a 更大的元了。极小元也是同样地定义。极大/极小元可能不存在,也可能有好几个。但是显然当这顺序是全序的时候,极大/极小元如果存在就只有一个,称为最大/最小元

在公理化集合论的叙述中,集合 A 到集合 B 的映射被定义为集合 A × B 中满足下列条件的子集 F
“对于 A 中每一个元 a,都唯一存在一个 B 中的元 b,使得 ( a, b ) 是 F 中的元。”
但是这种技术上的定义怎么都好。所谓 AB 的映射就是说对于 A 中每一个元 a,都指定了 B 中的一个元 ba 对应。如果我们把映射记为 f: AB,那么这个对应通常写成 f ( a ) = b 或者 af = b(我们有时会想要把 f 写在 a 的右边,那么就是这样写)。这时我们说 ba 的(关于映射 f 的)。至于映射的技术上的定义的唯一用处,只是在于说明从 AB 的所有映射组成了一个集合。这个集合有时记为 BA

虽然我前面说过,数学中所要讨论的问题——命题,从本质上来说,就是关于某个元是否属于某个集合的问题;但这并不是说数学就是关于各种性质的集合和各种集合的性质的学科。数学,是关于结构和结构保持的映射的学科(MacLane语)。这话的意思是说映射是比集合更基本更重要的概念。说“数学的一切奥秘都隐藏在映射中”(我的话),这话我想一点也不为过。在我看来,数学的一切神秘力量都起因于我们对这个世界的真理的认识的先天的不平等性。我们对有些东西知道的多一些,有的少一些;大概在上帝看来费马大定理和 1 + 1 = 2 是一样显然的,但是在我们看来费马大定理一点也不显然。而数学所做的,一言以蔽之就是把不那么容易理解的东西,“保持它的某些结构不变”,“映射”到我们容易理解的东西上面。我们充分地理解容易理解的东西,然后通过这个映射,(因为它是保持了“某些结构”不变的,)来推测出不容易理解的东西的性质。可以说每发现这样一个映射,我们对这个世界的了解都切实地大大前进了一步。

至于什么是“结构”什么又叫做“保持结构不变”的映射,虽然这在Bourbaki里是有严格的定义的(本来“结构”的概念就是由Bourbaki提出来的;这和同时期法国的“结构主义”哲学究竟有还是没有关联,就不是我所知道的了),但是我们尽可以把结构直观地理解成“集合的元的相互之间的关系”,而说把这个集合映到那个集合的一个映射“保持结构不变”,意思自然是说如果在这个集合里的一些元满足一些关系,那么这些元被映射映到那个集合里去的“像”之间,也同样满足这些关系。

假设有映射 f: ABg: BC,我们显然可以定义一个映射 gf: AC,把任意元 aA 映到 g ( f ( a ) ) ∈C。这叫做映射的“合成”或者“乘法”。有时我们会希望把这乘法写成 fg 的样子,这时我们就说 fg 把任意元 aA 映到 ( af ) gC

命题。映射的合成满足结合律。也就是说假设有映射 f: ABg: BCh: CD,则 h ∘ ( g ∘ f ) = ( h ∘ g ) ∘ f

证明是显然的。这只是把一件显然的事用记号表达出来。逻辑推理虽然只是把一些显然的事连接起来,但是连接的多了就会累了。但是如果把推理变成记号的演算,就不显得那么累。这也算是“把不容易理解的东西化成容易理解的东西”的一例吧。

定义。假设有映射 f: AB,对于 A 的子集 U,把 f ( U ) ⊆ B 定义为 f ( U ) := { xB | ∃uU s.t. f ( u ) = x }。和对于 A 的元的说法一样,我们把 f ( U ) 也称为 U

如果你完全不明白这堆符号的意思,请看前一篇末尾处的记号表。这个定义直译过来就是说, f ( U ) 是由 B 中满足这样条件的元 x 所组成的集合:存在一个 U 中的元 u,使得 u 的像正好是 x。我们喜欢用这样的记号而不是用“把 U 的元通过映射 f 映到 B 得到的所有像的集合”这样的句子来表示,我觉得很大程度上是因为记号的笔画比较少,在黑板上写起来比较容易。但是在电脑上写起来就正好反过来了。不过为了让这文章“看起来像数学”,我还是喜欢时不时用记号。真的,对我们来说,记号更为明确而且通常比文字更易懂。只要在纸上写过几遍,我想你也一定马上会习惯的。

定义。假设有映射 f: AB,对于 B 的子集 V,把 f-1 ( V ) ⊆ A 定义为 f-1 ( V ) := { xA | f ( x ) ∈V }。我们把 f-1 ( V ) 称为 V原像或者逆像。直观说来就是, f-1 ( V ) 是 A 中所有被 f 映到 V 的元的集合。

命题。假设有映射 f: AB
对于 B 的子集 RS,我们有
f-1 ( RS ) = f-1 ( R ) ∪ f-1 ( S ),
f-1 ( RS ) = f-1 ( R ) ∩ f-1 ( S );
对于 A 的子集 PQ,我们有
f ( PQ ) = f ( P ) ∪ f ( Q ),
f ( PQ ) ⊆ f ( P ) ∩ f ( Q )。

证明是容易的。如果你从没有尝试过,请试着证明它。这个命题唯一不那么美好的部分是最后一条 f ( PQ ) ⊆ f ( P ) ∩ f ( Q ) 中的包含关系不能改成等于。这起因于 A 中两个不同的元的像可能会相等。从这个命题也可以看出一些端倪,一般来说,原像的性质常常比像的性质要好。

定义。对于映射 f: AB,如果 f ( A ) = B,则说 f 是一个全射;如果 A 中两个不同的元的像总是不同,则说 f 是一个单射。如果一个映射既是全射也是单射,则称之为全单射一一对应

虽然从定义中完全看不出来,但是在很多情况下全射的概念和单射的概念是有一定的对称性的。这从下面这个命题中可以看出一些迹象:

命题。假设有映射 f: AB。则
f 是单射的充分必要条件是:
对于任意两个映射 g1, g2: LA,只要 fg1 = fg2,就有 g1 = g2
f 是全射的充分必要条件是:
对于任意两个映射 h1, h2: BR,只要 h1f = h2f,就有 h1 = h2

这是一个从范畴论的观点来看的命题。范畴论是一门充分强调映射(或者更广泛的说,保持某种“结构”的映射)在数学中的基础地位的理论,它的口号是所有概念都用映射之间的相互关系(而不是元与集合之间或集合与集合之间的相互关系)来表达。现在大家都说范畴论是和集合论一样基础的理论。至于这个命题本身的证明是容易的。如果你没有试过,请尝试。(我还没有定义什么叫做两个映射相等,不过把两个映射相等理解成它们“把同样的元映到同样的像”,应该是没有任何异议的)

定义。对于任意集合 A,存在一个恒等映射 idA: AA,把每个元映到其自身。显然对于任意的映射 f: AB,我们有 f ∘ idA = idBf = f

这定义看起来似乎完全是没事找事。但是从范畴论的观点来看,我们与其说“一个集合 A”,还不如说“一个恒等映射 idA”。因此从强调映射的角度来看,这也不完全是吃饱了撑的。更重要的是我们需要恒等映射来定义同构的概念:

定义。我们说一个从 AB 的映射(或者更广泛的说,保持某种结构不变的映射) f 是一个同构,当且仅当存在一个从 BA 的(同样保持这种结构不变的)映射 g,满足 gf = idAfg = idB。这时我们把 g 叫做 f。显然逆如果存在,一定是唯一的。

一个从 AB 的(保持某种结构不变的)映射是一个同构,意味着我们把 A 的元对应到 B 中来讨论的对应过程中(仅就所保持的这种结构而言)没有任何信息的丢失或者增加。因此这当然是十分重要的概念。

同构当然是全单射。而仅就单纯的集合之间的映射而言,全单射显然也一定是一个同构(也就是说全单射一定有逆映射)。但是如果我们考虑了某种结构,一个保持这种结构的全单射是否是一个同构,就是另一个问题了。这是因为对于一个保持某种结构的全单射,虽然存在它的一个忽视结构的集合论意义上的逆,但这个逆是否一定也会保持这种结构,这和要考虑的结构有关。比如保持群结构的全单射一定是同构,但是保持偏序结构的全单射就不一定。

集合论之所以是数学的基础,不仅因为它提供了定义各种概念的框架,更因为它完全规定了数学所要讨论的问题的范围——一个“命题”,从本质上来说,就是关于某个元是否属于某个集合的问题。也就是说,从本质上来讲数学的语言里只有一个谓语“属于”,用来描述一个“对象”和一个“集合”的关系。在严密贯彻集合论的逻辑体系里,所谓的“对象”同样也是一个集合。但是通常可以把对象理解成“一个意义明确的东西或一些这种东西组成的集合”。比如说一个自然数 3 ,或者一个字母 x,或者两者的集合 { 3 , x },都算做一个对象。(在严密贯彻集合论的逻辑体系里,我们比如说是这么定义自然数的:上帝说,要有空集合。于是就有了空集合(空集公理)。我们把空集合定义为 0。把集合 { 0 } 定义为 1。把 { 0, 1 } 定义为 2。把 { 0, 1, 2 } 定义为 3。依此类推。上帝看着这是好的,于是把上面定义好的这些东西全体做成了一个集合(无限公理),取名为自然数。)

不管怎么样,我们有了谓语,只要再规定构造名词(集合)的方法,再加上各种连接词(逻辑),就大功告成了。只是为了避免由“不属于自身的所有集合组成的集合”(关于其是否属于自身)所造成的著名悖论,我们需要小心翼翼地规定什么样的东西才能算做集合。除了这一点,我们把集合理解成为“一些对象组成的集体”的直观,通常是没有问题的。我不打算描述这里面的各种逻辑和技术细节,只列出一些常用的定义集合的方法,顺便规定一些记号。

集合的定义方法。

  • { a, b, c }      列举。abc 组成的集合。
  • { xA | 命题 }      集合 A 中满足命题的所有元组成的子集。注意这里有 xAx 属于 A )的限制,这样就可以避免定义出“不属于自身的所有集合组成的集合”之类的东西。
  • ℘ ( A )      幂集合。集合 A 的所有子集组成的集合。
  • AB      非交和。把集合 A 的元和集合 B 的元合在一起看成是一个集合。A 的元与 B 的元总看成是不同的。
  • A × B      笛卡儿积。集合 A 的元 a 与集合 B 的元 b 构成的顺序对 ( a, b ) 全体组成的集合。
  • Aλ ( λΛ )      给集合 Λ 中的每一个元 λ 对应集合 Aλ 中的一个元,所有这样的对应全体组成的集合。如果 Λ = { 1, 2 },这就是 A1A2 的笛卡儿积。因此这可以看成是笛卡儿积的推广版。
  • Aλ ( λΛ )      非交和的推广版。由集合 Λ 中的一个元 λ 和集合 Aλ 中的一个元 aλ 组成的有序对 ( λ, aλ ) 全体所组成的集合。如果 Λ = { 1, 2 },这就是 A1A2 的非交和。
  • AB      集合 A 与集合 B 的合并。
  • AB      集合 A 与集合 B 的交集。
  • AB      集合 A 中不属于集合 B 的元全体组成的子集。

记号。

  • ∅      空集合。
  • xA      x 属于集合 A 。通常集合的元用小写字母 a, b, … ,集合用大写字母 A, B, … ,集合的集合用大写花体字母 A, B, … 来表示。
  • ⊂, ⊃      集合的包含关系。不包括相等。
  • ⊆, ⊇      集合的包含关系。包括相等。
  • A := B      这是“把 A 定义为 B ”的意思。
  • xA 命题      这是“集合 A 中任意一个元 x 都满足命题”的意思。记号 ∀ 是把“All”的首字母倒过来写。
  • xA s.t. 命题      这是“集合 A 中存在一个元 x 满足命题”的意思。记号∃是把“Exist”的首字母倒过来写。s.t. 是 such that 的缩略。(读做“there exists an x in A such that …”)

从前往后写,从后往前看。

这基本上是我的学习笔记。我的打算是从头开始慢慢写,(就像Bourbaki的前言所说)不假定任何预备知识,只需要稍有一些逻辑推理能力就可以看懂的东西。和Bourbaki不同的是,我想我会尽我所能的使用感性的语言。真的我时常会觉得有些失落。数学实在是太不普及了。虽然这是一门从小学起就开始教的课程。每当我张口想说群、环、体的时候都会记起,这居然是只有数学专业才教的词汇。(为什么不把它写进初中教科书呢!?)我不知道有多少人因为迷失在这些陌生的单词里而对数学退避三舍。很多介绍数学知识的文章都尽量避免使用专业词汇,这当然是一种普及的方式。但我想我既然开始了这样一个blog,那就有充分的空间来做准备,让那些抽象名词变得容易亲近起来。也许和许多人的理解相反,我们之所以使用那些奇异的词汇和陌生的语法,是因为这样才比较容易理解。数学家和律师是不同的。数学的目的是建立一种描述这个世界的精确、理性而且容易理解的语言,把人类创造性的灵感最为显著的表达出来。如果你是诗人、小说家或者恋爱中的少年,一定会切身的体会到,我们平常使用的语言是多么的贫乏、无力、暧昧甚至滑稽可笑。真的,不仅在感性方面是如此,理性方面也是一样。或者说更甚。但是和广大的令人尊敬的艺术家们所面临的状况不同,我们在理性的表达方面已经拥有了近乎完美的解决方案,那就是数学的语言。从这方面来说,考虑到文学、音乐、美术等等作为一个人的教养的重要性,数学的普及程度和它所取得的成就相比,实在是大大的落后了。

我写这个的目的是想从头开始回忆整理一遍我所学到的,然后把那些首先从记忆里跳出来的东西写出来。我想正是这里面包含了(我所理解的)数学的精髓。还有一个目的也许是更重要的,那就是我把它们写出来,然后会切身体会到我所知道的是多么的少。

从博客的性质上来讲,如果我从头开始写然后按顺序贴上来,那么首先看到的必然是最后一页。我想我会尽可能地让人即使从最后一页开始读,也能迅速地明白我到底在说什么。但愿如此。

注:Bourbaki据说是普法战争中一个法国将军的名字。做为名词它指当年一群法国数学家的秘密结社,或者他们所编的厚厚一叠味同嚼蜡的教科书。有时它作为形容词来形容高度抽象、没有人情味、精确但冗长难懂的书写数学记号的方式。

« Previous Page