雙函子

在範疇論中，**函子**是範疇間的一類映射。函子也可以解釋為小範疇範疇內的態射。

函子首先現身於代數拓撲學，其中拓撲空間的連續映射給出相應的代數對象（如基本群、同調群或上同調群）的代數同態。在當代數學中，函子被用來描述各種範疇間的關係。「函子」（英文：_Functor_）一詞借自哲學家魯道夫・卡爾納普的用語。卡爾納普使用「函子」這一詞和函數之間的相關來類比謂詞和性質之間的相關。對卡爾納普而言，不同於當代範疇論的用法，函子是個語言學的詞彙。對範疇論者來說，函子則是個特別類型的函數。

## 定義

設 _C_ 和 _D_ 為範疇，從 _C_ 至 _D_ 的**函子**為一映射 $F$ :

* 將每個對象 $X\in C$ 映射至一對象 $F(X)\in D$ 上，
* 將每個態射 $f:X\rightarrow Y\in C$ 映射至一態射 $F(f):F(X)\rightarrow F(Y)\in D$ 上，使之滿足下列條件：
* 對任何對象 $X\in {\mathcal {C}}$ ，恆有 $F(\mathbf {id} _{X})=\mathbf {id} _{F(X)}$ 。
* 對任何態射 $f:X\to Y,\;g:Y\to Z$ ，恆有 $F(g\circ f)=F(g)\circ F(f)$ 。換言之，函子會保持單位態射與態射的複合。

一個由一範疇映射至其自身的函子稱之為「自函子」。

### 協變與反變

數學中有許多構造具有函子的性質，不同之處在於它們將態射的方向「反轉」。為此，我們定義**反變函子**
 $F:{\mathcal {C}}\to {\mathcal {D}}$ 為：

* 將每個對象 $X\in C$ 映射至一對象 $F(X)\in D,$ 上。
* 將每個態射 $f:X\rightarrow Y\in C$ 映射至一態射 $F(f):F(Y)\rightarrow F(X)\in D$ 上。

使之滿足：

* 對任何對象 $X\in {\mathcal {C}}$ 恆有 $F(\mathbf {id} _{X})=\mathbf {id} _{F(X)}$ 。
* 對任何 ${\mathcal {C}}$ 中的態射 $f:X\to Y\;g:Y\to Z$ ，恆有 $F(g\circ f)=F(f)\circ F(g)$ 。

注意，反變函子反轉了複合的方向。

在此脈絡下，原定義中的函子亦稱之為**協變函子**，以區分和反變函子之間的不同。也可以將反變函子定義為在對偶範疇 $C^{op}$ 上的「協變」函子。一些作者即較喜好將所有的表示式寫成協變的。亦即，不說 $F:C\rightarrow D$ 為一反變函子，而簡單寫成 $F:C^{op}\rightarrow D$ （或有時為 $F:C\rightarrow D^{op}$ ），並稱之為函子。

## 自然變換

兩個函子 $F,G:{\mathcal {C}}\to {\mathcal {D}}$ 間的**自然變換**是一族態射

　
: $\eta _{X}:F(X)\to G(X)\quad (X\in {\mathcal {C}})$

使得任何 $X,Y\in {\mathcal {C}}$ 及態射 $f:X\to Y$ 均滿足下述交換圖：

當 $\eta _{X}$ 皆為同構時，可以定義此自然變換之逆 $(\eta _{X})^{-1}$ ，兩者的合成為恆等自然變換。此時稱 $\eta _{X}$ 為函子 $F,G$ 之間的同構。

對反變函子也可以類似地定義自然變換。

## 例子

**常數函子**：將每個對象 $X\in {\mathcal {C}}$ 映射至一固定對象 $Y_{0}\in {\mathcal {D}}$ 中，並將所有態射映射至 $\mathbf {id} _{Y_{0}}$ 中的函子 _C_ → _D_。**常數函子**亦之稱為**選擇函子**。

**對角函子**：對角函子被定義為由 _D_ 至函子範疇 _D_C 的函子，將每個在 _D_ 內的對象映射至此對象的常數函子上。

**極限函子**：對一固定的指標範疇，若每個函子 _J_→_C_ 都有個極限（即若 _C_ 為完全的），則極限函子 _C_J→_C_ 即為將每個函子映射至其極限的函子。此類函子的存在性可以由將其理解為對角函子的右伴隨函子，且引入福端伴隨函子定理來證明之。這需要一個適當版本的選擇公理。相似的說法也可應用在上極限函子（其為協變的）之中。

**冪集合**：冪集合函子 _P_ : **Set** → **Set** 將每個集合映射至其冪集合，且將每個函數 $f:X\to Y$ 映射至從 $U\subseteq X$ 至其值域 $f(U)\subseteq Y$ 的映射。亦可考慮反變冪集合函子，將 _f_ 映射至從 _U_ 映射至其在 _Y_ 內的逆象。

**對偶向量空間**：此函子將每個向量空間映射至其對偶空間中，並將每個線性映射映射至其對偶映射中，為一個由所有在一固定體上的向量空間所組成的範疇映射至其自身的反變函子。

**基本群**：考慮一個由有點空間（即帶有可區分點的拓樸空間）所組成的範疇，其對象為對 (_X_, _x_0)，其中 _X_ 為一拓樸空間且 _x_0 為 _X_ 中的一點，由 (_X_,_x_0) 至 (_Y_, _y_0) 的態射為一連續映射 _f_ : _X_ → _Y_，且滿足 _f_(_x_0) = _y_0。

對每個有可區分點 _x_0 的拓樸空間 _X_，可定義一個基於 _x_0 上的基本群 π1(_X_, _x_0)。這個一個基於 _x_0 上的環的同倫類的群。若 _f_ : _X_ → _Y_ 是一個有點空間的態射，則每個在 _X_ 內，基於點 _x_0 上的環即可經由 _f_ 得出一個在 _Y_ 內，基於 _y_0 的環。此一運算和同倫等價關係及環的複合相符，故可得出一個由 π(_X_, _x_0) 至 π(_Y_, _y_0) 的群同態。因此，即可得出一個由有點拓樸空間範疇至群範疇的函子。

在拓樸空間（沒有可區分點）範疇中，可考慮一般曲線的同倫類，但無法複合，除非它們共有一個端點。因此可以有一**基本廣群**，而無法一定有一基本群。

**連續函數的代數**：一個由拓樸空間的範疇（其態射為連續映射）至實結合代數的範疇的反變函子，其將每個拓樸空間 _X_ 映射至此空間上所有實變連續函數的代數 C (_X_) 上。每個連續映射 _f_ : _X_ → _Y_ 都可導出一個代數同態 C (_f_) : C(_Y_) → C(_X_)，經由讓每個 C (_Y_) 內的 & phi，C (_f_)(φ) = φ o _f_。當空間 $X$ 帶有更多結構（例如光滑流形、複流形）時，定義可以相應地推廣。

**切叢和餘切叢**：將每個微分流形映射至其切叢中且將每個光滑映射映射至其導數中的映射，為一由微分流形的範疇至向量叢的範疇的協變函子。同樣地，將每個微分流形映射至其餘切叢中且將每個光滑映射映射至其回拉的映射，為一反變函子。

在每個點上做此建構可以給出由有點微分流分的範疇至實向量空間的範疇的協變及反變函子。

**群作用 / 表示**：每個群 _G_ 都可以被認為帶有單一個對象的範疇。一個由 _G_ 至 **Set** 的函子只是 _G_ 在一特定集合上的群作用，即一個 _G_- 集合。同樣地，一個由 _G_ 至向量空間範疇 **Vect**K 的函子會是個 _G_ 的線性表示。一般來說，一個函子 _G_ → _C_ 可以被認為是 _G_ 在範疇 _C_ 中的一個對象上的「作用」。

**李代數**：將每個實（複）李群映射至其實（複）李代數可定義出一函子。

**張量積**：若 _C_ 為在一固定體上的向量空間的範疇且其態射為線性映射，則張量積 $V\otimes W$ 可定義出一個函子 _C_ × _C_ → _C_，其中兩個引數都是協變的。

**遺忘函子**：函子 _U_ : **Grp** → **Set** 將群映射至其源集合且將群同態映射至其源函數。此類的函子會「遺忘」部份的結構，因此稱之為「遺忘函子」。另一個例子為函子 **Rng** → **Ab**，其將環映射至其源加法阿貝爾群中。在 **Rng** 中的態射（環同態）則遺忘了其中的乘法，而變成了在 **Ab** 中的態射（阿貝爾群同態）。其他如體、模、拓樸空間等基於集合的結構也可以取其遺忘函子。

**自由函子**：遺忘函子的反向即為自由函子。自由函子 _F_ : **Set** → **Grp** 將每個集合 _X_ 映射至由 _X_ 產生的自由群，函數則映射至自由群間的群同態。自由函子的建構可存在於許多基於由集合的結構的範疇。詳見自由對象。

**同態群**：對每一對群 _A_、_B_，皆可得出一個由所有從 _A_ 至 _B_ 的群同態所組成的阿貝爾群 Hom (_A_,_B_)。這是一個其第一個引數為反變，第二個引數為協變的函子，即為一函子 **Ab**op × **Ab** → **Ab**（其中的 **Ab** 為具群同態的阿貝爾群範疇）。若 _f_ : _A_1 → _A_2 且 _g_ : _B_1 → _B_2 為兩個在 **Ab** 中的態射，則群同態 Hom (_f_,_g_) : Hom(_A_2,_B_1) → Hom(_A_1,_B_2) 以 φ $\mapsto $ _g_ o φ o _f_ 來給定。詳見同態函子。

**表示函子**：可將上述例子廣義化至任一範疇 _C_ 中。即對每一對在 _C_ 中的對象 _X_、_Y_，可得出一個由從 _X_ 至 _Y_ 的所有態射所組成的集合 Hom (_X_,_Y_)。這會定義出一個映射至 **Set**，且其第一個引數為反變，第二個引數為協變的函子，即一函子 _C_op × _C_ → **Set**。若 _f_ : _X_1 → _X_2 且 _g_ : _Y_1 → _Y_2 為 _C_ 中的態射，則其群同態 Hom (_f_,_g_) : Hom(_X_2,_Y_1) → Hom(_X_1,_Y_2) 以 φ $\mapsto $ _g_ o φ o _f_ 來給定。

此類函子即稱之為表示函子。建構出此函子的一個重要目的在於決定一給定函子是否為可表示的。

**預層**：若 _X_ 為一拓撲空間，則在 _X_ 上的開集會形成一個在包括下的偏序集合 Open (_X_)。如同每個偏序開集一般，Open (_X_) 會形成一個小範疇，帶有態射 _U_ → _V_ 若且唯若 $U\subseteq V$ 時。在 Open (_X_) 上的反變函子稱之為在 _X_ 上的「預層」。例如，將每個開集 _U_ 賦值至在 _U_ 上的實變連續函數的結合代數，即可得到一個在 _X_ 上的代數的頂層。

## 性質

從函子的公理中可得出兩個重要的推論：

* _F_ 將每個在 _C_ 中的交換圖變換成 _D_ 中的一個交換圖；
* 若 _f_ 為 _C_ 中的一個同構，則 _F_(_f_) 也會為 _D_ 中的一個同構。

若函子 $F$ 滿足 $F(f)$ 為同構若且唯若 $f$ 為同構，則稱之為**保守函子**。

在任意範疇 _C_ 上，可定義一個**單位函子** 1C，其將每個對象和態射映射至其自身。也可以將函子複合，即若 _F_ 為一由 _A_ 至 _B_ 的函子且 _G_ 為一由 _B_ 至 _C_ 的函子，則可組成一個由 _A_ 至 _C_ 的複合函子。函子的複合依定義是可結合的。這顯示函子可以被認為是範疇的範疇中的態射。

一個只具單一對象的小範疇等同於一個么半群，此一單一對象範疇的態射可被視為是么半群中的元素，且其在範疇中的複合則可以視為是么半群中的運算。此時這類範疇間的函子無非是么半群間的同態。在此意義下，任意範疇間的函子可被視為是么半群同態至多於一個對象的範疇的一種廣義化。

## 雙函子與多函子

雙函子是函子概念在「雙變元」時的推廣。形式的定義則定義在兩個範疇的積上的函子 $F:{\mathcal {A}}\times {\mathcal {B}}\to {\mathcal {C}}$ 。

函子 $\mathrm {Hom} (-,-)$ 是一個自然的例子，它對第一個變元反變，對第二個變元協變。

**雙函子**是有「兩個」引數的函子。同態函子即為一個例子；其第一個引數為反變的，第二個引數則為協變的。

形式上來說，雙函子是一個其定義域為積範疇的函子。例子，同態函子即為 _C_op × _C_ → **Set**。

**多函子**是將函子的概念廣義化至 _n_ 個引數。而雙函子當然是一個 _n_=2 的多函子。

## 與其他範疇論概念的關係

函子本身亦可視為函子範疇中的對象，該範疇中的態射是函子間的自然變換。近來有以「函子的態射」取代術語「自然變換」的趨勢。

函子也經常以泛性質定義，例子包括了張量積，模或群的直和、直積，自由群與自由模的構造；許多構造可以統合於正極限與逆極限的概念下。

泛建構也往往給出一對伴隨函子。

## 具特殊性質之函子

* **本質滿射函子**：使得值域中任意對象皆_同構_於某個 $F(X)$ 的函子。
* **正合函子**：保存有限極限的函子。在阿貝爾範疇中相當於保存正合序列。
* **忠實函子**：使得對任意對象 $X,Y$ ， $\mathrm {Hom} (X,Y)\to \mathrm {Hom} (FX,FY)$ 為單射的函子。
* **完全函子**：使得對任意對象 $X,Y$ ， $\mathrm {Hom} (X,Y)\to \mathrm {Hom} (FX,FY)$ 為滿射的函子。
* **完全忠實函子**：既完全且忠實的函子稱為完全忠實函子。 $F:{\mathcal {C}}\to {\mathcal {D}}$ 是完全忠實函子的充要條件是 $F:{\mathcal {C}}\to F({\mathcal {C}})$ 是範疇的等價，其中 $F({\mathcal {C}})$ 表示 ${\mathcal {D}}$ 中由 $F$ 的像生成的滿子範疇。
* **保守函子**：使得 $F(f)$ 為同構若且唯若 $f$ 為同構的函子。
* **加法函子**：指預加法範疇（或加法範疇）中保存同態集（以及雙積）的阿貝爾群結構的函子。
* **伴隨函子**： $(F,G)$ 滿足下述條件時稱為一對伴隨函子： $\mathrm {Hom} (F(-),-)\simeq \mathrm {Hom} (-,G(-))$ 。

## 注釋