范畴论笔记 现在的是重写的版本, 但在某种意义上更接近于翻译Category Theory (Steve Awodey) 而非笔记了.
翻译术语讨论 翻译这样一本关于范畴论的书籍, 不论如何在术语方面都值得斟酌再三, 我将我的一些选择写在这里.
对于collection, 在某种意义上它其实就是集合论里的class, 只不过在使用时作者又不想太过形式化而已. 也就是说, collection可能指的是set, 也可能指的是proper class. 我有意将collection翻译成了合集 , 许多书籍将其同set一样也翻译为集合, 这不免有时给读者带来疑惑. 当然, 在本书的第一章, 作者Steve Awodey是有意避免一开始就变得technical的, 然而还是不免在第一章的最后讨论了一些数学基础方面的事情.
英文里某些简单表达在中文里没有那么一致的对应, 我有点倾向于机械化翻译, 以使读者能够辨识出来. 当然了, 不机械化的翻译也有很多. 首先是either...or... , 虽然我将其翻译为了要么..., 要么... , 但是这并不意味着这二者只居其一, 实际上就是或者 的意思. 其次是in particular, ... , 它的实际用法相当于接下来要举一个符合情况的但是具体且特殊的例子, 我以前总是将其翻译为特别地, ... , 但是并不通顺, 而且也不容易理解. 现在有时我也会意译, 例如将其翻译为举一个例子, ... .
underlying set 是容易理解的, 大概就是某个结构或者范畴的集合部分, 或者说遗忘了结构而剩下的集合. 不过, 我觉得并不容易翻译妥当, 最终我选择翻译为潜在集 , 我想这不至于引起什么误解. 类似地, 一个结构化集合之间的同态, 在遗忘了结构之后, 可以成为一个潜在函数 .
前言 当我们已经有了Mac Lane的Categories for the Working Mathematician , 为什么还要写一本新的范畴论教科书呢? 简而言之, 因为Mac Lane的书是为工作的数学家准备的. 在范畴论渗透进各种各样的领域并出现在课程里30年之后, 现在需要的是一本供所有人阅读的书籍.
这本书成长于我过去十年间在CMU教授的范畴论课程. 这这段时间里, 我已经为计算机科学, 数学, 逻辑学的本科生和研究生教授了无数的讲座课程或者高级讨论班. 基于本书材料的讲座课程由15个星期每周两节的90分钟讲座构成. 这些讲座(材料)的胚芽是我自己的研究生笔记, 来源于Mac Lane在芝加哥大学所教授的范畴论课程. 在教授我自己的课程时, 我很快发现CMU这里的混合的学生群体和芝加哥大学的数学研究生的需求非常不同, 而我寻找满足这些需求的合适教科书的过程表明现有的文献和学生的需求之间存在严重的沟壑. 我的讲义随着时间逐渐演化以填补这个沟壑, 补充并最终替代了我尝试使用的诸多教材.
我的课程的学生往往没有什么数学背景, 只上过一门离散数学, 以及一些微积分或者线性代数或者是一两门逻辑学课程. 然而, 当学生最终成为计算机科学或者逻辑学的研究者时, 许多人都需要熟悉范畴论的基本概念, 而且是在没有接受许多深入的数学训练的情况下. 数学系的本科生其实也是类似的: 在数学上很有天分, 并且因其与他们之后所需要学习的东西有着明显的联系而备受鼓舞, 尽管如此还是不能跟着Mac Lane的书, 因为他们仍然缺乏必要的数学准备. 我的大多数学生甚至还不知道自由群是什么, 所以说当他们知道这是伴随的一个例子时也不会受到启发.
因此, 这本书意在成为范畴论的教科书和参考, 不仅面向数学系学生, 而且也面向计算机科学, 逻辑学, 语言学, 认知科学, 哲学以及任何需要用到范畴论的领域的研究者和学生. 对于我来说挑战在于能够使得基本定义, 定理, 以及证明技术被这样的读者群体理解, 因此无法假定读者熟悉范畴论在代数学和拓扑学中的主要 (或者说至少是原初的) 应用. 然而这不意味着我会在真空中建立主题, 简单跳过例子和应用. 这种抽象层次的材料在没有应用和例子使之变得鲜活的情况下直接无法理解.
面对这种两难的境地, 我采取了这样的策略. 首先从最开始细致地建立几个基本的例子, 例如偏序集和幺半群, 然后带着这些例子一起, 并在整本书里一直使用它们. 这在教学上有诸多值得提及的优点: 偏序集和幺半群本身就是特殊种类的范畴, 并且在某种意义上代表了一个一般性的范畴所具有的两个维度 (对象和箭头). 诸多范畴里出现的现象当作来源于偏序集或者幺半群的什么东西的泛化来理解是最好的. 从另一个角度来说, 偏序集 (和单调映射) 和幺半群 (和同态) 的范畴提供了两个更进一步的而且又相当不同的范畴的例子, 其可以用来考虑各种各样的概念. 例如, 极限的概念既可以在一个给定的偏序集里考虑, 也可以在偏序集的范畴里考虑.
当然了, 许多偏序集和幺半群之外的其他例子也有处理. 例如, 关于群和范畴的一章建立了群论的最初几步, 直至核, 商群, 以及同态定理, 作为等化子和余等化子的例子. 这里, 以及偶尔别的什么地方 (例如与Stone对偶联系起来), 我有意涵盖了更多的一点数学, 超出了用于刻画手头概念所严格必要的范围. 我的想法在于当一些学生将要参加更加高等的数学课程时, 这些或许是离他们最近的, 因此他们应该能够通过收获一些低垂的果实来从学习范畴论的努力中获益.
尽管所需要的数学预备知识比Mac Lane的书要低得多, (我希望)标准的严格性并没有妥协. 所有重要命题和定理的完整证明都已给出, 只是偶尔常规的引理会留作练习 (然后它们通常被列在一章的最后). 材料的选取是容易的, 存在必须涵盖的标准核心: 范畴, 函子, 自然变换, 等价, 极限和余极限, 函子范畴, 可表, Yoneda引理, 伴随, 以及单子. 这近乎填满了一个课程. 这里所涵盖的唯一算是可选 的话题是笛卡尔闭范畴和λ 演算, 但是这对于计算机科学家, 逻辑学家, 语言学家而言又是必要的. 一些显然更加深入的话题被有意地忽略了: 2-范畴, 意象 (topos) (任何深度上), 幺半范畴. 这些话题在Mac Lane中得到处理, 而学生在完整参与这个课程之后应该有能力阅读此书.
第1章 范畴 第1.1节 引论 什么是范畴论? 作为第一次近似, 我们可以说范畴论是对于函数的代数 的研究. 正如群论是对于集合的置换或者几何对象的对称变换这一类系统的思想的抽象, 范畴论来源于一些对象之间的函数所构成的系统的理念.
我们将复合g ∘ f 想成是某种函数f 和g 的积 , 然后考虑由函数的合集所引申出的那种抽象代数 . 一个范畴正是这样一种代数 , 其由对象A , B , C , … 和箭头f : A → B , g : B → C , … 构成, 而且箭头在函数复合之下封闭并满足一些对于函数复合而言十分典型的特定条件. 精确的定义在本章的之后给出.
欠一张图 作为抽象代数的分支, 范畴论的发明遵循着Felix Klein的Erlanger纲领 的传统, 作为一种基于数学结构之间的可容许 (admissible) 变换 来对于不同数学结构进行研究和刻画的方法. 范畴这种一般性的概念提供了对于保持结构的变换 这一想法的刻画, 并由此提供了对于承载这样的变换的一类结构的刻画.
这个学科的历史发展大致如下:
1945: Eilenberg和Mac Lane的General theory of natural equivalences 是原初的论文, 这是对于范畴论的最早描述. 1940年代末: 主要的应用最初是代数拓扑, 特别是同调论和抽象代数. 1950年代: A. Grothendieck et al.开始使用范畴论, 在代数几何领域取得了极大的成功. 1960年代: F. W. Lawvere和其他人开始应用范畴论于逻辑学, 揭示了一些深刻而令人意外的联系. 1970年代: 范畴论的应用已经出现于计算机科学, 语言学, 认知科学, 哲学, 以及其他诸多领域. 关于这个领域的一件非常引人注目的事情在于其有着如此广阔的应用. 事实上, 它就像集合论一样是一种普遍性的数学语言. 由于拥有各种各样的应用, 范畴论往往也能揭示不同领域之间的特定联系——就像逻辑和几何. 举个例子, 伴随函子 这一重要概念在逻辑中以存在量化子出现, 在拓扑中则以沿着连续函数取像 (image) 的运算出现. 从范畴的角度而言, 这些本质上是相同的操作.
实际上, 伴随函子应该是读者学习本书时所应该掌握的主要东西之一. 这个纯粹范畴论的概念已经被证明是第一级的概念工具——其重要性可与连续函数的想法比肩.
实际上, 正如拓扑空间的想法起源于其与连续函数的联系, 范畴的概念是为了定义什么是函子而产生的, 至少根据范畴论的发明者之一的说法是这样. 故事还可以继续下去, 函子的概念是为了定义自然变换而产生的. 我们或许还可以继续下去, 自然变换是为了定义伴随而生的:
诚然如此, 而这给出了本书的大纲.在正式学习之前, 或许我们应该问问为什么范畴论有着如此广泛而深远的应用. 既然我们说过其实函数的抽象理论, 所以说答案就是:
函数无处不在!
并且哪里有函数, 哪里就有范畴. 的确如此, 也许这个学科应该叫做抽象函数论 , 或者更好的名字是: 箭术(archery) .第1.2节 集合之间的函数 我们从考虑集合之间的函数开始. 我不打算在这里说明什么是函数, 就像我也不会说明什么是集合一样, 转而我们将会默认读者拥有对于这些术语的实际可行的理解. 它们实际上可以使用范畴论来定义 , 但是这并非我们在这里的目的.
令f 是从一个集合A 到另一个集合B 的一个函数, 我们记作f : A → B . 以显式的语言来说, 这意味着f 定义在整个的A 上而f 的所有值都在B 之中. 以集合论术语而言, 就是range ⁡ ( f ) ⊆ B . 现在设我们也有一个函数g : B → C ,欠一张图 那么存在着一个作为复合的函数g ∘ f : A → C , 由(1.1) ( g ∘ f ) ⁡ ( a ) = g ⁡ ( f ⁡ ( a ) ) , a ∈ A (1.1) 给出. 现在这个函数复合的运算∘ 是结合性的, 在于如果我们还有一个函数h : C → D 欠一张图 并构成h ∘ g 和g ∘ f , 那么我们像以上图表所指示的那样比较( h ∘ g ) ∘ f 和h ∘ ( g ∘ f ) . 实际上, 这两个函数总是等同的,( h ∘ g ) ∘ f = h ∘ ( g ∘ f ) 因为对于任意的a ∈ A , 我们有( ( h ∘ g ) ∘ f ) ⁡ ( a ) = h ⁡ ( g ⁡ ( f ⁡ ( a ) ) ) = ( h ∘ ( g ∘ f ) ) ⁡ ( a ) 这使用了(1.1).
顺便值得一提的是, 两个函数相等的含义: 对于每个参数, 它们有着相同的值.
最后, 注意到每个集合A 都拥有一个恒等函数1 A : A → A 其由1 A ⁡ ( a ) = a 给出.
这些恒等函数表现为复合运算∘ 的单位元 , 抽象代数意义下的. 也就是说, 对于任意的f : A → B , 我们有f ∘ 1 A = f = 1 B ∘ f .
欠一张图 所有这些关于集合之间的函数的性质是我们想要对于函数的抽象 概念所考虑的: 复合与恒元. 因此, 可以说现在我们想要抽象掉 其他所有东西, 这正是由以下定义所完成的.
第1.3节 范畴的定义 定义1.1. 一个
范畴 由以下数据构成:
对象 : A , B , C , … 箭头 : f , g , h , … 对于每个箭头f , 可以给出两个对象dom ⁡ ( f ) , cod ⁡ ( f ) 其被称为f 的定义域(domain) 和陪域(codomain) . 我们记f : A → B 以指明A = dom ⁡ ( f ) 而B = cod ⁡ ( f ) . {译注: 定义域和陪域是一个箭头所内蕴的信息.} 给定箭头f : A → B 和g : B → C , 即满足cod ⁡ ( f ) = dom ⁡ ( g ) 那么可以给出一个箭头g ∘ f : A → C 其被称为f 和g 的复合(composite) . 对于每个对象A , 可以给出一个箭头1 A : A → A 其被称为A 的恒等箭头(identity arrow) . 这些数据必须满足以下法则:
结合性:( h ∘ g ) ∘ f = h ∘ ( g ∘ f ) 对于所有f : A → B , g : B → C , h : C → D 成立. 单位元:f ∘ 1 A = f = 1 B ∘ f 对于所有f : A → B 成立. 一个范畴可以是满足这个定义的
任意东西 ——并且很快我们就要拥有大量的例子. 暂时我想要强调的是, 和
第1.2 节 中的情况不同, 对象不必是集合, 箭头也不必是函数. 一个范畴在这种意义下是函数或者说
箭头 (有时也称为
态射 ) 的一个
抽象 代数, 以复合运算
∘ 为原语. 如果你熟悉群, 那么你或许可以将一个范畴想成是某种一般化了的群.
第1.4节 范畴的例子 我们已经遇到过了集合和函数的范畴Sets . 这里也有另一个范畴Sets fin 其由所有的有限集合以及其间函数构成. 诚然, 还有许多像这样的范畴, 其由限制能够成为对象的集合与能够成为箭头的函数给出. 例如, 取有限集合为对象而单射函数为箭头. 既然单射函数的复合仍是单射函数, 并且恒等函数是单射的, 所以说这也给出了一个范畴. 如果我们取集合为对象而取满足以下条件的函数f : A → B 为箭头: 对于每个b ∈ B , 子集f − 1 ⁡ ( b ) ⊆ A 至多只有两个元素 (而不是一个), 这仍然是一个范畴吗? {译注: 显然不是, 因为这样的函数对于复合运算不封闭.} 若取f − 1 ⁡ ( b ) 有限的函数呢? 无限的情况呢? 存在着许多这样的由集合与函数构成的限制范畴. 另一种我们经常在数学中见到的例子是结构化集合(structured set) 的范畴, 即由带有更进一步结构 的集合和保持这结构 的函数构成的范畴, 其中这些概念以某种独立的方式确定. 你可能会熟悉的这类例子有群和群同态; 向量空间和线性映射; 图和图同态; 实数集ℝ 和连续函数ℝ → ℝ ; 开集U ⊆ ℝ 和定义于其上的连续函数f : U → V ⊆ ℝ ; 拓扑空间和连续映射; 可微流形和光滑映射; 自然数集ℕ 和所有的递归函数ℕ → ℕ , 或者就像连续函数的例子一样, 我们可以取定义于子集U ⊆ ℕ 上的部分递归函数; 偏序集和单调函数. 即便你还不熟悉以上的其中一些例子, 也请不要担心, 暂且让我们仅是更细致地考虑以上的最后一个例子. 一个偏序集 (partially ordered set) 或者说poset 是一个装备了一个二元关系a ≤ A b 的集合A , 其对于所有的a , b , c ∈ A 满足以下条件:自反性: a ≤ A a ; 传递性: 如果a ≤ A b 且b ≤ A c , 那么a ≤ A c ; 反对称性: 如果a ≤ A b 且b ≤ A a , 那么a = b . 例如, 装备有通常的序关系a ≤ b 的实数集ℝ 构成了一个偏序集, 其也是线性(linearly) 序的: 对于任意的x , y , 要么x ≤ y , 要么y ≤ x . {译注: 亦可兼而有之, 当且仅当x = y 时.} 从一个偏序集A 到一个偏序集B 的一个箭头是一个函数m : A → B 其为单调的(monotone) , 意即对于所有的a , a ′ ∈ A , 我们有a ≤ A a ′ 可以推出 m ⁡ ( a ) ≤ B m ⁡ ( a ′ ) . 要使得这成为一个范畴需要满足什么条件呢? 我们需要知道1 A : A → A 是单调的, 但这是显然的, 因为a ≤ A a ′ 可以推出a ≤ A a ′ . 我们也需要知道, 如果f : A → B 和g : B → C 是单调的, 那么g ∘ f : A → C 也是单调的. 这同样成立, 因为a ≤ a ′ 可以推出f ⁡ ( a ) ≤ f ⁡ ( a ′ ) 可以推出g ⁡ ( f ⁡ ( a ) ) ≤ g ⁡ ( f ⁡ ( a ′ ) ) 可以推出( g ∘ f ) ⁡ ( a ) ≤ ( g ∘ f ) ⁡ ( a ′ ) . 因此, 我们有偏序集和单调函数的范畴Pos . 到目前为止我们已经考虑了的范畴是有时叫做具体范畴(concrete category) 的东西的例子. 非形式化地说, 存在着这样的范畴, 其对象是集合, 可能装备有某种结构, 而箭头是特定的函数, 可能保持结构 (我们将在之后看到这个想法并非逻辑一致的; 见评注1.7). 但是, 实际上一种理解范畴论的方式全然在于不用元素 (doing without elements) 而代之以箭头. 让我们来看看一些例子, 其中这种观点并不仅是可选的, 而是不可避免的. 令Rel 是以下范畴: 取集合为对象而二元关系为箭头. 也就是说, 一个箭头f : A → B 是一个任意的子集f ⊆ A × B . 一个集合A 上的恒等箭头即是恒等关系,1 A = { ( a , a ) ∈ A × A | a ∈ A } ⊆ A × A . 给定R ⊆ A × B 和S ⊆ B × C , 我们可以根据( a , c ) ∈ S ∘ R 当且仅当 ∃ b . ( a , b ) ∈ R & ( b , c ) ∈ S 定义复合S ∘ R , 即R 和S 的关系积 (relative product) . 我们将表明Rel 确为一个范畴的工作留作练习. (要做什么呢?) 要举另外一个箭头并非函数 的范畴的例子, 令对象为有限集合A , B , C 而一个箭头F : A → B 是一个由自然数构成的矩阵F = ( n i , j ) i < a , j < b , 其中a = | A | 而b = | B | . 符号| C | 表示一个集合C 的元素数目. 箭头的复合无非是通常的矩阵乘法, 而恒等箭头即是通常的单位矩阵. 这里的对象的目的仅是为了保证矩阵乘法有定义, 但是矩阵并非对象之间的函数. 有限范畴 当然了, 范畴的对象也不必是集合. 以下是一些非常简单的例子:范畴1 模样如下:⁎ 其有一个对象和一个该对象的恒等箭头, 恒等箭头我们没有画出来. 范畴2 模样如下:⁎ → ⋆ 其有两个对象, 必要的恒等箭头, 以及恰好一个(不同)对象之间的箭头. 范畴3 模样如下:欠一张图 其有三个对象, 必要的恒等箭头, 恰好一个从第一个对象到第二个对象的箭头, 恰好一个从第二个对象到第三个对象的箭头, 以及恰好一个从第一个对象到第三个对象的箭头 (因而其为前两个箭头的复合). 范畴0 模样如下: 其既没有对象, 也没有箭头. 和上面一样, 从现在开始绘制范畴时我们都会省略恒等箭头. 描述有限范畴是容易的——只需要取一些对象并在这些对象之间放置箭头, 但是请务必保证放置了由范畴论的公理所要求的必要的恒等箭头还有复合. 而且, 如果存在任何的环路 (loop) 的话, 那么我们就需要通过等式来截断环路以保持范畴的有限性. 例如, 考虑以下描述:A ⇄ g f B 除非我们明确规定诸如g ⁢ f = 1 A 这样一个等式 {译注: 大概还需要规定f ⁢ g = 1 B }, 不然我们就会拥有无穷多的箭头: g ⁢ f , g ⁢ f ⁢ g ⁢ f , g ⁢ f ⁢ g ⁢ f ⁢ g ⁢ f , … . 当然, 这仍然是一个范畴, 但并非一个有限 范畴. 本章之后讨论自由范畴时, 我们还会回到这个(无限的)情况上来.范畴论的一个重要口号是箭头才是真正重要的东西!
因此, 我们也应该检视范畴之间的箭头或者映射 . 范畴的同态 被称为函子. 定义1.2. 范畴
C 和范畴
D 之间的一个
函子 F : C → D 是一个从对象到对象而从箭头到箭头的映射, 其满足
F ⁡ ( f : A → B ) = F ⁡ ( f ) : F ⁡ ( A ) → F ⁡ ( B ) ;F ⁡ ( 1 A ) = 1 F ⁡ ( A ) ;F ⁡ ( g ∘ f ) = F ⁡ ( g ) ∘ F ⁡ ( f ) .换言之,
F 保持定义域和陪域, 恒等箭头, 以及复合. 因此, 一个函子
F : C → D 给出了某种
C 于
D 中的(可能扭曲的)
图景(picture) .
欠一张图 现在, 我们可以轻易地看出函子能够按照预期的方式复合, 而每个范畴
C 都拥有一个恒等函子
1 C : C → C . 于是, 我们有了另一个范畴的例子, 叫做
Cat , 其是由所有的范畴和函子构成的范畴.
一个预序(preorder) 是一个装备了一个满足自反性和传递性的二元关系p ≤ q 的集合: a ≤ a , 并且如果a ≤ b 且b ≤ c , 那么a ≤ c . 任意的预序P 都可以被视为一个范畴, 只需要取对象为P 的元素而两个元素之间唯一可能的箭头是(1.2) a → b 当且仅当 a ≤ b . (1.2) ≤ 的自反和传递条件保证了这的确是一个范畴. 从另一个方向上来说, 如果一个范畴满足其任意两个对象之间至多只有一个箭头, 那么其就确定了一个预序, 只需要根据(1.2)来定义一个对象上的二元关系≤ 即可. 一个偏序集显然是一个满足额外的反对称条件的预序: 如果a ≤ b 且b ≤ a , 那么a = b . 因此, 一个偏序集也是一个范畴. 这样的偏序集范畴(poset category) 很是常见; 例如, 对于任意的集合X , 幂集P ⁡ ( X ) 在通常的X 的子集U , V 之间的包含关系U ⊆ V 下是一个偏序集. 偏序集范畴P 和Q 之间的函子F : P → Q 是什么样的呢? 其必须满足恒等律和复合律... 显然, 这些只是之前已经考虑过了的单调函数. 将一个范畴想成是某种广义偏序集(generalized poset) 常常是有用的, 也就是带有比p ≤ q 带有更多结构 的东西. 因此, 我们也可以将函子想成是某种广义单调映射. 来源于拓扑的一个例子 : 令X 是一个以O ⁡ ( X ) 为开集族的拓扑空间. 以包含关系排序, O ⁡ ( X ) 就成了一个偏序集范畴. 而且, X 的点可以根据特殊化程度(specialization) 进行预序化, 通过设置x ≤ y 当且仅当对于每个开集U , x ∈ U 可以推出y ∈ U , 也就是y 包含于每个包含x 的开集之中. 如果X 是充分分离的 (T 1 ), 那么这个序关系是平凡的, 但是其他情况下可能会变得相当有趣, 例如对于代数几何和指称语义的空间而言. 作为练习, 请证明T 0 空间在此特殊化序下实际上是偏序集. {译注: 特殊化程度可以这么理解, 因为包含y 的开集比包含x 的开集更多, 所以y 比x 更加特殊.}来源于逻辑的一个例子 : 给定一个逻辑演绎系统, 存在一个与之相关的证明范畴(category of proofs) , 其中的对象为公式:φ , ψ , … 从φ 到ψ 的一个箭头是一个从(uncanceled)假设φ 到ψ 的推导.φ ⋮ ψ 箭头的复合即将这样的推导以显然的方式并置, 当然这是结合性的. (恒等箭头1 φ 应该是什么呢?) 我们观察到可以存在诸多不同的箭头p : φ → ψ 因为或许存在着诸多不同的证明. 这种范畴实际上有着丰富的结构, 之后我们将与λ 演算一起考虑.来源于计算机科学的一个例子 : 给定一个函数式语言L , 存在一个与之相关的范畴, 其对象是L 的数据类型, 而箭头是L 的可计算函数 (进程 (process) , 过程 (procedure) , 程序 (program) ). 两个这样的程序的复合X → f Y → g Z 由应用g 于f 的输出得到, 有时亦记作g ∘ f = f ; g . 恒等箭头即什么也不做 (do nothing) 的程序. 这样的范畴对于编程语言的指称语义的想法而言是基本的. 例如, 如果C ⁡ ( L ) 是刚才定义的范畴, 那么语言L 于一个Scott domain的范畴D 中的指称语义不过就是一个函子S : C ⁡ ( L ) → D 因为S 赋予了L 的类型以domain, 而程序以连续函数. 这个例子和前一个例子都和我们之后要考虑的笛卡尔闭范畴 (cartesian closed category) 的概念有关. {译注: 这里的domain有特殊的含义, 其来源于指称语义的理论, 并不是(函数或者箭头的)定义域或者(逻辑学的)论域的意思, 故我倾向于保留原文不动.}令X 是一个集合. 我们可以将X 当作一个范畴Dis ⁡ ( X ) , 其取X 的元素为对象而箭头仅是必要的恒等箭头, 也就是对于每个x ∈ X 都有一个. 这种箭头仅是恒等箭头的范畴被称为是离散的(discrete) . 注意到离散范畴非常不过是非常特殊的偏序集. 一个幺半群(monoid) (有时也被称为semigroup with unit ) 是一个集合M , 其装备了一个二元运算⋅ : M × M → M 和一个突出的单位元 u ∈ M , 满足对于所有的x , y , z ∈ M , 都有( x ⋅ y ) ⋅ z = x ⋅ ( y ⋅ z ) 和u ⋅ x = x = x ⋅ u 成立. 等价地, 一个幺半群不过就是一个仅有一个对象的范畴. 这个范畴的箭头即是幺半群的元素. 特别地, 恒等箭头即是单位元素u . 箭头的复合即是幺半群的二元运算m ⋅ n . 幺半群是非常普遍的. 这里有数字构成的幺半群, 例如装备了加法和0 或者乘法和1 的ℕ , ℚ , 还有ℝ . 不过, 对于任意的集合X , 由所有从X 到X 的函数构成的集合, 记作Hom Sets ⁡ ( X , X ) 在复合运算下也是一个幺半群. 更一般地, 对于任意范畴C 中的对象C , 从C 到C 的箭头的集合, 记作Hom C ⁡ ( C , C ) , 在C 的复合运算下是一个幺半群. 既然幺半群是结构化集合, 那么存在一个范畴Mon , 其对象是幺半群而箭头是保持幺半群结构的函数. 更细致地说, 一个从幺半群M 到幺半群N 的同态是一个函数h : M → N , 其满足对于所有的m , n ∈ M , 都有h ⁡ ( m ⋅ M n ) = h ⁡ ( m ) ⋅ N h ⁡ ( n ) 和h ⁡ ( u M ) = u N 成立. 我们观察到一个从M 到N 的幺半群同态和一个从被视为范畴的M 到被视为范畴的N 的函子是相同的东西. 在这种意义下, 范畴也是广义的幺半群 (generalized monoid), 而函子是广义的同态. 第1.5节 同构 定义1.3. 在任意的范畴C 中, 一个箭头f : A → B 被称为一个同构(isomorphism) , 如果存在另一个箭头g : B → A 满足g ∘ f = 1 A 且 f ∘ g = 1 B . 既然逆是唯一的 (请证明!), 我们记g = f − 1 . 我们称A 同构于B , 记作A ≅ B , 如果它们之间存在一个同构.
同构的定义我们第一个对于重要的概念进行抽象 的范畴论式的定义的例子. 抽象的含义在于其只使用了范畴论的概念, 而并不诉诸于关于对象和箭头的一些额外信息. 相较于其他可能的定义, 其优点在于它适用于任意的范畴. 例如, 人们有时将集合 (幺半群, 等等) 的同构定义为双射(bijective) 函数 (相应地, 双射的同态), 即满足1-1和onto 的东西——这用到了对象的元素 . {译注: 1-1和onto 是英语曾经对于单射和满射的表达, 但是自从Bourbaki学派兴起之后, 一般人都用injective和surjective了.} 在某种情形下, 这等价于 我们的定义, 例如集合和幺半群. 但是我们也应该注意到, 例如在Pos 之中, 非同构的偏序集之间也存在着双射的同态 . 而且, 在诸多情形之下, 只有 抽象的定义能够成立 (make sense), 例如将幺半群视为范畴的情形.
定义1.4. 一个群(group) G 是一个幺半群, 其每个元素g 都有一个逆g − 1 . 因此, G 是一个只有一个对象的范畴, 其每个箭头都是一个同构.
自然数集ℕ 在加法或者乘法下都不能构成一个群, 但是整数集ℤ 在加法下能够形成一个群, 正有理数集ℚ + 在乘法下也能够形成一个群. 对于任意的集合X , 我们有由X 的自同构 (或者说置换 ) 构成的群Aut ⁡ ( X ) , 即由同构f : X → X 构成的群. (为什么这在∘ 下封闭?) 一个置换群(group of permutations) 是对于某个集合X 而言的子群G ⊆ Aut ⁡ ( X ) , 也就是由X 的(某些)自同构构成的群. 因此, 集合G 必须满足以下条件:
X 上的恒等函数1 X 在G 之中.如果g , g ′ ∈ G , 那么g ∘ g ′ ∈ G . 如果g ∈ G , 那么g − 1 ∈ G . 一个群的同态 h : G → H 不过就是一个幺半群同态, 由此则必然保持逆 (请证明!).
现在请让我们考虑以下关于抽象群的基本而经典的结果.
定理. (Cayley). 每个群G 都同构于一个置换群.
证明. (证明大纲)
首先, 定义G 的Cayley表示G ‾ 为以下的集合的置换的群: 这个集合就是G 自身, 而对于每个元素g ∈ G , 我们有置换g ‾ : G → G , 其定义于所有h ∈ G 之上, 相当于作用于左 (acting on the left) :g ‾ ⁡ ( h ) = g ⋅ h . 这的确是一个置换, 因为其有着g − 1 的作用为逆. 接着, 根据i ⁡ ( g ) = g ‾ 定义同态i : G → G ‾ , 而根据j ⁡ ( g ‾ ) = g ‾ ⁡ ( u ) 定义同态j : G ‾ → G . 最后, 表明i ∘ j = 1 G ‾ 而j ∘ i = 1 G . ◻
警告1.5. 注意到Cayley定理的证明之中存在着两种不同层次的同构. 我们既有由G 的元素构成的集合的置换, 其是Sets 中的同构, 也有G 和G ‾ 之间的同构, 其在由群和群同态构成的范畴Groups 之中.
Cayley定理言称任意的抽象群都可以由某个具体 群所表示, 即某个集合的一个置换群. 实际上, 这个定理可以被推广以表明任意不太大 (too big) 的范畴都可以由一个具体 范畴表示, 即一个由集合和函数构成的范畴. (不太大 的技术性含义于第1.8 节 引入.)
定理1.6. 每个以箭头的集合为态射类的范畴C 都同构于一个以集合为对象而函数为箭头的范畴. {译注: 每个以箭头的集合为态射类的范畴C 的原文是every category C with a set of arrows , 这里译者采取了意译而非直译. 换言之, 即范畴C 是小范畴.}
证明. (证明大纲) 定义
C 的Cayley表示
C ‾ 为以下具体范畴:
对象是每个具有形式C ‾ = { f ∈ C | cod ⁡ ( f ) = C } 的集合, 其中C ∈ C ; 箭头是对于C 中的每个箭头g : C → D 而言的函数g ‾ : C ‾ → D ‾ 其定义于C ‾ 中的任意箭头f : X → C 之上, 由g ‾ ⁡ ( f ) = g ∘ f 给出.欠一张图 ◻
第1.6节 范畴的构造 既然我们有了一些可以摆弄的范畴, 现在我们可以考虑一些从旧范畴产生新范畴的构造了.
两个范畴之积 , 记作C × D 其有着形式为( C , D ) 的对象, 其中C ∈ C 且D ∈ D , 而有着形式为( f , g ) : ( C , D ) → ( C ′ , D ′ ) 的箭头, 其中f : C → C ′ ∈ C 而g : D → D ′ ∈ D . 复合和单位元都是逐分量定义的, 即( f ′ , g ′ ) ∘ ( f , g ) = ( f ′ ∘ f , g ′ ∘ g ) 1 ( C , D ) = ( 1 C , 1 D ) 存在着两个显然的投影函子(projection functor) C ← π 1 C × D → π 2 D 其由π 1 ⁡ ( C , D ) = C 和π 1 ⁡ ( f , g ) = f 定义, 而π 2 是类似的. 熟悉群论的作者应该能够识别出来, 对于群G 和H , 其积范畴G × H 不过是通常的群的(直)积. 一个范畴C 的相反(opposite) (或者说对偶 (dual) ) 范畴C op 和C 有着相同的对象, 而C op 中的一个箭头f : C → D 是C 中的一个箭头f : D → C . 也就是说, C op 不过就是将C 中的所有箭头在形式上调转方向而已. 使用一种记号将C 中的对象和C op 中的相同对象进行区分是方便的, 箭头亦是如此. 因此, 让我们将C 中的f : C → D 在C op 中的相应箭头记为f ⁎ : D ⁎ → C ⁎ . 以此记号, 我们可以基于C 中的复合和单位元来定义C op 中的相应运算, 即1 C ⁎ = ( 1 C ) ⁎ f ⁎ ∘ g ⁎ = ( g ∘ f ) ⁎ 因此, C 中的一个图表欠一张图 在C op 中看起来就像以下图表欠一张图 诸多数学的对偶性 定理不过是表达了一个范畴是另一个范畴的相反范畴(的一个子范畴). 这种定理的一个例子是我们之后要证明的Sets 对偶于完备原子布尔代数的范畴. 一个范畴C 的箭头范畴 C → 以C 的箭头为对象, 而C → 中一个从f : A → B 到f ′ : A ′ → B ′ 的箭头g 是一个交换方块 欠一张图 其中的g 1 和g 2 是C 中的箭头. 也就是说, 这样一个箭头是C 中的一对箭头g = ( g 1 , g 2 ) , 其满足g 2 ∘ f = f ′ ∘ g 1 . 一个对象f : A → B 上的恒等箭头1 f 是序对( 1 A , 1 B ) . 箭头的复合是逐分量进行的:( h 1 , h 2 ) ∘ ( g 1 , g 2 ) = ( h 1 ∘ g 1 , h 2 ∘ g 2 ) 读者应该绘制相应的交换图表来验证这的确能够成立. 观察到这里存在着两个函子:C ← dom C → → cod C {译注: 函子dom 的定义为dom ⁡ ( f : A → B ) = A 而dom ⁡ ( g ) = g 1 , 其中g = ( g 1 , g 2 ) ; 函子cod 的定义与dom 类似.} 一个范畴C 于一个对象C ∈ C 上的切片范畴(slice category) C / C 拥有对象: 所有满足cod ⁡ ( f ) = C 的箭头f ∈ C ; 箭头: 从f : X → C 到f ′ : X ′ → C 的一个箭头a 是C 中的一个箭头a : X → X ′ , 其满足f ′ ∘ a = f , 如下图所示欠一张图 恒等箭头和复合继承自C , 这与箭头范畴的情况类似. 注意到存在着一个函子U : C / C → C , 其遗忘了基对象C . 如果g : C → D 是任意的箭头, 那么存在着一个复合函子g ⁎ : C / C → C / D 其由g ⁎ ⁡ ( f ) = g ∘ f 定义欠一张图 而对于C / C 中的箭头也是类似的. 显然, 整个构造是一个函子C / ( − ) : C → Cat 读者可以轻易验证这个事实. 和Cayley表示相比, 这个函子给出了C 作为由范畴和函子构成的范畴的一种表示 ——而非由集合与函数构成的范畴. 当然了, Cayley表示不过就是其接着一个遗忘函子U : Cat → Sets , 其取范畴为它潜在 (underlying) 的对象集. {译注: 这个遗忘函子将Cat 里的箭头, 即范畴间的函子, 变为潜在对象集之间的函数.} 如果C = P 是一个偏序集范畴而p ∈ P , 那么P / p ≅ ↓ ⁡ ( p ) 切片范畴P / p 不过就是主理想 ↓ ⁡ ( p ) , 其由所有满足q ≤ p 的元素q ∈ P 构成. 我们很快还会遇到更多切片范畴的例子. 一个范畴C 在一个C 的对象C 下的余切片范畴(coslice category) C / C 以所有满足dom ⁡ ( f ) = C 的C 中箭头f 为对象, 而一个从f : C → X 到f ′ : C → X ′ 的箭头是一个箭头h : X → X ′ , 其满足h ∘ f = f ′ . 读者现在应该仿照切片范畴的定义来展开剩余的关于余切片范畴的定义. 如何根据切片范畴和相反构造来定义余切片范畴呢? 例子1.8. 带点集合(pointed set) 的范畴
Sets ⁎ 以带有一个突出元素
a ∈ A 的集合
A 为对象, 而箭头
f : ( A , a ) → ( B , b ) 则是保持
点 的函数
f : A → B , 即
f ⁡ ( a ) = b . 这同构于一个余切片范畴, 即
Sets ⁎ ≅ 1 / Sets 其中
1 是任意的单元集
{ ⁎ } . 诚然如此, 函数
a : 1 → A 唯一地与元素
a ⁡ ( ⁎ ) = a ∈ A 相对应, 而箭头
f : ( A , a ) → ( B , b ) 恰与交换三角形
欠一张图 相对应.
第1.7节 自由范畴 自由幺半群 (free monoid). 我们从一个字母 a , b , c , … 的表 (alphabet) A 开始, 即一个集合A = { a , b , c , … } . A 上的一个词(word) 是一个字母的有限序列:thisword , categoriesarefun , asddjbnzzfj , … 我们将空词记为- . A 的Kleene闭包 被定义为集合A ⁎ = { A 上的词 } . 我们定义一个A ⁎ 上的二元运算⁎ 为w ⁎ w ′ = w w ′ , 其中词w , w ′ ∈ A ⁎ . 因此, ⁎ 不过就是拼接(concatenation) . 于是, 运算⁎ 是结合性的, 并且空词- 是其单位元. 所以说, A ⁎ 是一个幺半群——其被称为集合A 上的自由幺半群(free monoid) . 元素a ∈ A 可以被视为长度为一的词, 也就是说我们有了一个函数i : A → A ⁎ 其定义是i ⁡ ( a ) = a , 并被称为生成元的嵌入 (insertion of generators) . 我们说A 的元素生成 了这自由范畴, 其意在于每个w ∈ A ⁎ 都是a 的一个⁎ 积, 即对于A 中的某些a 1 , a 2 , … , a n 我们有w = a 1 ⁎ a 2 ⁎ ⋯ ⁎ a n . {译注: 嵌入是自动的, 没有以额外的符号标示.}
现在我们想问的是这里的自由 是什么意思? 能猜一下吗? 有时读者会在宝宝代数 (baby algebra) 书籍中看到其定义以如下文字呈现:
一个幺半群M 由M 的一个子集A 自由生成 , 如果其满足以下条件:
每个元素m ∈ M 都可以写成A 的元素之积:m = a 1 ⋅ M … ⋅ M a n , a i ∈ A . 没有非平凡 (nontrivial) 的关系可以在M 中成立, 即若a 1 ⁢ … ⁢ a j = a 1 ′ ⁢ … ⁢ a k ′ , 那么这是由幺半群的公理所要求的. 第一个条件有时被称为没有垃圾 (no junk) , 而第二个条件有时被称为没有杂讯 (no noise) . 因此, A 上的自由幺半群是一个包含A 且既无垃圾也无杂讯的幺半群. 你对于该自由幺半群的定义作何感想呢?我反对这第二个条件所涉及的可证明性 (provability) 或者其他什么. {译注: 译者也不太能完全理解这句话, 大概的意思就是第二个条件太过模糊, 编写证明时难以使用.} 欲使其作为定义而成功, 那么其就必须变得更加精确. 在范畴论中, 我们可以给出自由 的精确定义——其捕获了上述内容的实质——但是避免了这种模糊.
首先, 每个幺半群N 都有一个潜在集| N | , 并且每个幺半群同态f : N → M 都有一个潜在函数 (underlying function) | f | : | N | → | M | . 很容易看出来这是一个函子, 可以称为遗忘函子 . 根据定义, 一个集合A 上的自由幺半群M ⁡ ( A ) 是带有以下所谓泛映射性质(universal mapping property) 或者说UMP的那个 (the) 幺半群!
M ⁡ ( A ) 的泛映射性质 存在着一个函数i : A → | M ⁡ ( A ) | , 对于任意的幺半群N 和任意的函数f : A → | N | , 存在唯一 的幺半群同态f ‾ : M ⁡ ( A ) → N 使得| f ‾ | ∘ i = f , 如以下图表所示:在Mon 之中: M ⁡ ( A ) N f ‾ 在Sets 之中: | M ⁡ ( A ) | | N | A | f ‾ | i f
命题1.9. A ⁎ 具有A 上的自由幺半群的UMP.
证明. 给定函数
f : A → | N | , 由
f ‾ ⁡ ( - ) = u N , N 的单位元 f ‾ ⁡ ( a 1 ⁢ … ⁢ a i ) = f ⁡ ( a 1 ) ⋅ N … ⋅ N f ⁡ ( a i ) 定义
f ‾ : A ⁎ → N , 那么
f ‾ 显然是一个满足
f ‾ ⁡ ( a ) = f ⁡ ( a ) , 对于所有的 a ∈ A 的同态. 如果
g : A ⁎ → N 也满足对于所有的
a ∈ A 都有
g ⁡ ( a ) = f ⁡ ( a ) , 那么对于所有的
a 1 ⁢ … ⁢ a i ∈ A ⁎ :
g ⁡ ( a 1 ⁢ … ⁢ a i ) = g ⁡ ( a 1 ⁎ … ⁎ a i ) = g ⁡ ( a 1 ) ⋅ N … ⋅ N g ⁡ ( a i ) = f ⁡ ( a 1 ) ⋅ N … ⋅ N f ⁡ ( a i ) = f ‾ ⁡ ( a 1 ) ⋅ N … ⋅ N f ‾ ⁡ ( a i ) = f ‾ ⁡ ( a 1 ⁎ … ⁎ a i ) = f ‾ ⁡ ( a 1 ⁢ … ⁢ a i ) 因此, 正如泛映射性质所要求的,
g = f ‾ .
◻
请想一想为什么上述的UMP精确捕获了没有垃圾 和没有杂讯 的意义. 更确切地说, UMP的存在性部分捕获了没有杂讯 这个模糊的概念 (因为生成元的代数组合之间成立的任意等式也必然在任意其可以被映射至的地方成立, 也就是所有的地方), 而唯一性的部分精确化了没有垃圾 的想法 (因为任意不是由生成元组合而成的额外元素都可以被自由地映射至不同 的值.
使用这个UMP, 我们可以很容易地表明自由幺半群M ⁡ ( A ) 在同构下唯一确定, 其含义如下:
命题1.10. 给定幺半群M 和N ,以及附带的函数i : A → | M | 和j : A → | N | ,每个都满足A 上的自由幺半群的UMP,那么存在一个(唯一的)幺半群同构h : M ≅ N 满足| h | ⁢ i = j 且| h − 1 | ⁢ j = i .
第1.8节 基础: 大, 小, 以及局部小 第1.9节 练习 第2章 抽象结构 第2.1节 满态射和单态射 第2.2节 始对象和终对象 第2.3节 广义元素 第2.4节 积 第2.5节 积的例子 第2.6节 带有积的范畴 第2.7节 同态集 第2.8节 练习 第3章 对偶性 第3.1节 对偶原理 第3.2节 余积 第3.3节 等化子 第3.4节 余等化子 第3.5节 练习 第4章 群和范畴 第4.1节 范畴中的群 第4.2节 群的范畴 第4.3节 作为范畴的群 第4.4节 有限表现范畴 第4.5节 练习 第5章 极限和余极限 第5.1节 子对象 第5.2节 拉回 第5.3节 拉回的性质 第5.4节 极限 第5.5节 极限的保持 第5.6节 余极限 第5.7节 练习 第6章 指数 第6.1节 范畴中的指数 第6.2节 笛卡尔闭范畴 第6.3节 Heyting代数 第6.4节 命题演算 第6.5节 CCC的等式性定义 第6.6节 λ 演算 第7章 自然性 第8章 图表的范畴 第9章 伴随 第10章 单子和代数