このブログの更新は Twitterアカウント @m_hiyama で通知されます。
Follow @m_hiyama

メールでのご連絡は hiyama{at}chimaira{dot}org まで。

はじめてのメールはスパムと判定されることがあります。最初は、信頼されているドメインから差し障りのない文面を送っていただけると、スパムと判定されにくいと思います。

参照用 記事

多様体の圏上の計算デバイス: 表示オペレータ

細切れの記事を書いてますが、事情は「ベクトル空間上の複素密度 4: フレームとコフレームの相反性 // はじめに」に書いたのと同様です。思いつきでちょっと書いては投稿、をしてます。

この記事では、多様体に関して、幾何的実体と計算手段の関係を考えてみます。

内容:

表示オペレータ

多様体の議論では、座標非依存〈coordinate-free style〉のほうが望ましいとは思いますが、そうは言っても、座標を使った計算は避けられません。で、座標を使った計算メカニズムを話題にします。

多様体の圏内の射 f:M→N に対して、計算しやすい圏内の射を割り当てます。このような対応を表示オペレータ〈presentation operator〉と呼ぶことにします。

一般に、C, D が圏のとき、ホムセットのあいだの写像 C(A, B)→D(X, Y) in Setオペレータまたはコンビネータ〈combinator〉と呼びます。C, D が具象圏(対象が集合で、射が写像である圏)のとき、オペレータは、関数集合から関数集合への写像です。つまり、オペレータは関数を受け取って、関数を返す写像となります。

ここでは、「関数」と「写像」は同義語です。「オペレータ」と「コンビネータ」も同義語です。使い分けのルールはなく、どっちを使うかは気まぐれです。

これから、3つの表示オペレータを導入します。

  1. 関数表示オペレータ F
  2. 微分表示オペレータ D
  3. ヤコビアン表示オペレータ J

これらのオペレータは、多様体のチャート〈局所座標〉でインデックスされた族〈indexed family〉になります。Man多様体の圏、ParAESを後で定義する概ユークリッド空間の部分写像の圏だとして、表示オペレータのインデックスとプロファイルも記述しましょう。dim(M) = m, dim(N) = n, Chart(-) は多様体のチャートの集合です。

  1. For x∈Chart(M), z∈Chart(N), Fyx:Man(M, N)→ParAES(Rm, Rn)
  2. For x∈Chart(M), z∈Chart(N), Dyx:Man(M, N)→ParAES(Rm×Rm, Rn)
  3. 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:AESMan をもちます。概ユークリッド空間 (X, GX) を、記号の乱用で X = (X, GX) とも書きます。

今回実際に使う概ユークリッド空間は限定的で、次のものです。

  1. ユークリッド空間 Rn
  2. m列n行(m行n列ではない)の行列の空間 Mat(m, n)
  3. それらの直積

ユークリッド空間Rnは、(Rn, idRn) として概ユークリッド空間です。行列の空間に対する大域座標 GMat(m, n):Mat(m, n)→Rm×n は、横書きの文章を読む順番でシリアライズすることだとします。例えば、


\begin{bmatrix}
a_1^1 & a_2^1 & a_3^1 \\
a_1^2 & a_2^2 & a_3^2
\end{bmatrix}
\mapsto
(a_1^1, a_2^1, a_3^1, a_1^2, a_2^2, a_3^2)

これで、行列空間は概ユークリッド空間となります。

直積に対する大域座標は、入れ子のタプルをフラットにすることで得られます。例えば、


( (x_1, \cdots, x_m), (y_1, \cdots, y_n) )
\mapsto
( x_1, \cdots, x_m, y_1, \cdots, y_n )

この方法で、概ユークリッド空間の直積はまた概ユークリッド空間です。

Rn を Mat(1, n) と同一視すれば、使う概ユークリッド空間は、行列の空間か、それらの直積だと言えます。この同一視のもとで、次のような等式を仮定しましょう。

  1. Rn = Mat(1, n)
  2. Rn = Mat(n, 1)
  3. R = Mat(1, 1)

AESの射は全域写像(普通の写像)ですが、部分写像〈partial map〉を許しましょう。ただし、部分写像の定義域は開集合だけだとします(一般の部分集合ではありません)。部分写像を射とする概ユークリッド空間の圏を ParAES とします。f:X→Y in ParAES は次のように分解できます。iは包含写像fは、fの全射部分です。

\require{AMScd}
\newcommand{\incat}{\:\: \mbox{in}\:}%
\newcommand{\cat}[1]{{\mathcal {#1}}}%
%
\begin{CD}
{}        @.        U       @>{\underline{f} }>>  f(U) @.               {} \\
@.                  @V{i}VV                       @VV{i}V               @.   \\
{\bf R}^m @>{\cong\; G_X}>> X @.                    Y    @<{G_Y \;\cong}<<  {\bf R}^n \\
\end{CD}\\
\:\\
\incat {\bf Man}

dom(f) = X, cod(f) = Y, def(f) = U, img(f) = f(U) です。fとfは通常区別せず、fが可逆なとき、i\circf-1 を単にf-1と書きます。f:X→Y in ParAES のとき、fが部分写像であることを強調して f:X⊇→Y とも書きますが、いつでもそう書くとは限りません

2つの部分写像のあいだに順序を入れておくと便利です。

  • For f, g∈ParAES(X, Y),
    f \sqsubseteq g :⇔ def(f)⊆def(g) で、f = g|def(f)

つまり、f \sqsubseteq g とは、gの定義域を狭めたものがfということです。

いま定義した ParAES は、“具体的な計算ができる圏”です。射が部分写像なので、結合は部分結合、逆は部分逆を使いますが、実際の計算でもそうしているので、部分写像の圏のほうがむしろ自然です。

関数表示オペレータ F

表示オペレータを定義する前に、座標変換の表示〈presentation〉を定義しておきます。

  • For x, y∈Chart(M), Tyx := y\circx-1

x, y :M⊇→Rm であり、定義の右辺の'\circ', '-1' は部分結合、部分逆です。Tyxを、チャートxからチャートyへのチャート遷移〈chart transition〉と呼びます。局所座標の取り替えに伴う変換関数です。次が成立します。

  1. TyxParAES(Rm, Rm) = EndParAES(Rm)
  2. Tzy\circTyx \sqsubseteq Tzx in ParAES
  3. Txx \sqsubseteq idRm in ParAES
  4. Txy = (Tyx)-1

部分結合と部分逆に関する法則なので、キッチリとした等式にはならないことに注意してください。とはいえ、\sqsubseteq は、定義域の大小を無視すればイコールのようなものなので、イコール気分で扱ってもだいたい大丈夫です。

さて、関数表示オペレータ〈function presentation operator〉 F を次のように定義します。

  • For x∈Chart(M), z∈Chart(N),
    Fzx:Man(M, N)→ParAES(Rm, Rn), Fzx[f] := z\circf\circx-1

オペレータに渡す引数は角括弧〈ブラケット〉に入れることにします。Fzx[f] は、多様体の射(なめらかな写像)f:M→N のチャートxとチャートzによる表示です。fの表示は、ユークリッド空間のあいだの部分写像です。ユークリッド空間のあいだの(なめらかな)部分写像は、初等微積分で扱える対象物なので、“具体的に計算できる”と言っていいでしょう。

実際の計算では、f(def(x))⊆def(z) となるようにチャート x, z を選ぶのが良いですが、いまはこの条件に拘らないことにします。def(Fzx[f]) が空集合になってしまこともありますが、そういうことも特に排除しません。次が成立します。

  1. For x, y∈Chart(M), z, w∈Chart(N),
    Twz\circFzx[f]\circTxy \sqsubseteq Fwy[f]
  2. For x∈Chart(M), z∈Chart(N), s∈Chart(P),
    Fsz[g]\circFzx[f] = Fsx[g\circf]

微分表示オペレータ D

f:M→N in Man に対して、その接写像〈tangent map〉を Tf:TM→TN in VectBundle とします。接バンドルや接写像を、座標に(できるだけ)依存しないで定義するのはなかなかに難しいです。次の記事と、そこから参照されている記事に書いています。

微分表示オペレータ〈differential presentation operator〉D は、Tf:TM→TN in VectBundle に対する表示を与えるオペレータです。微分表示オペレータは、次の可換四角形の対角線として与えられます。


\begin{CD}
{\bf Man}(M, N)           @>{F^z_x}>>  {\bf ParAES}({\bf R}^m, {\bf R}^n) \\
@V{T_{M,N}}VV                          @VV{\underline{D}}V \\
{\bf VectBundle}(TM, TN)  @>{TB^z_x}>> {\bf ParAES}({\bf R}^m\times {\bf R}^m, {\bf R}^n) \\
\end{CD}

ここで、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] := π2\circHz\circTf\circ(Hx)-1

全域写像として、Dzx[f]:def(x)×RmRn であり、部分写像としては Dzx[f]:Rm×RmRn となり、つまり 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〉な関数の集合です。関連する議論は、ヤコビ微分圏の話のなかでもしています。

実際の計算ではヤコビアン表示オペレータが非常のよく使われます。ヤコビアン表示オペレータは、以下のような可換図式のなかに位置付けられるでしょう。左上から右下に向かう対角線がヤコビアン表示オペレータになります。ラベルがない矢印と疑問符の部分は、ちゃんと確認してないものです。


\begin{CD}
{\bf Man}(M, N)           @>{F^z_x}>>  {\bf ParAES}({\bf R}^m, {\bf R}^n) \\
@V{T_{M,N}}VV                          @VV{\underline{D}}V \\
{\bf VectBundle}(TM, TN)  @>{TB^z_x}>> {\bf ParAES}_{\mbox{RL}}({\bf R}^m\times {\bf R}^m, {\bf R}^n) \\
@VVV                                   @VV{curry}V \\
\mbox{?}                   @>>>   {\bf ParAES}({\bf R}^m,  Mat(m, n) ) \\
\end{CD}

この可換図式で、左の縦列は座標非依存に定義できます。右の縦列も自己充足的な定義ができます(例えば、「快適な微分計算のための圏と微分公式」参照)。左右を繋ぐ横矢印をちゃんと定義するのが若干面倒そうです。が、計算デバイスとしては、横矢印こそが問題になります。

構文論と意味論

大ざっぱに言えば、Manは意味論(概念的実体)の世界、ParAESが構文論(表示と計算)の世界であると言えるでしょう。通常の(論理やプログラム理論で出てくる)構文論/意味論とは違い、構文に意味を対応させる意味写像が単純ではありません。チャートを指定しないと、“意味←→構文”の対応が決まりません。チャートの選択はいくらでもあるので、ものすごくたくさんの“意味←→構文”対応を取り扱うことになります。

ものすごくたくさんの“意味←→構文”対応が、どのように組織化され統御されているか? そのメカニズムが興味あるところです。そのメカニズムから、本来の(論理やプログラム理論で出てくる)構文論/意味論に対するフィードバックが得られるかも知れません。