圏論(数学の一分野)において、モナドは三つ組である。ある圏からそれ自身への関手Tと2つの自然変換から構成される。結合法則と単位性公理の様々なバージョンを満たすもの。言い換えれば、モナドは、ある固定された圏の自己関手の圏におけるモノイドである(自己関手とは、圏をそれ自身に写像する関手のことである)。
例えば、ファンクターが互いに随伴である場合、と共に随伴関係によって決定されるのはモナドである。
数学者のジョン・バエズによれば、モナドは少なくとも2つの方法で考えることができる。[ 1 ]
モナドは随伴関数のペアの理論で使用され、半順序集合上の閉包演算子を任意のカテゴリに一般化します。モナドはデータ型の理論、命令型プログラミング言語の表示的意味論、関数型プログラミング言語でも有用であり、可変状態を持たない言語でもforループのシミュレートなどの処理を実行できます。詳しくは「モナド(関数型プログラミング)」を参照してください。
モナドは、特に古い文献では、トリプル、トライアド、標準構成、基本構成とも呼ばれる。[ 2 ]
モナドは特定のタイプの自己関手です。例えば、そしては、 と が共役する一対の関数である。左随伴すると、構成はモナドです。そしては互いに逆であり、対応するモナドは恒等関手である。一般に、随伴は同値ではなく、性質の異なるカテゴリーを関連付ける。随伴が「保存」するものを捉える努力の一部として、モナド理論が重要となる。理論のもう半分は、同様に考察から学ぶことができるものである。は、コモナドの双対理論の下で議論される。
この記事を通して、はカテゴリを表します。上のモナドエンドファンクターから構成される2つの自然な変化とともに:(どこは、上の恒等関手を表す。) そして(どこファンクターですからにこれらは以下の条件(整合性条件と呼ばれることもある)を満たす必要がある。
これらの条件は、以下の可換図式を用いて書き換えることができます。
記号の説明については、自然変換に関する記事を参照してください。そしてまたは、これらの概念を使用しない可換図を以下に示す。
最初の公理は、モノイドにおける結合法則に似ている。モノイドの二項演算として、そして第二の公理は単位元の存在に似ている(これは次のように与えられると考える)実際、モナドはは、別の定義では、圏のモノイドとして定義される。その対象は、そしてそれらの射はそれらの間の自然な変換であり、自己関手の合成によって誘導されるモノイド構造を持つ。
冪集合モナドはモナドであるカテゴリーについて: セットの場合させてパワーセットそして関数についてはさせて直接像を取ることによって誘導される冪集合間の関数とする各セットについて地図がありますすべてに割り当てるシングルトン. 機能
集合の集合をその和集合に取ります。これらのデータはモナドを表します。
モナドの公理は、形式的にはモノイドの公理と類似している。実際、モナドはモノイドの一種であり、自己関手の中のモノイドに他ならない。乗算は自己関手の合成によって与えられる。
一般に、モナドの合成はモナドではない。例えば、二重冪集合ファンクターはいかなるモナド構造も許容しない。[ 3 ]
カテゴリーの双対定義は、コモナド(またはコトリプル)の形式的な定義です。これは、カテゴリーのコモナドという用語で簡単に言うことができます。反対のカテゴリーのモナドであるしたがって、それはファンクターである。からそれ自体に、先ほど定義したすべての矢印を反転させることによって得られる余単位と余乗法の公理のセットが備わっている。
モナドとモノイドの関係は、コモナドとコモノイドの関係に似ています。すべての集合は、ある意味でコモノイドであるため、抽象代数学ではモノイドほどコモノイドは馴染みがありません。しかし、通常のテンソル積を持つベクトル空間の圏におけるコモノイドは重要であり、コレグブラという名称で広く研究されています。
モナドの概念は、 1958年にロジャー・ゴドマンによって「標準構成」という名前で考案されました。モナドは、「デュアル標準構成」、「トリプル」、「モノイド」、「トライアド」などと呼ばれてきました。[ 4 ] 「モナド」という用語は、遅くとも1967年にはジャン・ベナブーによって使用されています。[ 5 ] [ 6 ]
付属物
C上のモナドを生み出す。この非常に広く普及している構成は次のように機能する: 自己関手は複合体である
この自己関手はすぐにモナドであることがわかり、単位写像は単位写像から派生している。随伴の共単位マップを使用して乗算マップが構築されます。
実際、アイレンベルク・ムーア圏を用いると、任意のモナドはファンクターの明示的な随伴として見出すことができる。(カテゴリー)-代数)。[ 7 ]
固定された体kに対する二重双対化モナドは、次の随伴から生じる。
ここで、両方のファンクターは、ベクトル空間Vをその双対ベクトル空間に送ることによって与えられる。関連するモナドは、ベクトル空間Vをその二重双対に送ります。このモナドについては、 Kock (1970)によってより一般的に議論されている。
部分的に順序付けられた集合から生じるカテゴリの場合(単一の射から)にかつその場合に限り) の場合、形式ははるかに単純になります。随伴ペアはガロア接続であり、モナドは閉包演算子です。
例えば、を群の圏Grpから集合の圏Setへの忘却関手とし、 集合の圏から群の圏への自由群関手とする。は左随伴であるこの場合、関連するモナドセットを取るそして、自由群の基となる集合を返します。このモナドの単位写像は、写像によって与えられる。
あらゆるセットを含むセットへ自然な方法で、長さ 1 の文字列として。さらに、このモナドの乗算はマップです。
これは、「文字列の文字列」の自然な連結または「平坦化」から作られます。これは 2 つの自然な変換に相当します。自由群に関する前述の例は、普遍代数における代数の多様性の意味で、任意のタイプの代数に一般化できます。したがって、そのようなすべてのタイプの代数は、集合のカテゴリ上のモナドを生み出します。重要なことに、代数タイプはモナドから復元できます (アイレンベルク-ムーア代数のカテゴリとして)。したがって、モナドは普遍代数の一般化された多様性としても見なすことができます。
随伴から生じる別のモナドは、はベクトル空間の圏上の自己関手で、ベクトル空間を写像する。そのテンソル代数へ、そして線形写像をそれらのテンソル積に写像する。すると、埋め込みに対応する自然な変換が得られる。そのテンソル代数への変換、およびからの写像に対応する自然な変換にすべてのテンソル積を展開するだけで得られる。
緩やかな条件下では、左随伴を許容しないファンクターもモナド、いわゆるコデンシティモナドを生み出す。例えば、包含関係
左随伴は許容しない。その共密度モナドは、任意の集合X をX上の超フィルターの集合に送る集合上のモナドである。これと類似の例については、 Leinster (2013)で議論されている。
集合の圏上の以下のモナドは、命令型プログラミング言語の表示的意味論で使用され、同様の構成は関数型プログラミングでも使用されます。
mayまたはpartialityモナドのエンドファンクターは、非交点を追加します: [ 8 ]
この単位は、一連の要素を含めることによって与えられる。の中へ:
乗算マップの要素自分自身に、そして 2 つの分離した点1つに。
関数型プログラミングと表示的意味論の両方において、maybeモナドは部分的な計算、つまり失敗する可能性のある計算をモデル化する。
集合が与えられた状態モナドのエンドファンクターは各セットをマッピングします関数の集合へそれは、 そして。
ユニットの構成要素各要素をマッピングします機能へ
乗算は関数をマッピングします機能へ
さらに詳しく言うと、ペアはどこ そして、 となることによって 。
カリーを逆転させることができる与えるこれはさらに分割できます そしてとなることによって
そうすれば、として
これで結合を次のように与えることができます
関数型プログラミングと表示的意味論では、状態モナドは状態を持つ計算をモデル化します。
集合が与えられたリーダーまたは環境モナドのエンドファンクターは各セットをマッピングします関数の集合へしたがって、このモナドの自己関手は、まさにホム関手である。ユニットの構成要素は各要素をマッピングします定数関数へ。
乗算は2変数関数をマッピングしますその「対角成分」へ言い換えれば、乗算は前合成であり、
関数型プログラミングと表示的意味論において、環境モナドは、読み取り専用データへのアクセスを伴う計算をモデル化する。
リストまたは非決定性モナドは、集合X を、X の要素を持つ有限シーケンス (つまりリスト) の集合にマッピングします。ユニットは、Xの要素x を単一要素リスト [x] にマッピングします。乗算は、リストのリストを単一のリストに連結します。
関数型プログラミングでは、リストモナドは非決定的な計算をモデル化するために使用されます。共変冪集合モナドは集合モナドとも呼ばれ、同様に非決定的な計算をモデル化するために使用されます。
モナドが与えられた場合カテゴリについて当然のことながら、-代数、すなわち、によって実行されたモナドの単位と乗算と互換性のある方法で。より正式には、-代数 オブジェクトですの矢印とともにの代数の構造マップと呼ばれる図式
通勤。
射の-代数は矢印ですの図

通勤。-代数はアイレンベルク・ムーア圏と呼ばれる圏を形成し、で表されます。。
例えば、上で議論した自由群モナドの場合、-代数は集合であるフリーグループから生成されたマップと共にに向かって結合性および単位性条件を満たす。このような構造は、次のように言うことと同等である。それ自体がグループである。
別の例としては、分布モナドがある。集合の圏について。集合を送ることによって定義される。関数の集合へ有限のサポートを持ち、それらの合計が等しくなる集合構成記法では、これは集合です。定義を調べると、分布モナド上の代数は凸集合、すなわち演算を備えた集合と同等であることが示される。のために凸線形結合の挙動に類似した公理に従うユークリッド空間において。[ 9 ]
モナドのもう1つの有用な例は、次のカテゴリ上の対称代数ファンクターです。可換環の加群。送信-モジュール対称テンソルのべき乗の直和へどこ。 例えば、どこで右側の代数はモジュールとみなされる。すると、このモナド上の代数は可換である。-代数。交代テンソルのモナド上の代数も存在する。および全テンソル関数反対称性を与える-代数、そして自由-代数なのでここで、最初の環は、上の自由反対称代数である。で-生成子と、2 番目の環は自由代数であるで発電機。
可換性についても同様の構成がある-代数[ 10 ] 113ページ、可換性を与える可換な代数-代数。 もしは、-モジュール、次にファンクター :{\mathcal {M}}_{A}\to {\mathcal {M}}_{A}} は、次の式で与えられるモナドです。どこ-回。次に、関連するカテゴリがあります。可換のこのモナド上の代数の圏からの代数。
前述のように、任意の付加関係はモナドを生み出す。逆に、すべてのモナドは何らかの付加関係、すなわち自由忘却付加関係から生じる。
その左随伴は、対象Xを自由T代数T ( X ) に送る。ただし、通常、モナドを生み出す複数の異なる随伴が存在する。対象が随伴であるカテゴリーとするそのためそしてその矢印は、上の恒等写像である随伴写像であるすると、上記のアイレンベルク・ムーア圏を含む自由忘却随伴はは終端オブジェクトです初期対象は、定義上、の完全なサブカテゴリであるクライスリ圏である。自由T代数のみから構成される、すなわち、次の形式のT代数Cのあるオブジェクトxに対して。
任意の随伴が与えられた場合関連するモナドTを持つファンクターGは次のように因数分解できます。
すなわち、G ( Y )はD内の任意のYに対して自然にT代数構造を持つことができる。最初の関手がDとアイレンベルク・ムーア圏との間のカテゴリーの等価性が得られる。[ 11 ]拡張して、ファンクター左随伴項Fを持ち、それが単項随伴を形成する場合、それは単項的であると言われます。例えば、群と集合の間の自由忘却随伴は単項的です。なぜなら、前述のように、関連する単項上の代数は群だからです。一般に、随伴が単項的であることを知っていれば、CのオブジェクトとT作用からDのオブジェクトを再構成することができます。
ベックの単項性定理は、随伴が単項であるための必要十分条件を与える。この定理の簡略版では、 Gが単項であるのは、それが保存的である(またはG が同型性を反映する、つまり、 Dの射が同型性であるのは、 Gによるその像がCの同型性である)場合と、 G が共等化子を保存する。
例えば、コンパクトハウスドルフ空間の圏から集合への忘却関手はモナド的である。しかし、すべての位相空間から集合への忘却関手は、同相写像にならない連続全単射写像(非コンパクト空間または非ハウスドルフ空間間)が存在するため、保存的ではない。したがって、この忘却関手はモナド的ではない。[ 12 ]ベックの定理の双対バージョンは、共モナド随伴を特徴づけており、トポス理論や降下に関連する代数幾何学のトピック など、さまざまな分野で重要である。共モナド随伴の最初の例は、随伴である。
環準同型の場合可換環間の随伴関係。ベックの定理によれば、この随伴関係がコモナド的であるのは、B がA加群として忠実に平坦である場合に限る。したがって、この随伴関係によって与えられる降下データ(すなわち、随伴関係によって与えられるコモナドの作用)を備えたB加群をA加群に降下させることができる。この結果として得られる忠実に平坦な降下理論は、代数幾何学において広く応用されている。
モナドは、関数型プログラミングにおいて、一連の計算(副作用を伴う場合もある)の種類を表現するために使用されます。関数型プログラミングにおけるモナド、およびより数学的な内容を扱うWikibookモジュールb:Haskell/Category theoryを参照してください。
モナドは、不純な関数型プログラミング言語や命令型プログラミング言語の表示的意味論で使用されます。[ 13 ] [ 14 ]
圏論的論理では、閉包演算子、内部代数、およびそれらとS4モデルや直観主義論理との関係を通して、モナド・コモナド理論と様相論理との間に類似性が見出されている。
モナドは、任意の弱い2-圏において、終端圏からの緩い2-ファンクターとして定義できる。2-カテゴリCatへ。[ 5 ] 2-モナドの理論は Blackwell–Kelly–Power によって導入され、[ 15 ]接頭辞のない 2-モナドは通常厳密な概念です。モナド法則を「一貫性のある可逆な修正まで」保持するように弱める概念は擬似モナドと呼ばれます。非可逆変換までのみモナドを保存する合成を定義しようとする試みはありますが、弱 2-カテゴリ上に緩いモナドの一般的な概念は明らかではありません。なぜなら、緩いまたはオプラックス関手を含む弱 2-カテゴリの良い 2-カテゴリ (または弱3-カテゴリ) がないからです。[ 16 ]緩いモナドはBunge によって最初に導入されましたが、[ 17 ] Bunge 流の緩いモナドとは異なる他の定義もあります。