モナド (Monad)
圏論において、モナドは
自己関手に
モノイドに似た構造が付与された重要な概念です。これは圏 `C` から同じ圏 `C` への
関手 `T` と、特定の条件を満たす二つの自然変換、すなわち「単位」と呼ばれる `η: 1_C → T` (ここで `1_C` は `C` 上の恒等
関手)と「乗法」と呼ばれる `μ: T² → T` (ここで `T²` は
関手 `T ∘ T: C → C`)から構成されます。モナドは、半
順序集合における閉包作用素の一般化や、双圏上のモノイド的な構造として捉えることができ、特に随伴
関手との間に密接な関係があります。この概念の双対として、コモナドが存在します。
歴史的経緯
この数学的構造は、その発展の過程で様々な名称で呼ばれてきました。例えば、「双対標準構成」「トリプル」「モノイド」「トライアド」といった呼称が用いられました。著名な
圏論研究者であるソーンダース・マックレーンは、著書『
圏論の基礎』の中で、「トリプル」という用語がしばしば使われたことが不必要な混乱を招いたと述べています。「モナド」という言葉自体は、哲学者ライプニッツのモナドロジーにおけるモナド(単子)からの借用と考えられていますが、誰が最初にこの用語を提唱したのかは明確ではありません。少なくとも、ジャン・ベナブーの1967年の論文には使用例が見られ、1969年頃にはマックレーンでさえまだ適切な呼称を検討していたことが、ロス・ストリートによって明らかにされています。
定義
圏 `C` 上のモナドは、自己
関手 `T: C → C` と二つの自然変換 `η: 1_C → T` および `μ: T² → T` の組 `(T, η, μ)` であり、以下の整合条件を満たすものです。
1.
結合律: `μ ∘ Tμ = μ ∘ μT` と記述される条件です。これは、
関手 `T` を3回適用したものから1回適用したものへの写像において、中間段階の畳み込み方によらず結果が一意に定まることを意味します。
2.
単位律: `μ ∘ Tη = μ ∘ ηT = 1_T` と記述される条件です。これは、単位 `η` を用いて対象を `T` で包み、その後に乗法 `μ` で畳み込んでも、元の `T` で包んだ状態と変わらないことを示しています。
これらの条件は、特定の
可換図式によって視覚的に表現されることもあります。
自己
関手全体の圏 `End_C` を考えると、
関手の合成 `∘` はこの圏にモノイダル構造を与えます。この文脈において、圏 `C` 上のモナド `(T, η, μ)` は、圏 `End_C` におけるモノイド、すなわち対象 `T` と射 `η: 1_C → T`, `μ: T ∘ T → T` であって、圏 `End_C` の射の合成に関して上記の結合律と単位律の条件を満たすものと見なすことができます。
具体的な例
モナドは様々な数学的構造の背後に潜んでいます。
閉包作用素:
完備束上で定義される閉包作用素は、特定の条件を満たす自己写像ですが、順序構造を圏と見なすことで、その性質が
圏論的なモナドの条件と一致することが知られています。
自由モノイド: 集合の圏 `Set` において、集合 `A` に対してその要素からなる有限長のリスト全てを集めた集合 `TA` を対応させる
関手 `T` を考えます。ここで、単位 `ηA` を要素 `a` を単一要素のリスト `[a]` に対応させる写像、乗法 `μA` をリストのリストを一つのリストに連結する写像と定義すると、`(T, η, μ)` は `Set` 上のモナドとなります。これは自由モノイドモナド、あるいはリストモナドと呼ばれます。
モナドと随伴関手
モナドは随伴
関手と深く結びついています。圏 `C` から圏 `D` への
関手 `F` と、圏 `D` から圏 `C` への
関手 `G` が随伴である場合、合成
関手 `G ∘ F: C → C` は自動的に圏 `C` 上のモナドとなります。このモナドを構成する単位 `η` は随伴の単位射から、乗法 `μ` は随伴の余単位射を用いて自然に定義されます。
逆に、任意のモナド `(T, η, μ)` は、ある随伴
関手の合成として表現することができます。特に重要な表現方法として、以下の二つの構成が知られています。
アイレンベルグ-ムーア圏: モナド `T` の
T-代数とその間の射からなる圏 `Cᵀ` を構築できます。T-代数とは、元の圏の対象に特定の構造を付与したものです。この圏 `Cᵀ` への忘却
関手 `Uᵀ` とその左随伴である自由
関手 `Fᵀ` の合成 `Uᵀ ∘ Fᵀ` が、元のモナド `T` に一致します。この構成は、ある普遍的な性質を持ちます。
クライスリ圏: モナド `T` の
クライスリ圏 `C_T` は、元の圏 `C` と同じ対象を持ちますが、射の定義を変更した圏です。具体的には、`C_T` における対象 `x` から `y` への射は、元の圏 `C` における `x` から `Ty` への射として定義されます。射の合成はモナドの乗法 `μ` を用いて定義されます。この圏 `C_T` への
関手 `F_T` と `U_T` (ここでは `F_T` が左随伴)の合成 `U_T ∘ F_T` も元のモナド `T` に一致します。この
クライスリ圏の構成もまた別の普遍的な性質を持ち、特に計算機科学におけるモナドの応用(モナド (プログラミング)を参照)と密接に関連しています。
これらの構成を通じて、モナドは随伴
関手対を分類する役割も果たしています。抽象的な定義を持ちながらも、数学や計算機科学の様々な場面で具体的な構造を記述し、統一的な枠組みを提供する強力な道具と言えるでしょう。