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

は可換である。 -代数は、アイレンバーグ-ムーアカテゴリと呼ばれるカテゴリを形成し、 と表記される。
例
自由群モナド上の代数
たとえば、上で説明した自由群モナドの場合、 -代数は、結合性および単位性条件に従って、によって生成された自由群からの写像を伴う集合です。このような構造は、 が群自体である と言うことと同等です。
分配モナド上の代数
もう一つの例は、集合のカテゴリ上の分配モナド です。これは、集合を有限台と関数の集合に送って、それらの和が に等しくなるようにすることで定義されます。集合構築記法では、これは集合 です。定義を調べると、分配モナド上の代数は凸集合、つまりユークリッド空間における凸線形結合の挙動に似た公理に従う に対する演算を備えた集合 と同値であることが示されます。[9]
対称モナド上の代数
モナドのもう 1 つの便利な例は、可換環 の - 加群のカテゴリ上の対称代数関数です。- 加群を、の対称テンソル冪の直和に送信します。たとえば、ここで右側の - 代数は加群と見なされます。すると、このモナド上の代数は可換 - 代数になります。また、交代テンソルと全テンソル関数のモナド上の代数もあり、反対称- 代数と自由- 代数が得られます。つまり、最初の環は -生成子上の自由反対称代数であり、2 番目の環は -生成子上の自由代数です。
E無限大環スペクトルにおける可換代数
可換-代数に対する類似の構成法[10] 113 ページがあり、可換-代数に対する可換 -代数を与えます。 が-加群のカテゴリである場合、関数は-倍で与えられるモナドです。すると、このモナド上の代数のカテゴリから、 関連する可換 -代数のカテゴリが存在します。
モナドと付加
上で述べたように、任意の随伴はモナドを生じます。逆に、すべてのモナドは何らかの随伴、つまり自由忘却随伴から生じます。
の左随伴項はオブジェクトX を自由T代数T ( X ) に送ります。ただし、モナドを生成する別個の随伴項は通常複数存在します。を、となる随伴項をオブジェクトとし、 の矢印が 上の恒等写像である随伴項の射であるカテゴリとします。すると、アイレンバーグ–ムーア カテゴリを含む上記の自由忘却随伴項は、 の終端オブジェクトになります。初期オブジェクトはクライスリ カテゴリで、これは定義により自由T代数、つまりCのあるオブジェクトxに対する の形式のT代数のみからなるの完全なサブカテゴリです。
モナド付加
任意のモナドTを伴う随伴関数が与えられた場合、関手Gは次のように因数分解できる。
すなわち、G ( Y ) は、 D内の任意のYに対して、自然にT代数構造を付与される。最初の関数がDとアイレンバーグ・ムーアカテゴリとの間のカテゴリの同値性をもたらす場合、その随伴はモナド随伴と呼ばれる。[11]拡張により、関数がモナド随伴を形成する左随伴を持つ場合、その関数はモナド的であると言われる。例えば、前述のように、関連するモナド上の代数はグループであるため、グループとセットの間の自由忘却随伴はモナド的である。一般に、随伴がモナド的であることを知ることで、 C内のオブジェクトとT作用からD内のオブジェクトを再構築することができる。
ベックのモナディシティ定理
ベックのモナディ性定理は、付加がモナディックであるための必要十分条件を与えます。この定理の簡略版は、 Gがモナディックであるとは、それが保存的である場合(またはGが同型を反映する、つまり、 Dの射が同型であるためには、 Gによるその像がCの同型である場合に限る)、かつC がを持ち、 G が共等化子を保存することを述べています。
例えば、コンパクト ハウスドルフ空間のカテゴリから集合への忘却関手はモナド的である。しかし、すべての位相空間から集合への忘却関手は保存的ではない。なぜなら、同相写像にならない連続全単射写像(非コンパクト空間または非ハウスドルフ空間間)が存在するからである。したがって、この忘却関手はモナド的ではない。[12]コモナド的随伴を特徴付けるベックの定理の双対版は、トポス理論や代数幾何学における降下に関する話題 など、さまざまな分野で関連している。コモナド的随伴の最初の例は、随伴である。
可換環間の環準同型。ベックの定理によれば、この随伴は、 B がA加群として忠実平坦である場合に限り、コモナド的である。したがって、これにより、降下データ(つまり、随伴によって与えられたコモナドの作用)を備えたB加群をA加群に降下させることができる。結果として得られる忠実平坦降下の理論は、代数幾何学で広く応用されている。
用途
モナドは関数型プログラミングで、一連の計算(副作用を伴う場合もあります)を表現するために使用されます。関数型プログラミングのモナド、およびより数学的な Wikibook モジュール b:Haskell/Category theory を参照してください。
モナドは不純な関数型プログラミング言語や命令型プログラミング言語の表示的意味論で使用されます。[13] [14]
カテゴリカル論理では、閉包演算子、内部代数、およびそれらのS4モデルと直観主義論理との関係を介して、モナド-コモナド理論と様相論理の間に類似点が描かれています。
一般化
2-カテゴリ でモナドを定義することは可能です。上記のモナドは のモナドです。
参照
参考文献
- ^ ab https://golem.ph.utexas.edu/category/2009/07/the_monads_hurt_my_head_but_no.html
- ^ バー、マイケル; Wells、Charles (1985)、「Toposes、Triples and Theories」(PDF)、Grundlehren der mathematischen Wissenschaften、vol. 278、シュプリンガー版、82 および 120 ページ、ISBN 0-387-96115-1。
- ^ Klin; Salamanca (2018)、「反復共変冪集合はモナドではない」、電子理論計算機科学ノート、341 : 261– 276、doi : 10.1016/j.entcs.2018.11.013
- ^ マクレーン1978年、138ページ。
- ^ ジャン・ベナブー (1967)。 「二カテゴリー入門」。ベナブーにて、J.デイビス、R.ドルド、A.イズベル、J.マクレーン、S.オーバースト、U.ルース、J. -E. (編)。中西部カテゴリーセミナーのレポートです。数学の講義ノート。 Vol. 47. ベルリン、ハイデルベルク:シュプリンガー。ページ 1–77。土井:10.1007/BFb0074299。ISBN 978-3-540-35545-8。
- ^ 「RE: モナド」。Gmane 2009-04-04。2015-03-26時点のオリジナルよりアーカイブ。
- ^ Riehl, Emily . 「文脈におけるカテゴリー理論」(PDF) . p. 162. 2021年4月5日時点のオリジナルよりアーカイブ(PDF) 。
- ^ リール2017、155頁。
- ^ Świrszcz, T. (1974)、「モナディック関数と凸性」、Bull. Acad. Polon. Sci. Sér. Sci. Math. Astron. Phys.、22 : 39–42、MR 0390019、 ジェイコブス、バート(2010)、「凸性、双対性、および効果」、理論計算機科学、IFIP情報通信技術の進歩、vol. 323、pp. 1– 19、doi:10.1007 / 978-3-642-15240-5_1、ISBN 978-3-642-15239-9
- ^ Basterra, M. (1999-12-15). 「可換S代数のアンドレ・キレンコホモロジー」. Journal of Pure and Applied Algebra . 144 (2): 111– 143. doi : 10.1016/S0022-4049(98)00051-6 . ISSN 0022-4049.
- ^ MacLane (1978) は、2 つのカテゴリが同等ではなく同型であるというより強力な定義を使用しています。
- ^ マクレーン (1978、§§VI.3、VI.9)
- ^ Wadler, Philip (1993). 「関数型プログラミングのためのモナド」 Broy, Manfred (編)。プログラム設計計算。 NATO ASI シリーズ。 第 118 巻。 ベルリン、ハイデルベルク: Springer。 pp. 233– 264。doi :10.1007/978-3-662-02880-3_8。ISBN 978-3-662-02880-3。「モナドの概念はカテゴリー理論から生まれ、プログラミング言語の表示的意味論を構造化するために Moggi によって応用されました。」
- ^ Mulry, Philip S. (1998-01-01). 「セマンティクスにおけるモナド」.理論計算機科学における電子ノート. ソフトウェアシステムの形式的基礎に関する米国・ブラジル合同ワークショップ. 14 : 275–286 . doi : 10.1016/S1571-0661(05)80241-5 . ISSN 1571-0661.
さらに読む
- バー、マイケル、ウェルズ、チャールズ(1999)、コンピューティング サイエンスのためのカテゴリ理論(PDF)
- Godement、Roger (1958)、Topologie Algébrique et Théorie des Faisceaux。、実際の科学。インド、出版。数学。大学ストラスブール、vol. 1252 年、パリ: ヘルマン、pp. viii+283 pp
- コック、アンダース (1970)、「二重双対モナドについて」、Mathematica Scandinavica、27 :151、doi : 10.7146/math.scand.a-10995
- レンスター、トム (2013)、「コードンスティーとウルトラフィルターモナド」(PDF)、カテゴリーの理論と応用、28 : 332–370、arXiv : 1209.3606、Bibcode :2012arXiv1209.3606L
- マクレーン、サンダース(1978)、働く数学者のためのカテゴリー、数学の大学院テキスト、第5巻、doi:10.1007 / 978-1-4757-4721-8、ISBN 978-1-4419-3123-8
- Pedicchio, Maria Cristina; Tholen, Walter 編 (2004)。カテゴリカル基礎。順序、位相、代数、層理論の特別トピック。数学とその応用百科事典。第 97 巻。ケンブリッジ:ケンブリッジ大学出版局。ISBN 0-521-83414-7.ZBL1034.18001 。
- ペローネ、パオロ (2024)、「第 5 章 モナドとコモナド」、カテゴリー理論入門、World Scientific、doi :10.1142/9789811286018_0005、ISBN 978-981-12-8600-1
- リール、エミリー(2017)、文脈におけるカテゴリー理論、クーリエ・ドーバー出版、ISBN 9780486820804
- トゥリ、ダニエレ (1996–2001)、カテゴリー理論講義ノート(PDF)
- https://mathoverflow.net/questions/55182/what-is-known-about-the-category-of-monads-on-set
- ロス・ストリート、モナドの形式理論 [1]
外部リンク
- Monads、5 つの短い講義 (1 つの付録付き) の YouTube ビデオ。
- John Baez の「今週の数理物理学の発見 (第 89 週)」では、2 カテゴリのモナドを取り上げます。
- モナドとコモナド、ビデオチュートリアル。
- https://medium.com/@felix.kuehl/a-monad-is-just-a-monoid-in-the-category-of-endofunctors-lets-actually-unravel-this-f5d4b7dbe5d6
