モノイド

マグマの間の代数構造。例えば、モノイドは単位元を持つ半群である。

抽象代数学においてモノイドとは、結合 二項演算単位元を備えた集合である。例えば、自然数と加法はモノイドを形成し、単位元は0である。

モノイドは単位元を持つ半群です。このような代数構造は数学のいくつかの分野で見られます。

集合からそれ自身への写像は、写像合成に関してモノイドを形成する。より一般的には、圏論においては、ある対象からそれ自身への写像はモノイドを形成し、逆にモノイドは単一の対象を持つ圏と見なすこともできる。

コンピュータサイエンスコンピュータプログラミングにおいて、与えられた文字集合から構成される文字列の集合は自由モノイドと呼ばれます遷移モノイド構文モノイドは有限状態機械の記述に用いられますトレースモノイド履歴モノイドはプロセス計算並行計算の基礎となります

理論計算機科学において、モノイドの研究はオートマトン理論クローン・ローズ理論)や形式言語理論スターハイト問題)の基礎となります。

この主題の歴史とモノイドのその他の一般的な特性については、 semigroup を参照してください。

意味

二項演算S × SS(ここでは• と表記)を備えた集合S は 次の2つの公理を満たすときモノイドである。

結合性
S内のすべてのabcについて、式( ab ) • c = a • ( bc )が成立します。
アイデンティティ要素
Sには要素eが存在し、 Sのすべての要素aに対して、等式ea = aおよびae = aが成り立ちます。

言い換えれば、モノイドは単位元を持つ半群です。また、結合性と単位元を持つマグマと考えることもできます。モノイドの単位元は一意です。[a] このため、単位元は定数、すなわち0項(または零項)演算とみなされます。したがって、モノイドは三つ組( S , • , e )の指定によって特徴付けられます

文脈によっては、二項演算の記号を省略し、演算を並置表記する場合がある。例えば、モノイド公理は( ab ) c = a ( bc )ea = ae = aと表記される。この表記は、数値の乗算を意味するものではない。

各要素に逆元が存在するモノイドはです

モノイド構造

サブモノイド

モノイド( M , • )のサブモノイドは、モノイド演算に関して閉じており、 M の単位元 e を含むM部分集合N のことある[1] [b]記号的に、NがMのサブモノイドであるとは、 eNMかつx , yNのときはいつでもxyNであることを意味する。この場合、NはMから継承した二項演算に関してモノイドである

一方、N がモノイド演算に関して閉じたモノイドの部分集合であり、かつこの継承された演算に関してモノイドである場合、単位元が異なる可能性があるため、 Nは必ずしもサブモノイドとは限らない。例えば、単集合 {0}は乗算に関して閉じており、非負整数の(乗法)モノイドのサブモノイドではない

発電機

M部分集合SがMを生成するとは、 Sを含むMの最小のサブモノイドがMであることを意味する。M生成する有限集合が存在する場合Mは有限生成モノイドであるという

可換モノイド

演算が可換なモノイドは可換モノイド(または、あまり一般的ではないが、アーベルモノイドと呼ばれる。可換モノイドはしばしば加法的に記述される。任意の可換モノイドには、 x + z = yとなるzが存在する場合、 xyによって定義される代数的 順序付け ≤ が備わっている。[2]可換モノイドMの順序単位は、 Mの任意の要素xに対して、 u によって生成される集合に x ≤ v となるような v が存在するような M の要素 u であるこれM順序アーベルGある場合によく使用され、その場合u はGの順序単位であるという

部分可換モノイド

一部の要素に対しては演算が可換だが、すべての要素に対しては可換ではないモノイドをトレースモノイドといいます。トレースモノイドは並行計算の理論でよく登場します

  • 16 個の可能な二項ブール演算子のうち、4 つは両側単位元を持ち、可換かつ結合的です。これら 4 つの演算子はそれぞれ、集合{False, True}を可換モノイドとします。標準的な定義によれば、ANDXNOR は単位元Trueを持ち、XOROR は単位元Falseを持ちます。AND と OR のモノイドは冪等ですが、XOR と XNOR のモノイドは冪等ではありません。
  • 自然数 集合N = {0, 1, 2, ...}は、加法(単位元0)または乗法(単位元1 )に関して可換モノイドである。加法に関してNの部分モノイドは数値モノイドと呼ばれる
  • 正の整数 の集合N ∖ {0}は乗法に関して可換モノイドである(単位元は1)。
  • 集合Aが与えられたとき、 Aの部分集合の集合は交差に関して可換モノイドである(単位元はA自身である)。
  • 集合Aが与えられたとき、 Aの部分集合の集合は和集合に関して可換モノイドである(単位元は空集合である)。
  • 前の例を一般化すると、すべての有界半格子は冪等可換モノイドになります
  • 二項演算の下で閉じたすべての単集合 { x }は自明な(1要素の)モノイドを形成し、これは自明な群でもあります。
  • すべてのグループはモノイドであり、すべてのアーベルグループは可換モノイドです。
  • 任意の半群 S は、 Sに含まれないeを付加し、任意のsSに対してes = s = seと定義するだけでモノイドに変換できます。この任意の半群からモノイドへの変換は、半群の圏とモノイドの圏の間の自由関手によって行われます。 [3]
    • このように、集合S上の左零半群単位元eを付加することで、冪等モノイド(find-firstと呼ばれることもある)を形成することができる。反対のモノイド(find-lastと呼ばれることもある)は、 S上の右零半群から形成される
      • 2つの元{lt, gt}を持つ左零半群に恒等基eを付加する。すると、結果として得られる冪等モノイド{lt, e , gt}は、要素の順序が与えられた場合の列の辞書式順序をモデル化する。ここでeは等式を表す。
  • 任意の環の基礎集合。演算は加算または乗算です。(定義により、環は乗法単位元1 を持ちます。)
  • ある固定されたアルファベットΣ上の有限文字列全体の集合は、文字列の連結を演算とするモノイドを形成する空文字列は単位元となる。このモノイドはΣ と表記され、 Σ上の自由モノイドと呼ばれる。Σ少なくとも2つの要素を持つ場合、自由モノイドは可換ではない。
  • 任意のモノイドMに対して、反対のモノイド M op はMと同じキャリア集合と単位元を持ち、その演算はxop y = yxで定義される。任意の可換モノイドは、それ自身の反対のモノイドである。
  • モノイド構造を持つ2つの集合MN(または一般に任意の有限個のモノイド、M 1、...、M k)が与えられたとき、それらの直積 M × N (対応する座標で定義された二項演算と単位元を持つ)もモノイドである(それぞれM 1 × ⋅⋅⋅ × M k)。[5]
  • モノイドMを固定する。与えられた集合からMへのすべての関数の集合もまたモノイドである。単位元は、任意の値をMの単位元に写像する定数関数である。結合演算は点ごとに定義される
  • 演算と単位元eを持つモノイドMを固定し、Mのすべての部分集合からなるその冪集合P ( M )を考える。このような部分集合に対する二項演算はST = { st  : sS , tT }で定義できる。これにより、P ( M )は単位元{ e }を持つモノイドになる。同様に、群Gの冪集合は群の部分集合の積に関するモノイドである
  • Sを集合とする。関数SS全体の集合は、関数合成のもとでモノイドを形成する。この恒等関数は、恒等関数と等価である。これはS完全変換モノイドとも呼ばれる。Sn個の要素を持つ有限関数である場合、 S上の関数のモノイドもnの要素を持つ有限関数となる
  • 前の例を一般化し、C をXCの対象としますXのすべての自己準同型全体の集合End C ( X )は、の合成に関してモノイドを形成します。圏論とモノイドの関係については、以下を参照してください。
  • 連結和を持つコンパクト曲面の同相の集合。その単位元は通常の2次元球面の類である。さらに、a をトーラスの類bを射影平面の類とすると、モノイドの任意の元 cはc = na + mbという形の一意の表現を持つ。ここでnは正の整数、m = 0, 1 , 2である。3 b = a + b成り立つ
  • f ⟩をn位の巡回モノイド、すなわちf = { f 0 , f 1 , ..., f n −1 }とする。すると、0 ≤ k < nに対してf n = f kが成立する。このようなkはそれぞれn位のモノイドを1つ与え、すべての巡回モノイドはこれらのうちの1つと同型である。さらに、f は{0, 1, 2, ..., n −1}上の関数として考えることができ、

あるいは、同等に

fの要素の乗算は関数合成によって与えられます。

k = 0 のとき、関数fは{0, 1, 2, ..., n −1}の順列となりn次数の唯一の巡回群を与えます。

プロパティ

モノイド公理によれば、単位元eは一意です。なぜなら、ef がモノイドの単位元であれば、e = ef = fとなるからです。

製品とパワー

それぞれの非負整数nに対して、モノイドのn要素の任意のシーケンス( a 1、...、a n )の積を再帰的に定義できます。つまり、 p 0 = eとし、p m = p m −1a mとします ( 1 ≤ mn )

特別な場合として、モノイドのxの非負整数乗を定義できます。 x 0 = 1かつx n = x n −1xn ≥ 1 )です。そして、任意のmn ≥ 0に対してx m + n = x mx n が成立します。

可逆要素

xが可逆であるとは、元yが存在し、xy = eかつyx = eが成り立つことを言う。元yはxの逆元と呼ばれる。逆元が存在する場合、それは唯一である。すなわち、yz がxの逆元であるならば、結合法則によりy = ey = ( zx ) y = z ( xy ) = ze = zが成り立つ。[6]

xが逆関数yを持つ場合、n ≥ 1に対してx n = y nと設定することでxの負のべき乗を定義できます。これにより、すべてのmnZに対して方程式x m + n = x mx nが成立します。

モノイドのすべての可逆な元の集合は、演算•とともに、を形成します。

グロタンディーク群

すべてのモノイドが群の中に収まるわけではありません。例えば、二つの元abが存在し、b が単位元でなくても a • b = a が成り立つようなモノイド完全にあり得ます例えば非負整数の乗法モノイドにおいてa = 0、b = 5 とします)。このようなモノイドは群に埋め込むことはできません。なぜなら、群において両辺にaの逆数を掛けるとb = eとなり、これは正しくないからです。

モノイド( M、 • )がキャンセル特性を持つ(またはキャンセル可能である) とは、 M内のすべてのabcについて、等式ab = acがb = cを意味し、等式ba = ca がb = cを意味する場合です

相殺性を持つ可換モノイドは、グロタンディーク群の構成を介して常に群に埋め込むことができます。これは、自然数の加法モノイド(演算+と相殺性を持つ可換モノイド)から、整数の加法群(演算+を持つ群)を構成する方法です。しかし、非可換な相殺性モノイドは、必ずしも群に埋め込むことができるとは限りません。

モノイドが相殺特性を持ち有限である場合、それは実際には群である。[c]

モノイドの右および左の相殺元はそれぞれサブモノイドを形成する(つまり、演算に関して閉じており、明らかに単位元を含む)。これは、任意の可換モノイドの相殺元を群に拡張できることを意味する。

モノイドの相殺性はグロタンディーク構成を行うのに必要ではなく、可換性があれば十分である。しかし、可換モノイドが相殺性を持たない場合、そのモノイドのグロタンディーク群への準同型性は単射ではない。より正確には、ab = acならば、bcであっても、 bcはグロタンディーク群において同じ像を持つ。特に、モノイドが吸収元 を持つ場合、そのグロタンディーク群は自明群となる。

モノイドの種類

モノイドとは、 Mの任意のaに対して、 Ma −1が唯一存在し、a = aa −1aかつa −1 = a −1aa −1となるようなモノイドである。逆モノイドが相殺的である場合、それは群である。

逆に、ゼロサムフリーモノイドとは、 a + b = 0であればa = 0かつb = 0となるような加法的に書かれたモノイドのことである[7]つまり、ゼロ以外の要素には加法的逆元がないということである。

行為と演算子モノイド

M をモノイドとし、二項演算を単位元をeとします。すると、(左)M作用(またはM上の左作用)は、集合Xと、以下のモノイド構造と互換性のある演算⋅ : M × XXを組み合わせたものとなります。

  • X内のすべてのxについて: ex = x ;
  • MのすべてのabXのすべてのxについてa ⋅ ( bx ) = ( ab ) ⋅ xです。

これはモノイド理論における(左)群作用の類似物である。右M作用も同様に定義される。作用を持つモノイドは作用素モノイドとも呼ばれる。重要な例としては、半オートマトンにおける遷移システムが挙げられる。変換半群は恒等変換を付加することで作用素モノイドにすることができる。

モノイド準同型

( N , +, 0)から( N , ×, 1)へのモノイド準同型x ↦ 2 xの例。これは単射だが、射影ではない。

2つのモノイド( M ,∗)( N ,•)の間の準同型とは、関数f  : MNであって、

  • f ( xy ) = f ( x ) • f ( y ) (Mの任意のx yについて
  • f ( e M ) = e N

ここで、e Me NはそれぞれMN上の恒等写像です。モノイド準同型は、単にモノイド射と呼ばれることもあります。

モノイド間の半群準同型はすべてがモノイド準同型であるとは限らない。なぜなら、恒等写像が準同型の像の恒等写像であっても、対象のモノイドの恒等写像に写像されない場合があるからである。 [d]例えば、乗算を備えたnを法とする剰余類の集合[ Z ] nを考える。特に、[1] nは恒等元である。関数f  : [ Z ] 3 → [ Z ] 6は[ k ] 3 ↦ [3 k ] 6によって与えられ、 [3 k ⋅ 3 l ] 6 = [9 kl ] 6 = [3 kl ] 6であるため、半群準同型である。しかし、f ([1] 3 ) = [3] 6 ≠ [1] 6なので、モノイド準同型は、最初のモノイドの恒等式を2番目のモノイドの恒等式に写像するモノイド間の半群準同型であり、後者の条件は省略できません。

対照的に、群間の半群準同型は、必ず恒等性を保存するので、常に群準同型です(準同型の対象群では、恒等元はxx = xとなる唯一の元xであるため)。

単射モノイド準同型はモノイド同型と呼ばれます。2つのモノイドの間にモノイド同型が存在する場合、それらのモノイドは同型であると言われます。

方程式の表現

モノイドには、群が群の表現によって指定されるのとほぼ同様に、表現を与えることができる。これは、生成元集合Σと、自由モノイドΣ 上の関係集合を指定することによって行われる。これは、Σ 上の(有限)二項関係をモノイド合同に拡張し、上記のように商モノイドを構築することによって行われる。

二項関係R ⊂ Σ × Σ が与えられたとき、その対称閉包をRR −1と定義する。これは、 ( u , v ) ∈ R ∪ R −1 を満たす文字列 u , v , s , t ∈ Σ ∗ に対して x = sutかつy = svtすれx ~ E y定義すること 対称関係E ⊂ Σ ∗ × Σ ∗に拡張できる。最後に、 Eの反射的かつ推移的な閉包をとり、これはモノイド合同となる

典型的な状況では、関係Rは単に一連の方程式として与えられ、R = { u 1 = v 1 , ..., u n = v n }となる。したがって、例えば、

は二環式モノイドの等式表現であり

は2次のプラクティックモノイド(無限位数を持つ)である。このプラクティックモノイドの元は、整数ijkに対してと表記される。これは、 ba がabの両方と可換であることを示す関係式による

圏論との関係

グループのような構造
合計連想身元分割可能可換性
部分的なマグマ不要不要不要不要不要
半群体不要必須不要不要不要
小規模カテゴリ不要必須必須不要不要
群体不要必須必須必須不要
マグマ必須不要不要不要不要
準群必須不要不要必須不要
ユニタルマグマ必須不要必須不要不要
ループ必須不要必須必須不要
セミグループ必須必須不要不要不要
モノイド必須必須必須不要不要
グループ必須必須必須必須不要
アーベル群必須必須必須必須必須

モノイドは、カテゴリの特別なクラスとして見ることができる。実際、モノイド演算に必要な公理は、与えられたオブジェクトをソースとターゲットとするすべての射の集合に限定した場合、射の合成に必要な公理と全く同じである。[8]つまり、

モノイドは本質的に、単一のオブジェクトを持つカテゴリと同じものです。

より正確には、モノイド( M , •)が与えられたとき、その射がMの要素である、対象を1つだけ持つ小さなカテゴリを構築することができる。射の合成はモノイド演算によって与えられる 

同様に、モノイド準同型は単一のオブジェクトカテゴリ間の単なる関数です。 [8] したがって、この構成は、(小さな)モノイドのカテゴリMonと、(小さな)カテゴリCatの完全なサブカテゴリとの間に同値性を与えます。同様に、群のカテゴリはCatの別の完全なサブカテゴリと同値です

この意味で、圏論はモノイドの概念の拡張と考えることができます。モノイドに関する多くの定義や定理は、複数の対象を持つ小さな圏に一般化できます。例えば、1つの対象を持つ圏の商は、まさに商モノイドです。

モノイドは、他の代数構造と同様に、独自のカテゴリMonを形成します。Monのオブジェクトはモノイドであり、その射はモノイド準同型です。[8]

モノイドオブジェクトという概念もあります。これは、圏におけるモノイドとは何かを抽象的に定義したものです。Set におけるモノイドオブジェクトは、単なるモノイドです。

コンピュータサイエンスにおけるモノイド

コンピュータサイエンスにおいて、多くの抽象データ型はモノイド構造を持つことができます。一般的なパターンでは、モノイドの要素の列を「畳み込む」または「累積させる」ことで最終的な値を生成します。例えば、多くの反復アルゴリズムでは、反復ごとに何らかの「累計」を更新する必要がありますが、このパターンはモノイド演算によって簡潔に表現できます。また、モノイド演算の結合性により、プレフィックスなどのアルゴリズムを用いて演算を並列化し、複数のコアやプロセッサを効率的に利用することが可能になります。

単位元εと結合演算 •を持つM型の値のシーケンスが与えられた場合折り畳み演算は次のように定義されます。

さらに、任意のデータ構造は、その要素がシリアル化されていれば、同様の方法で「折り畳む」ことができます。例えば、二分木を「折り畳む」場合、木を前順で走査するか後順で走査するかによって結果が異なる場合があります

マップリデュース

コンピュータサイエンスにおけるモノイドの応用として、いわゆるMapReduceプログラミングモデルがあります(「Map-Reduceを左畳み込みによるモノイドとしてエンコードする」を参照)。コンピューティングにおけるMapReduceは、2つまたは3つの操作で構成されます。データセットが与えられた場合、「Map」は任意のデータを特定のモノイドの要素にマッピングします。「Reduce」はこれらの要素を畳み込み、最終的に1つの要素だけを生成する操作です。

例えば、多重集合がある場合、プログラムではそれは要素からその番号への写像として表現されます。この場合、要素はキーと呼ばれます。異なるキーの数が多すぎる場合、多重集合はシャーディングされます。縮約を適切に完了するために、「シャッフル」段階でノード間でデータを再グループ化します。このステップが不要な場合、Map/Reduce全体はマッピングと縮約で構成されます。どちらの操作も並列化可能です。前者は要素ごとの性質により、後者はモノイドの結合性により並列化可能です。

完全モノイド

完全モノイドと は 、任意の添字集合Iに対して無限和演算を備えた可換モノイドであり、 [9] [10] [11] [12]かつである

順序付き可換モノイドとは、半順序≤ を伴う可換モノイドMで、任意のaMに対してa ≥ 0が成り立ちすべてのabcMに対してabならばa + cb + cが成り立つことを意味します

連続モノイドはすべての有向部分集合最小上限を持ち、これらの最小上限がモノイド演算と互換性がある順序付き可換モノイドM、≤)ですすべてのa∈MMの有向部分集合Sに対して。

もし( M ,≤)が連続モノイドならば、任意の添字集合Iと要素の集合(ai)i∈Iに対して定義することできこの無限 演算を伴うM完全モノイドである。 [12]

参照

注記

  1. ^ e 1e 2の両方が上記の式を満たす場合、 e 1 = e 1e 2 = e 2となります。
  2. ^ 一部の著者は、サブモノイドが単位元を含まなければならないという要件を定義から省略し、 Mの単位元とは異なる単位元持つことのみを要求しています。
  3. ^ 証明:モノイドのxを固定する。モノイドは有限なので、 m > n > 0に対してx n = x m が成立する。しかし、このとき、打ち消しによりx mn = eが成立する。ここでeは恒等元である。したがって、 xx mn −1 = eとなり、 x には逆元が存在する。
  4. Mxに対して、 ^ f ( x ) ∗ f ( e M ) = f ( xe M ) = f ( x )が成り立ちます。ここで、 fは半群準同型であり、 e MはそのドメインモノイドMの単位元です。

引用

  1. ^ ジェイコブソン 2009
  2. ^ ゴンドランとミヌー、2008、p. 13
  3. ^ ローズ&スタインバーグ 2009、22ページ
  4. ^ Jacobson 2009、p. 29、例1、2、4、5
  5. ^ ジェイコブソン 2009、35ページ
  6. ^ ジェイコブソン 2009、31ページ、§1.2
  7. ^ ヴェールング 1996
  8. ^ abc Awodey 2006、10ページ
  9. ^ ドロステ & クイヒ 2009、7–10 ページ
  10. ^ ヘビッシュ 1992
  11. ^ クイチ 1990
  12. ^ ab Kuich 2011.

参考文献

  • アウォディ、スティーブ(2006年)『カテゴリー理論』オックスフォード論理ガイド第49巻、オックスフォード大学出版局ISBN 0-19-856861-4. Zbl  1100.18001。
  • Droste, M.; Kuich, W (2009)、「セミリングと形式的べき級数」、重み付きオートマトンハンドブック、理論計算機科学モノグラフ。EATCSシリーズ、pp.  3– 28、CiteSeerX  10.1.1.304.6152doi :10.1007/978-3-642-01492-5_1、ISBN 978-3-642-01491-8
  • ゴンドラン、ミシェル;ミヌー、ミシェル(2008年)『グラフ、ディオイド、セミリング:新しいモデルとアルゴリズム』オペレーションズ・リサーチ/コンピュータサイエンス・インターフェース・シリーズ第41巻。ドルドレヒト:シュプリンガー・フェアラーク。ISBN 978-0-387-75450-5. Zbl  1201.16038。
  • Hebisch、Udo (1992)。 「Eine algebraische Theorie unendlicher Summen mit Anwendungen auf Halbgruppen und Halbringe」。Bayreuther Mathematische Schriften (ドイツ語)。40 : 21–152。Zbl 0747.08005  ​
  • ハウイー、ジョン・M.(1995)『半群論の基礎』ロンドン数学会モノグラフ新シリーズ第12巻、オックスフォード:クラレンドン・プレス、ISBN 0-19-851194-9Zbl  0835.20077
  • ジェイコブソン、ネイサン(1951)、抽象代数学講義、第1巻、D.ヴァン・ノストランド社、ISBN 0-387-90122-1 {{citation}}: ISBN / Date incompatibility (help)
  • ジェイコブソン、ネイサン(2009年)、Basic algebra、第1巻(第2版)、ドーバー、ISBN 978-0-486-47189-1
  • キルプ, マティ; クナウアー, ウルリッヒ; ミカレフ, アレクサンダー V. (2000) 「モノイド、行為、圏。花輪積とグラフへの応用を含む。学生と研究者のためのハンドブック」 de Gruyter Expositions in Mathematics, vol. 29, ベルリン: Walter de Gruyter, ISBN 3-11-015248-7Zbl  0945.20036
  • Kuich, Werner (1990). 「ω-連続半環、代数システム、プッシュダウン・オートマトン」。Paterson, Michael S. (編).オートマトン、言語、プログラミング:第17回国際コロキウム、ウォーリック大学、イギリス、1990年7月16日~20日、議事録。Lecture Notes in Computer Science. Vol. 443. Springer-Verlag . pp.  103– 110. ISBN 3-540-52826-1
  • Kuich, Werner (2011). 「代数システムとプッシュダウン・オートマトン」. Kuich, Werner (編).コンピュータサイエンスにおける代数的基礎. シメオン・ボザパリディス氏の退職を記念したエッセイ集. コンピュータサイエンス講義ノート. 第7020巻. ベルリン: Springer-Verlag . pp.  228– 256. ISBN 978-3-642-24896-2. Zbl  1251.68135。
  • ロテール, M.編 (1997)、「単語の組合せ論」、数学とその応用百科事典、第17巻(第2版)、ケンブリッジ大学出版局doi :10.1017/CBO9780511566097、ISBN 0-521-59924-5MR  1475463、Zbl  0874.20040
  • ローズ、ジョン; スタインバーグ、ベンジャミン (2009)、「有限半群のq理論:新しいアプローチ」、シュプリンガー数学モノグラフ第71巻、シュプリンガー、ISBN 9780387097817
  • ウェールング、フリードリヒ (1996). 「補間構造のテンソル積」. Pacific Journal of Mathematics . 176 (1): 267– 285. doi : 10.2140/pjm.1996.176.267 . S2CID  56410568. Zbl  0865.06010.
Retrieved from "https://en.wikipedia.org/w/index.php?title=Monoid&oldid=1321782974"