范畴论

範疇論（英語：Category theory）是數學的一門學科，是关于数学结构及其关系的一般理论，以抽象的方法處理數學概念，將這些概念形式化成一組組的「物件」及「態射」。數學中許多重要的領域可以形式化為範疇。使用範疇論可以令這些領域中許多難理解、難捉摸的數學結論更容易敘述證明。
一个范畴包含两类数学对象：物件与态射。以集合範疇为例，其物件為集合，態射為集合間的函數。若以第一个态射的目标为源发出第二个态射，这样形成的“复合态射”的性质同复合函数类似（存在结合律与单位态射）。但需注意，範疇的物件不一定要是集合，態射也不一定要是函數；一個數學概念若可以找到一種方法，以符合物件及態射的定義，則可形成一個有效的範疇，且所有在範疇論中導出的結論都可應用在這個數學概念之上。
範疇最簡單的例子之一為广群，其態射皆為可逆的。群胚的概念在拓撲學中很重要。範疇現在在大部分的數學分支中都有出現，在理論電腦科學的某些領域中用于對應資料型別，而在數學物理中被用來描述向量空間。
範疇論不只是對研究範疇論的人有意義，對其他數學家而言也有著其他的意思。一個可追溯至1940年代的述語「一般化的抽象廢話」，即被用來指範疇論那相對於其他傳統的數學分支更高階的抽象化。
范畴论在20世纪中叶由塞缪尔·艾伦伯格、桑德斯·麦克莱恩等人在代数拓扑工作的基础上提出。
研究範疇就是試圖以「公理化」的方法抓住在各種相關連的「數學結構」中的共同特性，並以結構間的「結構保持函數」將這些結構相關起來。因此，對範疇論系統化的研究將允許任何一個此類數學結構的普遍結論由範疇的公理中證出。
考慮下面的例子：由群組成的類Grp包含了所有具有「群結構」的物件。要證明有關群的定理，即可由此套公理進行邏輯的推導。例如，由公理中可立即證明出，群的單位元素是唯一的。
不是只專注在有特定結構的個別物件（如群）上，範疇論會著重在這些物件的態射（結構保持映射）上；經由研究這些態射，可以學到更多關於這些物件的結構。以群為例，其態射為群同態。兩個群間的群同態會嚴格地「保持群的結構」，這是個以將一個群中有關結構的訊息運到另一個群的方法，使這個群可以看做是另一個群的「過程」。因此，對群同態的研究提供了一個得以研究群的普遍特性及群公理的推論的工具。
類似的研究也出現在其他許多的數學理論中，如在拓撲學中對拓撲空間的連續映射的研究（相關範疇稱為Top），及對流形的光滑函數的研究等。
再抽象化一次，範疇自身亦為數學結構的一種，因此可以尋找在某一意義下會保持其結構的「過程」；此一過程即稱之為函子。函子將一個範疇的每個物件和另一個範疇的物件相關連起來，並將第一個範疇的每個態射和第二個範疇的態射相關連起來。
實際上，即是定義了一個「範疇和函子」的範疇，其元件為範疇，（範疇間的）態射為函子。
經由研究範疇和函子，不只是學習了一類數學結構，及在其之間的態射；還學習了「在不同類型的數學結構之間的關係」。此一基本概念首次出現於代數拓撲之中。不同的「拓撲」問題可以轉換至通常較易解答的「代數」問題之上。在拓撲空間上如基本群或基本群胚等基本的架構，可以表示成由群胚所組成的範疇之間的基本函子，而這個概念在代數及其應用之中是很普遍的。
再抽象化一次，架構通常會「自然地相關連」，這個第一眼會覺得很曖昧的概念，產生了自然變換（將一個函子映射至另一函子的方法）此一清楚的概念。許多數學上的重要架構可以從此一角度來研究。
范畴、函子和自然变换是由塞缪尔·艾伦伯格和桑德斯·麦克兰恩在1945年引进的。这些概念最初出现在拓扑学，尤其是代数拓扑学里，在同态（具有几何直观）转化成同调论（公理化方法）的过程中起了重要作用。乌拉姆说，在1930年代的后期，波兰学派中曾出现类似的想法。
艾伦堡和麦克兰说，他们的目的在于理解自然映射；为此，必须定义函子；为了定义函子，就自然地要引进范畴。
同调代数由于计算上的需要而使用范畴论，这对范畴论起到了推进作用；此后范畴论又在代数几何的公理化过程中得到发展。代数几何与罗素-怀特海德的关于数学统一性基础的观点相抵触。广义范畴论随后产生，且更容纳了语意灵活性和高阶逻辑等多种新特征的泛代数，现在被运用到数学的所有分支。
特殊范畴拓扑斯甚至可以代替公理集合论作为数学的基础。然而范畴论对这些范围广泛的基础应用还是有争议的；但作为构造性数学的基础或注释，范畴论被研究的相当透彻。尽管如此，公理集合论至今仍然是数学家们的通用语言，并没有被范畴论的注释所取代。将范畴论引入大学程度的教学（在《伯克霍夫-麦克兰》和《麦克兰-伯克霍夫》这两本抽象代数的教科书的区别上可以印证）还是遭到了相当的反对。
范畴逻辑是直觉逻辑中类型论的一个被明确定义的分支，在计算机学科的函数式编程和域理论中均有应用，并且都是在笛卡尔闭范畴中对λ演算的非句法性描述。至少，用范畴论可以精确地描述在这些相关的领域里什么是共同的（在抽象的意义上）。
一个“范畴” C {\displaystyle C} 由如下3個数学对象組成：
由以上公理可證得，每個物件都只存在一個單位态射。有些作者将物件本身用單位态射来定义，这在本质上是相同的。
如果对象的类确实是个集合，那么这种范畴就被称为“小范畴”。许多重要的范畴不是小范畴。
范畴中的态射有时又称为“箭號”，这种叫法来自于交换图。
每一范畴都由其对象，态射，和复合态射来表述。为了方便起见，以下的“函数”即是指态射，不再一一说明。
映射之间的关系（比如 f g = h {\displaystyle fg=h} ）在大多数情形下可用更直观的交换图来表示，在此图中对象被表示成顶点，态射被表示为箭头。
一个表为 f : a → b {\displaystyle f:a\rightarrow b} 的态射可具有以下任意一种性质。
屈态射必为满态射，切态射必为单态射。另外，下面三条表述等价：
函子是范畴之间保持结构的映射，可以看成以所有（小）范畴为成员的范畴中的态射。
一个从范畴 C {\displaystyle C} 到范畴 D {\displaystyle D} 的（协变）函子 F {\displaystyle F} 被定义为：
并使下列性质成立：
一个从范畴 C {\displaystyle C} 到范畴 D {\displaystyle D} 的反变函子 F {\displaystyle F} 不同于函子的地方仅在于将 D {\displaystyle D} 中的映射箭头倒过来。比如说 f : X → Y {\displaystyle f:X\rightarrow Y} 是 C {\displaystyle C} 中任一态射，则有 F ( f ) : F ( Y ) → F ( X ) {\displaystyle F(f):F(Y)\rightarrow F(X)} 。定义反变函子的最简捷的方法是作为 C {\displaystyle C} 的反范畴 C o p {\displaystyle C^{op}} 到 D {\displaystyle D} 上的函子。
有关函子的具体例子和性质请详见函子条目。
“自然变换”是两个函子之间的关系。函子通常用来描述“自然构造”，而自然变换则描述函子间的“自然同态”。有时，两个截然不同的构造会产生“相同”结果，这可以用函子之间的自然同态来表述。
如果 F {\displaystyle F} 和 G {\displaystyle G} 是从范畴 C {\displaystyle C} 到范畴 D {\displaystyle D} 的（协变）函子，则从 F {\displaystyle F} 到 G {\displaystyle G} 的一个自然变换会给 C {\displaystyle C} 中的每个对象 X {\displaystyle X} ，关联一个 D {\displaystyle D} 中相应的态射 η X : F ( X ) → G ( X ) {\displaystyle \eta _{X}:F(X)\rightarrow G(X)} ，使得对 C {\displaystyle C} 中的任何态射 f : X → Y {\displaystyle f:X\rightarrow Y} ，都有 η Y ⋅ F ( f ) = G ( f ) ⋅ η X {\displaystyle \eta _{Y}\cdot F(f)=G(f)\cdot \eta _{X}} ；这也就是说下列图表是可交换的：
如有从 F {\displaystyle F} 到 G {\displaystyle G} 的自然变换，使得 η X {\displaystyle \eta _{X}} 对 C {\displaystyle C} 中所有对象 X {\displaystyle X} 来说都同构，则称这两个函子 F {\displaystyle F} 和 G {\displaystyle G} “自然同构”。
设 K {\displaystyle K} 是域， V {\displaystyle V} 是 K {\displaystyle K} 上的任意向量空间，则有从向量空间到其二重对偶的一个“自然”內射型线性映射 V → V ∗ ∗ {\displaystyle V\rightarrow V^{**}} 。这些映射在以下意义上是“自然”的：二重对偶运算是一个函子，这些映射正好构成了从恒等函子到二重对偶函子的自然变换。如果向量空间的维数是有限的，我们就得到一个自然同构；因为“有限向量空间自然同构于其二重对偶”。
考虑阿贝尔群及其同态构成的范畴 A b {\displaystyle \mathrm {Ab} } 。对任意阿贝尔群 X {\displaystyle X} 、 Y {\displaystyle Y} 和 Z {\displaystyle Z} ，我们得到群同构
这些同构是“自然”的，因为它们定义了两个函子间的一种自然变换： A b o p × A b o p × A b → A b {\displaystyle \mathrm {Ab} ^{op}\times \mathrm {Ab} ^{op}\times \mathrm {Ab} \rightarrow \mathrm {Ab} } 。
运用范畴论的语言，许多数学研究领域都可以归结成一些恰当的范畴，例如所有集合的范畴，所有群的范畴，所有拓扑的范畴，等等。这些范畴里的确有一些“特殊的”对象，例如空集或者两个拓扑的直积。然而，在范畴的定义里，对象是原子性的，那就是说，我们无法知道一个对象到底是集合，是拓扑，还是其它抽象概念。有必要定义特殊对象而不涉及对象的内在结构，这是一个挑战。那么到底怎样不用元素而定义空集，不用开集而定义拓扑积呢？
解决这个问题的途径是借用对象和对象之间的关系，而这些关系由相应范畴中的态射给出。现在问题转化为寻找泛性质，这些泛性质可以唯一地决定我们所感兴趣的对象。事实上，为数众多的重要结构都可用纯范畴论的方法来描述。在定义泛性质时，我们要用到一个非常关键的概念：范畴性“极限”和其“上极限”。
人们很自然地要问，在什么样的情形下，两个范畴“在本质上是相同”的，换一句话来说，对其中一个范畴成立的定理，可以既定地转换成另一个范畴的定理。用来描述这种情形的主要方法是“范畴的等价性”，由函子给出。范畴的等价性在数学中有很多的应用。
范畴和函子的定义只是范畴代数中最基本的部分。除此之外的重要部分如下列所述。基本上是以阅读顺序排列，尽管它们彼此之间有着内在的联系。
上述许多概念，特别是范畴的等价性、伴随函子和函子范畴等，可抽象至更高维的背景中。简而言之，若将态射视为“从一个对象到另一个对象的过程”，那么高维范畴就允许我们考虑“高维过程”，从而方便地概括之。
例如，（严格）2-范畴是与“态射间的态射”一起的范畴，即允许态射转换的过程。然后便可以对这些“双态射”进行横纵向的“组合”，通过规定二维的“交换律”，联系起两个合成律。这方面的标准例子是Cat，即所有（小）范畴的二维范畴，其中态射的双态射仅仅是通常意义上的态射的自然变换。另一个基本例子是，考虑一个具有单一物件的二维范畴，即幺半范畴。双范畴是比二维范畴弱的概念。其中态射的组成不是严格意义上的关联，而只是平凡的同构。
这个过程可以扩展到任意自然数维，称为n维范畴。甚至还有与序数ω对应的ω维范畴的概念。
高维范畴是更广泛的高维代数的一部分。
虽然塞缪尔·艾伦伯格和桑德斯·麦克莱恩在1942年一篇关于群论的论文中已经给出了函子和自然变换的具体例子，他们在1945年的一篇论文中，向这些概念引入了更普遍的意义，还有范畴的额外概念，并讨论了范畴论在代数拓扑领域的应用。这些工作是直观几何同调到同调代数过渡的一个重要部分。
以斯塔尼斯拉夫·乌拉姆名义写的一系列文章，都声称类似的想法在1930年代末的波兰已经流行了。艾伦伯格是波兰人，1930年代在波兰学习数学。范畴论在某种意义上也是埃米·诺特将抽象过程形式化的延续；诺特意识到，理解一种数学结构需要理解保留了结构的过程（同构）。艾伦伯格和麦克莱恩引入了范畴，用于理解和形式化将代数结构（拓扑不变量）与拓扑学结构相关联的过程（函子）。
范畴论最初源自同调代数的需要，并为现代代数几何（概形论）的需要而得到广泛扩展。范畴论可被视为泛代数的延伸，后者研究代数结构，前者则适用于任何数学结构，并研究不同性质的结构间的关系，因此可用于整个数学领域。在数理逻辑和语义（范畴抽象机）上的应用来得较晚。
某些称作拓扑斯（topos，单数topoi）的范畴甚至可以替代公理集合论作为数学的基础。拓扑斯也可看做是特定类型的范畴，有两个额外的拓扑斯公理。范畴论的这些基础应用已经研究得相当详细，常是作为数学构成主义的基础。拓扑斯理论是抽象层论的一种形式，源于几何学，启发了诸如无点拓扑学之类想法。
范畴逻辑现在是基于直觉主义逻辑类型论，定义明确的领域，并在函数式编程和域理论中得到应用，其中一个笛卡儿闭范畴被视作λ演算的非语义描述。范畴论澄清了领域间在某种抽象意义上的共同点。
范畴论还有其他应用。例如，约翰·拜艾兹展示了物理学中费曼图和幺半范畴之间的联系。范畴论的另一个应用是拓扑斯理论，已在数学音乐理论中得到了应用，可参Guerino Mazzola的书《音乐的拓扑斯，概念、理论和表现的集合逻辑》。