【范畴论】
一个有对象X、Y、Z和态射f、g、g∘f的范畴（若更明确地表示，该范畴的三个恒等态射1X、1Y和1Z，将分别显示为从字母X、Y、Z指向它们的三个箭头）。
范畴论（Category theory）是数学的一门学科，以抽象的方法处理数学概念，将这些概念形式化成一组组的「物件」及「态射」。数学中许多重要的领域可以形式化为范畴。使用范畴论可以令这些领域中许多难理解、难捉摸的数学结论更容易叙述证明。
范畴最容易理解的一个例子为集合范畴，其物件为集合，态射为集合间的函数。但需注意，范畴的物件不一定要是集合，态射也不一定要是函数；一个数学概念若可以找到一种方法，以符合物件及态射的定义，则可形成一个有效的范畴，且所有在范畴论中导出的结论都可应用在这个数学概念之上。
范畴最简单的例子之一为广群，其态射皆为可逆的。群胚的概念在拓扑学中很重要。范畴现在在大部分的数学分支中都有出现，在理论电脑科学的某些领域中用于对应资料型别，而在数学物理中被用来描述向量空间。
范畴论不只是对研究范畴论的人有意义，对其他数学家而言也有著其他的意思。一个可追溯至1940年代的述语「一般化的抽象废话」，即被用来指范畴论那相对于其他传统的数学分支更高阶的抽象化。
== 背景 ==
研究范畴就是试图以「公理化」的方法抓住在各种相关连的「数学结构」中的共同特性，并以结构间的「结构保持函数」将这些结构相关起来。因此，对范畴论系统化的研究将允许任何一个此类数学结构的普遍结论由范畴的公理中证出。
考虑下面的例子：由群组成的类Grp 包含了所有具有「群结构」的物件。要证明有关群的定理，即可由此套公理进行逻辑的推导。例如，由公理中可立即证明出，群的单位元素是唯一的。
不是只专注在有特定结构的个别物件（如群）上，范畴论会著重在这些物件的态射（结构保持映射）上；经由研究这些态射，可以学到更多关于这些物件的结构。以群为例，其态射为群同态。两个群间的群同态会严格地「保持群的结构」，这是个以将一个群中有关结构的讯息运到另一个群的方法，使这个群可以看做是另一个群的「过程」。因此，对群同态的研究提供了一个得以研究群的普遍特性及群公理的推论的工具。
类似的研究也出现在其他许多的数学理论中，如在拓扑学中对拓扑空间的连续映射的研究（相关范畴称为Top），及对流形的光滑函数的研究等。
=== 函子 ===
再抽象化一次，范畴自身亦为数学结构的一种，因此可以寻找在某一意义下会保持其结构的「过程」；此一过程即称之为函子。函子将一个范畴的每个物件和另一个范畴的物件相关连起来，并将第一个范畴的每个态射和第二个范畴的态射相关连起来。
实际上，即是定义了一个「范畴和函子」的范畴，其元件为范畴，（范畴间的）态射为函子。
经由研究范畴和函子，不只是学习了一类数学结构，及在其之间的态射；还学习了「在不同类型的数学结构之间的关系」。此一基本概念首次出现于代数拓扑之中。不同的「拓扑」问题可以转换至通常较易解答的「代数」问题之上。在拓扑空间上如基本群或基本群胚等基本的架构，可以表示成由群胚所组成的范畴之间的基本函子，而这个概念在代数及其应用之中是很普遍的。
=== 自然变换 ===
再抽象化一次，架构通常会「自然地相关连」，这个第一眼会觉得很暧昧的概念，产生了自然变换（将一个函子映射至另一函子的方法）此一清楚的概念。许多数学上的重要架构可以从此一角度来研究。
== 历史注记 ==
范畴、函子和自然变换是由塞缪尔·艾伦伯格和桑德斯·麦克兰恩在1945年引进的。这些概念最初出现在拓扑学，尤其是代数拓扑学里，在同态（具有几何直观）转化成同调论（公理化方法）的过程中起了重要作用。乌拉姆说，在1930年代的后期，波兰学派中曾出现类似的想法。
艾伦堡和麦克兰说，他们的目的在于理解自然映射；为此，必须定义函子；为了定义函子，就自然地要引进范畴。
同调代数由于计算上的需要而使用范畴论，这对范畴论起到了推进作用；此后范畴论又在代数几何的公理化过程中得到发展。代数几何与罗素-怀特海德的关于数学统一性基础的观点相抵触。广义范畴论随后产生，且更容纳了语意灵活性和高阶逻辑等多种新特征的泛代数，现在被运用到数学的所有分支。
特殊范畴拓扑斯甚至可以代替公理集合论作为数学的基础。然而范畴论对这些范围广泛的基础应用还是有争议的；但作为构造性数学的基础或注释，范畴论被研究的相当透彻。尽管如此，公理集合论至今仍然是数学家们的通用语言，并没有被范畴论的注释所取代。将范畴论引入大学程度的教学（在《伯克霍夫-麦克兰》和《麦克兰-伯克霍夫》这两本抽象代数的教科书的区别上可以印证）还是遭到了相当的反对。
范畴逻辑是直觉逻辑中类型论的一个被明确定义的分支，在计算机学科的函数式编程和域理论中均有应用，并且都是在笛卡尔闭范畴中对λ演算的非句法性描述。至少，用范畴论可以精确地描述在这些相关的领域里什么是共同的（在抽象的意义上）。
== 范畴 ==
一个“范畴”  是由如下3个数学实体所组成的：
#一个类 ，其元素称为「物件」；
#一个类 ，其元素称为「态射」或「箭号」。每个态射  都只有一个「源物件」  及一个「目标物件」 （其中  和  都在  内），称之为「从  至  的态射」，标记为 。所有从  至  的态射所组成的类称之为「态射类」，标记为 、 或 。
#一个二元运算，称为「态射复合」，使得对任意三个物件 、  及 ，都会有 。两个态射  及  的复合写做  或 ，并会符合下列两个公理：
#*结合律：若 、 及 ，则 ；
#*单位元：对任意物件 ，总存在一个态射 （称为  的单位态射），使得对每个态射 ，都会有 。
由以上公理可证得，每个物件都只存在一个单位态射。有些作者将物件本身用单位态射来定义，这在本质上是相同的。
如果对象的类确实是个集合，那么这种范畴就被称为“小范畴”。许多重要的范畴不是小范畴。
范畴中的态射有时又称为“箭号”，这种叫法来自于交换图。
=== 范畴举例 ===
每一范畴都由其对象，态射，和复合态射来表述。为了方便起见，以下的“函数”即是指态射，不再一一说明。
* Set 是所有集合和它们彼此之间的全函数构成的范畴
* Ord 是所有预序集和其间的单调函数构成的范畴
* Mag 是所有广群和其间的同态映射构成的范畴
* Med 是所有对换广群和其间的同态映射构成的范畴
* Grp 是所有群和其间的群同态构成的范畴
* Ab 是所有阿贝尔群和其间的群同态构成的范畴
* VectK 是所有域 （固定）上的向量空间和其间的线性映射构成的范畴
* Top 是所有拓扑空间和其间的连续函数构成的范畴
* Met 是所有度量空间和其间的测地映射构成的范畴
* Uni 是所有一致空间和其间的一致连续函数构成的范畴
* 任何偏序集构成一个小范畴，其对象是的元素，其态射是从指向的箭头，其中。
* 任何以单一对象（为任意固定集合）为基础的独异点构成一个小范畴。独异点的任意元素通过二元运算给出一个从到的映射，所有这些映射恰好是范畴的所有态射；范畴的复合态射也正好是独异点的二元运算。事实上，范畴可以看成独异点的推广；关于独异点的定义和定理有一些可以推广到范畴。
* 任何有向图对应于一个小范畴：其对象是图的顶点，其态射是图的路径，其复合态射是路径的连接。称此范畴为有向图的“自由范畴”。
* 设是个集合，“上的离散范畴”是一个小范畴，以的元素为对象，以的恒等映射为其唯一的态射。
* 任何范畴可以在另一种看法下成为一个新的范畴：它具有相同的对象，然而所有态射都是反方向的。称此为“对偶”或者“反范畴”，记作 （来自英文的 opposite）。
* 设和是范畴，则它们的“直积范畴” 被定义为：其对象为取自的一个对象和取自的一个对象的有序对，其态射亦为取自的一个态射和取自的一个态射的有序对，其复合态射则由其分量分别复合。
=== 态射分类 ===
态射 称为
* 单态射，如果 ，则有，此关系对所有态射成立。
* 满态射，如果， 则有，此关系对所有态射成立。
* 同构，如果存在逆态射使得并且。
* 自同构，如果是同构态射，并且有。
* 自同态，如果。
映射之间的关系（比如）在大多数情形下可用更直观的交换图来表示，在此图中对象被表示成顶点，态射被表示为箭头。
== 函子 ==
函子是范畴之间保持结构的映射。它们可以被看成以所有（小）范畴为成员的范畴中的态射。
一个从范畴到范畴的（协变）函子被定义为：
* 对中任意对象，都有一个中相应的对象与其对应；
* 对中任意态射 ，都有一个中相应的态射与其对应；
并使下列性质成立：
* 对中任意的对象，都有。
* 对中任意两个态射和，都有 。
一个从范畴到范畴的反变函子不同于函子的地方仅在于将中的映射箭头倒过来。比如说是中任一态射，则有。定义反变函子的最简捷的方法是作为的反范畴到上的函子。
有关函子的具体例子和性质请详见函子条目。
== 自然和自然同构 ==
详细请见自然变换条目。
一个“自然变换”是两个函子之间的一个关系。函子通常用来描述“自然构造”，而自然变换则用来描述两个构造之间的“自然同态”。有时候，两个截然不同的构造具有“相同的”结果；这正可以用两个函子之间的自然关系来表述。
=== 定义 ===
如果和是从范畴到范畴的（协变）函子，则从到的一个自然变换对于中的任何对象，都有一个中相应的态射，使得对中的任何态射，都有；这也就是说下列图表是可交换的：
Diagram defining natural transformations
两个函子和称为“自然同构”，如果存在一从到的自然变换，使得对所有中的对象，是一个同构。
=== 举例 ===
设是域，是上的任意向量空间，则有从向量空间到其二重对偶的一个“自然”内射型线性映射 。这些映射在以下意义上是“自然”的：二重对偶运算是一个函子，这些映射正好构成了从恒等函子到二重对偶函子的自然变换。如果向量空间的维数是有限的，我们就得到一个自然同构；因为“有限向量空间自然同构于其二重对偶”。
考虑阿贝尔群及其同态构成的范畴。对任意阿贝尔群、和，我们得到群同构
。
这些同构是“自然”的，因为它们定义了两个函子间的一种自然变换：。
== 泛结构、极限和上极限 ==
运用范畴论的语言，许多数学研究领域都可以归结成一些恰当的范畴，例如所有集合的范畴，所有群的范畴，所有拓扑的范畴，等等。这些范畴里的确有一些“特殊的”对象，例如空集或者两个拓扑的直积。然而，在范畴的定义里，对象是原子性的，那就是说，我们无法知道一个对象到底是集合，是拓扑，还是其它抽象概念。有必要定义特殊对象而不涉及对象的内在结构，这是一个挑战。那么到底怎样不用元素而定义空集，不用开集而定义拓扑积呢？
解决这个问题的途径是借用对象和对象之间的关系，而这些关系由相应范畴中的态射给出。现在问题转化为寻找泛性质，这些泛性质可以唯一地决定我们所感兴趣的对象。事实上，为数众多的重要结构都可用纯范畴论的方法来描述。在定义泛性质时，我们要用到一个非常关键的概念：范畴性“极限”和其“上极限”。
== 等价范畴 ==
人们很自然地要问，在什么样的情形下，两个范畴“在本质上是相同”的，换一句话来说，对其中一个范畴成立的定理，可以既定地转换成另一个范畴的定理。用来描述这种情形的主要方法是“范畴的等价性”，由函子给出。范畴的等价性在数学中有很多的应用。
== 进一步的概念和结果 ==
范畴和函子的定义只是范畴代数中最基本的部分。除此之外的重要部分如下列所述。基本上是以阅读顺序排列，尽管它们彼此之间有着内在的联系。
* 函子范畴 以从到的函子为对象，以这些函子间的自然映射为泛射。米田引理刻划了函子范畴中可表示的函子，是范畴论最著名的基本结果之一。
* 对偶原则：范畴论中，每一陈述，定理，或定义都有其“对偶”，实质上可以通过“反转所有箭头”来得到。如果一个陈述在范畴中成立，那么它的对偶将在其对偶范畴中成立。这一对偶性在范畴论的任何层次都是普适的，由于它经常不是很清晰，对偶性的应用可以揭示惊人的关联性。
* 伴随函子：两个映射方向相反的函子对称为伴随函子，随着结合的顺序不同，分别为左伴随和右伴随。通常来自于由泛性质所定义的结构；也可以作为泛性质的一种更加抽象和更加强有力的看法。
== 范畴分类 ==
* 在许多范畴中，态射集合不仅仅是集合，实际上是阿贝尔群，态射的复合具有群结构，也就是说是双线性的。这种范畴被称为预加性的。如果这种范畴还具有所有有限的积和上积，则称为加性范畴。如果所有具有一个核和一个上核，那么所有满射都是上核，所有单射都是核，我们称此为阿贝尔范畴。阿贝尔范畴的一个典型的例子是阿贝尔群所组成的范畴。
* 一个范畴被称为是完备的，如果所有极限存在。集合，阿贝尔群和拓扑空间的范畴是完备的。
* 一个范畴被称为是笛卡儿闭性的，如果它具有有限直积，并且一个定义在有限乘积上的态射总是可以表示成定义在其中一个因子上的态射。
* 一个拓扑斯是一种特殊的笛卡儿闭范畴，在其中可表述（公理化）所有的数学结构（就象传统上使用集合论可以表示所有数学结构）。一个拓扑斯也可以用来表述一个逻辑理论。
* 一个群胚是这样一种范畴，其中每一个映射都是一个同构。群胚是群、群作用和等价关系的推广。