范畴论

范畴论（Category theory）是数学的一门学科，是关于数学结构及其关系的一般理论，以抽象的方法处理数学概念，将这些概念形式化成一组组的「物件」及「态射」。数学中许多重要的领域可以形式化为范畴。使用范畴论可以令这些领域中许多难理解、难捉摸的数学结论更容易叙述证明。
一个范畴包含两类数学对象：物件与态射。以集合范畴为例，其物件为集合，态射为集合间的函数。若以第一个态射的目标为源发出第二个态射，这样形成的“复合态射”的性质同复合函数类似（存在结合律与单位态射）。但需注意，范畴的物件不一定要是集合，态射也不一定要是函数；一个数学概念若可以找到一种方法，以符合物件及态射的定义，则可形成一个有效的范畴，且所有在范畴论中导出的结论都可应用在这个数学概念之上。
范畴最简单的例子之一为广群，其态射皆为可逆的。群胚的概念在拓扑学中很重要。范畴现在在大部分的数学分支中都有出现，在理论电脑科学的某些领域中用于对应资料型别，而在数学物理中被用来描述向量空间。
范畴论不只是对研究范畴论的人有意义，对其他数学家而言也有著其他的意思。一个可追溯至1940年代的述语「一般化的抽象废话」，即被用来指范畴论那相对于其他传统的数学分支更高阶的抽象化。
范畴论在20世纪中叶由塞缪尔·艾伦伯格、桑德斯·麦克莱恩等人在代数拓扑工作的基础上提出。
背景.
研究范畴就是试图以「公理化」的方法抓住在各种相关连的「数学结构」中的共同特性，并以结构间的「结构保持函数」将这些结构相关起来。因此，对范畴论系统化的研究将允许任何一个此类数学结构的普遍结论由范畴的公理中证出。
考虑下面的例子：由群组成的类Grp包含了所有具有「群结构」的物件。要证明有关群的定理，即可由此套公理进行逻辑的推导。例如，由公理中可立即证明出，群的单位元素是唯一的。
不是只专注在有特定结构的个别物件（如群）上，范畴论会著重在这些物件的态射（结构保持映射）上；经由研究这些态射，可以学到更多关于这些物件的结构。以群为例，其态射为群同态。两个群间的群同态会严格地「保持群的结构」，这是个以将一个群中有关结构的讯息运到另一个群的方法，使这个群可以看做是另一个群的「过程」。因此，对群同态的研究提供了一个得以研究群的普遍特性及群公理的推论的工具。
类似的研究也出现在其他许多的数学理论中，如在拓扑学中对拓扑空间的连续映射的研究（相关范畴称为Top），及对流形的光滑函数的研究等。
函子.
再抽象化一次，范畴自身亦为数学结构的一种，因此可以寻找在某一意义下会保持其结构的「过程」；此一过程即称之为函子。函子将一个范畴的每个物件和另一个范畴的物件相关连起来，并将第一个范畴的每个态射和第二个范畴的态射相关连起来。
实际上，即是定义了一个「范畴和函子」的范畴，其元件为范畴，（范畴间的）态射为函子。
经由研究范畴和函子，不只是学习了一类数学结构，及在其之间的态射；还学习了「在不同类型的数学结构之间的关系」。此一基本概念首次出现于代数拓扑之中。不同的「拓扑」问题可以转换至通常较易解答的「代数」问题之上。在拓扑空间上如基本群或基本群胚等基本的架构，可以表示成由群胚所组成的范畴之间的基本函子，而这个概念在代数及其应用之中是很普遍的。
自然变换.
再抽象化一次，架构通常会「自然地相关连」，这个第一眼会觉得很暧昧的概念，产生了自然变换（将一个函子映射至另一函子的方法）此一清楚的概念。许多数学上的重要架构可以从此一角度来研究。
历史注记.
范畴、函子和自然变换是由塞缪尔·艾伦伯格和桑德斯·麦克兰恩在1945年引进的。这些概念最初出现在拓扑学，尤其是代数拓扑学里，在同态（具有几何直观）转化成同调论（公理化方法）的过程中起了重要作用。乌拉姆说，在1930年代的后期，波兰学派中曾出现类似的想法。
艾伦堡和麦克兰说，他们的目的在于理解自然映射；为此，必须定义函子；为了定义函子，就自然地要引进范畴。
同调代数由于计算上的需要而使用范畴论，这对范畴论起到了推进作用；此后范畴论又在代数几何的公理化过程中得到发展。代数几何与罗素-怀特海德的关于数学统一性基础的观点相抵触。广义范畴论随后产生，且更容纳了语意灵活性和高阶逻辑等多种新特征的泛代数，现在被运用到数学的所有分支。
特殊范畴拓扑斯甚至可以代替公理集合论作为数学的基础。然而范畴论对这些范围广泛的基础应用还是有争议的；但作为构造性数学的基础或注释，范畴论被研究的相当透彻。尽管如此，公理集合论至今仍然是数学家们的通用语言，并没有被范畴论的注释所取代。将范畴论引入大学程度的教学（在《伯克霍夫-麦克兰》和《麦克兰-伯克霍夫》这两本抽象代数的教科书的区别上可以印证）还是遭到了相当的反对。
范畴逻辑是直觉逻辑中类型论的一个被明确定义的分支，在计算机学科的函数式编程和域理论中均有应用，并且都是在笛卡尔闭范畴中对λ演算的非句法性描述。至少，用范畴论可以精确地描述在这些相关的领域里什么是共同的（在抽象的意义上）。
范畴、物件与态射.
范畴.
一个“范畴” formula_1 由如下3个数学对象组成：
由以上公理可证得，每个物件都只存在一个单位态射。有些作者将物件本身用单位态射来定义，这在本质上是相同的。
如果对象的类确实是个集合，那么这种范畴就被称为“小范畴”。许多重要的范畴不是小范畴。
范畴中的态射有时又称为“箭号”，这种叫法来自于交换图。
范畴举例.
每一范畴都由其对象，态射，和复合态射来表述。为了方便起见，以下的“函数”即是指态射，不再一一说明。
态射.
映射之间的关系（比如formula_61）在大多数情形下可用更直观的交换图来表示，在此图中对象被表示成顶点，态射被表示为箭头。
一个表为formula_62的态射可具有以下任意一种性质。
屈态射必为满态射，切态射必为单态射。另外，下面三条表述等价：
函子.
函子是范畴之间保持结构的映射，可以看成以所有（小）范畴为成员的范畴中的态射。
一个从范畴formula_51到范畴formula_55的（协变）函子formula_90被定义为：
并使下列性质成立：
一个从范畴formula_51到范畴formula_55的反变函子formula_90不同于函子的地方仅在于将formula_55中的映射箭头倒过来。比如说formula_96是formula_51中任一态射，则有formula_112。定义反变函子的最简捷的方法是作为formula_51的反范畴formula_52到formula_55上的函子。
有关函子的具体例子和性质请详见函子条目。
自然和自然同构.
“自然变换”是两个函子之间的关系。函子通常用来描述“自然构造”，而自然变换则描述函子间的“自然同态”。有时，两个截然不同的构造会产生“相同”结果，这可以用函子之间的自然同态来表述。
定义.
如果formula_90和formula_117是从范畴formula_51到范畴formula_55的（协变）函子，则从formula_90到formula_117的一个自然变换会给formula_51中的每个对象formula_92，关联一个formula_55中相应的态射formula_125，使得对formula_51中的任何态射formula_96，都有formula_128；这也就是说下列图表是可交换的：
如有从formula_90到formula_117的自然变换，使得formula_131对formula_51中所有对象formula_92来说都同构，则称这两个函子formula_90和formula_117“自然同构”。
举例.
设formula_35是域，formula_137是formula_35上的任意向量空间，则有从向量空间到其二重对偶的一个“自然”内射型线性映射formula_139 。这些映射在以下意义上是“自然”的：二重对偶运算是一个函子，这些映射正好构成了从恒等函子到二重对偶函子的自然变换。如果向量空间的维数是有限的，我们就得到一个自然同构；因为“有限向量空间自然同构于其二重对偶”。
考虑阿贝尔群及其同态构成的范畴formula_140。对任意阿贝尔群formula_92、formula_142和formula_143，我们得到群同构
这些同构是“自然”的，因为它们定义了两个函子间的一种自然变换：formula_145。
泛结构、极限和上极限.
运用范畴论的语言，许多数学研究领域都可以归结成一些恰当的范畴，例如所有集合的范畴，所有群的范畴，所有拓扑的范畴，等等。这些范畴里的确有一些“特殊的”对象，例如空集或者两个拓扑的直积。然而，在范畴的定义里，对象是原子性的，那就是说，我们无法知道一个对象到底是集合，是拓扑，还是其它抽象概念。有必要定义特殊对象而不涉及对象的内在结构，这是一个挑战。那么到底怎样不用元素而定义空集，不用开集而定义拓扑积呢？
解决这个问题的途径是借用对象和对象之间的关系，而这些关系由相应范畴中的态射给出。现在问题转化为寻找泛性质，这些泛性质可以唯一地决定我们所感兴趣的对象。事实上，为数众多的重要结构都可用纯范畴论的方法来描述。在定义泛性质时，我们要用到一个非常关键的概念：范畴性“极限”和其“上极限”。
等价范畴.
人们很自然地要问，在什么样的情形下，两个范畴“在本质上是相同”的，换一句话来说，对其中一个范畴成立的定理，可以既定地转换成另一个范畴的定理。用来描述这种情形的主要方法是“范畴的等价性”，由函子给出。范畴的等价性在数学中有很多的应用。
进一步的概念和结果.
范畴和函子的定义只是范畴代数中最基本的部分。除此之外的重要部分如下列所述。基本上是以阅读顺序排列，尽管它们彼此之间有着内在的联系。
高维范畴.
上述许多概念，特别是范畴的等价性、伴随函子和函子范畴等，可抽象至更高维的背景中。简而言之，若将态射视为“从一个对象到另一个对象的过程”，那么高维范畴就允许我们考虑“高维过程”，从而方便地概括之。
例如，（严格）2-范畴是与“态射间的态射”一起的范畴，即允许态射转换的过程。然后便可以对这些“双态射”进行横纵向的“组合”，通过规定二维的“交换律”，联系起两个合成律。这方面的标准例子是Cat，即所有（小）范畴的二维范畴，其中态射的双态射仅仅是通常意义上的态射的自然变换。另一个基本例子是，考虑一个具有单一物件的二维范畴，即幺半范畴。双范畴是比二维范畴弱的概念。其中态射的组成不是严格意义上的关联，而只是平凡的同构。
这个过程可以扩展到任意自然数维，称为n维范畴。甚至还有与序数ω对应的ω维范畴的概念。
高维范畴是更广泛的高维代数的一部分。
研究史.
虽然塞缪尔·艾伦伯格和桑德斯·麦克莱恩在1942年一篇关于群论的论文中已经给出了函子和自然变换的具体例子，他们在1945年的一篇论文中，向这些概念引入了更普遍的意义，还有范畴的额外概念，并讨论了范畴论在代数拓扑领域的应用。这些工作是直观几何同调到同调代数过渡的一个重要部分。
以斯塔尼斯拉夫·乌拉姆名义写的一系列文章，都声称类似的想法在1930年代末的波兰已经流行了。艾伦伯格是波兰人，1930年代在波兰学习数学。范畴论在某种意义上也是埃米·诺特将抽象过程形式化的延续；诺特意识到，理解一种数学结构需要理解保留了结构的过程（同构）。艾伦伯格和麦克莱恩引入了范畴，用于理解和形式化将代数结构（拓扑不变量）与拓扑学结构相关联的过程（函子）。
范畴论最初源自同调代数的需要，并为现代代数几何（概形论）的需要而得到广泛扩展。范畴论可被视为泛代数的延伸，后者研究代数结构，前者则适用于任何数学结构，并研究不同性质的结构间的关系，因此可用于整个数学领域。在数理逻辑和语义（范畴抽象机）上的应用来得较晚。
某些称作拓扑斯（topos，单数topoi）的范畴甚至可以替代公理集合论作为数学的基础。拓扑斯也可看做是特定类型的范畴，有两个额外的拓扑斯公理。范畴论的这些基础应用已经研究得相当详细，常是作为数学构成主义的基础。拓扑斯理论是抽象层论的一种形式，源于几何学，启发了诸如无点拓扑学之类想法。
范畴逻辑现在是基于直觉主义逻辑类型论，定义明确的领域，并在函数式编程和域理论中得到应用，其中一个笛卡儿闭范畴被视作λ演算的非语义描述。范畴论澄清了领域间在某种抽象意义上的共同点。
范畴论还有其他应用。例如，约翰·拜艾兹展示了物理学中费曼图和幺半范畴之间的联系。范畴论的另一个应用是拓扑斯理论，已在数学音乐理论中得到了应用，可参Guerino Mazzola的书《音乐的拓扑斯，概念、理论和表现的集合逻辑》。