複合モナド(*注1)を構成する際に、ストリング図を使うと、計算が劇的に 簡単になることがわかった。この記事では、ストリング図を使って、複合モナ ドを実際に構成してみる(*注2)。これはまた、複合モナド構成を例題とした ストリング図の解説でもある。
composite monadを、(「結合モナド」ではなく)「複合モナド」と呼ぶこと にした。
実際の構成は、この記事の続編である(2)になる。
この記事のネタ元は次の2つの論文である。
この記事でスタック図と呼んでいる図式法は、[1]で使われているもの (Santiago大学のJ. Caruncho Castro、J. Freire Nistalらによる)を指して いる。スタック図は、それ自体としても有用であるが、ペースティング図から ストリング図への翻訳の中間形式として使う。[1]では、スタック図で計算も 行っているが、本記事の計算はもっぱらストリング図に頼る。レイアウトの 自由度や直観的な把握の容易さでは、ストリング図に一日の長があるように思 われる。
「はじめに」で述べた方針で書き始めたら、ストリング図の描き方まで書い た段階でけっこうな量になったので、いったん切ることにする。この記事で説 明したストリング図(の等式、書き換え規則)を使うと非常に計算が楽になる。 その計算例については続く記事で述べる。
記号的表現としては、図式順テキスト記法を使う。 α::F⇒G:A→B は、αが関手Fから関手Gへの自然変換であり、FとGは圏Aから圏Bへの 関手であることを示す。
α::F⇒G:A→Bを次のような図で示すことがある。このような図を‘ペースティング図’と呼ぶ。
上のペースティング図とまったく同じ内容を、次のような図でも表現できる。こちらは‘スタック図’と呼ぶ。
四角形の左右の辺が圏を、上下の辺が関手を表す。四角形内部に自然変換 (の名前)を記入する(F⇒Fの恒等自然変換の場合は四角形内は空白とする)。 関手は左から右、自然変換は上から下と方向を決めているので、いち いち矢印は書かなくてもよい。(人により、右から左、下から上の方向も使う ので注意!)
次は、複合的なペースティング図と、それに対応するスタック図の例である。
平面内で、一筆書きできる“交差しない境界線”で囲まれた領域を‘部屋’ (chamber)と呼ぶ。平面内に描かれた有向グラフDが、部屋Rに対する‘スト リング図’だとは、次を満たすことである。なお、‘開いた辺’とは、始点ま たは終点のどちらか一方のノードを持たない辺であり、ここではグラフに開い た辺を認める。
ストリング図の‘面’とは、グラフの辺と部屋の境界によって囲まれた領域 であり、その内部に辺もノードも含まないものである。
この記事では、関手と自然変換の計算のためにストリング図を使うので、さらに 次を仮定する。
まずは事例を見るのが早いだろう。以下は、α:: F;;G ⇒ H : A→C と β:: F;;F ⇒ K;;L : A→A のスタック図からストリング図への描き換えである。点 線は部屋の境界である。
描き替えの手順は次のとおり:
さらに、簡略化のために次の規約を適用してもよい。
以下、圏Cを1つ選んで固定する。F, Gなどは圏CからCへの自己関手 (endofunctor)である。圏Cの恒等関手は常にIと記す。関手Fと自然変換μ:: F;;F⇒F、自然変換η:: I⇒F の組(F, μ, η)が‘モナド’だとは、次の結合 律と単位律を満たすことである。
(F;;F);;F =[μ;;F]⇒ F;;F =[μ]⇒ F =================================== 結合律 F;;(F;;F) =[F;;μ]⇒ F;;F =[μ]⇒ F I;;F =[η;;F]⇒ F;;F =[μ]⇒ F ============================== 単位律1 I;;F ⇒ F F;;I =[F;;η]⇒ F;;F =[μ]⇒ F ============================== 単位律2 F;;F ⇒ F
結合律をより正確に述べるには、(F;;F);;F と F;;(F;;F)のあいだを結ぶ自 然変換(associativity)α:: (F;;F);;F ⇒ F;;(F;;F) を導入すべきだが、 今回はこれを省略して、(F;;F);;F = F;;(F;;F) = F;;F;;F として扱う。
モナドの結合律と単位律は、自然変換の可換図式で表現できる。その可換図 式から、いくつかの等式が得られる。等式の左辺/右辺はそれぞれ自然変換で ある。左辺/右辺をストリング図で表現すると、結合律/単位律はストリング 図の等式として表現できる。
結合律を例に、ストリング図の等式を構成してみる。まずは可換図式であるが、 簡略化のために「;;」を省略し、矢印は「⇒」ではなくて「→」を使う。
スタック図を中間において、可換図式からストリング図を導いてみる。
同様な方法で、2つの単位律をストリング図の等式で描くと次のようになる。 名前を記入してないノードは、自明な自然変換(自然同値) I;;F ⇒ F、F;;I ⇒ F である。
頻繁に登場する自然変換は、名前ラベルではなくてアイコンで描くことにする。
アイコンを使って、結合律と2つの単位律を表すと次のようになる。