読者です 読者をやめる 読者になる 読者になる

米田の補題のしょうもない使用例

マクレーンを読んでて米田の補題を示したはいいが何やってるか全然わからないし、議論する階層も深すぎて何を扱ってるのかもよくわからなかったのでしょうもない
例を作った。式は
 y\colon \bf{Nat}(D(r,-),K) \simeq Krだが、右の Krから何か元をとってきてそこからどんな自然変換ができるかを見てみることにした。

それぞれの登場人物は、以下のようにする。

  •  D: モノイドの圏。 D=\bf{Mon}
  • 関手 K:  \bf{Mon}から\bf{Set}への忘却関手
  •  r: 「 \{a,b,A,B\}という4文字のアルファベットを並べた文字列」というモノイド

そして、 Krの元として文字列「 AabB」をとり、これが y^{-1}でどんな自然変換を生むかを見る。

「AabB」を使って、モノイド dを固定したときに自然変換 \alpha_dを作りたい、つまり
モノイド準同型 f\in D(r,d) \alpha_d Kdのどこに写るかを定めたい。
そのためには以下の図式を使うのだった。

f:id:sle:20151130011539p:plain

ここで、この図式の左側はモノイドの圏の図式で、右側が集合の圏の図式なことに注意する。
ここで、右の四角の左上に恒等写像 1_rを流せば、図式の可換性より
 \alpha_d(f) = (\alpha_d \circ (f\circ ?) )(1_d) = ( (Kf)\circ (\alpha_r) )(1_d) = (Kf)(\alpha_r 1_d)
となるが、この \alpha_r 1_d \in Krを今は文字列「 AabB」と定めるというのが y^{-1}
の定義だった。つまり、
 (Kf)(\alpha_r 1_d) = (Kf)("AabB")であり、
 \alpha_d(f) = (Kf)("AabB")ということになる。

具体的にこの自然性を使ってみる。
いま、「 \{a,b\}という2文字のアルファベットを並べた文字列」というモノイド (\{a,b\}, \cdot)を考える。
また、先のモノイド r (\{a,b,A,B\}, \cdot)と書くことにする。
さらに、モノイド準同型 {\bf{count}} \colon (\{a,b\}, \cdot) \to (N, +)を文字数を数えるモノイド準同型とする。
ただし、 Nは0以上の自然数。このとき、自然性より次の図式が得られる。

f:id:sle:20151130013459p:plain

ここで、この図式の左側はモノイドの圏の図式で、右側が集合の圏の図式なことに注意する。
ここで、図式の左上に、大文字を小文字に、小文字をそのままにするモノイド準同型
 {\bf {lower}} \in {\bf {Mon}}( (\{a,b,A,B\}, \cdot),(\{a,b\}, \cdot) )を入れてみる。すると、
↓→というたどりかたでは、
 
\begin{align}
(\alpha_{(N,+)}\circ ({\bf count} \circ ?) )({\bf lower}) &= \alpha_{(N,+)}( {\bf count} \circ {\bf lower}) \\
&= ({\bf count} \circ {\bf lower})("AabB")\\
&= {\bf count}("aabb")\\
&= 4.
\end{align}
一方、→↓というたどりかたでは、
 
\begin{align}
( (K{\bf count}) \circ \alpha_{(\{a,b\},\cdot)} )({\bf lower})
&=
K{\bf count}({\bf lower}("AabB") )\\
&=
K{\bf count}("aabb")\\
&=
4.
\end{align}

となり、確かに一致する。↓→での "aabb"はモノイド (\{a,b\}, \cdot)の元であり、
→↓での "aabb"は集合 \{a,bからなる文字列\}の元であることに注意する。

つまるところ、「準同型を忘却させて関数を作り、そこに『AabB』をわたす」という操作は自然である」ということになった。

忘却関手を使うとこのへんがごちゃごちゃになるしもうちょっと込み入った関手を使えばよかったのかなあ。