2008-08-18 [長年日記]
λ. 自然変換の垂直合成と水平合成
こないだまで圏論勉強会で読んでいた「The Haskell Programmer's Guide to the IO Monad — Don't Panic」を ocaml-nagoya でも読んでいたようだ。 それで、活動記録/20080501 - ocaml-nagoya に自然変換の合成に関して「どこがverticalなのかよくわかりませんでした」と書いてあるのを見かけたので、ちょっと補足。
どこがverticalかというと、このテキストには出てこないけど、自然変換にはもう一つ「水平」合成があるからで、図式の描き方の慣例から「垂直合成(vertical composition)」「水平合成(horizontal composition)」と呼ばれている。
まず、以下の図のように縦に積まれた自然変換 τ と σ を合成するのが垂直合成 τ・σ : F → H で、(τ・σ)X := τX ∘ σX で定義される。
![\UseAllTwocells\xymatrix@+20pt{ C \ruppertwocell^F{\sigma} \ar[r]|{G} \rlowertwocell_H{\tau} & D } \UseAllTwocells\xymatrix@+20pt{ C \ruppertwocell^F{\sigma} \ar[r]|{G} \rlowertwocell_H{\tau} & D }](tex/4707f7b36ea4543701f599af365b0924.png)
次に、以下の図のように横に並べられた自然変換 τ と σ を合成するのが水平合成 τ ∘ σ : F'F → G'G で、τG・F'σ = G'σ・τF で定義される。

定義の図:
![\xymatrix{F'F \ar[r]^{F'\sigma} \ar[d]_{\tau F} & F'G \ar[d]^{\tau G} \\ G'F \ar[r]_{G'\sigma} & G'G } \xymatrix{F'F \ar[r]^{F'\sigma} \ar[d]_{\tau F} & F'G \ar[d]^{\tau G} \\ G'F \ar[r]_{G'\sigma} & G'G }](tex/cbc8df47312af219b508a5d3b8323c07.png)
ここまで書いてから気づいたけど、圏論勉強会のときも同じような図を描いてた。このときの図では、水平合成の方に黒丸「・」を使ってしまっているので、その部分はちょっと違うけど。
何故違ってしまっているかというと、合成が二つもあると射の合成と同じ記法(「τ∘σ」や「τσ」)をどちらに使うかはちょっと悩ましいんだよね。 通常は水平合成に射の合成と同じ記号を使っていて、これは2-圏とか色々な観点からは都合が良いのだけど、一方でHaskellから自然変換≒多相関数という対応で理解する場合には、垂直合成に対して関数合成の記号を使いたくもあって、このときは後者の考えで図を描いたんだろう(多分)。

ありがとうございます!<br>水平合成の概念があったんですね。
そうなんですよー。<br>ちなみに、私も最初のころは水平合成は苦手で、ずいぶん混乱しました。