「最強のモナドとモナド工場の秘密」の続き。
モナドFが、モノイドMを使って F(A) = A×M と書けるとき、Fのアイレンベルク/ムーア圏はどうなるでしょうか? なお、アイレンベルク/ムーア圏については次の記事を参照してください。
「アイレンベルグ」だったり「アイレンベルク」だったりですが、最近は「アイレンベルク」のほうがいいかな、と(「サムエル・エイレンベルク」が原音に近いと思いますが)。
(A, a) がモナドFのアイレンベルク/ムーア代数(あるいは単にF-代数)であるとは、a:F(A)→A で、次の図式が可換になることです。
A - η_A --> F(A) | | | a (無印の矢は恒等射) | | v v A ---------> A F(F(A)) - F(a) --> F(A) | | μ_A a | | v v F(A) ----- a -----> A
等式にすると:
- ηA;a = idA
- F(a);a = μA;a
M = (M, e, ・) がモノイドで、Fが F(A) = A×M から作られたモナドのとき、a = λ(x, m).x★m とすると、上の可換図式/等式は次を意味します。
- x★e = x
- x★(m・n) = x★(m★n)
つまり、(A, ★) がM-加群(Mが作用する集合、Mの写像表現)となっていることです。つまり、モノイドMによるスタンピングモナドのアイレンベルク/ムーア圏は、M-加群の圏です。
「最強のモナドとモナド工場の秘密」で紹介した最強モナド(very strong monad)では、F(I)がモノイドになり、FはモノイドF(I)によるスタンピングモナドとみなせるのでした。したがって、最強モナドFのアイレンベルク/ムーア圏は、F(I)-加群の圏と圏同値になります。モナドのクライスリ圏は、自由F-代数の圏と圏同値なので、最強モナドFのクライスリ圏は、自由F(I)-加群の圏と圏同値です。
これは、Kruna Segrt Ratkovic, "Morita theory in enriched context"の内容の単純な事例となっています(単純すぎますが)。モナドが最強であることは条件としては“強すぎ”ますし*1、アイレンベルク/ムーア圏とF(I)-加群の圏を単純に比較するのも芸がない話です。モナドに関する条件を弱めたり、モナドから作られる圏を細工したりして、モナドとモノイド、あるいは2つのモナドを比較できないかなー、とウッスラ考えたりしてます。
僕がこのテの問題に興味を持つのは、「ストレージの線形代数: 泥臭いデータ操作の洗練された定式化」で書いたように、代数や加群の議論はストレージIOに使えるだろう、と思っているからです。ストレージIOを実現するモナド*2がユーザーから同じに見えることはある種の同値性です。この同値性は、モナドの代数の圏の圏同値のことでしょう。であるなら、アイレンベルク/ムーア圏の同値性判定は基本的で大事な問題です。