モノイドとは、圏論に出てくる耳慣れない概念であるが、実例としては足し算や掛け算がなど結構身近なものがある。
以下の説明は、群論における一般的な説明である。
モノイドは集合Sと、Sの要素に対する2項演算子「·」、Sに属する単位元e、の組み合わせのうち、以下の規則を満たすものを指す。
結合律: 任意のa, b, c ∈S について、(a · b) · c = a · (b · c) が成り立つ。
単位元律: 任意のa ∈S について、 a · e = e · a = a が成り立つ。
e · a = a を左単位元律、a · e = a を右単位元律という。
モノイドという名前を聞いたことがない人は多いと思うが、モノイドとなっているものの例として誰でも知っているものが、掛け算である。
Sを実数(整数や複素数、自然数でもよい)の集合、「·」を掛け算、e = 1 とすれば、
というように、モノイドの条件を満たしていることがわかる。
一つだけ注意する点があるとすれば、掛け算の例はたまたま交換法則(任意のa, b ∈S について、a · b = b · a)を満たしているが、モノイドは交換法則を(満たすこともあるが)満たすことが保証されていないことである。
文字a,b,c,…からなる集合をアルファベットということにする。アルファベットをAと書くと、A={a, b, c, …, x, y, z}である。Aの要素からなる有限な文字列をA上の語(word)という。例えば、"a"、 "xyz"、 "hello"、 "category"、 "qawsedrftgyhujikolp" などである。ここで、空の文字列を "-" で表す。Aの「クリーネ閉包」A*を、A*={A上の語}で定義する。語w,w'∈A*に対し、二項演算w・w'を語の連結ww'で定義する。例えば”ab” ・ "cd" = "abcd"、"ab"・"-"="ab"、"-"・"ab"="ab"である。こうすることで演算・は
となり、モノイドの構造を持つことがわかる。これをA上の自由モノイドという。これは交換法則を満たさない例である。
結合律により、a · b · c は前後どちらから計算してもよいことになるため括弧なしで書くことができる。
もうひとつは、並列計算である。重畳関数の計算をするときに単位元eを初期値とし、Sの要素からなるリストと、「·」を重畳関数の引数にする関数と考えれば、通常の重畳関数は端から順に計算することしかできないところ、モノイドを引数にした重畳関数は分割して計算して並列計算した結果を最後に「·」でつなぎあわせて計算しても正しい答えが出ることが保証されているのである。
圏論におけるモノイドを一部説明する。圏論の言葉でモノイドを説明する事もできるし、モノイドの性質を一般化したモノイド構造などを考えることができる。あるいは逆に、圏論は単位元を持つ射の集まりという性質から、モノイドをものすごく一般化したものと見なすこともできる。
M
↺idM
I J K L M
このように恒等射のみからなる圏は離散圏と呼ばれる。
I→T
s ↷ |
||
I | → t |
T |
⤻ u |
m ↷ |
||
M | → idM |
M |
⤻ n |
射m,nの合成はモノイドMの積をもってm∘n=mnで与えられ、恒等射はMの単位元で与えられる。
以上を踏まえると、圏はモノイドの多対象版であると考えることができる。
以下はモノイダル圏の説明。
Cを圏とし、C1、C2をCの対象とする。Cの対象C0と2つの射p:C0→C1、q:C0→C2からなる三つ組(C0,p,q)つまり
C1 | ←C0→ p q |
C2 |
が以下の性質を満たすとする。
Cの対象X、2つの射f1:X→C1、f2:X→C2からなる任意の3つ組(X,f1,f2)に対し、ある射f:X→C0がただひとつ存在し、p∘f=f1、q∘f=f2を満たす。可換図式は以下のとおり。
↙ | ←X→ | ↘ |
↓f1 | f↓ | f2↓ |
C1 | ←C0→ p q |
C2 |
この図式の性質を普遍性という。このとき、C0をC1,C2の積(またはカルテシアン積)と呼び、C0=C1×C2と書く。多くの場合、直積と呼ばれる積に相当するものである。
つまりC1とC2が与えられたとき、どのようなXからの射の対(f1,f2)でもあるfを経由して対(p,q)を通るように一意に分解される「普遍的」な分解である。
また、終対象IはI×X→X←X×Iを考えれば、この積のもとで恒等元として働くことがわかる。例えば集合の場合、終対象は一点集合I={*}であり、λ(*,x)=x、η(x,*)=x、x∈Xで与えられる全単射I×X→λX←ηX×Iにおいて、恒等元として作用していることがわかる。
M,N,LをR-加群とする。環R上の加群のテンソル積⊗Rは以下の定義を持つ積である。ただし、ModRはR-加群の圏、M×N∋(m,n)はMとNの集合としての直積。
M×N |
φ → |
M⊗RN |
↓ F | ↙f | |
U |
M⊗RNの元をφ(m,n)=m⊗nと書く。テンソル積は存在すれば一意である。
この時、⊗Rは以下の性質を持つ。
性質1,2より、⊗Rは直積圏からの関手-⊗R-:ModR×ModR→ModRを定める。
これは、どのような「積の構造を持つ写像」F:M×N→Uもテンソル積⊗Rを元に生成する事ができるということを示唆している。
圏の積C×C'からDへの関手H:C×C'→Dを双関手という。
圏C上に双関手-⊗-:C×C→C、自然変換a=aX,Y,Z:(X⊗Y)⊗Z → X⊗(Y⊗Z)、対象I∈Ob(C)、同型ι:I⊗I→I、関手R1,L1が与えられ、次の2条件を満たす時、⊗(あるいは(⊗,a,I,ι,R1,L1))を圏のモノイダル構造という。
1.五角形公理 すべてのX,Y,Z,Wに対して次の図式が可換。
(X⊗(Y⊗Z))⊗W | ← a⊗idW |
((X⊗Y)⊗Z)⊗W | → a |
(X⊗Y)⊗(Z⊗W) |
↓a | ↓a | |||
X⊗((Y⊗Z)⊗W) | → | → | X⊗(Y⊗(Z⊗W)) |
2.単位元の公理 L1(X)=I⊗X、R1(X)=X⊗Iと定義される関手L1:C→C、R1:C→Cは圏同値である。
(X⊗I)⊗Y | → a |
X⊗(I⊗Y) |
↓R1⊗idY | idX⊗L1↓ | |
↘→ | X⊗Y | ←↙ |
圏Cとその上のモノイダル構造の3つ組(C,⊗,I)をモノイダル圏と呼ぶ。あるいはしばしばCをモノイダル圏と省略して呼ぶ。⊗をCのテンソル積、Iをテンソル積のユニット(単位対象)と呼ぶ。つまりモノイダル圏とは、カルテシアン積以外の何らかの「積」の構造を持つ圏である。
例:集合の圏Setには直積が存在する。X,Y∈Setに対し、X⊗Y:=X×Yとおき、Iとして1元からなる集合{*}を採用し、aX,Y,Z((x,y),z):=(x,(y,z))(ただしx∈X、y∈Y、z∈Z)とすれば圏Set上のモノイダル構造(Set,×,{*})が決まる。
例:Rを可換環、⊗RをR加群のテンソル積とするとき、(ModR,⊗R,R)はモノイダル圏となる。
モノイダル圏Cにおいて、対象Xと射m:X⊗X→X、e:I→Xの3つ組(X,m,e)について、以下の2つの図式が可換であるとき、XをCにおけるモノイド対象、または単にモノイドという。
(X⊗X)⊗X |
m⊗idX |
X⊗X |
aX,X,X≃ ↓ | ↓ | |
X⊗(X⊗X) | ↓m | |
idX⊗m ↓ | ↓ | |
X⊗X |
→ |
X |
I⊗X | e⊗idX → |
X⊗X |
idX⊗e |
X⊗I |
↓ | ↓m | ↓ | ||
→ p2 |
→ | X | ← | ← p1 |
これらの図式が可換であるとはつまり次の合成が等しいということを示している。
m∘(idX⊗m)=m∘(m⊗idX)、m∘(e⊗idX)=p2、m∘(idX⊗e)=p1
これらは要素を使って表すこともできる。
集合Mの例で言うと、M上の関数mをm(x,y)=xyのように書き、一点集合I={*}上の関数eをその唯一の値である要素e(*)=u∈Mで置き換えると図式は以下のようになる。
〈〈x,y〉,z〉≅〈x,〈y,z〉〉 | → | 〈x,yz〉 |
↓ | ↓ | |
〈xy,z〉 | → | 〈xyz〉 |
〈*,x〉 | → | 〈u,x〉 | 〈x,u〉 | ← | 〈x,*〉 | |
↓ | ↓ | ↓ | ↓ | |||
→ | → | 〈ux〉=〈x〉 | 〈xu〉=〈x〉 | ← | ← |
これらはまさに、乗法が結合的で左および右恒等元として要素uを持つというモノイドの定義そのものである。これは逆に言えば、代表的な恒等元を可換図式でどのようにすれば表すことができるかという例を示している。
M×Mのカルテシアン積×が結合的であって、全単射I×M→M←M×Iで規定される恒等元Iを持てば、⊗は2つの対象上のどんな演算に置き換えてもよい。Cが圏であり、ある演算◆がこのような演算であり、Iをその単位元とすると、体系(C,◆,I)におけるモノイドというものについて議論することができる。
任意の環Rに対して整数ZからRへ向かって一意な環準同型ζ:Z⇒Rがあり、環Rは一意な方法でZ-代数になる。環とZ-代数は同一の概念であり、R-代数について述べられたことはR=Zとすることで環に対する主張に読み替えることができる。
掲示板
8 ななしのよっしん
2022/07/03(日) 23:06:05 ID: LZF454LBHQ
失礼、↑はモナドとプログラミングの話で、モノイドとプログラミングの関わりはわかんないね
圏論とか関手とかの説明自体がものすごくわかりやすいので参考になる人はいると思うけど
9 ななしのよっしん
2022/07/04(月) 00:07:50 ID: LZF454LBHQ
>>6だけどモノイドの恒等射を調べてたらやっぱり違ったかもごめん
https://
>射は文字通り 0、1、2 などであって関数ではない
自然数の加法の圏なら「対象は*、射は自然数、恒等射は0、合成は+」で、
2+3=5は射2∘射3=射5、7+0=7は射7∘射0=射7、という解釈で何も問題ない
同じ矢印のベクトルとは違って射の始域終域が一致しても射は同じになるわけじゃないから、
合成しても「同じ」になる恒等射0は特殊な射として意味があるわけだ
射ってグラフ理論みたく純粋につながり方を表すものじゃなく、一種の「経路」を含んでるね?これ
てことは、自然数全体をただひとつの対象とし自然数を自然数に移すのを射として、
という某本の言葉づかいhttp://mがおかしいのかな
対象*は虚無なのかなんな
(省略しています。全て読むにはこのリンクをクリック!)
10 ななしのよっしん
2022/07/23(土) 13:15:14 ID: a4xp3C14lP
>>4
> そのような積が存在すれば同型を除いて一意で具体的な構成は何の圏によるかで変わる
例えばSetには複数のモノイダル積を入れることができる、普通は直積だけど直和(とI = 空集合)を入れても何の問題もないので、本質的に複数ある
>>9
> てことは、自然数全体をただひとつの対象とし自然数を自然数に移すのを射として、
> という某本の言葉づかいhttp://mがおかしいのかな
私自身は某本を読んでおらず裏は取れないけど、少なくともブログに書いてあることはおかしい
対象*は虚無だと思った方がいいかもね
モノイドとプログラミングの関連として、オートマトン関係のことを追記したい気持ちになった
急上昇ワード改
最終更新:2025/05/20(火) 13:00
最終更新:2025/05/20(火) 13:00
ウォッチリストに追加しました!
すでにウォッチリストに
入っています。
追加に失敗しました。
ほめた!
ほめるを取消しました。
ほめるに失敗しました。
ほめるの取消しに失敗しました。