圏論の計算をしていて、組み合わせ的な議論に行き着くことはよくあります。モノイド圏をいじっていたら、二分木のプリミティブな組み合わせ的事実が必要になりました。その話をします。
内容:
二分木とリスト
二分木〈binary tree〉のテキスト記法としては、「BUNツリーの亜群オペラッド構造 // BUNツリー」で導入した記法を使います。単に「BUNツリー」と言った場合でも、「BUNツリーの亜群オペラッド構造 // 伸縮同値関係」で導入した伸縮同値関係の同値類を意味します。それ以前の記事「反ラックス・モノイド関手の一般余結合律」で定義した二分木は、BUNツリー(の伸縮同値類)と考えることができます。
幅(プレースホルダーの個数)が であるBUNツリーの集合は、 と書きます。絶対値記号で囲っているのは、 と書くと単なるBUNツリーだけではなくて、マックレーン変形などの高次構成素も持つ複雑な構造を表すからです。
に対して、BUNツリー を定義します*1。
はほんとの二分木ではありませんが、“用語の乱用”で二分木と呼んでしまいます。プレースホルダー “” の出現に左から順に番号を付けて、二分木を次のように(ブラケット囲みの)リストと同一視します。
リストの囲み記号をブラケットにしているのは、ツリーの囲み記号の丸括弧と区別するためで他意はありません。
リストのスプライシングと平坦化
二分木(用語の乱用) に関して、BUNツリーとしての幅(プレースホルダーの個数)とリストとしての長さは同じです。
あるいは、 。
として、 の 番目の位置に を置換スプライシングすると次のようになります。
何をやったのかと言うと:
- の 番目の要素(番号付きプレースホルダー)を取り除き、“穴”を開ける。
- その穴に、 を挿入する。
これだと、プレースホルダーの番号が左から右に増えてません。それを調整すると:
入れ子のリストを平坦にすると:
以上の変形プロセスを、二分木(BUNツリー)へのマックレーン変形で実行できます。このことを示しましょう。
二分木の平坦化定理
ここから先、絵で説明しています。視覚的直感に頼っているので厳密性に欠けますが、それでも説得力は十分にあると思います。
置換スプライシングの一般的な状況は次のように描けます。
赤い部分が挿入された で、 は2つの部分(青と緑)に分断されます。リスト形式で書くなら次のようです。
入れ子を平坦化するプロセスが、マックレーン変形で実行できることを、自然数 に関する数学的帰納法で示します。 の場合は個別に調べます。
まず、 の場合。
この場合は、黒丸を相対ルートとするサブツリーにマックレーン基本変形 を適用すれば平坦化できます。リスト形式で書くなら次のようです。
次に、 の場合。
この場合は、何もすることがありません。リスト形式で書くなら次のようです。
数学的帰納法のステップとして、 の置換スプライシングの平坦化は出来るとして、 の場合を考えましょう。
黒丸を相対ルートとするサブツリーにマックレーン基本変形 を適用すると、 を置換スプライシングした形に変形できます。数学的帰納法の仮定から、この形はマックレーン変形で平坦化できるので、全体もマックレーン変形で平坦化できます。
何に使うか?
「余計な話? 厳密2-亜群オペラッドとモノイド圏」で、 のオペラッド結合を定義する際に、対象のリストの置換スプライシング を使っています。この演算 (記号はオペラッド結合とオーバーロードしている)をちゃんと定義するには、二分木の平坦化定理が必要です。
もっと簡単な例として、単一の圏 から、 を複ホム圏とするような圏-オペラッド(圏で豊饒化〈豊穣化〉されたオペラッド)を作る場合も二分木の平坦化定理が必要です。