このブログは、旧・はてなダイアリー「檜山正幸のキマイラ飼育記 メモ編」(http://d.hatena.ne.jp/m-hiyama-memo/)のデータを移行・保存したものであり、今後(2019年1月以降)更新の予定はありません。

今後の更新は、新しいブログ http://m-hiyama-memo.hatenablog.com/ で行います。

必須な絵算テクニック

絵算の欠点は、しばらくやってないと出来なくなる事だろう。勘(感、観)に頼るので、勘が鈍るのだ。

機械的な記号計算ではないので、どこ(場所、チャンバー)になに(変形規則の適用)をするかの判断に慣れがいる。視覚的な認識なのでアルゴリズム化が難しい。

絵算の話を文章でするのもナンダガ……


線形(正確にはベキ等半線形)な圏のなかで、トレース、コンウェイダガー、クリーネスター、クリーネプラスなどの計算をするときに、ものすごく頻繁に使う技法がある。

ワイヤー本数が2→1であるような射(ボックス、団子、余対角∇もよく出る)に対するループ・スライディングをして、その後で巻き付いたワイヤーをアンワインディングする方法だ。絵算の定石(http://d.hatena.ne.jp/m-hiyama-memo/20100701/1277947580 )はこの点について書いてある。

aのクリーネスターには、典型的な表現が3つある。

  1. [0 1 / 1 a] という2×2行列のトレースを取る
  2. ∇;Δ;(1 a)(空白をはさんで併置は直和)のトレースを取る。
  3. 1 + a+, a+ = Tr(∇;a;Δ) とする。

これら3つの同値性はすごく重要だが、「ループ・スライディング+アンワインディング」を使う。2番目から3番目では、∇;Δ = □ という双代数律も使う。双代数律は、線形圏における行列の使用を合理化する根幹だろう。

他に、Tr(f;Δ) が実際に不動点を与えることを示すときも「ループ・スライディング+アンワインディング」を使う。対角Δに沿ってfをダップ(dup)して、片一方のfをループ・スライディングする。アンワインディングすると、Tr(f;Δ) が出てくる。

Tr(f)をエルゴットダガーで表現する公式が、カザネスク/ステファネスク/ハイランド/長谷川の定理の肝で、プログラムf:A×X→B×X を出力部 fout:A×X→B と変換部 ftran:A×X→X に分けて、floop = Fix(ftran) = (ftran) の組み合わせでfを再現する。

手順は、トレース分解定理:概略 - 檜山正幸のキマイラ飼育記 メモ編トレース分解定理:詳細 - 檜山正幸のキマイラ飼育記 メモ編に書いてある。絵算でゴー:トランスデューサ - 檜山正幸のキマイラ飼育記 メモ編も関連する。このとき、もとのfをまずデカルト分解(デカルトペアリングで書く)して、それからトレースを取って、「ループ・スライディング+アンワインディング」を行って (ftran) の形を作る。

半線形圏=双デカルト圏のデカルト分解、余デカルト分解、双代数律、それと「ループ・スライディング+アンワインディング」を使えば、たいていの公式は出てくるだろう。アンワインディングは、クロス・スライディングとヤンキングを使ってるから、クロス(対称)を消去する効果がある。一方で、双代数律はクロスを作り出す効果がある。