Globularで古典テンソル計算
冗談ではないよ、マジ、マジ。
絵算の起源(のひとつ)は、ペンローズがテンソル計算の代替に使っていたペンローズ・ヒエログリフなのだから、古典テンソル計算が絵算で出来るのは当然なのだ。絵算の電卓ソフトとしてGlobularを使う。
問題点は、Globularがラベルを描けないこと。マウスホバーでラベルがポップアップするけど、描画としてはラベルが描けないので、いちいち色とラベルの対応を照合しなくてはならない。実用性がない。
ラベル=文字列は可変長なので、実はレイアウトがとても難しい。また、ラベルの対象物とラベル文字列の位置関係も難しい。GraphVizは頑張っているが、それでも見づらいことがある。
この話は、「dots-and-wires図 vs. boxes-and-wires図」にも関連する。幾何学的ポアンカレ双対の図示としては、dots-and-wiresが正しい。だが、ラベルを入れる矩形をboxで表すなら、boxes-and-wiresに軍配が上がる。Globularの弱点/機能不足のひとつはbox(一般的には大きさをもつノード)がまったく描けないことだろう。
たかがお絵描き、されどお絵描きなのだ。とりあえず、ラベル描画の問題は諦めて、対話的にラベルを見ることにする。
基本は、コンパクト閉圏だが、明示的なスターオペレーション(A |-> A*)を導入する代わりに、ベント(双対の単位)とコベント(双対の余単位)と準備して、必要に応じて射のメイト(共軛)を作る方針にする。ただし、セルの名前付けコンベンションとして、A と A* のようにして、AとA*をブリッジするベント/コベントを準備する。
例えば、AとBの2つから生成される指標(図形パレット)は、次のものからなる。ラベルはアスキー文字しか使えないので、アスキーで書く。テンソル積はカンマ。
Classical Tensor Calculus:
- I (モノイド単位対象)
- A
- B
- A* (名前のコンベンション、スター・オペレーションではない!)
- B*
- ev_A:A,A* -> I
- coev_A:I -> A*,A
- ev_B:B,B* -> I
- coev_B:I -> B*,B
- SNAKE-1_A
- SNAME-2_A
- SNAKE-1_B
- SNAME-2_B
これで、2つのベクトル空間AとBから生成したコンパクト閉圏の計算が出来るはずだ。実験してみるべ。