單子 (範疇論)

數學的分支範疇論中，單子（monad），又稱三元組（triple, triad）、標準構造（standard construction）、基本構造（fundamental construction），是一個內函子（即由某範疇映到自身的函子），連同滿足特定連貫條件的兩個自然變換，三者構成的整體。單子用於研究互為伴隨的函子對，並將偏序集上的閉包算子推廣到任意範疇。

## 導論與定義

單子是一類內函子（連同其他資訊）。例如，若$F$和$G$為一對伴隨函子，$F$為$G$的左伴隨，則複合$G \circ F$是單子。若$F$與$G$互為逆函子，則對應的單子是恆等函子。一般而言，伴隨關係並不等同範疇的等價，而可以聯繫不同性質的範疇。為了探討伴隨關係所「保持」的性質，數學家研究單子論。理論的另一半，即藉考慮$F \circ G$，以研究伴隨關係，是單子論的對偶理論。該類函子稱為餘單子（comonad）。

### 嚴格定義

本條目中，$\mathcal C$皆表示某範疇。$\mathcal C$上的單子是函子$T: \mathcal C \to \mathcal C$，連同兩個自然變換，分別是單位$\eta : 1_{\mathcal C} \to T$（其中$1_{\mathcal C}$是$\mathcal C$上的恆等函子）與乘法$\mu : T^{2} \to T$（其中$T^{2}$是複合$T \circ T$，亦是$\mathcal C$到$\mathcal C$的函子），且要滿足下列連貫條件：

- $\mu \circ T\mu = \mu \circ \mu T$（左右皆為$T^{3} \to T$的自然變換）。此處$T\mu$與$\mu T$經水平複合而得。
- $\mu \circ T \eta = \mu \circ \eta T = 1_{T}$（兩者皆為$T \to T$的自然變換）。此處$1_{T}$表示由函子$T$到自身的恆等自然變換。

以上兩式，亦可以下列交換圖複述：

<image>

｜ ｜

<image>

記號$T\mu$與$\mu T$的含義，參見自然變換，又或考慮以下更具體的寫法，不用水平複合記號，並將各函子作用在任意物件$X$上：

<image>

｜ ｜

<image>

定義中，若將$\mu$當成么半群的乘法，則第一條公理類似么半群對象的乘法結合律，而第二條公理類似單位元的存在性（由$\eta$給出）。準確而言，$\mathcal C$上的單子，可以等價地定義為$\mathcal C$的內函子範疇$\mathbf{End}_{\mathcal C}$中的么半群對象。（該範疇的物件是$C$上的內函子，而態射是內函子間的自然變換，么半結構來自內函子的複合運算。）如此，單子不僅在形式上具有與么半群相似的公理，甚而單子就是么半群的特例。

### 冪集單子

冪集單子$\mathcal{P}$是集合範疇$\mathbf{Set}$上的單子。其定義中，函子$T$取為冪集運算，即$T(A)$為集合$A$的冪集，而對於函數$f : A \to B$，$T(f)$將$A$的子集映至其像集，即$T(f)(A') = f[A']$。對每個集合$A$，有函數$\eta_{A}: A \to T(A)$，對每個元素$a\in A$映至單元子集$\{a\}$，並有函數

$$\mu_{A} \colon T(T(A)) \to T(A),$$

將$A$的若干個子集構成的族，映至該些子集的並集。以上是冪集單子的定義。

兩個單子的複合，未必為單子。舉例，冪集單子$\mathcal P$的二次疊代$\mathcal{P} \circ \mathcal{P}$，無法配備單子結構。

### 餘單子

取上節定義的範疇論對偶，便是餘單子（或餘三元組）的定義。簡單複述，範疇$\mathcal C$上的餘單子，是對偶範疇$C^{\mathrm{op}}$上的單子。所以，餘單子是由$\mathcal C$到$\mathcal C$的某個函子$U$，連同餘單位與餘乘法（counit and comultiplication）兩個自然變換，組成的整體，而三者所要滿足的公理，是將原定義中所有態射反轉方向而得。

單子之於么半群，如同餘單子之於餘么半群。每個集合皆是餘么半群，且僅有唯一一種方式，所以抽象代數中，較少考慮餘么半群。然而，在線性代數中，向量空間範疇（配備張量積）的餘么半群較為重要，以餘代數之名為人所知。

### 歷史

單子的概念最早由羅傑·戈德芒於1958年提出，當時稱為「標準構造」（standard construction）。實際上，該書用到的是餘單子，用作解決某個層餘調問題。

其後，單子又出現於彼得·胡伯（Peter Huber）對範疇同倫的研究中。該論文包含由任意一對伴隨函子得出單子的證明。

1965年，海因里希·克萊斯利，及塞繆爾·艾倫伯格、約翰·柯曼·摩爾二人分別獨立證明反向的結論，即每個單子皆可由某對伴隨函子產生。後一篇論文中，將單子稱為「三元組」。

1963年，威廉·洛維爾提出泛代數的範疇論。1966年，弗雷德·林頓（Fred Linton）將該理論用單子的語言表達。單子本身來自拓撲方面的考量，事先似乎比洛維爾的理論更難處理，但已成為用範疇論語言闡述泛代數的方法中，較常見的一個。現今常用的英文名稱monad是1971年由桑德斯·麥克蘭恩在《現職數學家用的範疇》引入，以其類似單子論中的同名哲學概念，即某種能生出其他所有事物的實體。

1980年代，歐金尼奧·莫吉在理論電腦科學中，利用單子，為電腦程式的若干方面建立模型，包括例外處理、邊界情況。此後，有多種函數式編程語言仔細實作此想法，作為一種基本規律，同樣稱為單子。2001年，若干數學家注意到，用單子研究程式標誌語意的方法，與洛維爾的理論，兩者之間有關聯。此為代數與語義間的聯繫，是後來活躍的研究課題。

## 例子

### 伴隨的複合

若有伴隨關係

$$F: \mathcal C \rightleftarrows \mathcal D : G$$

（即$F$為$G$的左伴隨，下同），則由此有$\mathcal C$上的單子。此普遍的構造，取內函子為複合

$$T = G \circ F,$$

而單位自然變換來自伴隨的單位$\eta: \operatorname{id}_\mathcal C \to G \circ F$，乘法自然變換源自伴隨的餘單位$\varepsilon$：

$$T^2 = G \circ F \circ G \circ F \xrightarrow{G \circ \varepsilon \circ F} G \circ F = T.$$

反之，給定單子，可以明確找回一對伴隨函子，使單子為該對伴隨函子的複合。此構造用到下節定義的$T$代數的艾倫伯格－摩爾範疇$C^T$。

#### 兩重對偶

給定域$k$，雙重對偶單子（double dualisation monad）源自伴隨關係

$$(-)^* : \mathbf{Vect}_k \rightleftarrows \mathbf{Vect}_k^{\mathrm{op}} : (-)^*,$$

其中兩個函子$(-)^*$皆將$k$向量空間$V$映至對偶空間$V^* := \operatorname{Hom}(V, k)$，所以對應的單子將向量空間$V$映至雙對偶$V^{**}$。對此有更廣泛的討論。

#### 偏序集的閉包算子

偏序集$(P, \le)$可以視為特殊的範疇，任意兩件物件之間有最多一支態射，且$x$到$y$有態射若且唯若偏序中$x \le y$。於是，偏序集之間的函子，即是保序映射，而伴隨函子對，則組成兩偏序集間的伽羅瓦連接，相應的單子是伽羅華連接的閉包算子。

#### 自由遺忘伴隨

又舉例，設$G$為群範疇$\mathbf{Grp}$至集合範疇$\mathbf{Set}$的遺忘函子，將群映至其基集，又設$F$為自由函子，由$\mathbf{Set}$到$\mathbf{Grp}$，則$F$是$G$的左伴隨。此時，對應的單子$T = G \circ F$的作用是，輸入一個集合$X$，輸出自由群$F(X)$的基集，即字母取自$\{x, x^{-1}: x \in X\}$，且無相鄰兩個字母互為逆元的字串的集合。

該單子的單位變換，由包含映射

$$\eta_X: X \rightarrow T(X)$$

給出，該包含映射將$X$的任意元素，看成僅得一個字元的字串，從而是$T(X)$的元素。最後，單子的乘法

$$\mu_X: T(T(X)) \rightarrow T(X)$$

是串接或「壓平」運算，將若干條字串組成的串，映至該串中所有字串前後連接而成的一條字串。至此描述完單子的兩個自然變換。

前述例子中，自由群可以推廣至其他種類的代數結構，即泛代數意義下的任意一簇 (泛代數)代數。如此，每類代數定義了集合範疇上的一個單子。更重要的是，該類代數的範疇，可從單子找回，即單子的艾倫伯格－摩爾代數範疇，故單子可視為泛代數之簇的推廣。

另外，尚有一個單子源自伴隨關係。在向量空間範疇$\mathbf{Vect}$上，若$T$表示將向量空間$V$映至其張量代數$T(V)$的內函子，則相應有單位自然變換將$V$嵌入到其張量代數，並有乘法自然變換，在$V$處的分量是態射$T(T(V))\to T(V)$，將張量積之張量積展開化簡。

### 餘密度單子

只要滿足某些不強的條件，無左伴隨的函子也可以產生單子，稱為餘密度單子。例如，從有限集合範疇$\mathbf{FinSet}$到集合範疇$\mathbf{Set}$的包含函子無法配備左伴隨，但其餘密度單子定義在$\mathbf{Set}$上，將任意集合$X$映至其上所有超濾子的集合$\beta X$。類似例子見於。

## 單子的代數

給定範疇$\mathcal C$上的單子$(T,\eta,\mu)$，可以考慮$\mathcal C$中的$\boldsymbol T$代數物件。$T$在該些物件上的作用，與單子的單位與乘法相容。具體而言，$\boldsymbol T$代數$(x,h)$是$\mathcal C$中的物件$x$，連同態射$h: Tx\to x$（稱為該代數的結構映射），使得圖

<image>

｜及｜

<image>

皆可交換。

$T$代數間的態射$f:(x,h)\to(x',h')$是$\mathcal C$中的態射$f:x\to x'$，且要使

<image>

可交換。於是，$T$代數及之間的態射組成範疇，稱為艾倫伯格－摩爾範疇（Eilenberg–Moore category），記為$\mathcal C^T$.

### 例子

#### 自由群單子上的代數

若$T$為前述自由群單子，則$T$代數是集合$X$，連同由$X$生成的自由群$F(X)$到$X$的映射（求值，evaluation），且該映射要滿足結合律與單位元的公理。換言之，$X$本身就具有群結構，而$F(X)$至$X$的映射，是將字串按$X$的群乘法，計算所得的結果

#### 分佈單子上的代數

另一個例子是集合範疇上的分佈單子（distribution monad）$\mathcal{D}$，其將集合$X$映至其上所有有限支撐的機率分佈的集合。該等分佈，是函數$f : X \to [0,1]$，僅於有限多個元素$x \in X$處取值非零，而各元素處取值之和為$1$。以符號表示。

$$\mathcal{D}(X) = \left\{ f: X \to [0,1] : \begin{matrix} \#\text{supp}(f) < +\infty, \\ \sum_{x \in X} f(x) = 1 \end{matrix} \right\}.$$

可由定義證明，分佈單子上的代數，等同於凸集，即集合要配備二元運算$+_r$（對每個$r \in [0,1]$），滿足的公理比照歐氏空間中，凸組合$(x, y) \mapsto rx + (1-r)y$具備的性質。

#### 對稱單子上的代數

另一個有用的單子，是交換環$R$的模範疇$\mathbf{Mod}_R$上的對稱代數單子

$$\text{Sym}^\bullet(-): \mathbf{Mod}_R \to \mathbf{Mod}_R$$

將$R$模$M$映到各階對稱張量冪的直和

$$\text{Sym}^\bullet(M) = \bigoplus_{k=0}^\infty \text{Sym}^k(M)$$

其中$\text{Sym}^0(M) = R$。例如，$\text{Sym}^\bullet(R^{\oplus n}) \cong R[x_1,\ldots, x_n]$，左右兩邊作為$R$模同構。如此，對稱代數單子上的代數，是交換$R$代數。類似地，也有反對稱張量單子$\text{Alt}^\bullet(-)$與全張量單子$T^\bullet(-)$，相應的代數分別是反對稱$R$代數與自由$R$代數，故

$$\begin{align} \text{Alt}^\bullet(R^{\oplus n}) &= R(x_1,\ldots, x_n),\\ \text{T}^\bullet(R^{\oplus n}) &= R\langle x_1,\ldots, x_n \rangle, \end{align}$$

前者是$R$上添加$n$個生成元的自由反對稱代數，而後者則是$n$個生成元的自由代數。

#### E∞環譜中的交換代數

對於高度結構的環譜，亦有類似的構造，對於可交換$\mathbb{S}$代數$A$，對應單子上的代數是可交換的$A$代數。若$\mathbf{Mod}_A$表示$A$模的範疇，則可以考慮函子$\mathbb{P}: \mathbf{Mod}_A \to \mathbf{Mod}_A$，定義為

$$\mathbb{P}(M) = \bigvee_{j \geq 0} M^j/\Sigma_j,$$

其中

$$M^j = \underbrace{M\wedge_A \cdots \wedge_A M}_j.$$

此函子是單子，而由該單子上的代數範疇，可以得到可交換$A$代數的範疇$\mathcal{C}_A$。

## 單子與伴隨

如前文所述，任何伴隨關係皆產生單子。反之，每個單子$T$皆可由某個伴隨關係產生，即原範疇與$T$代數的艾倫伯格－摩爾範疇之間的自由－遺忘伴隨

$$T(-) : \mathcal C \rightleftarrows \mathcal C^T : F.$$

其中，左伴隨$T(-)$將$\mathcal C$的物件$x$映到自由$T$代數$T(x)$，右伴隨$F$則將$T$代數$(x, h)$遺忘掉$h$，變回$x$。然而，通常有多組不同的伴隨關係產生同樣的單子，該些伴隨關係組成範疇$\mathbf{Adj}(\mathcal C,T)$：物件是伴隨關係$(F,G,\eta,\varepsilon)$使得$(GF, \eta, G\varepsilon F)=(T,\eta,\mu)$，而態射是在$\mathcal C$一側為恆等函子的伴隨關係態射。如此，艾倫伯格－摩爾範疇的自由－遺忘伴隨$\mathcal C^T$是$\mathbf{Adj}(\mathcal C,T)$的終物件，而始物件是克萊斯利範疇$\mathcal C_T$，定義為$\mathcal C^T$中的自由$T$代數組成的完全子範疇，即僅包含形如$T(x)$的$T$代數，其中$x$歷遍$\mathcal \mathcal C$的物件。

### 單子伴隨

設有伴隨關係$(F : \mathcal C \to \mathcal D,G : \mathcal D \to \mathcal C,\eta,\varepsilon)$，對應單子為$T$，則函子$G$可分解為

$$\mathcal D \xrightarrow{\tilde G} \mathcal C^T \xrightarrow{F} \mathcal C,$$

其中$F$是遺忘函子。換言之，對$\mathcal D$中任意物件$Y$，都能賦予$G(Y)$自然的$T$代數結構。若分解式中，首個函子$\tilde G$給出$\mathcal D$與$C^T$兩範疇間的等價，則形容該伴隨關係為單子的（monadic）。後亦引申用作形容函子，若函子$G: \mathcal D\to \mathcal C$有左伴隨$F$，且該伴隨關係為單子的，則$G$亦稱為單子的。例如，群範疇與集合範疇間的自由－遺忘伴隨是單子的，因為相應單子$T$上的$T$代數是群（見前文）。一般而言，若有伴隨關係$(F : \mathcal C \to \mathcal D,G : \mathcal D \to \mathcal C,\eta,\varepsilon)$為單子的，則單從$\mathcal C$的物件及其上的$T$作用，已足以重組出$\mathcal D$的物件。

### 貝克單子性定理

貝克單子性定理給出伴隨關係在何種充要條件下為單子的。定理有以下簡化版：

若滿足以下三項條件：

- $G$為保守函子，換言之，$G$反映同構（reflects isomorphisms），即對$\mathcal D$中每一支態射，其為同構當且僅當在$G$作用下的像為$\mathcal C$中的同構。
- $\mathcal C$有餘等化子。
- $G$保餘等化子。

則$G$為單子的。

例如，由緊豪斯多夫空間範疇$\mathbf{CHaus}$到集合範疇$\mathbf{Set}$的遺忘函子是單子的。然而，由任意拓撲空間範疇$\mathbf{Top}$到集合範疇$\mathbf{Set}$的遺忘函子則並非單子的，而定理中，保守函子的條件不成立，因為有非緊或非豪斯多夫空間，之間存在連續雙射，但不為同胚。

貝克定理有對偶版本，刻劃餘單子伴隨關係，對拓撲斯論及有關下降 (範疇論)的代數幾何課題有用。

餘單子的伴隨關係，首先有下列例子：

$$- \otimes_A B : \mathbf{Mod}_A \rightleftarrows \mathbf{Mod}_B : F,$$

其中$A, B$皆為交換環，左伴隨用到的張量積$\otimes_A$的定義中，選定了環同態$A \to B$，而右伴隨$F$是遺忘函子。根據貝克定理，當且僅當$B$為忠實平坦$A$模時，該伴隨為餘單子的。所以，可將配備下降數據（descent datum，即源自伴隨關係的餘單子的作用）的$B$模，降成$A$模。所得的忠實平坦下降理論，廣泛應用於代數幾何。

## 用途

函數式編程中，會使用單子表達某類（有時有副作用的）順序式計算，見單子 (函數式編程)。

範疇論邏輯中，藉閉包算子、內代數，以及兩者與S4模態邏輯、直覺主義邏輯的關係，能以單子餘單子理論類比模態邏輯。

## 推廣

亦可定義2-範疇$\mathcal C$中的單子。