細切れの記事を書いてますが、事情は「ベクトル空間上の複素密度 4: フレームとコフレームの相反性 // はじめに」に書いたのと同様です。思いつきでちょっと書いては投稿、をしてます。
この記事では、多様体に関して、幾何的実体と計算手段の関係を考えてみます。
内容:
表示オペレータ
多様体の議論では、座標非依存〈coordinate-free style〉のほうが望ましいとは思いますが、そうは言っても、座標を使った計算は避けられません。で、座標を使った計算メカニズムを話題にします。
多様体の圏内の射 f:M→N に対して、計算しやすい圏内の射を割り当てます。このような対応を表示オペレータ〈presentation operator〉と呼ぶことにします。
一般に、C, D が圏のとき、ホムセットのあいだの写像 C(A, B)→D(X, Y) in Set をオペレータまたはコンビネータ〈combinator〉と呼びます。C, D が具象圏(対象が集合で、射が写像である圏)のとき、オペレータは、関数集合から関数集合への写像です。つまり、オペレータは関数を受け取って、関数を返す写像となります。
ここでは、「関数」と「写像」は同義語です。「オペレータ」と「コンビネータ」も同義語です。使い分けのルールはなく、どっちを使うかは気まぐれです。
これから、3つの表示オペレータを導入します。
これらのオペレータは、多様体のチャート〈局所座標〉でインデックスされた族〈indexed family〉になります。Manは多様体の圏、ParAESを後で定義する概ユークリッド空間の部分写像の圏だとして、表示オペレータのインデックスとプロファイルも記述しましょう。dim(M) = m, dim(N) = n, Chart(-) は多様体のチャートの集合です。
- For x∈Chart(M), z∈Chart(N), Fyx:Man(M, N)→ParAES(Rm, Rn)
- For x∈Chart(M), z∈Chart(N), Dyx:Man(M, N)→ParAES(Rm×Rm, Rn)
- For x∈Chart(M), z∈Chart(N), Jyx:Man(M, N)→ParAES(Rm, Mat(m, n))
基本となる多様体のチャートについては、次の記事を参照してください。
「接バンドルのホロノーム座標」のときと同様に、チャート〈局所座標〉は、x:M⊇U→Rm という部分写像だとみなします。部分写像の定義域は常に開集合だとします。部分写像の扱い方については、「快適な微分計算のための圏と微分公式 // 部分逆写像」も参考になるかも知れません。
概ユークリッド空間と部分写像の圏
多様体とみなしたRnをユークリッド空間と呼びます。多様体Xが、多様体としてユークリッド空間と同型であり、その同型を与える可逆写像 GX:X→Rm が指定されているとき、(X, GX) を(m次元の)概ユークリッド空間〈almost Euclidean space〉と呼ぶことにします。2つの概ユークリッド空間のあいだの準同型射 (X, GX)→(Y, GY) は、多様体の射(なめらかな写像) f:X→Y in Man のことだとします。
概ユークリッド空間とそのあいだの準同型射の全体は圏をなすので、その圏をAESとします。圏AESは、多様体の圏Manへの忘却関手 U:AES→Man をもちます。概ユークリッド空間 (X, GX) を、記号の乱用で X = (X, GX) とも書きます。
今回実際に使う概ユークリッド空間は限定的で、次のものです。
- ユークリッド空間 Rn
- m列n行(m行n列ではない)の行列の空間 Mat(m, n)
- それらの直積
ユークリッド空間Rnは、(Rn, idRn) として概ユークリッド空間です。行列の空間に対する大域座標 GMat(m, n):Mat(m, n)→Rm×n は、横書きの文章を読む順番でシリアライズすることだとします。例えば、
これで、行列空間は概ユークリッド空間となります。
直積に対する大域座標は、入れ子のタプルをフラットにすることで得られます。例えば、
この方法で、概ユークリッド空間の直積はまた概ユークリッド空間です。
Rn を Mat(1, n) と同一視すれば、使う概ユークリッド空間は、行列の空間か、それらの直積だと言えます。この同一視のもとで、次のような等式を仮定しましょう。
- Rn = Mat(1, n)
- Rn = Mat(n, 1)
- R = Mat(1, 1)
圏AESの射は全域写像(普通の写像)ですが、部分写像〈partial map〉を許しましょう。ただし、部分写像の定義域は開集合だけだとします(一般の部分集合ではありません)。部分写像を射とする概ユークリッド空間の圏を ParAES とします。f:X→Y in ParAES は次のように分解できます。iは包含写像、fは、fの全射部分です。
dom(f) = X, cod(f) = Y, def(f) = U, img(f) = f(U) です。fとfは通常区別せず、fが可逆なとき、if-1 を単にf-1と書きます。f:X→Y in ParAES のとき、fが部分写像であることを強調して f:X⊇→Y とも書きますが、いつでもそう書くとは限りません。
2つの部分写像のあいだに順序を入れておくと便利です。
- For f, g∈ParAES(X, Y),
f g :⇔ def(f)⊆def(g) で、f = g|def(f)
つまり、f g とは、gの定義域を狭めたものがfということです。
いま定義した ParAES は、“具体的な計算ができる圏”です。射が部分写像なので、結合は部分結合、逆は部分逆を使いますが、実際の計算でもそうしているので、部分写像の圏のほうがむしろ自然です。
関数表示オペレータ F
表示オペレータを定義する前に、座標変換の表示〈presentation〉を定義しておきます。
- For x, y∈Chart(M), Tyx := yx-1
x, y :M⊇→Rm であり、定義の右辺の'', '-1' は部分結合、部分逆です。Tyxを、チャートxからチャートyへのチャート遷移〈chart transition〉と呼びます。局所座標の取り替えに伴う変換関数です。次が成立します。
- Tyx ∈ ParAES(Rm, Rm) = EndParAES(Rm)
- TzyTyx Tzx in ParAES
- Txx idRm in ParAES
- Txy = (Tyx)-1
部分結合と部分逆に関する法則なので、キッチリとした等式にはならないことに注意してください。とはいえ、 は、定義域の大小を無視すればイコールのようなものなので、イコール気分で扱ってもだいたい大丈夫です。
さて、関数表示オペレータ〈function presentation operator〉 F を次のように定義します。
- For x∈Chart(M), z∈Chart(N),
Fzx:Man(M, N)→ParAES(Rm, Rn), Fzx[f] := zfx-1
オペレータに渡す引数は角括弧〈ブラケット〉に入れることにします。Fzx[f] は、多様体の射(なめらかな写像)f:M→N のチャートxとチャートzによる表示です。fの表示は、ユークリッド空間のあいだの部分写像です。ユークリッド空間のあいだの(なめらかな)部分写像は、初等微積分で扱える対象物なので、“具体的に計算できる”と言っていいでしょう。
実際の計算では、f(def(x))⊆def(z) となるようにチャート x, z を選ぶのが良いですが、いまはこの条件に拘らないことにします。def(Fzx[f]) が空集合になってしまこともありますが、そういうことも特に排除しません。次が成立します。
- For x, y∈Chart(M), z, w∈Chart(N),
TwzFzx[f]Txy Fwy[f] - For x∈Chart(M), z∈Chart(N), s∈Chart(P),
Fsz[g]Fzx[f] = Fsx[gf]
微分表示オペレータ D
f:M→N in Man に対して、その接写像〈tangent map〉を Tf:TM→TN in VectBundle とします。接バンドルや接写像を、座標に(できるだけ)依存しないで定義するのはなかなかに難しいです。次の記事と、そこから参照されている記事に書いています。
微分表示オペレータ〈differential presentation operator〉D は、Tf:TM→TN in VectBundle に対する表示を与えるオペレータです。微分表示オペレータは、次の可換四角形の対角線として与えられます。
ここで、Dは、圏ParASEて定義された微分コンビネータです。Dは、「コンピュータ科学や組み合わせ論を“微分幾何”とみなす:CADGの夢」で述べたデカルト微分圏における微分コンビネータとして定式化できます。TBzxは、接バンドルのあいだのバンドル射をチャートによって表示する表示オペレータです。
ここでは、DやTBにはこれ以上は踏み込まないで、直接的に Dzx:Man(M, N)→ParASE(Rm, Rn) を定義します。そのためには、「接バンドルのホロノーム座標」で説明したホロノーム座標を使います。ホロノーム座標を、次の全域写像とみなします。
- (Hx)-1:def(x)×Rm→TM|def(x)
- Hz:TN|def(z)→def(z)×Rn
これらを使って、Dzx[f] for f∈Man(N, M) を次のように定義します。
- Dzx[f] := π2HzTf(Hx)-1
全域写像として、Dzx[f]:def(x)×Rm→Rn であり、部分写像としては Dzx[f]:Rm×Rm→Rn となり、つまり Dzx[f]∈ParAES(Rm×Rm, Rn) です。
これで、微分表示オペレータの定義は出来るのですが、あまり分かりやすくはないですね。やはり、上記の可換四角形を丁寧に追いかけるべきですが、今日のところはこの定義にしておきます。もっと具体的な計算例はまたいずれ。
ヤコビアン表示オペレータ J
Dzy:Man(M, N)→ParAES(Rm×Rn) が定義されれば、ヤコビアン表示オペレータ〈Jacobian presentation operator〉Jzy:Man(M, N)→ParAES(Rm, Mat(m, n)) の定義は簡単です。なぜなら、Jzy を得るには、Dzy の後にカリー化コンビネータを結合するだけですから。
- curry::ParAESRL(Rm×Rm, Rn)→ParAES(Rm, Mat(m, n))
このカリー化は一般的なカリー化ではなくて、第二変数に関しては全域線形な関数でないとこのカリー化はできません。ParAESRL(Rm×Rm, Rn) は、右側〈Right〉の変数に関して線形〈Linear〉な関数の集合です。関連する議論は、ヤコビ微分圏の話のなかでもしています。
実際の計算ではヤコビアン表示オペレータが非常のよく使われます。ヤコビアン表示オペレータは、以下のような可換図式のなかに位置付けられるでしょう。左上から右下に向かう対角線がヤコビアン表示オペレータになります。ラベルがない矢印と疑問符の部分は、ちゃんと確認してないものです。
この可換図式で、左の縦列は座標非依存に定義できます。右の縦列も自己充足的な定義ができます(例えば、「快適な微分計算のための圏と微分公式」参照)。左右を繋ぐ横矢印をちゃんと定義するのが若干面倒そうです。が、計算デバイスとしては、横矢印こそが問題になります。
構文論と意味論
大ざっぱに言えば、Manは意味論(概念的実体)の世界、ParAESが構文論(表示と計算)の世界であると言えるでしょう。通常の(論理やプログラム理論で出てくる)構文論/意味論とは違い、構文に意味を対応させる意味写像が単純ではありません。チャートを指定しないと、“意味←→構文”の対応が決まりません。チャートの選択はいくらでもあるので、ものすごくたくさんの“意味←→構文”対応を取り扱うことになります。
ものすごくたくさんの“意味←→構文”対応が、どのように組織化され統御されているか? そのメカニズムが興味あるところです。そのメカニズムから、本来の(論理やプログラム理論で出てくる)構文論/意味論に対するフィードバックが得られるかも知れません。