范畴论

范畴论（Category theory）是数学的一门学科，是关于数学结构及其关系的一般理论，以抽象的方法处理数学概念，将这些概念形式化成一组组的“物件”及“态射”。数学中许多重要的领域可以形式化为范畴。使用范畴论可以令这些领域中许多难理解、难捉摸的数学结论更容易叙述证明。

一个范畴包含两类数学对象：物件与态射。以集合范畴为例，其物件为集合，态射为集合间的函数。若以第一个态射的目标为源发出第二个态射，这样形成的“复合态射”的性质同复合函数类似（存在结合律与单位态射）。但需注意，范畴的物件不一定要是集合，态射也不一定要是函数；一个数学概念若可以找到一种方法，以符合物件及态射的定义，则可形成一个有效的范畴，且所有在范畴论中导出的结论都可应用在这个数学概念之上。

范畴最简单的例子之一为广群，其态射皆为可逆的。群胚的概念在拓扑学中很重要。范畴现在在大部分的数学分支中都有出现，在理论电脑科学的某些领域中用于对应资料型别，而在数学物理中被用来描述向量空间。

范畴论不只是对研究范畴论的人有意义，对其他数学家而言也有着其他的意思。一个可追溯至1940年代的述语“一般化的抽象废话”，即被用来指范畴论那相对于其他传统的数学分支更高阶的抽象化。

范畴论在20世纪中叶由塞缪尔·艾伦伯格、桑德斯·麦克莱恩等人在代数拓扑工作的基础上提出。

## 背景

研究范畴就是试图以“公理化”的方法抓住在各种相关连的“数学结构”中的共同特性，并以结构间的“结构保持函数”将这些结构相关起来。因此，对范畴论系统化的研究将允许任何一个此类数学结构的普遍结论由范畴的公理中证出。

考虑下面的例子：由群组成的类Grp包含了所有具有“群结构”的物件。要证明有关群的定理，即可由此套公理进行逻辑的推导。例如，由公理中可立即证明出，群的单位元素是唯一的。

不是只专注在有特定结构的个别物件（如群）上，范畴论会着重在这些物件的态射（结构保持映射）上；经由研究这些态射，可以学到更多关于这些物件的结构。以群为例，其态射为群同态。两个群间的群同态会严格地“保持群的结构”，这是个以将一个群中有关结构的讯息运到另一个群的方法，使这个群可以看做是另一个群的“过程”。因此，对群同态的研究提供了一个得以研究群的普遍特性及群公理的推论的工具。

类似的研究也出现在其他许多的数学理论中，如在拓扑学中对拓扑空间的连续映射的研究（相关范畴称为Top），及对流形的光滑函数的研究等。

### 函子

再抽象化一次，范畴自身亦为数学结构的一种，因此可以寻找在某一意义下会保持其结构的“过程”；此一过程即称之为函子。函子将一个范畴的每个物件和另一个范畴的物件相关连起来，并将第一个范畴的每个态射和第二个范畴的态射相关连起来。

实际上，即是定义了一个“范畴和函子”的范畴，其元件为范畴，（范畴间的）态射为函子。

经由研究范畴和函子，不只是学习了一类数学结构，及在其之间的态射；还学习了“在不同类型的数学结构之间的关系”。此一基本概念首次出现于代数拓扑之中。不同的“拓扑”问题可以转换至通常较易解答的“代数”问题之上。在拓扑空间上如基本群或基本群胚等基本的架构，可以表示成由群胚所组成的范畴之间的基本函子，而这个概念在代数及其应用之中是很普遍的。

### 自然变换

再抽象化一次，架构通常会“自然地相关连”，这个第一眼会觉得很暧昧的概念，产生了自然变换（将一个函子映射至另一函子的方法）此一清楚的概念。许多数学上的重要架构可以从此一角度来研究。

## 历史注记

范畴、函子和自然变换是由塞缪尔·艾伦伯格和桑德斯·麦克兰恩在1945年引进的。这些概念最初出现在拓扑学，尤其是代数拓扑学里，在同态（具有几何直观）转化成同调论（公理化方法）的过程中起了重要作用。乌拉姆说，在1930年代的后期，波兰学派中曾出现类似的想法。

艾伦堡和麦克兰说，他们的目的在于理解自然映射；为此，必须定义函子；为了定义函子，就自然地要引进范畴。

同调代数由于计算上的需要而使用范畴论，这对范畴论起到了推进作用；此后范畴论又在代数几何的公理化过程中得到发展。代数几何与罗素-怀特海德的关于数学统一性基础的观点相抵触。广义范畴论随后产生，且更容纳了语意灵活性和高阶逻辑等多种新特征的泛代数，现在被运用到数学的所有分支。

特殊范畴拓扑斯甚至可以代替公理集合论作为数学的基础。然而范畴论对这些范围广泛的基础应用还是有争议的；但作为构造性数学的基础或注释，范畴论被研究的相当透彻。尽管如此，公理集合论至今仍然是数学家们的通用语言，并没有被范畴论的注释所取代。将范畴论引入大学程度的教学（在《伯克霍夫-麦克兰》和《麦克兰-伯克霍夫》这两本抽象代数的教科书的区别上可以印证）还是遭到了相当的反对。

范畴逻辑是直觉逻辑中类型论的一个被明确定义的分支，在计算机学科的函数式编程和域理论中均有应用，并且都是在笛卡尔闭范畴中对λ演算的非句法性描述。至少，用范畴论可以精确地描述在这些相关的领域里什么是共同的（在抽象的意义上）。

## 范畴、物件与态射

### 范畴

一个“范畴” $C$ 由如下3个数学对象组成：

- 一个类 $\mathrm{ob}(C)$，其元素称为“物件”。
- 一个类 $\mathrm{hom}(C)$，其元素称为“态射”或“箭号”。每个态射 $f$ 都只有一个“源物件” $a$ 及一个“目标物件” $b$（其中 $a$ 和 $b$ 都在 $\mathrm{ob}(C)$ 内），称之为“从 $a$ 至 $b$ 的态射”，标记为 $f : a \to b$。所有从 $a$ 至 $b$ 的态射所组成的类称之为“态射类”，标记为 $\mathrm{hom}(a, b)$、 $\mathrm{hom}_C(a, b)$或 $\mathrm{mor}(a, b)$。
- 一个二元运算，称为“态射复合”，使得对任意三个物件 $a$、 $b$ 及 $c$，都会有 $\circ : \mathrm{hom}(b, c) \times \mathrm{hom}(a, b) \to \mathrm{hom}(a, c)$。两个态射 $f : a \to b$ 及 $g : b \to c$ 的复合写做 $g \circ f$ 或 $gf$

$g \circ f$

$f ; g$

并会符合下列两个公理：

- 结合律：若 $f : a \to b$、 $g : b \to c$及 $h : c \to d$，则 $h \circ (g \circ f) = (h \circ g) \circ f$。
- 单位元：对任意物件 $x$，总存在一个态射 $1_x : x \to x$（称为 $x$ 的单位态射），使得对每个态射 $f : a \to b$，都会有 $1_b \circ f = f = f \circ 1_a$。

由以上公理可证得，每个物件都只存在一个单位态射。有些作者将物件本身用单位态射来定义，这在本质上是相同的。

如果对象的类确实是个集合，那么这种范畴就被称为“小范畴”。许多重要的范畴不是小范畴。

范畴中的态射有时又称为“箭号”，这种叫法来自于交换图。

#### 范畴举例

每一范畴都由其对象，态射，和复合态射来表述。为了方便起见，以下的“函数”即是指态射，不再一一说明。

- Set 是所有集合和它们彼此之间的全函数构成的范畴
- Ord 是所有预序集和其间的单调函数构成的范畴
- Mag 是所有广群和其间的同态映射构成的范畴
- Med 是所有对换广群和其间的同态映射构成的范畴
- Grp 是所有群和其间的群同态构成的范畴
- Ab 是所有阿贝尔群和其间的群同态构成的范畴
- $\mathbf{Vect}_\mathbb k$ 是所有域 $\mathbb k$（$\mathbb k$ 固定）上的向量空间和其间的 $\mathbb k-$线性映射构成的范畴
- Top 是所有拓扑空间和其间的连续函数构成的范畴
- Met 是所有度量空间和其间的测地映射构成的范畴
- Uni 是所有一致空间和其间的一致连续函数构成的范畴
- 任何偏序集$(P,\leq)$构成一个小范畴，其对象是$P$的元素，其态射是从$x$指向$y$的箭头，其中$x\leq y$。
- 任何以单一对象$x$（$x$为任意固定集合）为基础的独异点构成一个小范畴。独异点的任意元素通过二元运算给出一个从$x$到$x$的映射，所有这些映射恰好是范畴的所有态射；范畴的复合态射也正好是独异点的二元运算。事实上，范畴可以看成独异点的推广；关于独异点的定义和定理有一些可以推广到范畴。
- 任何有向图对应于一个小范畴：其对象是图的顶点，其态射是图的路径，其复合态射是路径的连接。称此范畴为有向图的“自由范畴”。
- 设$I$是个集合，“$I$上的离散范畴”是一个小范畴，以$I$的元素为对象，以$I$的恒等映射为其唯一的态射。
- 任何范畴 $\mathcal C$ 可以在另一种看法下成为一个新的范畴：它具有相同的对象，然而所有态射都是反方向的。称此为“对偶”或者“反范畴”，记作 $\mathcal C^{\rm op}$（$\rm op$ 来自英文的opposite，意为“相反”）。
- 设 $\mathcal C$ 和 $\mathcal D$ 是范畴，则它们的“直积范畴” $\mathcal C\times\mathcal D$ 被定义为：其对象为取自 $\mathcal C$ 的一个对象和取自 $\mathcal D$ 的一个对象的有序对，其态射亦为取自 $\mathcal C$ 的一个态射和取自 $\mathcal D$ 的一个态射的有序对，其复合态射则由其分量分别复合。

### 态射

映射之间的关系（比如 $fg=h$）在大多数情形下可用更直观的交换图来表示，在此图中对象被表示成顶点，态射被表示为箭头。

一个表为$f : a \rightarrow b$的态射可具有以下任意一种性质。

- 单态射：对所有态射$g_1,\ g_2:\ x\to a$，若$f \circ g_1= f\circ g_2$，则$g_1=g_2$。
- 满态射：对所有态射$g_1,\ g_2:\ b\to x$，若$g_1\circ f=g_2\circ f$，则$g_1=g_2$
- 若$f$即是单态射也是满态射，则为双态射。
- 同构：若有态射$g:\ b\to a$，如$f\circ g=1_b$和$g\circ f=1_a$。注意，双态射与同构并不等价。一个基本的反例：在由两个物件$A,\ B$、单位态射与态射$f:\ A\to B$构成的范畴中，$f$是双态射，但不同构。
- 自同态：若$a=b$。$\mathrm{end}(a)$表示$a$的自同态类。
- 自同构：若$f$即同构，也自同态。$\mathrm{aut}(a)$表示$a$的自同构类。
- 屈态射（retraction）：若$f$的右逆存在。即有态射$g:\ b\to a$和$f\circ g=1_b$。
- 切态射（section）：若$f$的左逆存在。即有态射$g:\ b\to a$和$g\circ f=1_a$。

屈态射必为满态射，切态射必为单态射。另外，下面三条表述等价：

- $f$是单态射，也是屈态射。
- $f$是满态射，也是切态射。
- $f$同构。

## 函子

函子是范畴之间保持结构的映射，可以看成以所有（小）范畴为成员的范畴中的态射。

一个从范畴$C$到范畴$D$的（协变）函子$F$被定义为：

- 对$C$中任意对象$X$，都有一个$D$中相应的对象$F(X)$与其对应。
- 对$C$中任意态射 $f:X\rightarrow Y$，都有一个$D$中相应的态射$F(f):F(X)\rightarrow F(Y)$与其对应。

并使下列性质成立：

- 对$C$中任意对象$X$，都有$F(\mathrm{id}_x)=\mathrm{id}_{F(X)}$。
- 对$C$中任意两个态射$f:X\rightarrow Y$和$g:Y\rightarrow Z$，都有 $F(g\cdot f)=F(g)\cdot F(f)$。

一个从范畴$C$到范畴$D$的反变函子$F$不同于函子的地方仅在于将$D$中的映射箭头倒过来。比如说$f:X\rightarrow Y$是$C$中任一态射，则有$F(f):F(Y)\rightarrow F(X)$。定义反变函子的最简捷的方法是作为$C$的反范畴$C^{op}$到$D$上的函子。

有关函子的具体例子和性质请详见函子条目。

## 自然和自然同构

“自然变换”是两个函子之间的关系。函子通常用来描述“自然构造”，而自然变换则描述函子间的“自然同态”。有时，两个截然不同的构造会产生“相同”结果，这可以用函子之间的自然同态来表述。

### 定义

如果$F$和$G$是从范畴$C$到范畴$D$的（协变）函子，则从$F$到$G$的一个自然变换会给$C$中的每个对象$X$，关联一个$D$中相应的态射$\eta_X:F(X)\rightarrow G(X)$，使得对$C$中的任何态射$f:X\rightarrow Y$，都有$\eta_Y\cdot F(f)=G(f)\cdot \eta_X$；这也就是说下列图表是可交换的：

<image>

如有从$F$到$G$的自然变换，使得$\eta_X$对$C$中所有对象$X$来说都同构，则称这两个函子$F$和$G$“自然同构”。

### 举例

设$K$是域，$V$是$K$上的任意向量空间，则有从向量空间到其二重对偶的一个“自然”内射型线性映射$V\rightarrow V^{**}$。这些映射在以下意义上是“自然”的：二重对偶运算是一个函子，这些映射正好构成了从恒等函子到二重对偶函子的自然变换。如果向量空间的维数是有限的，我们就得到一个自然同构；因为“有限向量空间自然同构于其二重对偶”。

考虑阿贝尔群及其同态构成的范畴$\mathrm{Ab}$。对任意阿贝尔群$X$、$Y$和$Z$，我们得到群同构

$\mathrm{Mor}\left ( X,\mathrm{Mor}\left ( Y,Z \right ) \right )\rightarrow \mathrm{Mor}\left ( X\otimes Y,Z \right )$。

这些同构是“自然”的，因为它们定义了两个函子间的一种自然变换：$\mathrm{Ab}^{op}\times\mathrm{Ab}^{op}\times\mathrm{Ab}\rightarrow\mathrm{Ab}$。

## 泛结构、极限和上极限

运用范畴论的语言，许多数学研究领域都可以归结成一些恰当的范畴，例如所有集合的范畴，所有群的范畴，所有拓扑的范畴，等等。这些范畴里的确有一些“特殊的”对象，例如空集或者两个拓扑的直积。然而，在范畴的定义里，对象是原子性的，那就是说，我们无法知道一个对象到底是集合，是拓扑，还是其它抽象概念。有必要定义特殊对象而不涉及对象的内在结构，这是一个挑战。那么到底怎样不用元素而定义空集，不用开集而定义拓扑积呢？

解决这个问题的途径是借用对象和对象之间的关系，而这些关系由相应范畴中的态射给出。现在问题转化为寻找泛性质，这些泛性质可以唯一地决定我们所感兴趣的对象。事实上，为数众多的重要结构都可用纯范畴论的方法来描述。在定义泛性质时，我们要用到一个非常关键的概念：范畴性“极限”和其“上极限”。

## 等价范畴

人们很自然地要问，在什么样的情形下，两个范畴“在本质上是相同”的，换一句话来说，对其中一个范畴成立的定理，可以既定地转换成另一个范畴的定理。用来描述这种情形的主要方法是“范畴的等价性”，由函子给出。范畴的等价性在数学中有很多的应用。

## 进一步的概念和结果

范畴和函子的定义只是范畴代数中最基本的部分。除此之外的重要部分如下列所述。基本上是以阅读顺序排列，尽管它们彼此之间有着内在的联系。

- 函子范畴 $D^C$以从$C$到$D$的函子为对象，以这些函子间的自然映射为泛射。米田引理刻划了函子范畴中可表示的函子，是范畴论最著名的基本结果之一。
- 对偶原则：范畴论中，每一陈述，定理，或定义都有其“对偶”，实质上可以通过“反转所有箭头”来得到。如果一个陈述在范畴$C$中成立，那么它的对偶将在其对偶范畴$C^{op}$中成立。这一对偶性在范畴论的任何层次都是普适的，由于它经常不是很清晰，对偶性的应用可以揭示惊人的关联性。
- 伴随函子：两个映射方向相反的函子对称为伴随函子，随着结合的顺序不同，分别为左伴随和右伴随。通常来自于由泛性质所定义的结构；也可以作为泛性质的一种更加抽象和更加强有力的看法。

## 高维范畴

上述许多概念，特别是范畴的等价性、伴随函子和函子范畴等，可抽象至更高维的背景中。简而言之，若将态射视为“从一个对象到另一个对象的过程”，那么高维范畴就允许我们考虑“高维过程”，从而方便地概括之。

例如，（严格）2-范畴是与“态射间的态射”一起的范畴，即允许态射转换的过程。然后便可以对这些“双态射”进行横纵向的“组合”，通过规定二维的“交换律”，联系起两个合成律。这方面的标准例子是Cat，即所有（小）范畴的二维范畴，其中态射的双态射仅仅是通常意义上的态射的自然变换。另一个基本例子是，考虑一个具有单一物件的二维范畴，即幺半范畴。双范畴是比二维范畴弱的概念。其中态射的组成不是严格意义上的关联，而只是平凡的同构。

这个过程可以扩展到任意自然数维，称为n维范畴。甚至还有与序数ω对应的ω维范畴的概念。

高维范畴是更广泛的高维代数的一部分。

## 范畴分类

- 在许多范畴中，态射集合$\mathrm{Mor}(A,B)$不仅仅是集合，实际上是阿贝尔群，态射的复合具有群结构，也就是说是双线性的。这种范畴被称为预加性的。如果这种范畴还具有所有有限的积和上积，则称为加性范畴。如果所有具有一个核和一个上核，那么所有满射都是上核，所有单射都是核，我们称此为阿贝尔范畴。阿贝尔范畴的一个典型的例子是阿贝尔群所组成的范畴。
- 一个范畴被称为是完备的，如果所有极限存在。集合，阿贝尔群和拓扑空间的范畴是完备的。
- 一个范畴被称为是笛卡儿闭性的，如果它具有有限直积，并且一个定义在有限乘积上的态射总是可以表示成定义在其中一个因子上的态射。
- 一个拓扑斯是一种特殊的笛卡儿闭范畴，在其中可表述（公理化）所有的数学结构（就象传统上使用集合论可以表示所有数学结构）。一个拓扑斯也可以用来表述一个逻辑理论。
- 一个群胚是这样一种范畴，其中每一个映射都是一个同构。群胚是群、群作用和等价关系的推广。

## 研究史

虽然塞缪尔·艾伦伯格和桑德斯·麦克莱恩在1942年一篇关于群论的论文中已经给出了函子和自然变换的具体例子，他们在1945年的一篇论文中，向这些概念引入了更普遍的意义，还有范畴的额外概念，并讨论了范畴论在代数拓扑领域的应用。这些工作是直观几何同调到同调代数过渡的一个重要部分。

以斯塔尼斯拉夫·乌拉姆名义写的一系列文章，都声称类似的想法在1930年代末的波兰已经流行了。艾伦伯格是波兰人，1930年代在波兰学习数学。范畴论在某种意义上也是埃米·诺特将抽象过程形式化的延续；诺特意识到，理解一种数学结构需要理解保留了结构的过程（同构）。艾伦伯格和麦克莱恩引入了范畴，用于理解和形式化将代数结构（拓扑不变量）与拓扑学结构相关联的过程（函子）。

范畴论最初源自同调代数的需要，并为现代代数几何（概形论）的需要而得到广泛扩展。范畴论可被视为泛代数的延伸，后者研究代数结构，前者则适用于任何数学结构，并研究不同性质的结构间的关系，因此可用于整个数学领域。在数理逻辑和语义（范畴抽象机）上的应用来得较晚。

某些称作拓扑斯（topos，单数topoi）的范畴甚至可以替代公理集合论作为数学的基础。拓扑斯也可看做是特定类型的范畴，有两个额外的拓扑斯公理。范畴论的这些基础应用已经研究得相当详细，常是作为数学构成主义的基础。拓扑斯理论是抽象层论的一种形式，源于几何学，启发了诸如无点拓扑学之类想法。

范畴逻辑现在是基于直觉主义逻辑类型论，定义明确的领域，并在函数式编程和域理论中得到应用，其中一个笛卡儿闭范畴被视作λ演算的非语义描述。范畴论澄清了领域间在某种抽象意义上的共同点。

范畴论还有其他应用。例如，约翰·拜艾兹展示了物理学中费曼图和幺半范畴之间的联系。范畴论的另一个应用是拓扑斯理论，已在数学音乐理论中得到了应用，可参Guerino Mazzola的书《音乐的拓扑斯，概念、理论和表现的集合逻辑》。

## 外部链接

- "Category Theory" in Stanford Encyclopedia of Philosophy
- Homepage of the Categories mailing list，具有详尽的参考资料列表
- Category Theory section of Alexandre Stefanov's list of free online mathematics resources