范畴论笔记

现在的是重写的版本, 但在某种意义上更接近于翻译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节 引论

什么是范畴论? 作为第一次近似, 我们可以说范畴论是对于函数的代数的研究. 正如群论是对于集合的置换或者几何对象的对称变换这一类系统的思想的抽象, 范畴论来源于一些对象之间的函数所构成的系统的理念.

我们将复合gf想成是某种函数fg, 然后考虑由函数的合集所引申出的那种抽象代数. 一个范畴正是这样一种代数, 其由对象A,B,C,和箭头f:AB,g:BC,构成, 而且箭头在函数复合之下封闭并满足一些对于函数复合而言十分典型的特定条件. 精确的定义在本章的之后给出.

欠一张图

作为抽象代数的分支, 范畴论的发明遵循着Felix Klein的Erlanger纲领的传统, 作为一种基于数学结构之间的可容许 (admissible) 变换来对于不同数学结构进行研究和刻画的方法. 范畴这种一般性的概念提供了对于保持结构的变换这一想法的刻画, 并由此提供了对于承载这样的变换的一类结构的刻画.

这个学科的历史发展大致如下:

关于这个领域的一件非常引人注目的事情在于其有着如此广阔的应用. 事实上, 它就像集合论一样是一种普遍性的数学语言. 由于拥有各种各样的应用, 范畴论往往也能揭示不同领域之间的特定联系——就像逻辑和几何. 举个例子, 伴随函子这一重要概念在逻辑中以存在量化子出现, 在拓扑中则以沿着连续函数取像 (image) 的运算出现. 从范畴的角度而言, 这些本质上是相同的操作.

实际上, 伴随函子应该是读者学习本书时所应该掌握的主要东西之一. 这个纯粹范畴论的概念已经被证明是第一级的概念工具——其重要性可与连续函数的想法比肩.

实际上, 正如拓扑空间的想法起源于其与连续函数的联系, 范畴的概念是为了定义什么是函子而产生的, 至少根据范畴论的发明者之一的说法是这样. 故事还可以继续下去, 函子的概念是为了定义自然变换而产生的. 我们或许还可以继续下去, 自然变换是为了定义伴随而生的:
范畴
函子
自然变换
伴随
诚然如此, 而这给出了本书的大纲.

在正式学习之前, 或许我们应该问问为什么范畴论有着如此广泛而深远的应用. 既然我们说过其实函数的抽象理论, 所以说答案就是:

函数无处不在!
并且哪里有函数, 哪里就有范畴. 的确如此, 也许这个学科应该叫做抽象函数论, 或者更好的名字是: 箭术(archery).

第1.2节 集合之间的函数

我们从考虑集合之间的函数开始. 我不打算在这里说明什么是函数, 就像我也不会说明什么是集合一样, 转而我们将会默认读者拥有对于这些术语的实际可行的理解. 它们实际上可以使用范畴论来定义, 但是这并非我们在这里的目的.

f是从一个集合A到另一个集合B的一个函数, 我们记作f:AB.以显式的语言来说, 这意味着f定义在整个的A上而f的所有值都在B之中. 以集合论术语而言, 就是range(f)B.现在设我们也有一个函数g:BC,欠一张图那么存在着一个作为复合的函数gf:AC, 由(1.1)(gf)(a)=g(f(a)),aA(1.1)给出. 现在这个函数复合的运算是结合性的, 在于如果我们还有一个函数h:CD欠一张图并构成hggf, 那么我们像以上图表所指示的那样比较(hg)fh(gf). 实际上, 这两个函数总是等同的,(hg)f=h(gf)因为对于任意的aA, 我们有((hg)f)(a)=h(g(f(a)))=(h(gf))(a)这使用了(1.1).

顺便值得一提的是, 两个函数相等的含义: 对于每个参数, 它们有着相同的值.

最后, 注意到每个集合A都拥有一个恒等函数1A:AA其由1A(a)=a给出.

这些恒等函数表现为复合运算单位元, 抽象代数意义下的. 也就是说, 对于任意的f:AB, 我们有f1A=f=1Bf.

欠一张图

所有这些关于集合之间的函数的性质是我们想要对于函数的抽象概念所考虑的: 复合与恒元. 因此, 可以说现在我们想要抽象掉其他所有东西, 这正是由以下定义所完成的.

第1.3节 范畴的定义

定义1.1. 一个范畴由以下数据构成:这些数据必须满足以下法则:一个范畴可以是满足这个定义的任意东西——并且很快我们就要拥有大量的例子. 暂时我想要强调的是, 和1.2中的情况不同, 对象不必是集合, 箭头也不必是函数. 一个范畴在这种意义下是函数或者说箭头 (有时也称为态射) 的一个抽象代数, 以复合运算为原语. 如果你熟悉群, 那么你或许可以将一个范畴想成是某种一般化了的群.

第1.4节 范畴的例子

  1. 我们已经遇到过了集合和函数的范畴Sets. 这里也有另一个范畴Setsfin其由所有的有限集合以及其间函数构成.
    诚然, 还有许多像这样的范畴, 其由限制能够成为对象的集合与能够成为箭头的函数给出. 例如, 取有限集合为对象而单射函数为箭头. 既然单射函数的复合仍是单射函数, 并且恒等函数是单射的, 所以说这也给出了一个范畴.
    如果我们取集合为对象而取满足以下条件的函数f:AB为箭头: 对于每个bB, 子集f1(b)A至多只有两个元素 (而不是一个), 这仍然是一个范畴吗? {译注: 显然不是, 因为这样的函数对于复合运算不封闭.} 若取f1(b)有限的函数呢? 无限的情况呢? 存在着许多这样的由集合与函数构成的限制范畴.
  2. 另一种我们经常在数学中见到的例子是结构化集合(structured set)的范畴, 即由带有更进一步结构的集合和保持这结构的函数构成的范畴, 其中这些概念以某种独立的方式确定. 你可能会熟悉的这类例子有即便你还不熟悉以上的其中一些例子, 也请不要担心, 暂且让我们仅是更细致地考虑以上的最后一个例子.
  3. 一个偏序集 (partially ordered set) 或者说poset是一个装备了一个二元关系aAb的集合A, 其对于所有的a,b,cA满足以下条件:例如, 装备有通常的序关系ab的实数集构成了一个偏序集, 其也是线性(linearly)序的: 对于任意的x,y, 要么xy, 要么yx. {译注: 亦可兼而有之, 当且仅当x=y时.}
    从一个偏序集A到一个偏序集B的一个箭头是一个函数m:AB其为单调的(monotone), 意即对于所有的a,aA, 我们有aAa可以推出m(a)Bm(a).要使得这成为一个范畴需要满足什么条件呢? 我们需要知道1A:AA是单调的, 但这是显然的, 因为aAa可以推出aAa. 我们也需要知道, 如果f:ABg:BC是单调的, 那么gf:AC也是单调的. 这同样成立, 因为aa可以推出f(a)f(a)可以推出g(f(a))g(f(a))可以推出(gf)(a)(gf)(a). 因此, 我们有偏序集和单调函数的范畴Pos.
  4. 到目前为止我们已经考虑了的范畴是有时叫做具体范畴(concrete category)的东西的例子. 非形式化地说, 存在着这样的范畴, 其对象是集合, 可能装备有某种结构, 而箭头是特定的函数, 可能保持结构 (我们将在之后看到这个想法并非逻辑一致的; 见评注1.7). 但是, 实际上一种理解范畴论的方式全然在于不用元素 (doing without elements)而代之以箭头. 让我们来看看一些例子, 其中这种观点并不仅是可选的, 而是不可避免的.
    Rel是以下范畴: 取集合为对象而二元关系为箭头. 也就是说, 一个箭头f:AB是一个任意的子集fA×B. 一个集合A上的恒等箭头即是恒等关系,1A={(a,a)A×A|aA}A×A.给定RA×BSB×C, 我们可以根据(a,c)SR当且仅当b.(a,b)R&(b,c)S定义复合SR, 即RS关系积 (relative product). 我们将表明Rel确为一个范畴的工作留作练习. (要做什么呢?)
    要举另外一个箭头并非函数的范畴的例子, 令对象为有限集合A,B,C而一个箭头F:AB是一个由自然数构成的矩阵F=(ni,j)i<a,j<b, 其中a=|A|b=|B|. 符号|C|表示一个集合C的元素数目. 箭头的复合无非是通常的矩阵乘法, 而恒等箭头即是通常的单位矩阵. 这里的对象的目的仅是为了保证矩阵乘法有定义, 但是矩阵并非对象之间的函数.
  5. 有限范畴
    当然了, 范畴的对象也不必是集合. 以下是一些非常简单的例子:和上面一样, 从现在开始绘制范畴时我们都会省略恒等箭头.
    描述有限范畴是容易的——只需要取一些对象并在这些对象之间放置箭头, 但是请务必保证放置了由范畴论的公理所要求的必要的恒等箭头还有复合. 而且, 如果存在任何的环路 (loop) 的话, 那么我们就需要通过等式来截断环路以保持范畴的有限性. 例如, 考虑以下描述:AgfB除非我们明确规定诸如gf=1A这样一个等式 {译注: 大概还需要规定fg=1B}, 不然我们就会拥有无穷多的箭头: gf,gfgf,gfgfgf,. 当然, 这仍然是一个范畴, 但并非一个有限范畴. 本章之后讨论自由范畴时, 我们还会回到这个(无限的)情况上来.
  6. 范畴论的一个重要口号是
    箭头才是真正重要的东西!
    因此, 我们也应该检视范畴之间的箭头或者映射. 范畴的同态被称为函子.
定义1.2. 范畴C和范畴D之间的一个函子F:CD是一个从对象到对象而从箭头到箭头的映射, 其满足
  1. F(f:AB)=F(f):F(A)F(B);
  2. F(1A)=1F(A);
  3. F(gf)=F(g)F(f).
换言之, F保持定义域和陪域, 恒等箭头, 以及复合. 因此, 一个函子F:CD给出了某种CD中的(可能扭曲的)图景(picture).欠一张图现在, 我们可以轻易地看出函子能够按照预期的方式复合, 而每个范畴C都拥有一个恒等函子1C:CC. 于是, 我们有了另一个范畴的例子, 叫做Cat, 其是由所有的范畴和函子构成的范畴.
  1. 一个预序(preorder)是一个装备了一个满足自反性和传递性的二元关系pq的集合: aa, 并且如果abbc, 那么ac. 任意的预序P都可以被视为一个范畴, 只需要取对象为P的元素而两个元素之间唯一可能的箭头是(1.2)ab当且仅当ab.(1.2)的自反和传递条件保证了这的确是一个范畴.
    从另一个方向上来说, 如果一个范畴满足其任意两个对象之间至多只有一个箭头, 那么其就确定了一个预序, 只需要根据(1.2)来定义一个对象上的二元关系即可.
  2. 一个偏序集显然是一个满足额外的反对称条件的预序: 如果abba, 那么a=b. 因此, 一个偏序集也是一个范畴. 这样的偏序集范畴(poset category)很是常见; 例如, 对于任意的集合X, 幂集P(X)在通常的X的子集U,V之间的包含关系UV下是一个偏序集.
    偏序集范畴PQ之间的函子F:PQ是什么样的呢? 其必须满足恒等律和复合律... 显然, 这些只是之前已经考虑过了的单调函数.
    将一个范畴想成是某种广义偏序集(generalized poset)常常是有用的, 也就是带有比pq带有更多结构的东西. 因此, 我们也可以将函子想成是某种广义单调映射.
  3. 来源于拓扑的一个例子: 令X是一个以O(X)为开集族的拓扑空间. 以包含关系排序, O(X)就成了一个偏序集范畴. 而且, X的点可以根据特殊化程度(specialization)进行预序化, 通过设置xy当且仅当对于每个开集U, xU可以推出yU, 也就是y包含于每个包含x的开集之中. 如果X是充分分离的 (T1), 那么这个序关系是平凡的, 但是其他情况下可能会变得相当有趣, 例如对于代数几何和指称语义的空间而言. 作为练习, 请证明T0空间在此特殊化序下实际上是偏序集. {译注: 特殊化程度可以这么理解, 因为包含y的开集比包含x的开集更多, 所以yx更加特殊.}
  4. 来源于逻辑的一个例子: 给定一个逻辑演绎系统, 存在一个与之相关的证明范畴(category of proofs), 其中的对象为公式:φ,ψ,φψ的一个箭头是一个从(uncanceled)假设φψ的推导.φψ箭头的复合即将这样的推导以显然的方式并置, 当然这是结合性的. (恒等箭头1φ应该是什么呢?) 我们观察到可以存在诸多不同的箭头p:φψ因为或许存在着诸多不同的证明. 这种范畴实际上有着丰富的结构, 之后我们将与λ演算一起考虑.
  5. 来源于计算机科学的一个例子: 给定一个函数式语言L, 存在一个与之相关的范畴, 其对象是L的数据类型, 而箭头是L的可计算函数 (进程 (process), 过程 (procedure), 程序 (program)). 两个这样的程序的复合XfYgZ由应用gf的输出得到, 有时亦记作gf=f;g.恒等箭头即什么也不做 (do nothing)的程序.
    这样的范畴对于编程语言的指称语义的想法而言是基本的. 例如, 如果C(L)是刚才定义的范畴, 那么语言L于一个Scott domain的范畴D中的指称语义不过就是一个函子S:C(L)D因为S赋予了L的类型以domain, 而程序以连续函数. 这个例子和前一个例子都和我们之后要考虑的笛卡尔闭范畴 (cartesian closed category)的概念有关. {译注: 这里的domain有特殊的含义, 其来源于指称语义的理论, 并不是(函数或者箭头的)定义域或者(逻辑学的)论域的意思, 故我倾向于保留原文不动.}
  6. X是一个集合. 我们可以将X当作一个范畴Dis(X), 其取X的元素为对象而箭头仅是必要的恒等箭头, 也就是对于每个xX都有一个. 这种箭头仅是恒等箭头的范畴被称为是离散的(discrete). 注意到离散范畴非常不过是非常特殊的偏序集.
  7. 一个幺半群(monoid) (有时也被称为semigroup with unit) 是一个集合M, 其装备了一个二元运算:M×MM和一个突出的单位元uM, 满足对于所有的x,y,zM, 都有(xy)z=x(yz)ux=x=xu成立. 等价地, 一个幺半群不过就是一个仅有一个对象的范畴. 这个范畴的箭头即是幺半群的元素. 特别地, 恒等箭头即是单位元素u. 箭头的复合即是幺半群的二元运算mn.
    幺半群是非常普遍的. 这里有数字构成的幺半群, 例如装备了加法和0或者乘法和1, , 还有. 不过, 对于任意的集合X, 由所有从XX的函数构成的集合, 记作HomSets(X,X)在复合运算下也是一个幺半群. 更一般地, 对于任意范畴C中的对象C, 从CC的箭头的集合, 记作HomC(C,C), 在C的复合运算下是一个幺半群.
    既然幺半群是结构化集合, 那么存在一个范畴Mon, 其对象是幺半群而箭头是保持幺半群结构的函数. 更细致地说, 一个从幺半群M到幺半群N的同态是一个函数h:MN, 其满足对于所有的m,nM, 都有h(mMn)=h(m)Nh(n)h(uM)=uN成立. 我们观察到一个从MN的幺半群同态和一个从被视为范畴的M到被视为范畴的N的函子是相同的东西. 在这种意义下, 范畴也是广义的幺半群 (generalized monoid), 而函子是广义的同态.

第1.5节 同构

定义1.3. 在任意的范畴C中, 一个箭头f:AB被称为一个同构(isomorphism), 如果存在另一个箭头g:BA满足gf=1Afg=1B.既然逆是唯一的 (请证明!), 我们记g=f1. 我们称A同构于B, 记作AB, 如果它们之间存在一个同构.

同构的定义我们第一个对于重要的概念进行抽象的范畴论式的定义的例子. 抽象的含义在于其只使用了范畴论的概念, 而并不诉诸于关于对象和箭头的一些额外信息. 相较于其他可能的定义, 其优点在于它适用于任意的范畴. 例如, 人们有时将集合 (幺半群, 等等) 的同构定义为双射(bijective)函数 (相应地, 双射的同态), 即满足1-1和onto的东西——这用到了对象的元素. {译注: 1-1和onto是英语曾经对于单射和满射的表达, 但是自从Bourbaki学派兴起之后, 一般人都用injective和surjective了.} 在某种情形下, 这等价于我们的定义, 例如集合和幺半群. 但是我们也应该注意到, 例如在Pos之中, 非同构的偏序集之间也存在着双射的同态. 而且, 在诸多情形之下, 只有抽象的定义能够成立 (make sense), 例如将幺半群视为范畴的情形.

定义1.4. 一个群(group)G是一个幺半群, 其每个元素g都有一个逆g1. 因此, G是一个只有一个对象的范畴, 其每个箭头都是一个同构.

自然数集在加法或者乘法下都不能构成一个群, 但是整数集在加法下能够形成一个群, 正有理数集+在乘法下也能够形成一个群. 对于任意的集合X, 我们有由X的自同构 (或者说置换) 构成的群Aut(X), 即由同构f:XX构成的群. (为什么这在下封闭?) 一个置换群(group of permutations)是对于某个集合X而言的子群GAut(X), 也就是由X的(某些)自同构构成的群. 因此, 集合G必须满足以下条件:

  1. X上的恒等函数1XG之中.
  2. 如果g,gG, 那么ggG.
  3. 如果gG, 那么g1G.

一个群的同态h:GH不过就是一个幺半群同态, 由此则必然保持逆 (请证明!).

现在请让我们考虑以下关于抽象群的基本而经典的结果.

定理. (Cayley). 每个群G都同构于一个置换群.
证明. (证明大纲)
  1. 首先, 定义G的Cayley表示G为以下的集合的置换的群: 这个集合就是G自身, 而对于每个元素gG, 我们有置换g:GG, 其定义于所有hG之上, 相当于作用于左 (acting on the left):g(h)=gh.这的确是一个置换, 因为其有着g1的作用为逆.
  2. 接着, 根据i(g)=g定义同态i:GG, 而根据j(g)=g(u)定义同态j:GG.
  3. 最后, 表明ij=1Gji=1G.
警告1.5. 注意到Cayley定理的证明之中存在着两种不同层次的同构. 我们既有由G的元素构成的集合的置换, 其是Sets中的同构, 也有GG之间的同构, 其在由群和群同态构成的范畴Groups之中.

Cayley定理言称任意的抽象群都可以由某个具体群所表示, 即某个集合的一个置换群. 实际上, 这个定理可以被推广以表明任意不太大 (too big)的范畴都可以由一个具体范畴表示, 即一个由集合和函数构成的范畴. (不太大的技术性含义于1.8引入.)

定理1.6. 每个以箭头的集合为态射类的范畴C都同构于一个以集合为对象而函数为箭头的范畴. {译注: 每个以箭头的集合为态射类的范畴C的原文是every category C with a set of arrows, 这里译者采取了意译而非直译. 换言之, 即范畴C是小范畴.}
证明. (证明大纲) 定义C的Cayley表示C为以下具体范畴:
评注1.7. 这向我们表明关于由集合和函数所构成的具体范畴的朴素概念的错误之处: 尽管不是每个范畴都以特殊的集合和函数为其对象和箭头, 然而每个范畴都同构于一个这样的范畴. 因此, 这样的范畴所能拥有的特殊性质仅可能是那些和范畴无关的性质, 例如对象所不能影响箭头分毫的那种特性 (就像构造为Dedekind分割或者Cauchy序列的实数系之间的区别). 为了捕获具体范畴这个相当模糊的想法所意图表达的东西, 更好的尝试为以下的刻画: 任意的箭头f:CD完全由其与箭头们x:TC的复合确定, 其中的T是某个测试对象, 意即如果对于所有这样的x都有fx=gx, 那么就可以推出f=g. 我们之后将会看到, 这相当于考虑由T所确定的对于范畴的一种特定表示. 那么, 一个范畴被称为是具体的, 如果这个条件对于某个终对象T成立, 终对象的含义见2.2; 不过, 也有很好的理由考虑其他的对象T, 如我们在2中所见.
注意到C的态射类为箭头的集合这个条件是必要的, 其是为了保证合集{fC|cod(f)=C}的确是集合——我们在1.8还会回到这个问题上来.

第1.6节 范畴的构造

既然我们有了一些可以摆弄的范畴, 现在我们可以考虑一些从旧范畴产生新范畴的构造了.

  1. 两个范畴之, 记作C×D其有着形式为(C,D)的对象, 其中CCDD, 而有着形式为(f,g):(C,D)(C,D)的箭头, 其中f:CCCg:DDD. 复合和单位元都是逐分量定义的, 即(f,g)(f,g)=(ff,gg)1(C,D)=(1C,1D)存在着两个显然的投影函子(projection functor)Cπ1C×Dπ2D其由π1(C,D)=Cπ1(f,g)=f定义, 而π2是类似的.
    熟悉群论的作者应该能够识别出来, 对于群GH, 其积范畴G×H不过是通常的群的(直)积.
  2. 一个范畴C相反(opposite) (或者说对偶 (dual)) 范畴CopC有着相同的对象, 而Cop中的一个箭头f:CDC中的一个箭头f:DC. 也就是说, Cop不过就是将C中的所有箭头在形式上调转方向而已.
    使用一种记号将C中的对象和Cop中的相同对象进行区分是方便的, 箭头亦是如此. 因此, 让我们将C中的f:CDCop中的相应箭头记为f:DC.以此记号, 我们可以基于C中的复合和单位元来定义Cop中的相应运算, 即1C=(1C)fg=(gf)因此, C中的一个图表欠一张图Cop中看起来就像以下图表欠一张图诸多数学的对偶性定理不过是表达了一个范畴是另一个范畴的相反范畴(的一个子范畴). 这种定理的一个例子是我们之后要证明的Sets对偶于完备原子布尔代数的范畴.
  3. 一个范畴C箭头范畴CC的箭头为对象, 而C中一个从f:ABf:AB的箭头g是一个交换方块欠一张图其中的g1g2C中的箭头. 也就是说, 这样一个箭头是C中的一对箭头g=(g1,g2), 其满足g2f=fg1.一个对象f:AB上的恒等箭头1f是序对(1A,1B). 箭头的复合是逐分量进行的:(h1,h2)(g1,g2)=(h1g1,h2g2)读者应该绘制相应的交换图表来验证这的确能够成立.
    观察到这里存在着两个函子:CdomCcodC{译注: 函子dom的定义为dom(f:AB)=Adom(g)=g1, 其中g=(g1,g2); 函子cod的定义与dom类似.}
  4. 一个范畴C于一个对象CC上的切片范畴(slice category)C/C拥有

例子1.8. 带点集合(pointed set)的范畴Sets以带有一个突出元素aA的集合A为对象, 而箭头f:(A,a)(B,b)则是保持的函数f:AB, 即f(a)=b. 这同构于一个余切片范畴, 即Sets1/Sets其中1是任意的单元集{}. 诚然如此, 函数a:1A唯一地与元素a()=aA相对应, 而箭头f:(A,a)(B,b)恰与交换三角形欠一张图相对应.

第1.7节 自由范畴

自由幺半群 (free monoid). 我们从一个字母a,b,c,表 (alphabet)A开始, 即一个集合A={a,b,c,}.A上的一个词(word)是一个字母的有限序列:thisword,categoriesarefun,asddjbnzzfj,我们将空词记为-. AKleene闭包被定义为集合A={A上的词}.我们定义一个A上的二元运算ww=ww, 其中词w,wA. 因此, 不过就是拼接(concatenation). 于是, 运算是结合性的, 并且空词-是其单位元. 所以说, A是一个幺半群——其被称为集合A上的自由幺半群(free monoid). 元素aA可以被视为长度为一的词, 也就是说我们有了一个函数i:AA其定义是i(a)=a, 并被称为生成元的嵌入 (insertion of generators). 我们说A的元素生成了这自由范畴, 其意在于每个wA都是a的一个积, 即对于A中的某些a1,a2,,an我们有w=a1a2an. {译注: 嵌入是自动的, 没有以额外的符号标示.}

现在我们想问的是这里的自由是什么意思? 能猜一下吗? 有时读者会在宝宝代数 (baby algebra)书籍中看到其定义以如下文字呈现:

一个幺半群MM的一个子集A自由生成, 如果其满足以下条件:

  1. 每个元素mM都可以写成A的元素之积:m=a1MMan,aiA.
  2. 没有非平凡 (nontrivial)的关系可以在M中成立, 即若a1aj=a1ak, 那么这是由幺半群的公理所要求的.
第一个条件有时被称为没有垃圾 (no junk), 而第二个条件有时被称为没有杂讯 (no noise). 因此, A上的自由幺半群是一个包含A且既无垃圾也无杂讯的幺半群. 你对于该自由幺半群的定义作何感想呢?

我反对这第二个条件所涉及的可证明性 (provability)或者其他什么. {译注: 译者也不太能完全理解这句话, 大概的意思就是第二个条件太过模糊, 编写证明时难以使用.} 欲使其作为定义而成功, 那么其就必须变得更加精确. 在范畴论中, 我们可以给出自由的精确定义——其捕获了上述内容的实质——但是避免了这种模糊.

首先, 每个幺半群N都有一个潜在集|N|, 并且每个幺半群同态f:NM都有一个潜在函数 (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)NfSets之中:|M(A)||N|A|f|if

命题1.9. A具有A上的自由幺半群的UMP.
证明. 给定函数f:A|N|, 由f(-)=uN,N的单位元f(a1ai)=f(a1)NNf(ai)定义f:AN, 那么f显然是一个满足f(a)=f(a),对于所有的aA的同态. 如果g:AN也满足对于所有的aA都有g(a)=f(a), 那么对于所有的a1aiA:g(a1ai)=g(a1ai)=g(a1)NNg(ai)=f(a1)NNf(ai)=f(a1)NNf(ai)=f(a1ai)=f(a1ai)因此, 正如泛映射性质所要求的, g=f.

请想一想为什么上述的UMP精确捕获了没有垃圾没有杂讯的意义. 更确切地说, UMP的存在性部分捕获了没有杂讯这个模糊的概念 (因为生成元的代数组合之间成立的任意等式也必然在任意其可以被映射至的地方成立, 也就是所有的地方), 而唯一性的部分精确化了没有垃圾的想法 (因为任意不是由生成元组合而成的额外元素都可以被自由地映射至不同的值.

使用这个UMP, 我们可以很容易地表明自由幺半群M(A)在同构下唯一确定, 其含义如下:

命题1.10. 给定幺半群MN,以及附带的函数i:A|M|j:A|N|,每个都满足A上的自由幺半群的UMP,那么存在一个(唯一的)幺半群同构h:MN满足|h|i=j|h1|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章 单子和代数