このブログは、旧・はてなダイアリー「檜山正幸のキマイラ飼育記 メモ編」(http://d.hatena.ne.jp/m-hiyama-memo/)のデータを移行・保存したものであり、今後(2019年1月以降)更新の予定はありません。

今後の更新は、新しいブログ http://m-hiyama-memo.hatenablog.com/ で行います。

モナドとモノイドの続き

昨日:

実際、モナドはとある圏のモノイドになっている。

そうなることを追いかけておく(概略)。

Cが圏だとして(C, *, I)がモノイド圏(monoidal cat.)とは:

  1. -*-:C×C → C は2項関手
  2. I∈|C|は特定の対象
  3. 結合律と単位律が成立する。

イコール記号をいくつか並べてある横線は、上側と下側がほぼ等しい(ってイイカゲンな言い方だこと)を意味する:


/* 関手としてのCは、id_Cのこと、
* 関手としてのIは、自明な圏{-}からのIを値とする定数関手
*/

(C×C)×C -[(-*-)×C]→C×C -[-*-]→C
====================================== 結合律
C×(C×C) -[C×(-*-)]→C×C -[-*-]→C

C×{-} -[C×I]→ C×C -[-*-]→C // {-}は自明な圏
================================ 単位律1
C -=→ C (identity)

{-}×C -[I×C]→ C×C -[-*-]→C
================================ 単位律2
C -=→ C (identity)

例:(Set, ×(直積), {0})はモノイド圏。(Kベクトル空間, (×)(テンソル積), K)はモノイド圏。

(C, *, I)がモノイド圏のとき、(X, μ, η)が(C, *, I)におけるモノイドだとは:

  1. XはCの対象
  2. μ:X*X → X はCの射
  3. η:I → X はCの射
  4. 結合律と単位律が成立する。


/* 関手としてのXは、id_Xのこと */

(X*X)*X -[μ*X]→X*X -[μ]→X
=============================== 結合律
X*(X*X) -[X*μ]→X*X -[μ]→X

X*I -[X*η]→ X*X -[μ]→X
=========================== 単位律1
X -=→ X (identity)

I*X -[η*X]→ X*X -[μ]→X
=========================== 単位律2
X -=→ X (identity)

例:普通のモノイドは、(Set, ×(直積), {0})におけるモノイド。K代数(多元環)は、(Kベクトル空間, (×)(テンソル積), K)におけるモノイド。

モノイド圏End(C)

Cは圏だとして、新しい圏Dを次のように定義する。

D = Functor(C, C)。よって、F, G:C→Cなどは対象。α::F→G:C→Cなる自然変換が圏Dの射。α::F→G:C→C, β::G→H:C→Cの結合は、普通の自然変換結合α;β::F→H:C→D。


A -[f]→ B
α::F→G ------------
F(A)-[F(f)]→F(B)
| |
[α_A] [α_B]
v v
G(A)-[G(f)]→G(B)

A -[f]→ B
β::G→H ------------
G(A)-[G(f)]→G(B)
| |
[β_A] [β_B]
v v
H(A)-[H(f)]→H(B)

それで:
(α;β)_A = α_A;β_(A)::F→H:C→C

ここで、FとG:C→Cの結合F;Gを、混乱を避けるためにF*Gという記号に変える(α;βはそのまま使う)。Iは恒等関手id_Cのことだとすると、I∈|D|である。

さて、Dの対象(Cの自己関手)に既に定義されている*(もとは;と書いていた)を、Dの射(自然変換)にも定義する。α::F→F'、β::G→G' だとして、α*β::F*G→F'*G' を次のように定義する。


A -[f]→ B
α:: F→F' ---------------
F(A)-[F(f)]→F(B)
| |
[α_A] [α_B]
v v
F'(A)-[F'(f)]→F'(B)

上の四角図式をGで移す:
G(F(A))-[G(F(f))]→G(F(B))
| |
[G(α_A)] [G(α_B)]
v v
G(F'(A))-[G(F'(f))]→G(F'(B))

それとは別に:
F'(A) -[F'(f)]→ F'(B)
β::G→G'------------------------
G(F'(A))-[G(F'(f))]→G(F'(B))
| |
[β_F'(A)] [β_F'(B)]
v v
G'(F'(A))-[G'(F'(f))]→G'(F'(B))

それで:
(α*β)_A = G(α_A);β_F'(A)
α*β::F*G → F'*G':C→C

α*βが再び自然変換になることは、可換性の伝搬を追えばわかる(*は自然変換の横結合である)。(D, *, I)がモノイド圏であることはルーチンワーク(けっこうな手間)で確認できる。Dは、Cの自己関手を対象とする圏なのでEnd(C)と書くことにする(End(C) = |D|なので適切じゃないけど)。End(C)の射は自然変換で、通常の自然変換の結合(縦結合)以外に、演算*が定義されている。

モノイド圏(End(C), *, I)におけるモノイドとは、F∈|End(C)|とη:I→F、μ:F*F→Fの組である。Cで考えればFは自己関手、ηはI=id_CからFへの自然変換だから、A→F(X)の族(Aがインデックス)、μはF(F(A))→F(A)の族である。結合律と単位律を、モノイド圏(End(C), *, I)のなかで書き下すと、モナド結合律とモナド単位律になる。

したがって、C上のモナドは、モノイド圏End(C)のモノイドである。一番お馴染みのモノイド圏Setのモノイド(=普通のモノイド)とモナドは、基礎圏が違うだけで形式的定義は同じとなる。