がモノイド圏のとき、反ラックス・モノイド関手 では余結合律*1が成立します。準マルコフ余モナドの計算(「準マルコフ余モナドの計算と記述の方法」参照)で必要になるので、余結合律を一般化した法則を導入します。
内容:
- 最初の記事(シリーズ目次あり): 準マルコフ圏からなる2-圏
- 次の記事: 反ラックス・モノイド余モナドの余クライスリ圏 その1
- 前の記事: 準マルコフ余モナドの計算と記述の方法
二分木とモノイド圏
次の3種類の記号を考えます。
- という番号
- という黒丸記号
- 左丸括弧と右丸括弧
黒丸を二項演算子記号と考えて、括弧のバランスがとれた記号列、例えば などは二分木〈二進木 | binary tree〉のテキスト表現と考えられます。以下、記号列と二分木をほとんど同一視します。
二分木の葉〈リーフ〉として出現する番号は、(記号列表現でみて)必ず左から右に と増えるとします。番号の葉が個なら、黒丸のノードは個あります。 です。このような二分木全体の集合を とします。特に、葉が個である二分木の集合を とします。
をモノイド圏とします。 と に対して、 の対象 を次のように定義します。
- の黒丸の出現を、モノイド圏 のモノイド積 で置き換える。
- の葉 の出現を、モノイド圏 の対象 で置き換える。
- モノイド積を計算することにより の対象を求める。
例を挙げると:
- のとき、 は を計算して得られる。
- のとき、 は を計算して得られる。
モノイド圏 が前もって決まっているときは、下付きの は省略します。例えば、 。
二分木の半オペラッド構造
二分木の全体 には置換演算〈代入演算 | substitution {operation}?〉を定義できます。置換演算はオペラッドの結合演算の類似物とみなせます。オペラッドについては以下の過去記事に説明があります。
二分木の場合は、オペラッドと違って単位〈恒等〉に相当するモノはありません。半オペラッド(単位を持たないオペラッド)構造と言えるでしょう*2。
二分木の葉の個数を“幅”と呼び、 と書きます。 という写像になります。
と に対して、 という二分木を次のように定義します。
- 二分木 の葉 を、二分木 で置き換える。
- 葉の番号を になるように振り直す。
例を計算してみます。
この置換演算は、接ぎ木〈grafting〉とも言えます。オペラッドに関する標準的記法では、 と書きます。同時に複数の箇所を置換するときは次のように書きます。
ブラケットなかに入る置換指示の並びは置換リスト〈substitution list〉と呼びます。置換リストが空の場合は何もしないことを意味します。
同時置換は、一箇所だけの置換の繰り返しで表現できるので、基本となるのは一箇所の置換 です。
特別な置換演算としてペアリングがあります。
ペアリングは という二項演算になりますが、結合的でも単位的でもありません。
二分木の変形
この節の内容は、以下の過去記事の抜粋要約になります。
上記過去記事で、二分木の基本変形〈elementary {transformation | rewrite | deformation | move}〉を絵に描いています。
今回は、上段にある (左からのスイッチと右からのスイッチ)という基本変形*3だけを使うので、下段の変形は無視してください。p, q, r などは部分木〈サブツリー〉を表し、葉であってもかまいません。
上の図は、二分木のトップレベルに変形を施していますが、部分木に対して を適用してもかまいません。トップレベルに対する基本変形と、部分木に対する基本変形をあわせて単純変形〈simple {transformation | rewrite | deformation | move}〉と呼びます。
さらに、単純変形を何回か引き続き実行する操作を二分木の変形〈{transformation | rewrite | deformation | move}〉と呼びます。ここで考えている“変形”は、基本変形である から生成されるものに限ります。
のとき、なんらかの変形 を に施して得られる二分木を と書くことにします。変形自体は と書きます。波矢印を見たら、二分木の変形だと判断してください。この書き方で基本変形を書くと次のようになります。
二分木を と書くと、変形のトップレベルへの作用やサブツリー(サブレベルのツリー)への作用を次のように書けます。
二分木の変形 があると、モノイド圏 の射が自然に決まります。
この射は、二分木 と二分木の変形 と対象のリスト から決まるので、 と書きます。 は evaluation〈評価〉からです。
ちょっと細工すると、 を関手とみなすことが出来ますが、今はこれ以上触れません。「ツリー書き換え系とマックレーンの一貫性定理」を参照してください。
反ラックス・モノイド関手の一般余乗法
が反ラックス・モノイド関手のとき、その余乗法〈comultiplication〉は、次のような射の族として書けます。
二分木を とすると、余乗法のプロファイル(域と余域の仕様)は次のようにも書けます。
別な二分木を選んで、例えば とすると、次のプロファイルが得られます。
余乗法の組み合わせにより、すぐ上のプロファイルの射が得られます。具体的には次の射です。
「準マルコフ余モナドの計算と記述の方法」で導入した行列形式記法を使えば次のように書けます。
さて、 と 、その他類似の射達を一挙に一様に扱うために、次の記法を導入します。
は、二分木 と で決まる一般化された余乗法です(定義は後)。この記法を使うと、次のように書けます。
の定義を、 の場合を例に説明します。
は二分木ですが、 は と“同じ形状”のストライプ図で定義されます。次の絵をみてください。
左上が を表す二分木です。右側が“同じ形状”のストライプ図です。「同じ形状」とは何かを具体的に言えば:
- の (または の )の位置に余乗法 が置かれたツリーが、 のストライプ図の形状となる。
上の絵の下側のツリーは、形状だけを取り出したツリーです。二分木としての の形状、そして のストライプ図の形状と同じです。
念のため、 を行列形式記法で書くと次のようになります。
以上は、絵図を利用した直感的な説明でしたが、一般余乗法〈generic comulitplication〉 の作り方はこれで明らかだと思います。一般余乗法のもっとハッキリとした定義は、二分木の帰納的構造に沿った構造帰納法を使います。
反ラックス・モノイド関手の一般余結合律
の要素 を と書くことにします。一般余乗法(の成分)は と短く書けます。また、関手 に対して、
という記法も使います。 は、リストに対するfmap高階関数の中置演算子記号だと思えばいいです。つまり 。
以上の記法で、一般余乗法とそのプロファイルは次のように簡略に書けます。
反ラックス・モノイド関手 の一般余結合律〈generic associative law〉は、次の図式の可換性を主張します。
次の特殊ケースを考えます。
このとき、
この状況での可換図式は次のようになります。
これは、反ラックス・モノイド関手の余結合律そのものです。
念のために、上記の可換図式をストライプ図の等式で描いてみます。
さらに、行列形式記法の等式で書くと次のようになります。
一般余結合律の事例
反ラックス・モノイド関手の一般余結合律は、特殊な場合として余結合律を含むことがわかりました。余結合律を仮定して一般余結合律を証明するのは組み合わせ的・帰納的議論になり面倒で退屈なので割愛し、もうひとつの事例を出します。
次のケースを考えます。
このとき、
この状況での可換図式は次のようになります。
我々の目的である準マルコフ余モナドの計算で必要になるのは、幾つかの個別具体ケースで、ほんとに一般的な余結合律が必要なわけではありません。一方で、一般化を推し進める方向では、余単位律も含めた一般化も欲しくなります。これらの話題はまた次の機会に。