\)である(わかりにくい時は、\(\mu\)を\(\times\)あるいは\(+\))などで置き換えるとよい。モノイドの例を挙げておこう。整数での加算は、単位元を0とするモノイドである。どの整数も二つの整数を加算することで得られるが、その組み合わせは無数である。2+1,3+0,4+(-1),....となる。346という数は、3という数に、4という数を接続し、さらに、6という数を接続することで得られる。これは、加算とは異なり、一つの数を得る方法は複数存在せず、一意であることに注意する必要がある。そこで、モノイドを作る元(これを生成元と呼ぼう)を用意して、モノイドの定義に従って、集合\(M\)を得ることを考えよう。今、生成元を\(a,b\)としよう。これに二項演算子\(\mu\)を適用して、モノイドの集合\(M\)を作ってみよう。\(M\)には、生成元と単位元が含まれる。そこで、\(M\)に\(e,a,b\)を含めよう。次に、これらから\(M\)の新しい要素を作ろう。新しい要素は\(\mu\)を省いて表すことにする。b\end{eqnarray}ここまでで、\(M=\{e,a,b,aa,ab,ba,bb\}\)となる。新しく得られた要素を利用して、さらに\(M\)の要素を作ってみよう。\\..............\end{eqnarray}ここまでで、\(M=\{e,a,b,aa,ab,ba,bb,aaa,aab,aba,abb,baa,bab,bba,bbb\}\)をえる。この操作を繰り返すことで、モノイドの要素を求めることができる。このように定義だけを利用して作られたモノイドは自由モノイドと呼ばれる。これに対して、出現した生成元の順番が異なるにもかかわらず、それらを同一なものと見直すモノイドもある。このようなモノイドは自由モノイドとは言わない。圏論ではモノイドは、集合論での定義の時に用いた\(M,e,\mu\)を利用して、次のように定義される。結合:関数\(\mu\)さらに、単位律、結合律が成り立つである。学習を続けると、モノイドは、抽象度をたためて、モノイド圏として次のように定義される。合成:\(\circ\)ここで、モノイド圏の\(M\),\(\mu\)は、集合論での集合\(M\)と二項演算子\(\mu\)と同じ役割を持つ。集合論での単位元\(e\)と同じ役割を持つ。モノイド圏では、\(M\)と\(I\)は対象となっている。専門的な用語で説明すると、\(M\)は自己関手で、\(I\)は恒等関手である。M\)から\(M\)への自然変換である。抽象度が上がっているので、特殊な用語を用いているが、二項演算子の定義と同じ役割を担っている。\(I\)を\(M\)に写す自然変換である。これは、単位元をモノイドの集合に組み込む仕掛けを与えていると思えばよい。モノイド圏である時、上記で説明した関手と自然変換の間では次の可換図式が成り立つ。この可換図式から、モノイド圏では単位律と結合律が満たされることが分かる。これらについて詳しく知りたいときは、モノイド圏の記事を見て欲しい。3)Haskellとの関係Haskellでの自由モノイドは、リストである。]、結合は++となる。対象は、数を扱っている場合であれば数のリスト、文字を扱っている場合であれば文字のリストとなる。数のリストだとすると、次のような例を得ることができる。[a]文字のリストの例も挙げておこう。[Char]自由モノイドではないモノイドの例としては、数での加算や乗算などを挙げることができる。乗算のモナイドを例にとってみよう。集合論の世界の中で、モノイドを構成する要素を生成元から作り出す手順を説明したが、これを圏にすることとしよう。この圏を\(\mathbf{Set}\)と呼ぶこととしよう。このために、生成元だけで構成された集合\(X\)を用意する。次に、この生成元から自由モノイドを作り出す。ここで得られた集合を\(M\)とし、\(\mathbf{Set}\)の対象の一つとすることとしよう。自由モノイドは、その生成の仕方からわかるように、一つであることが分かる。\(X\)を必要な生成元とすることで作られたモノイドの集合\(N,N’...\)をそれぞれ\(\mathbf{Set}\)の対象の一つとすることとしよう。このようにして作られるモノイドには、異なる二つの要素間での二項演算の結果が一致するような加算や乗算から作られたものが含まれるし、\(X\)にさらに元を加えて作り出されたモノイドなども含まれる。これにより下図のような圏が得られる。集合論をベースにしたモノイドの圏\(\mathbf{Set}\)が作れたので、次は、圏論をベースにしたモノイドの圏\(\mathbf{Mon}\)を作ることにしよう。これは、簡単で、モノイド圏をそのまま使えばよいので、下図を得る。圏\(\mathbf{Mon}\)は、対象間に射を設けられる可能性がある。ここでは、とりあえず、自由モノイドとそうでないモノイドとの間に射を定義しておこう。それらを\(h,h’...\)としよう。以下の議論で、これらの射\(h,h’...\)が、一意的な準同型写像になることを示し、自由モノイドが圏論での普遍性の一つとなることを示す。モノイド圏と集合圏を忘却関手でつなぐ圏論での世界と集合論の世界をベースにした圏が構成できたので、この二つの圏を関手でつなぐことを考えよう。\mathbf{Set}\)を用意しよう(下図)。}\)の対象を\(\mathbf{Set}\)の対象に写し、射については何も行わない。functor)と呼ばれる。これは、圏論の世界でモノイドが有していた構造が、集合論の世界に写したときに失われることによる。忘却関手を用意したので、集合論の世界での対象\(M\)は対象\(N\)に\(U(h)\)で写される。モノイド圏と集合圏を忘却関手でつなぐ今までの説明だけではわかりにくいので、例を用いて具体的に示そう。二進数\(0,1\)の場合を考えてみよう。自由モノイドの方を二進数の数とし、そうでないモノイドの方を2進数の乗算とすると下図を得る。この図で、\(p\)は2進数の数を、\(q\)は2進数の乗算の結果を作り出す関数である。\{0,1\}\)に対して、\(h([a]++[b])=h(a)*h(b)\)とする。この時、準同型写像になっていることを確認して欲しい。次の例は、生成元を増やしてモノイドを作る例だ。ここでは、右側のモノイドを生成するときに、生成元に2を加えて、3進数の数を作り出すことを考えよう。この場合には、下図をえる。\(q\)は3進数の乗算の結果を作り出す関数である。\{0,1\}\)に対して、\(h([a]++[b])=h(a)*h(b)\)とする。準同型写像になっていることを確認して欲しい。生成元を増やしたので、次は、いくつかの生成元は同じだと見なしてモノイドを作る例を考えよう。次の例は、いずれの生成元に対しても、集合\(N\)の同じ要素に写像されるようにしよう。以下の例では、1に写されるようにした。\{0,1\}\)に対して、\(h([a]++[b])=h(a)*h(b)\)とする。これも、準同型写像になっていることを確認して欲しい。普遍性としての自由モノイド自由モノイドを理解してもらうために、自由モノイドを集合論に基づいて定義し、その性質について説明してきた。我々が議論しているのは、集合論の世界ではなくて圏論の世界である。このため、自由モノイドを圏論の世界の中で定義する必要がある。そこで、下図の可換図式で示されるように、次のように定義する。モノイド圏を対象とした圏\(\mathbf{Mon}\)と集合からなる圏\(\mathbf{Set}\)が存在したとする。忘却関手\(U\)は、\(\mathbf{Mon}\)の対象となっているモノイド圏のそれぞれに対して、その対象を\(\mathbf{Set}\)の対象に写すとする。今、あるモノイド圏\(\mathcal{M}\)から任意のモノイド圏\(\mathcal{N}\)に対して準同型写像\(h\)があったとする。これらの圏\(\mathcal{M,N}\)は忘却関手\(U\)で\(\mathbf{Set}\)に写されるので、これらの対象を\(\{M,I\},\{N,I\}\)とすれば、写される先は\(U(\{M,I\}),U(\{N,I\})\)となる。生成元{X}を対象とする圏を考えよう。この圏から、先に説明した方法により、モノイドを生成することができる。このため、\(U(\{M,I\}),U(\{N,I\})\)への射が存在するはずである。それらを\(p\),\(q\)としよう。q\)とするような\(h\)が一意的に定まるとき、\(\mathcal{M}\)を自由モノイドと呼ぶ。U(\{N,I\})\)である。自由モノイドが、任意のモノイド圏\(\mathcal{N}\)に対して、準同型写像\(h\)が一意的に定まるといっているので、これは圏論での重要な概念である普遍性であるということができる。前後が逆になるが、例で挙げたものが自由モノイドになっていることを改めて確認して欲しい。紅くるりのピクルスとサラダ小春日和のなか、上野寛永寺ゆかりの建造物を訪ねるローマ風、ロマネスコと生ハムのマリネ参加グループ知識リンクはてなブログブログをはじめる週刊はてなブログはてなブログProはてなブログをはじめよう!bitterharvestさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。