「多様体の圏上の計算デバイス: 表示オペレータ」で述べたような事、オペレータ〈コンビネータ〉を使って具体的な計算に持ち込むことは必要だな、と思います。
手計算では、直感に頼ったショートカットが可能ですが、コンピュータによる数値計算や数式処理で計算しようと思うと、機械実行可能な程度まで手順を書き下す必要があります。
今回もまた、系統性/自己完結性に欠ける記事ですが、多様体上の具体的な計算について、生煮えな思い付きを書きます。
内容:
概ユークリッド空間と開集合
「多様体の圏上の計算デバイス: 表示オペレータ // 概ユークリッド空間と部分写像の圏」で述べた概ユークリッド空間の圏はなかなか使いやすいです。が、実際に使うのは行列空間とその直積なので、それだけに限定してもいいかも知れません。限定した圏の対象は帰納的に定義できます。
- 行列空間 Mat(m, n) (m, n∈N)は対象である。
- X, Y が対象なら、直積 X×Y も対象である。
- 以上により得られる空間(大域座標を持つ多様体)だけが対象である。
大域座標 GX:X→Rm の作り方は「多様体の圏上の計算デバイス: 表示オペレータ // 概ユークリッド空間と部分写像の圏」に書いたとおりです。大域座標を経由して、対象は、適当なmに対するRmと標準的〈規準的〉に同一視可能です。
全域関数だけでなく部分関数を扱う必要があります。ただし、部分関数とはいっても、その定義域は開集合なので、局所関数〈local function〉と呼んだほうがいいかも知れません。許容される開集合の定義も帰納的にできそうですね。例えば:
- 実数の開区間は、許容される開集合である。
- 許容される開集合の、計算可能な関数による逆像は許容される開集合である。
- 許容される開集合に対して、集合のブール演算を施した集合は許容される開集合である。
開集合は、無限個合併しても開集合なので、可算な合併まで許してもいいのかも知れません。可算といえども無限なので、実効的計算の観点からは工夫がいるでしょうけど。
ここに出てきた計算可能な関数とは何だ? という話になりますが、決まった基本関数から決まった構成手順で構成できる関数です。もちろん、基本関数と構成手順をハッキリさないと意味ないのですが、帰納関数論や記述集合論と似たような感じなのかな?
部分関数と定義域
前節で、部分関数の定義域は開集合だと言いましたが。開集合ではない集合 S⊆X, X Rn に対して、def(f) = S のような関数を考えちゃダメでしょうか? 例えば、S = {(x, y)∈R2 | y = 0 かつ x ≧ 0} 上でだけ定義される関数です。
微分する都合を考えると、ほんとにS上でだけ値を持つ関数はダメです。が、Sの外に拡張可能な関数ならいいでしょう。この状況は、関数のジャーム〈芽〉を使えば定式化できます。Sを含む開集合U上で定義された関数の同値類がジャームです。「微分はライプニッツ法則に支配されている // ユークリッド空間上の関数ジャームの空間」に一点でのジャームについて書いてあります。一点以外の集合上のジャームも定義は同じです。
部分関数としてジャームまで考えれば、関数の定義域として許される集合を開集合より広くとれます。次のルールを追加してもよさそうです。
Sが開集合でなくても、許容される集合S上のジャームは考えてもよいとします。そのほうが便利なはずです。そうであっても、ジャームの代表元は開集合上で定義されているので、微分できます。微分できる(なめらかな)世界から逸脱はしません。
写像・行列ペアの計算
接写像の計算をするときよく使う表現形式があります。φ:Rm⊇U→Rn in ParAES(Rm, Rn), A:Rm⊇U→Mat(m, n) in ParAES(Rm, Rn) だとして、ペア (φ, A) を(特に名前がないので)写像・行列ペア〈{map-matrix | mapping-matrix} pair〉と呼びます。単なるペアではないので、[φ : A] と書くことにします。
(x, ξ)∈U×Rm⊆Rm×Rm に対して、
- [φ : A](x, ξ) := (φ(x), A(x)ξ) ∈Rn×Rn
と定義します。すると、写像・行列ペア [φ : A] は、Rm×Rm⊇→Rn×Rn という部分関数〈部分写像〉とみなせます。この解釈と整合するように、写像・行列ペアの結合を定義すると:
- [ψ : B][φ : A] := [φψ, (Bφ)A]
[idRm, I] (Iは単位行列)は、Rm×Rm→Rm×Rm の恒等写像になります。
上記の結合と恒等写像により、写像・行列ペアの全体は圏をなし、それはParAESの部分圏になります。行列A(実際は行列値関数)を写像φのヤコビ行列にとると、接写像の計算体系になります。
φ = idU として、行列のサイズを自由にすると、特定の多様体のイントラベース・ベクトルバンドル射の計算に使えます。
もっと複雑な対象物、例えばコジュール接続(「コジュール接続の圏」参照)に対しても、どうやってParAES内の計算に持ち込めるかをいちいち確認していけば、ドライなアルゴリズムに落とせるでしょう。
機械実行可能とまではいかなくても、因習的記法や暗黙の了解の奥に隠れてしまっているメカニズムを明示化する効果はあります。因習的な計算手順とは違い、天下りに手順を与えるのではなくて、実体と計算の対応関係も問題にします(「多様体の圏上の計算デバイス: 表示オペレータ // 構文論と意味論」参照)。むしろ、幾何的実体から具体的な計算へと至るプロセスが主たる関心事になります。