トップ «前の日記(2008-08-17) 最新 次の日記(2008-08-19)» 月表示 編集

日々の流転


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 }

次に、以下の図のように横に並べられた自然変換 τ と σ を合成するのが水平合成 τ ∘ σ : F'F → G'G で、τG・F'σ = G'σ・τF で定義される。
\UseAllTwocells\xymatrix@+20pt{ C \rtwocell^F_G{\sigma} & D \rtwocell^{F'}_{G'}{\tau} & E }

定義の図:
\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 }

ここまで書いてから気づいたけど、圏論勉強会のときも同じような図を描いてた。このときの図では、水平合成の方に黒丸「・」を使ってしまっているので、その部分はちょっと違うけど。

何故違ってしまっているかというと、合成が二つもあると射の合成と同じ記法(「τ∘σ」や「τσ」)をどちらに使うかはちょっと悩ましいんだよね。 通常は水平合成に射の合成と同じ記号を使っていて、これは2-圏とか色々な観点からは都合が良いのだけど、一方でHaskellから自然変換≒多相関数という対応で理解する場合には、垂直合成に対して関数合成の記号を使いたくもあって、このときは後者の考えで図を描いたんだろう(多分)。

Tags: 圏論
本日のツッコミ(全2件) [ツッコミを入れる]
ψ けいご (2008-08-19 00:03)

ありがとうございます!<br>水平合成の概念があったんですね。

ψ さかい (2008-08-25 21:37)

そうなんですよー。<br>ちなみに、私も最初のころは水平合成は苦手で、ずいぶん混乱しました。