疑念は探究の動機であり、探究の唯一の目的は信念の確定である。

数学・論理学・哲学・語学のことを書きたいと思います。どんなことでも何かコメントいただけるとうれしいです。特に、勉学のことで間違いなどあったらご指摘いただけると幸いです。 よろしくお願いします。くりぃむのラジオを聴くこととパワポケ2と日向坂46が人生の唯一の楽しみです。

モナドについて: モノイド・モノイド圏・モノイド対象・モナド

 概要

モノイド圏やモノイド対象、そしてそれらの具体例であるモノイドとモナドについてまとめる。モノイド対象はモノイド圏において定義される。集合の圏 {\bf{Set}} はモノイド圏であり、そのモノイド対象はモノイドである。つまりモノイド対象はモノイドの一般化である。自己関手の圏 {\bf{End}(\bf{C})} もモノイド圏であり、そのモノイド対象がモナドである。

 

 はじめに: モナドについて

最近、PythonHaskellなどの関数型プログラムを勉強している友達にこう聞かれた。

これって意味わかる?

 

モナドは単なる自己関手の圏におけるモノイド対象だよ。何か問題でも?」

 

このサイトに書いてた。

モナド - ウォークスルー Haskell

私はそのとき、「「何か問題でも?」はわからないけど、「モナドは単なる自己関手の圏におけるモノイド対象だよ」はわかる。」と返信した。そして友達から教えて欲しいと言われたので、「よっしゃやってやるか!」と本腰を入れて、モノイド圏やモノイド対象を勉強した。今回はそのまとめである。 

 

ちなみにこの発言について、One Div Zero: A Brief, Incomplete, and Mostly Wrong History of Programming Languagesによると、Philip Wadlerは批判者に対して、「モナドは自己関手の圏のモノイドだよ。何か問題でも?」とたしなめた(appease)そうだ。英語だと、

A monad is a monoid in the category of endofunctors, what's the problem?

ということである。

 

 

今回の記事について

モナドについて次のような理解度があると思われる。

STEP 1: 圏論におけるモナドの定義を理解する。

このためには、圏と関手と自然変換さえ知っていれば、とりあえずモナドの定義を理解することができる。ただし、それだけである。

 

STEP 2: モノイド対象とモナドとモノイドの関係性を理解する。

このためには、まずモノイド圏を理解しなければならない。モノイド対象がモノイド圏で定義されているためである。そして、集合の圏 {\bf{Set}} がモノイド圏であり、そのモノイド対象がモノイドである。さらに、自己関手の圏 {\bf{End}(\bf{C})} がモノイド圏であり、そのモノイド対象がモナドであることを理解する。後者が先に述べられた「モナドは単なる自己関手の圏におけるモノイド対象だよ」のことである。

 

STEP 3: 圏論において定義されているモナドと実際にHaskellなどで定義されているモナドの関係性を理解する。

Haskellの圏 {\bf{Hask}} においてのモナドが実際のモナドと一致することを理解すること。そのためには、抽象的な圏の知識だけでなく、具体的なHaskellなどの関数型プログラミングの知識も必要である。

 

このような理解度の深さがあるなかで、今回はSTEP 2までを明らかにしたいと思う。 つまり、「モナドは単なる自己関手の圏におけるモノイド対象だよ」という言葉の真意を完全に理解することが本記事の目標である。ただ当然ながらここの記事はSTEP 3をクリアされていないのでまだ不完全である。そこは了承していただきたい。モナドやモノイドがHaskellにおいてどのように具体例として現れているのかまだよく知らない。

 

 

STEP 1:  圏論におけるモナドの定義

圏論におけるモナドの定義は次のようなものである。

定義 1 (モナド)

{{\bf C}}とする。{\bf{C}} におけるモナドとは三つの組み {(M,\, \eta,\, \mu)} である; ただし、

{M: {\bf C}\to {\bf C}} は圏 {{\bf C}}自己関手である;

{\eta: 1_{{\bf C}}\to M} は圏 {{\bf C}}恒等関手 {1_{{\bf C}}} から自己関手 {M} への自然変換である;

{\mu: MM\to M} は自然変換である;

それらが次の性質を満たす:

(1) {\mu\cdot \mu_M = \mu\cdot M\mu}

(2) {\mu\cdot \eta_M = 1_M = \mu\cdot M\eta}

 

ここで、{\cdot}自然変換の合成である。

 

つまり、圏 {\bf C} の任意の対象 {A} に対して、

(1) {\mu_A\circ \mu_{MA} = \mu_A\circ M(\mu_A)}

(2) {\mu_A\circ \eta_{MA} = 1_{MA} = \mu_A\circ M(\eta_A)}

が成り立つことである。

 

f:id:yoheiwatanabe0606:20180527150849p:plain

ここで、それぞれの概念を定義する。

 

     1. 圏 (Categories)

{\bf{C}} とは、対象(objects)と呼ばれるものと射(arrows)と呼ばれるものから構成されている。

Objects of {\bf{C}}:  {A, B, C, \ldots}  

Arrows of {\bf{C}}:  {A\overset{f}{\to} B,\, B\overset{g}{\to} C,\, C\overset{h}{\to} D,\ldots}

射の合成が定義されている。任意の射 {A\overset{f}{\to}B\overset{g}{\to}C} に対して、新しい射 {g\circ f: A\to C} が定義されている。

これらが次の公理を満たす。

(1) 結合法則

任意の射 {A\overset{f}{\to}B\overset{g}{\to}C\overset{h}{\to}D} に対して、{h\circ (g\circ f) = (h\circ g)\circ f} が成り立つ。

 

(2) 恒等射の存在

任意の対象 {A} に対して、射 {1_A: A\to A} が存在して、任意の射 {f: A\to B} に対して、{f\circ 1_A = f = 1_B\circ f} が成り立つ。

例えば、対象が集合であり射が写像である集合の圏 {\bf{Set}} はこれらの性質を満たすので圏である。

 

     2. 関手(functors)

{\bf{C}} から圏 {\bf{D}} への関手 {F: {\bf{C}}\to {\bf{D}}} とは、圏 {\bf{C}} の各対象 {A} を圏 {\bf{D}} の対象 {FA}に写し、圏 {\bf{C}} の各射 {f: A\to B} を圏 {\bf{D}} の射 {F(f): FA\to FB} に写し、関手性(functionality)と呼ばれる次の性質を満たす。

(1) 合成射の保存

{\bf{C}} の任意の射 {A\overset{f}{\to}B\overset{g}{\to}C} に対して、圏 {\bf{D}} の射 {FA\overset{F(f)}{\to}FB\overset{F(g)}{\to}FC} の合成 {F(g)\circ F(f): FA\to FC}{F(g\circ f): FA\to FC} に対して、

{F(g\circ f) = F(g)\circ F(f)}

が成り立つ。

 

(2) 恒等射の保存

{\bf{C}} の任意の恒等射 {1_A: A\to A} に対して、{F(1_A): FA\to FA}{1_{FA}: FA\to FA} が一致する。

{F(1_A) = 1_{FA}}

 

{\bf{C}} の自己関手とは 行く圏と行った圏が同じ関手のことである。つまり、関手 {F: {\bf C}\to {\bf C}} のことである。

最も簡単な自己関手として、恒等関手 {1_{{\bf C}}: {\bf C}\to{\bf C}} がある。圏 {\bf C} の任意の対象 {A} に対して、{1_{{\bf C}}A: = A} と定義する。圏 {\bf C} の任意の射 {f: A\to B} に対して、{1_{{\bf C}}(f): = f: A\to B} と定義する。これは自明な自己関手である。我々は恒等関手を {1_{\bf C}} と書くが、圏の恒等射 {1_C: C\to C} と混同するかもしれない。そのようにならないために恒等関手を {id_{\bf C}} と書いてもいいかもしれない。

 

2つの関手 {{\bf C}\overset{F}{\to}{\bf D}\overset{G}{\to}{\bf E}} があるとき、関手の合成 {G\circ_{f} F: {\bf C}\to{\bf E}} を考えることができる。{G\circ_{f} F} を単に {GF} と書く。それを次のように定義する。

{\bf {C}}の各対象 {A} に対して、圏 {\bf E} の対象 {GFA: = G(FA)} と定義する。圏 {\bf {C}} の任意の射 {f: A\to B} に対して、{GF(f):= G(F(f) ): GFA\to GFB} と定義する。

このとき、関手の合成 {GF: {\bf C}\to{\bf E}} が関手であることが容易にわかる。実際、圏 {{\bf C}} の任意の射 {A\overset{f}{\to}B\overset{g}{\to}C} に対して、

{GF(g\circ f) = G(F(g\circ f) ) }

                         {= G(F(g)\circ F(f) ) = G(F(g) )\circ G(F(f) ) }

                         {= GF(f)\circ GF(g)}

である。さらに、圏 {{\bf C}} の任意の恒等射 {1_A: A\to A} に対して、

{GF(1_A) = G(F(1_A) ) = G(1_{FA} ) = 1_{GFA}} 

である。

 

     3. 自然変換(natural transformations)

2つの関手 {F, G: {\bf C}\to {\bf D}} があるとする。自然変換 {\alpha: F\to G} とは、次のような射の族 {\alpha = (\alpha_A: FA\to GA)_{A\in\text{ob}({\bf C})}} である。圏 {\bf C} の 任意の射 {f: A\to B} に対して、

{\alpha_B\circ F(f) = G(f)\circ \alpha_A} 

が成り立つことである。

f:id:yoheiwatanabe0606:20180527175355p:plain

 

ある本では自然変換 {\alpha: F\to G}{\alpha: F\Rightarrow G} と書くときもある。もしかしたらそのように書いた方がわかりやすいのかもしれない。

最も簡単な自然変換は恒等変換 {1_F: F\to F} である。圏 {\bf {C}} の各対象 {A} に対して、{1_{FA}: FA\to FA} を恒等射とする。

 

関手の合成を考えたように自然変換の合成も考えることができる。{F, G, H: {\bf C}\to{\bf D}} を圏 {{\bf C}} から圏 {{\bf D}} への関手とする。{F\overset{\alpha}{\to}G\overset{\beta}{\to}H} をそれぞれ自然変換とする。このとき、自然変換の合成 {\beta\cdot\alpha: F\to H} を次のように定義する。圏 {{\bf C}} の各対象 {A} に対して、

{(\beta\cdot\alpha)_A:= \beta_A\circ \alpha_A: FA\to HA}

とする。{\beta\cdot\alpha:= ( (\beta\cdot\alpha)_A: FA\to HA)_{A\in\text{ob}({\bf C})}}

{\beta\cdot\alpha: F\to H} が自然変換であることは容易にわかる。実際、任意の射 {f: A\to B} に対して、{\alpha,\,\beta} が自然変換より、{\alpha_B\circ F(f) = G(f)\circ \alpha_A} かつ {\beta_B\circ G(f) = H(f)\circ \beta_A} より、

{(\beta\cdot\alpha)_B\circ F(f) = (\beta_B\circ \alpha_B)\circ F(f)}

          {=\beta_B\circ (\alpha_B\circ F(f) )= \beta_B\circ (G(f) \circ \alpha_A) }

          {= (\beta_B\circ G(f) )\circ \alpha_A = (H(f)\circ \beta_A)\circ \alpha_A}

          {= H(f)\circ (\beta_A\circ \alpha_A) = H(f)\circ (\beta\cdot\alpha)_A}

f:id:yoheiwatanabe0606:20180527183100p:plain

 

これによって、我々はとりあえず、モナドの定義がわかった。あまりに抽象的だが!!!!!

モナドの性質はAwodeyの本に書いてある。今回はそれについて書かないが、いつかまとめる。 

続いて、モノイド圏やモノイド対象について議論する。 

 

 

STEP 2: モノイド対象とモノイドとモナドの関係性

モノイド対象(monoidal objects)はモノイド圏(monoidal categories)上で定義される。そのために、まずモノイド圏を定義する。

定義 2 (モノイド圏) 

モノイド圏 {\mathscr{M} = ({\bf C}, \otimes, I, \alpha, \lambda, \rho)} とは、

  • {{\bf C}} は圏である。
  • {\otimes: {\bf C}\times {\bf C}\to {\bf C}}バイファンクターである。
  • {I} は圏 {{\bf C}} の対象である。
  • {\alpha: (-\otimes -)\otimes - \overset{\sim}{\to} -\otimes (-\otimes -)}自然同型(natural isomorphisms) である。
  • {\lambda: I\otimes - \overset{\sim}{\to}1_{\bf{C}}} は自然同型である。
  • {\rho: -\otimes I\overset{\sim}{\to}1_{{\bf C}}} は自然同型である。

これらは次の図式を可換にする。

(1)

f:id:yoheiwatanabe0606:20180529233851p:plain

 

(2) 

f:id:yoheiwatanabe0606:20180529234016p:plain

 

特に、{\alpha, \lambda, \rho} が恒等射であるとき、strict monoidal categoryと呼ばれる。今回はstrictしか使われない。

ここでバイファンクターと自然同型の用語を確認しよう。

まずバイファンクターを定義する。そのためにはプロダクト・カテゴリーを定義する。

{{\bf C},\, {\bf D}} に対するプロダクトカテゴリー {{\bf C}\times {\bf D}} を次のように定義する。{{\bf C}\times {\bf D}} の対象を {(C, D)} とする。ただし、{C} を圏 {\bf C} の対象として、{D} を圏 {\bf D} の対象とする。

{{\bf C}\times {\bf D}} の射を {(f, g): (C_1, D_1)\to (C_2, D_2)} とする。ただし、{f: C_1\to C_2} を圏 {\bf C} の射であり、{g: D_1\to D_2} を圏 {\bf D} の射である。

プロダクトカテゴリの射の合成を次のように定義する。{{\bf C}\times {\bf D}} の射

{(C_1, D_1)\overset{(f_1, g_1)}{\to}(C_2, D_2)\overset{(f_2, g_2)}{\to}(C_3, D_3)}  に対して、

{(f_2, g_2)\circ (f_1, g_1):= (f_2\circ f_1: C_1\to C_3, g_2\circ g_1: D_1\to D_3)}

と定義する。

これが圏であることは容易にわかる。

 

プロダクトカテゴリからある圏への関手をバイファンクターという。つまり、関手 {F: {{\bf C}_1}\times {{\bf C}_2}\to {\bf D}} をバイファンクターという。

 

{F, G: {\bf C}\to {\bf D}} を関手とする。{\alpha: F\to G} が自然同型であるとは、{\alpha} が自然変換であり、圏 {{\bf C}} の各対象 {A} に対して、射 {\alpha_A: FA\overset{\sim}{\to} GA} が同型(isomorphism) であることである。つまり、ある射 {\alpha^{-1}_A: GA\to FA} が存在して、{\alpha^{-1}_A\circ \alpha_A = 1_{FA}} かつ {\alpha_A\circ \alpha^{-1}_A = 1_{GA}} が成り立つことである。

 

モノイド圏の具体例は置いといて、次にモノイド対象を定義しよう。

定義 3 (モノイド対象)

{({\bf C}, \otimes, I, \alpha, \lambda, \rho)} をモノイド圏とする。モノイド対象(monoidal object)とは {(M, \mu, \eta)} であり、

  • {M} は圏 {{\bf C}} の対象である
  • {\mu: M\otimes M\to M} は圏 {{\bf C}} の射であり、multiplicationと呼ばれる
  • {\eta: I\to M} は圏 {{\bf C}} の射であり、unitと呼ばれる

これらは次の図式を可換にする。

(1)

f:id:yoheiwatanabe0606:20180530004338p:plain

 

 

(2)

f:id:yoheiwatanabe0606:20180530004357p:plain

 

最後にモノイドを定義しよう(すでにどこかの記事に書かれている)。簡単に言えば、モノイドとは対象がただ1つであるような圏のことである。すなわち、

定義 4 (モノイド)

{(M, \cdot, e)} であり、{M} は集合であり、{\cdot}二項関係であり、{e}{M} の元である。それらが次のような関係が成り立っている。

(1)   {(x\cdot y)\cdot z = x\cdot (y\cdot z)}

(2)   {x\cdot e = e\cdot x = x}

 

 

それではモノイド圏の例をみてみよう。

Example 1: 集合の圏  {{\bf Set}}

集合の圏 {{\bf Set}} はモノイド圏である。

集合の圏 {{\bf Set}} におけるテンソル{\otimes: {\bf Set}\times {\bf Set}\to {\bf Set}}カルテジアン{\times} である。

{\times: {\bf Set}\times {\bf Set}\to {\bf Set}} を次のように定義する。集合の圏 {\bf Set} の対象 {A, B} に対して、{\times (A, B) := A\times B} とする。つまり、{A}{B} の直積 {A\times B} である。

{(A_1, B_1)\overset{(f, g)}{\to}(A_2, B_2)} に対して、集合の圏 {{\bf Set}} の射 {f\times g: A_1\times B_1\to A_2\times B_2}

{f\times g(a, b):= (f(a), g(b) )} と定義する。

このとき、明らかに {\times: {\bf Set}\times {\bf Set}\to {\bf Set}} はバイファンクターである。

 

集合の圏 {{\bf Set}} の対象 {I} について、{I:= \{*\}} とする。つまり、{I} を一点集合とする。

 

{(A\times B)\times C = A\times (B\times C)} であるので、{\alpha = 1} である。つまり、{1: (-\times -)\times -\overset{\sim}{\to}-\times (-\times -)} である。

 

{\lambda: \{*\}\times -\overset{\sim}{\to}-}{\rho: -\times \{*\}\overset{\sim}{\to} -} について、それぞれ恒等射である。{\lambda: =1,\,\, \rho:= 1}

{\bf Set} の各対象 {A} に対して、

{\lambda_A:= 1_A: \{*\}\times A\overset{\sim}{\to}A,\,\,\, (*, a)\mapsto a} 

{\rho_A: = 1_A: A\times \{*\}\overset{\sim}{\to}A,\,\,\, (a, *)\mapsto a}

 

f:id:yoheiwatanabe0606:20180530025539p:plain

 

さて、モノイド圏 {\bf Set} におけるモノイド対象は何だろうか。集合の圏 {\bf Set} におけるモノイド対象は {(M, \mu, \eta)} であり、

  • {M} は集合の圏 {\bf Set} の対象である。つまり、{M} は集合である。
  • {\mu: M\times M\to M} は集合の圏 {\bf Set} の射である。
  • {\eta: \{*\}\to M} は集合の圏 {\bf Set} の射である。

これらは次の図式を可換する。

(1)

f:id:yoheiwatanabe0606:20180530030647p:plain

 

(2)

f:id:yoheiwatanabe0606:20180530030704p:plain

 

さて、実はこのモノイド対象 {(M, \mu, \eta)} はまさにモノイドであるのである*1

任意の元 {x, y, z\in M} に対して、一方で {(M\times M)\times M\overset{\mu\times 1_M}{\to}M\times M\overset{\mu}{\to}M} であるから、

{\mu\circ \mu\times 1_M ( (x, y), z) = \mu\circ (\mu(x, y), 1_M(z) ) = \mu\circ (\mu(x, y), z)}

{= \mu(\mu(x, y), z)} である。

他方で {(M\times M)\times M\overset{\sim}{\to}M\times (M\times M)\overset{1_M\times \mu}{\to}M} であるから、

{\mu\circ 1_M\times \mu (x, (y, z) ) = \mu\circ (x, \mu(y, z) )}

{= \mu(x, \mu (y, z) )} である。

よって、{\mu(\mu(x, y), z) = \mu(x, \mu (y, z) )} である。これはモノイドの性質 (1) と同じである(二項関係 {\cdot: M\times M\to M}{\mu: M\times M\to M} とすればよい)。

 

次に {\eta: \{*\}\to M} について、これは集合 {M} の元と解釈することができる。つまり、{\eta (*):= \eta\in M} とする。このとき、任意の元 {x\in M} に対して、

{\mu\circ \eta\times 1_M(*, x) = \mu\circ (\eta(*), 1_M(x) ) = \mu\circ (\eta, x)}

{= \mu (\eta, x) = 1_M(*, x) = x} である。

同様に、{\mu\circ 1_M\times \eta (x, *) = \mu(x, \eta) = x} である。

つまり、{\mu(\eta, x) = \mu (x, \eta) = x} である。これはモノイドの性質 (2) と同じである({e\in M}{\eta: \{*\}\to M} とすればよい)。 

 

 

以上より、集合の圏 {\bf Set} はモノイド圏であり、集合の圏 {\bf Set} のモノイド対象はモノイドである。ここからモノイド対象がモノイドの一般化であることがわかる。

 

Example 2: 自己関手の圏 {{\bf End}({{\bf C}})}

次に自己関手の圏 {{\bf End}({\bf C})} について考えてみよう。これがモノイド圏であり、そのモノイド対象がモナドであることを示そう。

{{\bf C}} を圏とする。{\bf C} の自己関手の圏 {{\bf End}({\bf C})} を次のように定義する。

対象は {\bf C} の自己関手である: {F: {\bf C}\to {\bf C},\, G: {\bf C}\to {\bf C},\, H: {\bf C}\to {\bf C},\ldots}

射は自然変換である: {\alpha: F\to G,\, \beta: G\to H,\ldots}

射の合成を次のように定義する。{F\overset{\alpha}{\to}G\overset{\beta}{\to}H} に対して、{F\overset{\beta\cdot\alpha}{\to}H}

 

自己関手の圏 {{\bf End}({\bf C})}テンソル{\otimes: {\bf End}({\bf C})\times {\bf End}({\bf C})\to {\bf End}({\bf C})} を次のように定義する。

{{\bf End}({\bf C})} の対象 {F, G} に対して、{F\otimes G:= FG}    つまり、{F\otimes G} を関手の合成とする。

{{\bf End}({\bf C})\times {\bf End}({\bf C})} の射 {(F_1, G_1)\overset{(\alpha, \beta)}{\to}(F_2, G_2)} に対して、{\alpha\otimes \beta: F_1\otimes G_1\to F_2\otimes G_2} を次のように定義する。

{\alpha\otimes\beta: F_1 G_1\to F_2 G_2}

{\bf C} の任意の対象 {A} に対して、{(\alpha\otimes \beta)_A: F_1 G_1 A\to F_2 G_2 A}{\alpha_{G_2 A}\circ F_1 (\beta_A)} と定義する。さらに自然変換の性質より、

{(\alpha\otimes \beta)_A:= \alpha_{G_2 A}\circ F_1 (\beta_A) = F_2 (\beta_A)\circ \alpha_{G_1 A}} 

である。

 

{\alpha\otimes\beta: F_1 G_1 \to F_2 G_2} が自然変換であることを示さなければならない。が、それはほぼ自明である。我々は他に {\otimes: {\bf End}({\bf C})\times {\bf End}({\bf C})\to {\bf End}({\bf C})} がバイファンクターであることを示さなければならない。それほど自明ではないが、示すことは難しくない、と思う。 

{1_F\otimes 1_G = 1_{FG}} だけをここでは示す。圏 {\bf C} の任意の対象 {A} に対して、

{(1_F\otimes 1_G)_A = (1_F)_GA\circ F(1_{GA}) = 1_{FGA}\circ 1_{FGA} = 1_{FGA}}

 

{I} を圏 {\bf C} の恒等関手 {1_{{\bf C}}: {\bf C}\to {\bf C}} とする。{I:= 1_{\bf C}}

{\alpha}

{\alpha:= 1: (-\otimes -)\otimes - \overset{\sim}{\to}-\otimes (-\otimes -)} とする。{\lambda,\, \rho}

{\lambda:= 1: 1_{{\bf C}}\otimes -\overset{\sim}{\to}-}

{\rho:= 1: -\otimes 1_{{\bf C}}\overset{\sim}{\to}-}

とそれぞれする。

すると、自己関手の圏 {{\bf End}({\bf C})} はモノイド圏である。

 

 

それでは自己関手の圏 {{\bf End}({\bf C})} のモノイド対象は何であろうか。

自己関手の圏 {{\bf End}({\bf C})} のモノイド対象は {(M, \mu, \eta)} であり

  • {M} は 自己関手の圏 {{\bf End}({\bf C})} の対象である。つまり、{M: {\bf C}\to {\bf C}} は圏 {\bf C} の自己関手である。
  • {\mu: M\otimes M\to M} は自己関手の圏 {{\bf End}({\bf C})} の射である。つまり、{\mu: MM\to M} は自然変換である。
  • {\eta: I\to M} は自己関手の圏 {{\bf End}({\bf C})} の射である。つまり、{\eta: 1_{{\bf C}}\to M} は自然変換である。

これらは次の図式を可換する。

(1)

f:id:yoheiwatanabe0606:20180530044800p:plain

 

 

(2)

f:id:yoheiwatanabe0606:20180530044816p:plain

 

したがって、あとは、{\mu\otimes 1_M,\, 1_M\otimes \mu,\,\eta\otimes 1_M,\, 1_M\otimes \eta} をそれぞれ計算すればよい。

(i) {\mu\otimes 1_M}

{\mu\otimes 1_M = M(1_M)\cdot \mu_M = 1_{MM}\cdot \mu_M}

{=\mu_M}

(ii) {1_M\otimes \mu} 

{1_M: M\to M,\,\, \mu: MM\to M} より、{F_2 = M, \beta = \mu, \alpha = 1_M, G_1 = MM} とすれば、

{1_M\otimes \mu = M\mu\cdot 1_{MMM} = M\mu}

である。

(iii) {\eta\otimes 1_M} 

{\eta: 1_{{\bf C}}\to M,\,\, 1_M: M\to M} より、{\alpha = \eta, G_2 = M, F_1 = 1_{{\bf C}}, \beta = 1_M} とすれば、

{\eta\otimes 1_M = \eta_M\cdot 1_{{\bf C}}1_M = \eta_M\cdot 1_{1_{{\bf C}M}}}

{=\eta_M\circ 1_M = \eta_M}

(iv) {1_M\otimes \eta} 

{1_M\otimes \eta = M\eta\cdot 1_{M1_{{\bf C}}} = M\eta\cdot 1_M}

{=M\eta}

 

よって、

(1)          {\mu\cdot \mu_M = \mu\cdot M\mu}

(2)          {\mu\cdot\eta_M = 1_M = \mu\cdot M\eta}

 

である。

自己関手の圏のモノイド対象はまさにモナドである。

 

 

STEP 3圏論において定義されているモナドと実際にHaskellなどで定義されているモナドの関係性

まだよくわからない。私がHaskellとか知らないから。ただ、J. Isazaの本によると、

{\bf Hask}: 対象はHaskell型であり、射はHaskell関数である。

{\tt{Maybe}} は自己関手である。

{[ }] (リスト)は自己関手である。

{\tt{head}} 関数は {\tt{Maybe}} 関手からリスト関手への自然変換である。

{\tt{last}} 関数はリスト関手から {\tt{Maybe}} 関手への自然変換である。

{\tt{concat}} 関数はリスト関手からそれ自身への自然変換である。

{\tt{Maybe}} モナドとは自己関手が {\tt{Maybe}} 関手であるようなモナドのことである。

リストモナドとは自己関手がリスト関手であるようなモナドのことである。

これからHaskellAgdaなどを勉強する。

 

 

まとめ

 

A monoid is exactly a monoidal object in the category of sets {\bf Set}.

 

A monad is exactly a monoidal object in the category of endofunctors of a category {{\bf End}({\bf C})}.

 

他にも考えなければならなければならないことがある。

(1)

A monoidal category is exactly a monoid in the category of all categories {\bf CAT}.

 

(2)

A monad is exactly a monoidal monoid in the category of endofunctors of a category {{\bf End}({\bf C})}, where a monoidal monoid is a monoidal category whose object is only one.

 

我々は現在、モノイドとモナドとモノイド対象の関係性を考えた。だが、まだモノイド対象とモノイド圏の関係性もわからない。(1)によると圏の圏のモノイド対象がモノイド圏らしい(ホント?)。さらにモノイダルモノイドなる概念もあり、それとモノイド対象やモナドとの関係も考えなくてはならない。特に、モノイドは対象がただ一つの圏であり、それとの関わりも理解されなくてはならない。鋭意、研究中である。次号を待て。 

 

 

僕から以上

 

 

参考文献

S. Awodey, Category Theory 2nd

G. M. Kelly, Basic Concepts of Enriched Category Theory (2005)

P. Etingof, et. al., Tensor Categories (2010) 

J. Isaza, Category Theory Applied to Functional Programming (2014)

 

All downloadable!!

*1:まだ、完全には理解していない。もう少し考える余地がある。