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

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

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

モナドの自由代数

モナドFのクライスリ圏は、F-自由代数の圏とみなせる」と言われます。おおよその状況は次のようです。

  • Fのクライスリ圏 \cong F-自由代数の圏 ⊆ F-代数の圏 = Fのアイレンベルク/ムーア圏

この事実に対する正確な説明や実例をあまり見ないので(僕が目にしてないだけかも)、この記事で説明し、典型的実例を紹介します。

内容:

準備: 予備知識のまとめ

Cは圏として、(F, μ, η) はC上のモナドとします。つまり、

  • F:CC は関手
  • μ::F*F⇒F:CC は自然変換('*'は関手の図式順結合記号)
  • η::IdC⇒F:CC は自然変換

(F, μ, η) は関手圏 [C, C] のモノイドになります。モナドの素材〈構成素〉の呼び名は:

  • Cは、モナド基礎圏〈ground category〉*1
  • 関手Fは、モナド台関手〈underlying functor〉
  • 自然変換μは、モナド乗法〈multiplication〉
  • 自然変換ηは、モナド単位〈unit〉

記号の乱用により、次のようにも書きます。

  • F = (F, μ, η)

モナドFのクライスリ圏を Kl(C, F) と書き、モナドFのアイレンベルク/ムーア圏を EM(C, F) と書きます。基礎圏Cが了解されているなら、Kl(F), EM(F) と書いてもかまいません。

Fのクライスリ圏の対象は、基礎圏Cの対象と同じです。クライスリ圏の射は、基礎圏においては、A→F(B) の形をしています。次の図の上下段は同値です。

   A→B in Kl(C)
 -----------------
   A→F(B) in C

クライスリ圏の射(Cでは A→F(B) の形)をクライスリ射〈Kleisli morphism〉と呼びます。

Fのアイレンベルク/ムーア圏の対象を、Fのアイレンベルク/ムーア代数、または単にF-代数〈F-algebra〉と呼びます。Fのアイレンベルク/ムーア圏の射は、F-代数の準同型射、あるいはF-代数射〈F-algebra morphism〉です。F-代数とF-代数射の圏を F-Alg と書きます。F-代数の圏と、Fのアイレンベルク/ムーア圏はまったく同じものですから:

  • F-Alg = EM(F)

F-AlgはEM(F)の別名です。

モナドの厳密自由代数

この節と次の節で、モナドの厳密自由代数と自由代数を定義します。「自由」という形容詞の使い方が、加群の理論や群論などと違うように感じるかもしれませんが、本質的には同じです。

C上のモナドFの厳密自由代数〈strict free algebra〉とは、A∈|C| と F(A)∈|C| のペア (A, F(A)) のことです。厳密自由代数 (A, F(A)) と (B, F(B)) のあいだの射は、f:A→F(B) in C だとします。モナドFの厳密自由代数をF-厳密自由代数〈F-strict free algebra〉とも呼びます。

ペア (A, F(A)) は、基礎圏C対象Aだけから一意に決まってしまうので、F(A) を書くのは冗長です(書かなくても再現できる)。厳密自由代数のあいだの射はクライスリ射です。つまり、Fの厳密自由代数とそのあいだの射の圏は、Fのクライスリ圏と同じです。このことを次の形に書きましょう。

  • F-StFreeAlg = Kl(F)

左辺の F-StFreeAlg は、F-厳密自由代数の圏です。F-厳密自由代数の圏は、Fのクライスリ圏をわずかに異なった方法で再定義しているだけです。結局、F-StFreeAlgはKl(F)の別名です。

モナドの自由代数

モナドFの代数〈algebra〉(Fの加群〈module〉と呼ぶこともある)は、M∈|C| と α:F(M)→F in C の組 (M, α) で次の図式を可換にするものです。

 \require{AMScd}
\begin{CD}
F(F(M))  @>{F(\alpha)}>>  F(M) \\
@V{\mu_M}VV               @VV{\alpha}V \\
F(M)     @>{\alpha}>>      M \\
\\
M  @>{\eta_M}>>  F(M) \\
@|       @VV{\alpha}V \\
M  @=    M
\end{CD}

A∈|A| に対して、M = F(A), α = μA としたとき、上の可換図式は次の形になります。

 \require{AMScd}
\begin{CD}
F(F(F(A)))  @>{F(\mu_A)}>>  F(F(A)) \\
@V{\mu_{F(A)}}VV               @VV{\mu_A}V \\
F(F(A))     @>{\mu_A}>>      F(A) \\
\\
F(A)  @>{\eta_{F(A)}}>>  F(F(A)) \\
@|       @VV{\mu_A}V \\
F(A)  @=    F(A)
\end{CD}

これはモナドの定義そのものなので、(F(A), μA) はF-代数になります。こうして定義されたF-代数 (F(A), μA) を、記号の乱用により F(A) = (F(A), μA) と書き、F-代数F(A)と言ったりします。

さて、C上のモナドFの自由代数〈free algebra〉とは、A∈|C| と M∈|F-Alg| 、そしてF-代数の同型 φ;F(A)→M in F-Alg の組 (A, M, φ) のことです。自由代数 (A, M, φ) と (B, N, ψ) のあいだの射は、単にF-代数射 f:M→N in F-Alg のことです。モナドFの自由代数をF-自由代数〈F-free algebra〉とも呼びます。

F-自由代数とそのあいだの射は圏をなすので、それをF-FreeAlgと書きます。F-自由代数 (A, M, φ) は、F-代数Mに A, φ を余分に付けた形なので、Mだけを取り出すことにより、忘却関手 U:F-FreeAlg→F-Alg を定義できます。

  • U((A, M, φ)) := M ∈|F-Alg|
  • U(f:(A, M, φ)→(B, N, ψ)) := (f:M→N) ∈F-Alg(M, N)

ホムセット F-FreeAlg((A, M, φ), (B, N, ψ)) とホムセット F-Alg(M, N) は同じ集合なので、U:F-FreeAlg→F-Alg が充満忠実関手になるのは明らかです。ただし、対象に対するU:|F-FreeAlg|→|F-Alg| は全単射とは限らないので、関手Uは埋め込みにはなりません(埋め込みであることを保証できません)。

厳密自由代数、自由代数、代数の関係

モナドFの厳密自由代数 (A, F(A)) が与えられたとき、(A, F(A), idF(A)) は自由代数になります。この対応は関手となるので、K:F-StFreeAlg→F-FreeAlg としましょう。

  • K((A, F(A))) := (A, F(A), idF(A)) ∈|F-FreeAlg|
  • K(f:(A, F(A))→(B, F(B))) := (f#:F(A)→F(B)) ∈F-FreeAlg(F(A), F(B))

射に対するKの定義を補足します。f:(A, F(A))→(B, F(B)) in F-StFreeAlg は、f:A→F(B) in C でした。モナドには、対応するクライスリ拡張オペレータがあります。(-)# がFのクライスリ拡張オペレータです。F-StFreeAlg から F-FreeAlg へと至るプロセスを図にすると:

   f:(A, F(A))→(B, F(B)) in F-StFreeAlg
 ------------------------------------------
   f:A→F(A) in C#:F(A)→F(B) in C
 --------------------------------------
   f#:(F(A), μA)→(F(B), μB) in F-Alg
 -----------------------------------------------------
   f#:(A, F(A), idF(A))→(B, F(B), idF(B)) in F-FreeAlg

上の図の各段のあいだの対応は、ホムセットのあいだの全単射になるので、Kは充満忠実関手になります。(A, F(A)) ←→ (A, F(A), idF(A)) も1:1の対応なので、Kは充満埋め込み関手になります。

今まで出現した圏と関手をまとめておきましょう。

F-Alg = EM(F) 圏の同一性(別名)
F-StFreeAlg = Kl(F) 圏の同一性(別名)
U:F-FreeAlg→F-Alg 充満な忘却関手
K:F-StFreeAlg→F-FreeAlg 充満な埋め込み関手

モナドFに対して、Kl(F) = F-StFreeAlg, F-FreeAlg, F-Alg = EM(F) は異なる3つの圏です。埋め込みKがあるので、F-StFreeAlg⊆F-FreeAlg とみなしてかまいません。しかし、F-FreeAlg⊆F-Alg とは言えません。

「F-自由代数」(あるいは「自由F-代数」という言葉は実は曖昧です。次の3つの意味のどれかで使われます。

  1. 圏F-StFreeAlgの対象
  2. 圏F-FreeAlgの対象
  3. 忘却関手Uの像であるF-Algの部分圏の対象

「自由モノイド」「自由群」などは1番の意味でしょう。「自由加群」は3番の意味だと思います。「自由ベクトル空間」は1番の意味のときもあれば3番の意味のときもあります。「自由ベクトル空間」という言葉がどうもハッキリしないのは、この曖昧性のためでしょう。

  • 1番または2番の意味だとするなら、「自由ではないベクトル空間」=「基底が特定されてないベクトル空間」もある。
  • 3番の意味だとすると、すべてのベクトル空間は「自由ベクトル空間」=「基底が存在するベクトル空間」になる。

ベクトル空間については、典型的実例として後述します(次々節)。

リストモナドのとき

基礎圏Set上のリストモナド List = (List, flatten, single) と、List-代数の圏〈Listのアイレンベルク/ムーア圏〉については、次の記事に書いてあります。

リストモナドListに関して、List-StFreeAlg, List-FreeAlg, List-Alg の3つの圏を見ていきます。

上記の過去記事から、List-Alg = EM(List) \cong Mon = (モノイドの圏) です。List-代数とはモノイドのことです。

List-厳密自由代数は、(A, List(A)) の形です(Aだけから決まる)。ここで、List(A) は単なる集合ではなくて、連接演算と空列によりモノイドとみなします。List-厳密自由代数とは、リスト(あるいは文字列)の連接モノイドのことになります。

List-自由代数は、定義より、リストの連接モノイドと同型なモノイドになります。(A, M, φ) がList-自由代数だとすると、φ:List(A)→M はモノイドの同型写像です。singleA:A→List(A) と φ:List(A)→M を結合すると、A→M という単射ができます。この単射により A⊆M とみなせます。この状況で、モノイドMは、部分集合Aで自由生成されています。つまり、List-自由代数とは、特定された自由生成系を持つモノイドになります。

自然数の足し算モノイド (N, +, 0) は、自由生成系{1}を持ちます。これは、NがList-自由代数であることを意味します。もう少し詳しく言うと; List({1}) は、1だけからなるリスト(1をいくつか並べた列)の集合です*2。リストの長さ length:List({1})→N は、リストの連接モノイドから自然数の足し算モノイドへの同型になります。したがって、({1}, N, length) はList-自由代数です。

すべてのList-代数〈モノイド〉がList-自由代数〈自由生成系を持つモノイド〉なわけではありません。集合 {0, 1} に 1 + 1 = 0 として足し算を入れると、{1}が生成系になりますが、自由生成系ではありません。実際、List({1}) と {0, 1} は同型にはなりません。

線形結合モナドのとき

\newcommand{\U}[1]{\langle{#1}\rangle}集合Aに対して、Aの要素を実数係数で(形式的に)線形結合したモノ全体の集合を LinComb(A) とします。LinCombは集合圏Set上の自己関手になり、さらにモナドに仕立てることができます。このモナドを LinComb = (LinComb, linflatten, unit) とします。

Aの要素の(有限な)線形結合は、 \sum_{a\in A} x^a a の形に書きます*3。有限個のaを除いて xaR はゼロです。a∈A と a∈LinComb(A) の区別がしたいときは、LinComb(A) に入ったaを<a>と書くことにします。この書き方を採用すると、x∈LinComb(A) は  x = \sum_{a\in A} x^a \U{a} です。

LinComb(LinComb(A)) の要素Xは次のような表示を持ちます。


X = \sum_{x\in LinComb(A)}X^{x}\U{x} \:\in LinComb(LinComb(A)) \\
x = \sum_{a\in A}x^a\U{a} \:\in LinComb(A) \\
モナドの演算である linflatten, unit の定義は次のようです。


\mbox{For }\; X \in LinComb(LinComb(A)), \\
linflatten(X) \\
= linflatten(\sum_{x\in LinComb(A)}X^{x}\U{x}) \\
:= \sum_{x\in LinComb(A),\, a\in A}
X^{x} x^a \U{a} \:\in LinComb(A) \\
\:\\
\mbox{For}\; a \in A, \\
unit(a) \\
:= \U{a} \; \in LinComb(A)

分かりにくいかも知れませんが、要するに通常の線形計算です。

線形結合モナドLinCombのアイレンベルク/ムーア圏〈代数の圏〉は、ベクトル空間の圏と同一視可能です(係数体は実数体に固定して、Rは書かないことにします)。

  • LinComb-Alg \cong Vect

LinComb-厳密自由代数は、定義により (A, LinComb(A)) です。Aが有限のときは、LinComb(A) は RA と書いても同じことなので、(A, RA) でもいいでしょう。圏 LinComb-StFreeAlg の射はクライスリ射だったので、f:A→LinComb(B) in Set の形をしています。f(a) = y とすると、 y = \sum_{b \in B} y^b \U{b} と書けます。係数達 yb はaにも依存するので  f(a) = \sum_{b \in B} y^b_a \U{b} 、この  y^b_a 達は行列成分と考えることができます。

行列のインデックスとして任意の集合を許すとして、A, B をインデックス集合とする実数成分の“B行A列の行列”の全体を Mat(A, B) と書くことにします。通常の行列計算を拡張して、Mat(A, B) をホムセットとする圏Matを構成できます。圏 LinComb-StFreeAlg の射は、行列と1:1対応するので、LinComb-厳密自由代数の圏は、行列の圏と同一視可能です。

  • LinComb-StFreeAlg \cong Mat

LinComb-自由代数は、定義より、LinComb(A) の形のベクトル空間と同型なベクトル空間になります。(A, V, φ) がLinComb-自由代数だとすると、φ:LinComb(A)→V はベクトル空間の同型写像です。unitA:A→List(A) と φ:LinComb(A)→V を結合すると、A→V という単射ができます。この単射により A⊆V はベクトル空間Vの基底とみなせます。像が基底となる単射写像 φ:A→V は、ベクトル空間Vのフレーム〈frame〉と呼びます。よって、LinComb-自由代数 (A, V, φ) とは、フレームφを備えたベクトル空間〈framed vector space〉です。

フレーム付きベクトル空間の圏をFrmVectとすると:

  • LinComb-FreeAlg \cong FrmVect

先に述べたモナドの厳密自由代数/自由代数の一般論を考慮すると:

  1. LinComb-Alg = EM(LinComb) \cong Vect = (ベクトル空間の圏)
  2. LinComb-StFreeAlg = Kl(LinComb) \cong Mat = (行列の圏)
  3. LinComb-FreeAlg \cong FrmVect = (フレーム付きベクトル空間の圏)
  4. U:FrmVectVect (充満な忘却関手)
  5. K:MatFrmVect (充満な埋め込み関手)

Uはフレームを忘れる関手で、Kは、(A, LinComb(A)) を、標準的なフレーム unitA:A→LinComb(A) が付いたフレーム付きベクトル空間とみなす関手です。

おわりに

前節の線形結合モナドの例において、モナドの厳密自由代数/自由代数/代数がそれぞれ、形式的線形結合のベクトル空間/フレーム付きベクトル空間/ベクトル空間になっていました。3つの圏とそのあいだの関係もクリアになりました。

他のモナドに対しても同様な3つの圏を考えることによって、曖昧に使われている「自由☓☓☓」の意味をハッキリさせることができると思います。

*1:呼び名はハッキリとは決まってません。台圏、ベース圏とか呼ぶこともあります。

*2:自然数の表現としての List({1}) の要素は、自然数の一進記法とかタリー〈tally〉表現とか呼ばれます。

*3:添字を上付きにしているのは、微分幾何の習慣からの影響です。上下の添字を両方使う方法は、慣れると便利。

用語のバリエーション記述のための正規表現

専門用語においても、同義語・類義語、表記のゆれなどは相当にあります。「こんな言い方もある、あんな言い方もある」と列挙していると、ときに長大なリストになってしまうことがあります。列挙する代わりに正規表現を使うとコンパクトに記述できます。

正規表現により、用語のバリエーションを記述する方法を説明します。なお、「正規表現が何であるか」を知らなくてもかまいませんし、その説明もしません。もし興味があれば、次の記事を参照してください。

内容:

選択肢と省略可能

基本は次の二種類の書き方です。

  1. 選択肢: {A | B}
    AもBも同じ意味なので、どちらか一方を好きに選んでよいことを表します。選択肢がもっとたくさんあるときは、{A | B | C}、{A | B | C | D} のように書きます。
  2. 省略可能: {A}?
    Aは省略してもよいことを表します。

選択肢と省略可能を組み合わせて使ってもかまいません。{{A}? | B}C{D | E{F}?}? が表す語(文字列)をすべて列挙してみると次のようになります。

  1. ACD
  2. ACEF
  3. ACE
  4. AC
  5. CD
  6. CEF
  7. CE
  8. C
  9. BCD
  10. BCEF
  11. BCE
  12. BC

列挙するときは、次のような図を描いて、startからendに至る道を漏れなくたどるようにすると便利です。

具体例

具体例を出しましょう。

例 1

線形代数の文脈で、f:V→V という形(域と余域が同じ)線形写像を次のように呼ぶと約束したとしましょう。

  • {線形 | 線型}?{変換 | 自己写像}

この表現が表す語を列挙すると、

  1. 線形変換
  2. 線形自己写像
  3. 線型変換
  4. 線型自己写像
  5. 変換
  6. 自己写像

となります*1。これらの用語を許す理由は、例えば次のようになるでしょう。

  1. 「線形」と「線型」は表記のゆれなので、どちらでもよいとする。
  2. 「変換」と「自己写像」を同義語として使うと約束する。
  3. 線形代数の文脈なら、「線形」(または「線型」)は省略してもいいだろう。
例 2
  • {形式{的}? | フォーマル}?{体系 | システム}

これを展開すると:

  1. 形式的体系
  2. 形式的システム
  3. 形式体系
  4. 形式システム
  5. フォーマル体系
  6. フォーマルシステム
  7. 体系
  8. システム

「形式システム」、「フォーマル体系」はあまり聞きませんが、別に悪くはないでしょう。

例 3
  • {関数 | 演算{子}?}{記号 | 名}?

これを展開すると:

  1. 関数記号
  2. 関数名
  3. 関数
  4. 演算子記号
  5. 演算子
  6. 演算子
  7. 演算記号
  8. 演算名
  9. 演算

想定される文脈は、形式体系における言語の定義ですね。記号と実体(例えば、関数記号と関数そのもの)を混同するのはマズイのですが、「関数記号」を「関数」と呼んでしまうことは珍しくないので、その習慣を反映して「関数記号」も「関数」も同義語扱いしています。

例 4
  • {一貫性 | 整合性}{公理 | 等式 | 関係 | 恒等式 | 制約 | 法則}

これを展開すると:

  1. 一貫性公理
  2. 一貫性等式
  3. 一貫性関係
  4. 一貫性恒等式
  5. 一貫性制約
  6. 一貫性法則
  7. 整合性公理
  8. 整合性等式
  9. 整合性関係
  10. 整合性恒等式
  11. 整合性制約
  12. 整合性法則

これは、"coherence axiom"の翻訳語です。coherence → {一貫性 | 整合性} は訳語のゆれですが、英語でも次のバリエーションがあります。

  • coherence {axiom | equation | relation | identity | constraint | law}

英語と日本語での例

次の例は、セミナーで出したことがあります。

  • {{X-}?{parametrized | indexed}}? family {of Ys}?

先に、この表現を図にしたものを示しましょう。

この図を見ながら、上記の表現が表す語を列挙します。

  1. X-parametrized family of Ys
  2. X-parametrized family
  3. X-indexed family of Ys
  4. X-indexed family
  5. parametrized family of Ys
  6. parametrized family
  7. indexed family of Ys
  8. indexed family
  9. family of Ys
  10. family

この例は英語でしたが、日本語に翻訳すると:

  • {{X {の|で|-}? }? {パラメータ | インデックス | 添字} { {付き | 付けられた}? }? {Yの}? }? {ファミリー | 族}

全部列挙するのは大変なので、数個だけ挙げると:

  • Xのパラメータ付きYのファミリー (日本語としてやや不適切)
  • Xのパラメータ付きYの族 (日本語としてやや不適切)
  • Xのパラメータ付きファミリー (日本語として曖昧)
  • ...
  • ...
  • ファミリー

日本語になると、組み合わせ方によっては、不適切な語や曖昧な語が出てきてしまいます。「Xでインデックス付けられたYの族」あたりが(長いけど)適当でしょう。この言葉の意味は「XからYへの写像」と同じです。なんらかのニュアンスを込めてこんな言い方をするのです。

ウンザリする例

Lawvere theory という概念があります。

Lawvere theory の翻訳語としてあり得そうな日本語は次のようでしょう。

  • {代数{的}? | ローヴェア | Lawvere | {ローヴェア | Lawvere}{の}?代数{的}?}{理論 | セオリー | {理論 | セオリー}?圏}

展開すると:

  1. 代数的理論
  2. 代数的セオリー
  3. 代数的理論圏
  4. 代数的セオリー圏
  5. 代数的圏
  6. 代数理論
  7. 代数セオリー
  8. 代数理論圏
  9. 代数セオリー圏
  10. 代数圏
  11. ローヴェア理論
  12. ローヴェアセオリー
  13. ローヴェア理論圏
  14. ローヴェアセオリー圏
  15. ローヴェア圏
  16. Lawvere理論
  17. Lawvereセオリー
  18. Lawvere理論圏
  19. Lawvereセオリー圏
  20. Lawvere圏
  21. ローヴェアの代数的理論
  22. ローヴェアの代数的セオリー
  23. ローヴェアの代数的理論圏
  24. ローヴェアの代数的セオリー圏
  25. ローヴェアの代数的圏
  26. ローヴェアの代数理論
  27. ローヴェアの代数セオリー
  28. ローヴェアの代数理論圏
  29. ローヴェアの代数セオリー圏
  30. ローヴェアの代数圏
  31. ローヴェア代数的理論
  32. ローヴェア代数的セオリー
  33. ローヴェア代数的理論圏
  34. ローヴェア代数的セオリー圏
  35. ローヴェア代数的圏
  36. ローヴェア代数理論
  37. ローヴェア代数セオリー
  38. ローヴェア代数理論圏
  39. ローヴェア代数セオリー圏
  40. ローヴェア代数圏
  41. Lawvereの代数的理論
  42. Lawvereの代数的セオリー
  43. Lawvereの代数的理論圏
  44. Lawvereの代数的セオリー圏
  45. Lawvereの代数的圏
  46. Lawvereの代数理論
  47. Lawvereの代数セオリー
  48. Lawvereの代数理論圏
  49. Lawvereの代数セオリー圏
  50. Lawvereの代数圏
  51. Lawvere代数的理論
  52. Lawvere代数的セオリー
  53. Lawvere代数的理論圏
  54. Lawvere代数的セオリー圏
  55. Lawvere代数的圏
  56. Lawvere代数理論
  57. Lawvere代数セオリー
  58. Lawvere代数理論圏
  59. Lawvere代数セオリー圏
  60. Lawvere代数圏

カタカナ表記のバリエーション(ローヴェル、ロウヴィエールとか)、音引き、ナカグロなどのゆれも考えると、さらに増えます。ウゲーッ。

*1:[追記]自然言語では、形容詞の位置・順序は比較的自由です。例えば、「線形自己写像」も「自己線形写像」も許容されます。自由に動かせる形容詞を正規表現で表すのは面倒で不格好になりがちです。正規表現を拡張して、{A & B} で {AB | BA} を表すことがあります。これを使えば、「{線形 & 自己}写像 = {線形自己 | 自己線形}写像 = {線形自己写像 | 自己線形写像}」となります。[/追記]

構造とその素材の書き表し方

構造、例えばモノイドを書き表すとき、どう書くか? 省略や記号の乱用も含めたルールをどうするか? 毎回悩みます。ある程度の方針を決めたいと思います。

内容:

素材だけの指標

「指標」と「仕様」を使い分けるか? 使い分けるならどう使い分けるか? という話題を「指標と仕様」で書きました。現時点では結論がなくて、ケースバイケースとしか言いようがないですね。

でも今回は、構造の素材〈構成素 | constituent | ingredient〉だけを扱うので、指標に法則(公理)は書きません。モノイドなら、素材だけの指標は次のようになります。

signature Monoid {
 sort A
 operation m: A×A→A
 operation i: I→A
}

出てくる記号/名前を集合圏で考えていることを明示するなら:

signature Monoid {
 sort A in Set
 operation m: A×A→A in Set
 operation i: I→A in Set
}

in Set を何度も書くのが面倒なら次でもいいとします。sortは対象のことで、operationは射のことです。

signature Monoid in Set {
 sort A
 operation m: A×A→A
 operation i: I→A
}

Setを他の圏に置き換えてもいいです。例えば、R-ベクトル空間の圏R-Vectにしてみると:

signature Monoid in R-Vect {
 sort A
 operation m: A×A→A
 operation i: I→A
}

このときは、'×'をテンソル積'\otimes'と解釈し、'I'を1次元ベクトル空間とみた'R'と解釈します。そして、我々がよく使っている呼び名は代数〈多元環〉ですから、次のように書けばより馴染み深いでしょう。

signature Algebra  {
 sort A in R-Vect
 operation m: A\otimesA→A in R-Vect
 operation i: R→A in R-Vect
}

説明的な名前

モノイドには幾つかの構成素〈素材〉がありました。

構成素名 指標内での名前
台集合/台ベクトル空間 A
二項演算/双線形写像 m
単位 i

A, m, i は味も素っ気もない名前で、それだけ見せられて意味を想像するのは困難です。そこで、英字(ラテン文字)からなるキーワードにします。

構成素名(日本語) キーワード(英字)
台集合/台ベクトル空間 underlying
二項演算/双線形写像 binop
単位 unit

英字キーワードなら、ある程度は意味が想像できます。英字キーワードを使って指標を書いてみます。

signature Monoid in Set {
 sort underlying
 operation binop: underlying×underlying→underlying
 operation unit: I→underlying
}

長ったらしいので見にくくなったわ(泣)。簡潔な短い名前と長めの説明的な名前を、別名〈エイリアス | alias〉として結び付けることにしましょう。

signature Monoid in Set {
 sort A
 operation m: A×A→A
 operation i: I→A

 alias underlying = A
 alias binop = m
 alias unit = i
}

別名は使っても使わなくてもいいですが、いずれにしても、必要に応じて指標内での名前を説明的にすることができます。

インスタンスの書き方

指標で定義される構造のインスタンスを書くときよく使われる書き方は、記号の乱用を使って、

  • モノイド M = (M, m, i)

のように書く方法です。別なモノイドならば、

  • モノイド N = (N, m, i)

この書き方だと、Mの二項演算とNの二項演算を区別できません。区別するための書き方になると、人によりバラバラになります。

人によりバラバラになるのは致し方ない(対処の方法がない)ですが、なにかしら標準的な書き方を決めておきます。もちろん、ローカルな標準、僕がそうしたい標準に過ぎません。

標準的書き方: 構造の構成素を表すには、構造の名前に(指標で宣言した)構成素キーワードをドット区切りで繋げる。モノイドの例ならば、次のようです。

  • モノイド M = (M.underlying, M.binop, M.unit)
  • モノイド N = (N.underlying, N.binop, N.unit)

とりあえず、これを標準にします。しかし、この書き方は、長ったらしいし、世間でそんなに使われていません。そこで、書き方に次のバリエーションを認めることにします。

  1. ドット記法(標準の書き方)
  2. 下付き記法
  3. 転倒下付き記法
  4. 関数記法

例を見ればすぐに分かるでしょう。

  1. ドット記法:モノイド M = (M.underlying, M.binop, M.unit)
  2. 下付き記法:モノイド M = (Munderlying, Mbinop, Munit)
  3. 転倒下付き記法:モノイド M = (underlyingM, binopM, unitM)
  4. 関数記法: モノイド M = (underlying(M), binop(M), unit(M))

構成素ごとに記法を変えてみいいとします(混ぜてもOK)。例えば:

  • モノイド M = (underlying(M), binopM, unitM)

さらに、記号の乱用の規則を設けます: 'underlying'を予約語として扱い、'underlying'は省略してよい。例えば:

  • モノイド M = (M, binopM, unitM)

binop, unit のような説明的な名前ではなくて、短いほうの名前でもいいので、次も許します。

  • モノイド M = (M, mM, iM)

二項演算の記号はしばしば中置演算子記号が使われるので、そのことも指標で宣言しておきましょう。

signature Monoid in Set {
 sort A
 operation m: A×A→A
 operation i: I→A

 alias underlying = A
 alias binop = m
 alias unit = i
 alias (*) = binop
}

これで、アスタリスク記号が中置演算子記号だと宣言されました。次の書き方が有効です。

  • モノイド M = (M, (*)M, iM)

インスタンスごとに固有の別名を使ってもいいとします。別名の宣言は'where'で後から修飾することにすれば:

  • モノイド M = (M, (#), j) where (#) = (*)M, j = iM
  • モノイド N = (N, ($), k) where ($) = (*)N, k = iN

このくらいのバリエーションを許せば、既存の書き方はたいてい包摂できるでしょう。

追記 (翌日): もっとバリエーション

すぐ上(追記前の最後の文)で「このくらいのバリエーションを許せば、既存の書き方はたいてい包摂できるでしょう」と書いたのですが、まだ別のバリエーションが残っているようです。

圏(小さい圏)に対する素材だけの指標を書いてみます。

signature Category {
 sort O
 sort M
 operation dom: M→O
 operation cod: M→O
 operation id: O→M
 operation comp:M×M⊇→M
}

ここで、記号'⊇→'は部分写像を表します。圏の指標は少し特殊で、集合圏(射は写像)だけではなくて、部分写像の圏の射も必要とします。

圏論で通常使われている書き方をサポートしようとすると、別名(むしろ別記法)の宣言を強化する必要があります。この強化のために、無名ラムダ変数を使います*1

無名ラムダ変数(ハイフンまたはアンダースコア)による記法を復習すれば:

  1. 関数〈写像〉を、型を省略した(型無しではない)ラムダ記法で書く。例:λ(x, y).(3×x2 + y)
  2. ラムダ変数をハイフンまたはアンダースコアに置き換える。視認性の都合で、ハイフン/アンダースコアを丸括弧で囲んでもよい。異なる名前の変数を区別しない。例:λ(_, _).(3×(_)2 + _)
  3. λ部分を取り除いて本体だけ取り出す:例:(3×(_)2 + _)

こうして簡易ラムダ記法ができ上がります。この簡易ラムダ記法は、簡単な式以外では破綻します。上の例は破綻してます(名前による変数の区別を失っているので元に戻せない)。簡単な場合なら元に戻すことができます。

  • (5×_) なら λx.(5×x)
  • ((_)3) なら λx.(x3)
  • (_ + _) なら λ(x, y).(x + y) (2つのアンダースコアは元は別な変数だとみなして

関数fに対して、f(_) はfと同じです。

  • f(_) = λx.f(x) = f

二項演算に関しては、無名ラムダ変数も省略していいとします(Haskellと同じ記法)。

  • (+) = (_ + _) = λ(x, y).(x + y)

無名ラムダ変数を使って、別名(別記法)を宣言しましょう。

signature Category {
 sort O
 sort M
 operation dom: M→O
 operation cod: M→O
 operation id: O→M
 operation comp:M×M⊇→M

 alias (;) = comp
 alias id_ = id(_)
}

これで、comp(f, g) の代わりに f;g 、id(x) の代わりに idx でもいいことになります。それでも、comp(f, g) = g\circf という逆順〈反図式順〉に書く演算子記号はサポートできません。「二項演算子の左右(第一引数と第二引数)を逆順で書く演算子の宣言」が必要ですが、今日は深入りしないことにします。

O, M という短すぎる名前に英字キーワードの別名を宣言しましょう。

signature Category {
 sort O
 sort M
 operation dom: M→O
 operation cod: M→O
 operation id: O→M
 operation comp:M×M⊇→M

 alias (;) = comp
 alias id_ = id(_)
 alias obj = O
 alias mor = M
}

これで、圏Cの対象類を C.obj, Cobj, objC, obj(C) などと書けます。しかし、objC, obj(C) よりは、ObjC, Obj(C) が多いですね。大文字小文字の違いも別名に列挙すればいいのですが、面倒だから:

  • 大文字小文字の違いは宣言しなくても、適宜変えてよい

としましょう。大文字小文字の違いで異なる意味を持たせたかったら? -- そんときはそんときで対処します。

さて、Obj(C) を |C| と書くのはポピュラーですよね。これも無名ラムダ変数で書けます。

signature Category {
 sort O
 sort M
 operation dom: M→O
 operation cod: M→O
 operation id: O→M
 operation comp:M×M⊇→M

 alias (;) = comp
 alias id_ = id(_)
 alias obj = O
 alias mor = M
 alias |_| = obj(_)
}

aliasで宣言しているのは、構造それ自体とは無関係な書き方の約束だけです。別にどうだっていい話です。とはいえ、なにかしら書き方を約束しないと始まらないので、書き方を宣言する手段は必要です。


[追記に追記 date="翌々日"]モナドの場合を追加しておきます。モナドは圏の自己関手圏のモノイドなので、モノイドの指標をそのまま流用してもかまいません。

for C in CAT
signature Monoid {
 sort A in [C, C]
 operation m: A×A→A in [C, C]
 operation i: I→A in [C, C]
}

が、これじゃモノイドモナドの感じが出ませんね。それらしい記号に置き換えましょう。'*'は関手の図式順結合を表すとします。

for C in CAT
signature Monad {
 sort F in [C, C]
 operation μ: F*F→F in [C, C]
 operation η: Id→F in [C, C]

 alias underlying = F
}

C上のモナド(のインスタンス)Mがあると、M = (MF, Mμ, Mη) と書けます。underlying は F の別名なので、M = (Munderlying, Mμ, Mη) 。underlying は(記号の乱用により)省略可能で、転倒下付き記法でもいいので、M = (M, μM, ηM) 。

さらにモノグサして、下付き添字を省略して M = (M, μ, η) と書きたいとなると、これは演算子記号・関数記号のオーバーロード解決の問題になります。現実の記法では、省略(暗黙の前提)、記号の乱用、オーバーロードが入り乱れているのですが、無節操なモノグサ記法は誤解と混乱をまねくので、たいがいにしましょうね。[/追記に追記]

*1:無名ラムダ変数については「リー微分は共変微分か? -- 代数的に考えれば // ラムダ記法と無名ラムダ変数」でも説明し、使っています

分析と報告:不親切な書き方と迂闊な引用

過去の記事「リー微分は共変微分か? -- 代数的に考えれば」において、「リー微分は共変微分である」という間違ったことを書いていました。「間違った! リー微分は共変微分じゃない」に、間違いだと気付いた経緯が書いてありますが、その経緯はすごい回り道を経由しているので、端的な修正は「リー微分は共変微分か? -- 代数的に考えれば」への追記部分を参照してください。

「リー微分は共変微分である」と僕が間違って判断した原因は、共変微分の条件(公理)のひとつを忘れていて確認してなかったからです。さらに、条件を忘れていた原因をたどると、共変微分の条件をまとめた「双対接続ペア // 接続付き加群」の書き方が不親切だったからです。

上記引用部分で共変微分の条件(公理)を4種類出しています。

  1. 左共変微分:∇:M→Ω(A)\otimes_AM
  2. 右共変微分:∇:M→M\otimes_AΩ(A)
  3. テンソル積の代わりに内部ホムを使った形: ∇:M→[Der(A), M]A
  4. 内部ホムを使った形の記法を変えたもの

3番目の定義では、∇:M→[Der(A), M]A という写像が共変微分ですが、4番目の定義では、∇(m)(X) を ∇X(m) と書き方を変えて述べています。そのまま引用すると:

この書き方を使えば:

  1. XR-線形である。
    1. X(m + m') = ∇X(m) + ∇X(m')
    2. X(r・m) = r・∇X(m) for r∈R
  2. Xライプニッツ法則を満たす。
    X(a・m) = X(a)・m + a・∇X(m) for a∈A

「リー微分は共変微分か? -- 代数的に考えれば」(修正前)では、この4番目の定義を採用して、「∇XR-線形である」ことと、「∇Xライプニッツ法則を満たす」ことをチェックしてOKとしています。

しかし、∇:M→[Der(A), M]A というプロファイル(∇の域と余域の情報)のなかに、∇X と書いたときのXに関するA-線形性が含まれています。つまり、次の法則は暗黙に仮定されているのです。

  • m∈M を固定して ∇(-)(m) はA-線形である。
    1. (X + Y)(m) = ∇X(m) + ∇Y(m)
    2. (aX)(m) = a∇X(m)

この法則がもとの記事に明示的には書いてなかったので、共変微分の定義として引用するときにスッパリ忘れてしまった、というわけです。

次の2つの不注意から間違った判断に至ったのです。

  • 共変微分の定義を記述するとき、(間違いではないが)不親切だったこと
  • それを引用するとき、迂闊にもプロファイルに含まれるA-線形性を抜かしてしまったこと

こういうことが起こり得るから、不親切も迂闊もよろしくない、ということでオチ。すんませんでした。

間違った! リー微分は共変微分じゃない

リー微分は共変微分か? -- 代数的に考えれば」で、「リー微分も共変微分の一種だ」と書いたのですが間違いでした。リー微分は共変微分じゃないです。ごめんなさい。

過去記事を読み直していてミスを見つけた、とかではなくて、別な計算をしているときに、たまたま次の事実に気付きました。

  • 基礎微分D上の共変微分∇が歪対称ならば、Dは零微分になってしまう。

この事実は「リー微分が共変微分である」ことに矛盾するので、「リー微分が共変微分である」という主張はウソになります*1

こんな事情なので、「リー微分は共変微分か? -- 代数的に考えれば」のどこが間違っていたのか? この記事を書いている時点では全然チェックしていません。が、先入観(共変微分に違いなかろう)からの確認漏れが原因でしょうね。([追記 date="翌日"]もとの記事を修正しました。[/追記]

リー微分が共変微分ではないことを示すために、「基礎微分D上の共変微分∇が歪対称ならば、Dは零微分になってしまう」ことを使うのは回りくどいですが、考えた時系列をそのまま書き留めます。

[追記 date="翌日"]リー微分が共変微分ではないことを示すだけなら、簡単な反例を出せば済むことです。その説明はもとの記事の修正として書きました。[/追記]

内容:

言葉と記号に関する注意事項

"differential", "derivative", "derivation" の訳語がどれも「微分」なので、区別が出来なくて困ります(英語でもハッキリとは区別できませんけどね)。「導関数」、「導分」という訳語もありますが、使い分けの習慣も決まってないので、とりあえず「微分」だけでいきます。また、通常の微分を拡張または変形したような概念も「微分」と呼びます。要するに、「微分」は激しくオーバーロードされます。

f:X×Y→Z が写像のとき、fの左カリー化を f、fの右カリー化を f と書くことにします。

  • f:Y→Map(X, Z)
  • f:X→Map(Y, Z)

次が成立します。

  • f(y)(x) = f(x, y)
  • f(x)(y) = f(x, y)

f, f が、ここでの標準的な書き方ですが、特定の分野・文脈では別な記法も使います。なお、カリー化については「リー微分は共変微分か? -- 代数的に考えれば // カリー化」でより詳しく説明しています。

R-可換環微分と零微分

AとKは可換環*2として、φ:K→A という可換環準同型写像を一緒に考えた (A, K, φ) を相対可換環〈relative commutative ring〉と呼びます。Kを固定した場合、AはK上の可換環〈commutativa {ring | algebra} over K〉だともいいます。ここから先、K = R と固定して、実数体R上の可換環を考えます。R上の可換環を、短くR-可換環R-commutative {ring | algebra}〉ともいいます。

R-可換環 (A, R, φ) と (B, R, ψ) のあいだの準同型写像〈homomorphism〉は、f:A→B という可換環準同型写像で、φ;f = ψ (f\circφ = ψ)を満たすものです。

\require{AMScd}
\begin{CD}
{\bf R} @=     {\bf R} \\
@V{\phi}VV     @VV{\psi}V \\
A      @>f>>   B
\end{CD}

R上の可換環準同型写像の全体からなる圏は、commutative ring over R の圏なので、CRng/R と書きたくなります。が、圏論の概念からいえば commutative ring under R なので、R/CRng と書くべきでしょう(「オーバー圏、アンダー圏」参照)。ここでは、代数的な語感を優先して CRng/R にします*3

AはR-可換環 A = (A, R, φ) だとします(記号の乱用)。Mは両側A-加群(左右のスカラー乗法は一致)とします。MはR-ベクトル空間にもなります。写像 D:M×A→A が、微分適用〈{differential | derivative} application〉だとは、次が成立することです。

  1. Dは、R-双線形写像である。
  2. Dは、左変数(第一変数)に関してはA-線形写像である。
    For a, b∈A, X∈M, D(aX, b) = aD(X, b)
  3. Dは、右変数(第ニ変数)に関してはライプニッツの法則を満たす。
    For a, b∈A, X∈M, D(X, ab) = D(X, a)b + aD(X, b)

微分適用のことを単に微分といってしまうことがあります。

D(X, a) := 0 で定義される写像 D:M×A→A は微分適用になります。この微分適用を微分適用〈zero {differential | derivative} application〉と呼びましょう。すぐ上で注意した事情から、微分とも呼びます。零微分は特殊な微分であり、つまらない微分です。

習慣により、微分適用Dのカリー化は次の書き方をします。

  • D(-) = D-
  • D(-) = d-

つまり、

  • DX(a) = D(X)(a) = D(X, a)
  • da(X) = D(a)(X) = D(X, a)

加群の共変微分

AはR-可換環、MとNはA上の両側加群(左右のスカラー乗法は一致)、そして D:M×A→A は微分微分適用〉とします。写像 ∇:M×N→N が、D上の共変微分〈covariant derivative over D〉だとは、次が成立することです。

  1. ∇は、R-双線形写像である。
  2. ∇は、左変数(第一変数)に関してはA-線形写像である。
    For a∈A, X∈M, s∈N, ∇(aX, s) = a∇(X, s)
  3. Dは、右変数(第ニ変数)に関してはライプニッツの法則を満たす。
    For a∈A, X∈M, s∈N, ∇(X, as) = D(X, a)s + a∇(X, s)

D:M×A→A を、共変微分 ∇:M×N→N の基礎微分〈基礎微分適用 | ground {differential | derivative} {application}?〉と呼ぶことにします。共変微分基礎微分の上に定義される作用素だと考えます。

特に、M = N の場合を考えましょう。ライプニッツの法則を繰り返し書くと:

  • For a∈A, X, Y∈M, ∇(X, aY) = D(X, a)Y + a∇(X, Y)

∇のプロファイル(域と余域)が M×M→M なので、R-双線形写像としての対称性、歪対称性〈交代性〉を定義できます。

  • ∇が対称共変微分 :⇔ ∇が、R-双線形写像としての対称
  • ∇が歪対称共変微分 :⇔ ∇が、R-双線形写像としての歪対称

歪対称共変微分

基礎微分 D:M×A→A 上の共変微分 ∇:M×M→M が歪対称だとします。つまり、次が成立します。

  • ∇(Y, X) = -∇(X, Y)

こう仮定すると、∇は右変数に関してもA-線形になります。(対称だと仮定しても結果は同じです。)

   ∇(X, aY)
= -∇(aY, X)
= -a∇(Y, X)
= -a(-∇(X, Y))
= a∇(X, Y)

ライプニッツ法則と比較してみると、

  • a∇(X, Y) = D(X, a)Y + a∇(X, Y)

これより D(X, a)Y = 0 。a, X, Y は任意だったので、

  • 任意の a∈A, X, Y∈M に対して D(X, a)Y = 0

一般的には、これからただちに∇が零微分だとは言えませんが、Mが次の性質を持つなら∇は零微分です。

  • For b∈A, (∀Y∈M. bY = 0) ⇒ b = 0

ここまでの話の動機

通常の共変微分は、基礎微分を標準的な微分に固定して考えます。標準的な微分は“普遍性”を持つので、それさえ考えておけば他は不要、という発想なのかも知れません。しかし、微分を、引き戻しや前送りで移動すると、標準的ではない微分も登場します。

であるならば、任意の微分D(それを基礎微分と呼ぶ)と、D上の共変微分∇を組にした (D, ∇) を対象物と考えて調べてもよさそうです。基礎微分を取り替えれば、その上の共変微分達の世界も様変わりします。

実際、Z:M×A→A を零微分とすると、Z上の共変微分 ∇:M×N→N は、R-可換環Aに関する双線形写像になります。基礎微分を特殊な微分に取れば、A-双線形写像も共変微分とみなせるわけです。これはちょっと面白い気がしました。

リー微分が共変微分ではないこと

[追記 date="翌日"]リー微分が共変微分ではないことを示すだけなら、簡単な反例を出せば済むことです。その説明はもとの記事の修正として書きました。[/追記]

Uを多様体Rnの開集合でもよい)として、C(U) に関数の足し算/掛け算を考えたR-可換環をAとします。Γ(TU) は接バンドルのセクションの空間、つまり接ベクトル場の空間です。Γ(TU) はR-ベクトル空間ですが、R-可換環A上の加群になっています。M = Γ(TU) と置くと、MはA-加群です。

この状況で、A-加群Mの共変微分 ∇:M×M→M は微分幾何の意味の共変微分になります。ただし、∇の基礎微分Dが標準的な微分微分適用〉だとは仮定しません。なにかしらの微分 D:M×A→A (Γ(TU)×Γ(TU)→C(U))があると仮定するだけです。

A-加群Mは、前々節で述べた条件を満たします。A = C(U), M = Γ(TU) だったので、次がその条件ですね。

  • For b∈C(U), (∀Y∈Γ(TU). bY = 0) ⇒ b = 0

bY = 0 は、Uの各点pごとに b(p)Y(p) = 0 なので、ベクトル空間の議論に帰着できます。

M = Γ(TU) にはリー括弧があるので、それを [-, -] とします。リー微分 L は、

  • L(X, Y) := [X, Y] = X\circY - Y\circX

と定義されます。Lが共変微分であると仮定すると、Lは定義より歪対称なので、Lの基礎微分Dは零微分になります。しかし、実際にはリー微分の基礎微分は標準的な微分であり(Uが0次元でないなら)零微分ではありません。これは矛盾なので、仮定「Lが共変微分である」は否定されます。

*1:これは、「気付いた事実のほうを信じるならば」ですが、この記事に書いた内容のほうが、以前の記事より確実だと思います。

*2:掛け算は結合的・単位的です。

*3:記事内で CRng/R を参照してないけど(苦笑)。

訂正+α: 逆方向グロタンディーク平坦化圏の重要性

訂正予告: バンドルの圏とグロタンディーク平坦化」で予告したように、記事「ベクトルバンドル射の逆写像: 記法の整理をかねて」を修正しました。修正箇所は、次の1行だけです。

  • 修正前: インデックス付き圏 VectBdl[-] のグロタンディーク平坦化圏が VectBundle である。
  • 修正後: インデックス付き圏 VectBdl[-] の順方向グロタンディーク平坦化圏VectBundle である。

「順方向」の一語を追加して、「順方向グロタンディーク平坦化圏」は記事「グロタンディーク構成と積分記号」へのリンクとしました。

一語修正が予告をするほどのことかと思うでしょうが、この一語修正は重要なんです。その説明を以下にします。

E, F がベクトルバンドルだとして、ftot:Etop→Ftot と fbase:|E|→|F| の組 f = (ftot, fbase) がベクトルバンドル射であることは、次の図式が可換になることです。

\require{AMScd}\newcommand{\hyph}{\mbox{-}}
\begin{CD}
E_{tot} @>f_{tot}>> F_{tot} \\
@V{\pi_E}VV         @VV{\pi_F}V \\
 |E|    @>f_{base}>> |F|
\end{CD}

ベクトルバンドルベクトルバンドル射から構成される圏を VectBundle とします。これはいいですよね。

さて、インデックス付き圏 VectBdl[-] を考えると、これはベース圏〈base category | indexing category〉Man上で定義された反変関手 VectBdl[-]:ManCAT になっています。ベース圏の射 x:M→N in Man に対して、VectBdl[x]:VectBdl[N]→VectBdl[M] と逆方向の関手が対応します。VectBdl[x] は、xによるベクトルバンドルの引き戻し x* です。

  • x*F は、VectBdl[x](F) の略記

グロタンディーク構成と積分記号」で述べた積分記号を使ってグロタンディーク平坦化を表します。ただし、無名変数(ハイフン)の使用を許します。

  • 順方向グロタンディーク平坦化圏: \int_{\rightarrow\; {\bf Man}} {\bf VectBdl}[\hyph]
  • 逆方向グロタンディーク平坦化圏: \int_{\leftarrow\;  {\bf Man}} {\bf VectBdl}[\hyph]

先に定義した圏 VectBundle と、順方向グロタンディーク平坦化圏は圏同値になります。

  •  {\bf VectBundle} \cong \int_{\rightarrow\; {\bf Man}} {\bf VectBdl}[\hyph]

ここまでは特に間違いはありません。

しかし、実際に圏を使うとき、VectBundle は使い勝手が良くなくて、逆方向グロタンディーク平坦化のほうが便利なのです。よって、次のように定義する案もあるし、そうしている事例もあります。

  •  {\bf VectBundle} := \int_{\leftarrow\; {\bf Man}} {\bf VectBdl}[\hyph]

マズイことには、僕自身が無意識に、'VectBundle' を逆方向グロタンディーク平坦化圏の意味で使ってしまったりします。ちゃんと区別するために、例えば次のように定義しておけばいいのかな。

  •  {\bf VectBundle}_{\rightarrow} := \int_{\rightarrow\; {\bf Man}} {\bf VectBdl}[\hyph]
  •  {\bf VectBundle}_{\leftarrow}  := \int_{\leftarrow\;  {\bf Man}} {\bf VectBdl}[\hyph]

機械的に使えるお約束なら:

  •  {\mathcal C}_{\rightarrow} := \int_{\rightarrow\; {\mathcal B}} {\mathcal C}[\hyph]
  •  {\mathcal C}_{\leftarrow}  := \int_{\leftarrow\; {\mathcal B}} {\mathcal C}[\hyph]

このお約束を使うと、定義が異なる3つの圏が登場します。

  1. VectBundle
  2. VectBdl
  3. VectBdl

1番目と2番目は同一視可能です。

…… まー、ここらへんは未整理状態のままってことです。でも、逆方向グロタンディーク平坦化圏  \int_{\leftarrow\;  {\bf Man}} {\bf VectBdl}[\hyph] が重要なことは強調しておきます。順方向グロタンディーク平坦化圏でうまくいかないときは、逆方向グロタンディーク平坦化圏を試してみましょう。

訂正予告: バンドルの圏とグロタンディーク平坦化

昨日の記事「ベクトルバンドル射の逆写像: 記法の整理をかねて」で、記法を整理すると言いながら、未整理、あるいは曖昧なところがありました。当該記事に修正を入れるか、別記事(この記事ではない)で訂正します。

なにがマズイかと言うと; ナントカバンドルのインデックス付き圏と、そのグロタンディーク平坦化の関係が曖昧でした。「グロタンディーク構成と積分記号」で書いたように、グロタンディーク平坦化には次の種類があります。

  1. インデックス付き圏の順方向平坦化
  2. インデックス付き圏の逆方向平坦化
  3. 余インデックス付き圏の順方向平坦化
  4. 余インデックス付き圏の逆方向平坦化

そうすると、次の言い方は、どの平坦化を使っているか分からないので曖昧です。

  • インデックス付き圏 VectBdl[-] のグロタンディーク平坦化圏が VectBundle である。

どの平坦化を使うかはけっこう重要な問題で、ひとつの平坦化に固定するのはよろしくありません。なので、後日本日訂正します。[追記]訂正記事を書きました。→ 「訂正+α: 逆方向グロタンディーク平坦化圏の重要性[/追記]

ベクトルバンドル射の逆写像: 記法の整理をかねて

一昨日の記事「接ベクトル場の定義:補遺」の続きをちょっと書こうかと思ったら、記号の説明がけっこうめんどくさいことに気づきました。とりあえず、後で参照できるように記法を整理しておくことにします。記法は、過去の記事(↓)とできるだけ(完全に、ではない)合わせます。

記法の羅列だけではつまらないので、表題の「ベクトルバンドル射の逆写像」を話題にします。目標は、次の可換図式を示すことです。この図式内に登場する記号を順に説明していきます。でも、説明はあまり丁寧じゃないです。

\require{AMScd}\newcommand{\hyph}{\mbox{-}}\newcommand{\inv}[1]{ {#1}^{\mbox{inv}} }
\begin{CD}
Iso{\bf VectBundle}(E, F)/x @>{(\hyph)^{-1} }>>      Iso{\bf VectBundle}(F, E)/x^{-1} \\
@V{ (\hyph)^{\uparrow} }VV                           @A{(\hyph)^{\downarrow} }AA \\\
\Gamma_{|E|}(iso(E, x^\ast F))  @>{\inv{(\hyph)} }>> \Gamma_{|F|}(iso(F, x_\ast E))
\end{CD}

[追記]まだ未整理なところがあることを「訂正+α: 逆方向グロタンディーク平坦化圏の重要性」に書きました。[/追記]

内容:

多様体の圏

r階微分可能多様体の圏を Man(r) とします。ほとんどの場合、なめらかな〈無限階微分可能な〉多様体を扱うので、Man := Man(∞) と約束します。

特別な射を表す形容詞 Iso, End, Aut は、ホムセット記法に前置することにします。

  • IsoMan(M, N) := {f∈Man(M, N) | f は iso}
  • EndMan(M) := Man(M, M)
  • AutMan(M) := IsoMan(M, M)

区切り目が分かりにくいときは、アンダースコア付きの Iso_, End_, Aut_ を前置することもあります。

ホムセットを表すために、C(M, N) := Man(M, N) も使います。C(M, R) は C(M) と略記します。ただし、C(M) と書いたときは可換環構造を一緒に考えていることが多いです。明白に可換環であることを強調したいときは、A(M), Ω0(M) も使います。A(M) はマリオスの"algebraized space"の記法、Ω0(M) は0次微分形式の可換環の意味です。マリオスの概念・記法に関しては次の記事を参照してください。

僕のお気に入りの言葉使いなら、M \mapsto A(M) は、多様体の圏Man上の(全域的)可換環モダリティです。このモダリティは、反変関手に拡張できて、層の素材になります。モダリティに関しては:

ベクトルバンドル

ベクトルバンドルは次の構成素からなります。

  1. 全空間
  2. 底空間
  3. 射影
  4. 典型ファイバー(なくてもかまわないが)

Eがベクトルバンドルのとき、記号を節約するために次の書き方をすることにします。

  1. 全空間: Etot、誤解のおそれがなければ E
  2. 底空間: |E|
  3. 射影: πE
  4. 典型ファイバー: E0

典型ファイバーE0は、点0での実際のファイバー(後述)と区別できませんが、たいした弊害はないのでいいとします。

f:E→F がベクトルバンドルの準同型(ベクトルバンドル射)のとき、全空間のあいだの写像を ftot:Etot→Ftot、底空間のあいだの写像を fbase:|E|→|F| とします。次の可換図式が、f = (ftot, fbase) がベクトルバンドル射である条件です。

\require{AMScd}
\begin{CD}
E_{\mbox{tot}} @>{f_{\mbox{tot}} }>>   F_{\mbox{tot}} \\
@V{\pi_E}VV                            @VV{\pi_F}V \\
 |E|           @>{f_{\mbox{base}} }>>  |F|
\end{CD}

誤解のおそれがなければ、f:Etot→Ftot, f:|E|→|F| と記号の乱用(名前'f'のオーバーロード)をします。記号を乱用した可換図式は:

\require{AMScd}
\begin{CD}
E     @>{f }>>  F \\
@V{\pi_E}VV     @VV{\pi_F}V \\
 |E|  @>{f }>>  |F|
\end{CD}

p∈|E| に対して、Ep = {u∈E | πE(u) = p} はp上のファイバー〈fibre | fiber〉です。fp:Ep→Ff(p) はファイバー間の写像を表します。

N⊆|E| が部分多様体(多くの場合は開集合)のとき、E|N は、((πE)-1(N), (πE)|E)-1(N), N) により定義されるベクトルバンドル制限ベクトルバンドル〈restricted vector bundle〉)を表します。ファイバー Ep は、制限ベクトルバンドル E|{p} の全空間と考えることができます。次のような自明な可換図式があります。


\begin{CD}
E_p @>f_p>> F_p \\
@VVV     @VVV \\
\{p\} @>>> \{f(p)\}
\end{CD}

ベクトルバンドルの圏

ベクトルバンドルの圏を「主バンドルの基本的なこと (1/2)」に従って、VectBundle と書きます。当然ながら、次が成立します。

  • f:E→F in VectBundle ⇔ f∈VectBundle(E, F)

x:|E|→|F| をひとつ選んで、

  • VectBundle(E, F)/x := {f∈VectBundle(E, F) | fbase = x}

と定義します。f∈VectBundle(E, F)/x であるとき、fはx上の射〈morphism over x〉ともいいます。なお、「主バンドルの基本的なこと (1/2)」では、VectBundle(E, F)/x を VectBundle(E, F)[x] と書いてました。

M∈|Man| に対して、圏 VectBdl[M] を次のように定義します。

  • |VectBdl[M]| := (M上のベクトルバンドルの全体)
  • For E, F∈|VectBdl[M]|,
    VectBdl[M](E, F) := VectBundle(E, F)/idM

後で述べるベクトルバンドルの引き戻しを使うと、x:M→N に対して、関手 x*:VectBdl[N]→VectBdl[M] が定義できるので、VectBdl[-] は全体としてインデックス付き圏〈indexed category〉になります。

VectBundleVectBdl[-] の関係は次のとおり。

VectBdl[-] からのグロタンディーク構成で得られるファイバー付き圏は、Base:VectBundleMan です。ここで、Baseはベクトルバンドルにその底空間を対応させる関手です。

今までの話で、ファイバーがベクトル空間であることは使ってないので、一般のファイバーバンドルでも同じです。

  • Bundle はファイバーバンドルの圏
  • Base:BundleMan が底空間関手から定義されるファイバー付き圏
  • Bdl[-] は、ファイバー付き圏に対応するインデックス付き圏

セクションの空間とベクトルバンドルの引き戻し

Eがベクトルバンドルのとき、r階微分可能なセクションの集合を Γ(r)(E) と書きます。Γ(E) := Γ(∞)(E) と約束するので、階数rを書くことはほぼありません。Eの底空間を添えて Γ|E|(E) とも書きます。この書き方は冗長ですが、ときに役立ちます。

Fがベクトルバンドルで、x:M→|F| が(なめらかな)写像のとき、s:M→F がx上のセクション〈section over x〉、またはxに沿ったセクション〈section along x〉だとは次のことです。

  • πF\circs = x : M→|F|

x上のセクションの全体を ΓM(F/x) と書きます。例えば、α:R⊇(a, b)→R2 が平面曲線(運動)とすると、αの速度ベクトル関数vは、v∈Γ(a, b)(T(R2)/α) となります。次の図式が可換になります。


\begin{CD}
{\bf R}\supseteq (a, b) @>v>>       T({\bf R}^2) \\
@|                                  @V{\pi}VV \\
(a, b)                  @>\alpha>>  {\bf R^2}
\end{CD}

x:M→|F| により、FをM上に持ってくることができます。これを、Fのxによる引き戻し〈pullback〉と呼び、x*F と書きます。ベクトルバンドルの引き戻しの厳密な構成法は示しませんが、次の同型が標準的に成立します。

  • ΓM(x*F) \cong ΓM(F/x) -- 引き戻しとセクションの関係

例えば、すぐ上の平面曲線(運動)の例なら:

  • Γ(a, b)*T(R2)) \stackrel{\sim}{=} Γ(a, b)(T(R2)/α)

ベクトルバンドルに対する様々な構成

線形代数における多くの構成は、ベクトルバンドルにも適用できます。例えば、直和 \oplusテンソル\otimes、双対空間 (-)* などは、ベクトルバンドルに対しても構成できます。

ベクトル空間に対する別な構成をあげます; ベクトル空間 X, Y に対して、XからYへの線形写像の全体からなるベクトル空間を hom(X, Y) または [X, Y] と書いて、内部ホムベクトル空間〈internal hom vector space〉とか指数ベクトル空間〈exponential vector space〉と呼びます。

内部ホムベクトル空間の部分集合(部分ベクトル空間とは限らない)として、次があります。

  • iso(X, Y) : IsoVect(X, Y) に対応するベクトルからなる部分集合。iso(X, Y)⊆hom(X, Y)
  • end(X) : hom(X, X) のこと。end(X) = hom(X, X) 。end(X) は多元環〈代数〉になる。
  • aut(X) : iso(X, X) のこと。aut(X)⊆end(X) 。aut(X) は群になる。

w∈iso(X, Y) 可逆線形写像に対応するので、逆があります。その逆を w-1 と書くと後で混乱のもとになるので、w と書くことにします。(-):iso(X, Y)→iso(Y, X) です。特別な場合として、(-):aut(X)→aut(X) があり、群の逆元を与えます。

線形代数の構成を真似するには、その舞台として VectBdl[M] (M∈|Man|)をとります。

  1. E, F∈|VectBdl[M]| に対して、E×F を構成できる。E×F はベクトルバンドルにならなくてもいいので、E×F∈|Bdl[M]| と考える。
  2. E, F∈|VectBdl[M]| に対して、E\oplusF を構成できる。E\oplusF の台は E×F だがベクトルバンドルの構造を与えるので、E\oplusF∈|VectBdl[M]| 。
  3. E, F∈|VectBdl[M]| に対して、E\otimesF を構成できる。E\otimesF∈|VectBdl[M]| 。
  4. E∈|VectBdl[M]| に対して、E* を構成できる。E*∈|VectBdl[M]| 。
  5. E, F∈|VectBdl[M]| に対して、hom(E, F) を構成できる。hom(E, F)∈|VectBdl[M]| 。
  6. E, F∈|VectBdl[M]| に対して、iso(E, F) を構成できる。iso(E, F) はベクトル空間にはならないので、iso(E, F)∈|Bdl[M]|
  7. E∈|VectBdl[M]| に対して、end(E) を構成できる。end(E) はベクトル空間構造に加えて乗法を持ち多元環〈代数〉になるので、end(E)∈|AlgBdl[M]| 。AlgBdl[M] は、M上の多元環〈代数〉バンドルの圏。
  8. E∈|VectBdl[M]| に対して、aut(E) を構成できる。aut(E) はベクトル空間にはならないが群になるので、aut(E)∈|GrpBdl[M]| 。GrpBdl[M] は、M上の群バンドルの圏。

ベクトル空間に対する構成とベクトルバンドルに対する構成は同じ名前で呼ぶことにします。「ホイットニー和」のような特別な呼称は使いません。

演算子記号 ベクトル空間 ベクトルバンドル
× ベクトル空間の直積集合 ベクトルバンドルの直積バンドル
\oplus 直和ベクトル空間 直和ベクトルバンドル
\otimes テンソル積ベクトル空間 テンソルベクトルバンドル
 (\hyph)^\ast 双対ベクトル空間 双対ベクトルバンドル
hom(-, -) 内部ホムベクトル空間 内部ホムベクトルバンドル
iso(-, -) 内部アイソ集合 内部アイソバンドル
end(-) 内部エンド多元環 内部エンド多元環バンドル
aut(-) 内部オート群 内部オート群バンドル

これらの構成は、集合のレベルでは、ファイバーごとに構成して寄せ集めることになります。


E\times F = \coprod_{p\in M}(E_p \times F_p) \\
E\oplus F = \coprod_{p\in M}(E_p \oplus F_p) \\
E\otimes F = \coprod_{p\in M}(E_p \otimes F_p) \\
E^\ast = \coprod_{p\in M} E^\ast  \\
hom(E, F) = \coprod_{p\in M} hom(E_p, F_p) \\
iso(E, F) = \coprod_{p\in M} iso(E_p, F_p) \\
end(E) = \coprod_{p\in M} end(E_p) \\
aut(E) = \coprod_{p\in M} aut(E_p) \\

ベクトルバンドルの引き戻しの圏論的性質

x:M→N in Man のとき、F∈|VectBdl[N]| をxで引き戻して、x*F∈|VectBdl[M]| を作れます。前節の「ファイバーを寄せ集める」記法を使えば次のように書けます。

  •  x^\ast F := \coprod_{p\in M}F_{x(p)}

g:F→G in VectBdl[N] のとき、x*g:x*F→x*G in VectBdl[M] も次のように書けます。

  •  x^\ast (f:F \to G) := \coprod_{p\in M} (f_{x(p)} : F_{x(p)} \to G_{x(p)})

もちろんこれは、雰囲気的な書き方なので、別途厳密な確認が必要ですが、x*VectBdl[N]VectBdl[M] という関手になっていることは分かるでしょう。ベクトルバンドルに限らず、一般的なファイバーバンドルや、特定の構造が付いたバンドル(例: 多元環バンドル、群バンドル)も引き戻せるので、次のような関手もあります。

  • x*:Bdl[N]Bdl[M]
  • x*:AlgBdl[N]AlgBdl[M]
  • x*:GrpBdl[N]GrpBdl[M]

要するに、N上のナントカバンドルの圏からM上のナントカバンドルの圏への引き戻し関手が定義できます。

注目すべきことは、引き戻し関手により、前節で定義した様々な構成が(up-to-iso で)保存されることです。


x^\ast (E\times F) \cong x^\ast E \times x^\ast F \\
x^\ast (E\otimes F) \cong x^\ast E \otimes x^\ast F \\
x^\ast (E\oplus F) \cong x^\ast E \oplus x^\ast F \\
x^\ast (E^\ast) \cong (x^\ast E)^\ast \\
x^\ast hom(E, F) \cong hom(x^\ast E, x^\ast F) \\
x^\ast iso(E, F) \cong iso(x^\ast E, x^\ast F) \\
x^\ast end(E) \cong end(x^\ast E) \\
x^\ast aut(E) \cong aut(x^\ast E) \\

なぜ引き戻しが構成を保存するか? だいたいの感じをつかむために、次の典型的等式変形を見てください。


\:\:\:\: x^\ast (E\times F) \\
 =  \coprod_{p \in M}(E\times F)_{x(p)} \\
 =  \coprod_{p \in M}( E_{x(p)} \times F_{x(p)} ) \\
 = x^\ast E \times x^\ast F

これ以上の詳細は述べませんが、ベクトルバンドルの圏は、ベクトル空間の圏とほぼ同じように扱える便利な圏なのは分かるでしょう。

ベクトルバンドル射のセクション化

以下のような同型があります。

  • VectBundle(E, F)/x \cong Γ|E|(hom(E, x*F))

この同型の左から右への写像セクション化〈sectionize〉と呼びます(定義はすぐ後)。f∈VectBundle(E, F)/x に対して、それをセクション化したものを f と書くことにします(f∈Γ|E|(hom(E, x*F)))。

セクション化 f \mapsto f のだいたいのところを記します。

  1. p∈|E| に対して、fが決めるファイバーのあいだの写像は fp:Ep→Fx(p) 。つまり、fp∈hom(Ep, Fx(p)) 。
  2. 内部ホムベクトルバンドルの作り方から、hom(Ep, Fx(p)) \cong (hom(E, x*F))p なので、fp∈(hom(E, x*F))p とみなしてよい。
  3. 上の“みなし”のもとで、p \mapsto fp は、|E|→hom(E, x*F) というセクションになる。このセクションを f とする。

セクション化 f \mapsto f の逆写像が作れるので、それを s \mapsto s とします。(-)|E|(hom(E, x*F))→VectBundle(E, F)/x を、反セクション化〈desectionize | 脱セクション化〉と呼びましょう。


\begin{CD}
{\bf VectBundle}(E, F)/x  @>{(\hyph)^{\uparrow} }>>  \Gamma_{|E|}(hom(E, x^\ast F)) \\
@|                                                    @| \\
{\bf VectBundle}(E, F)/x  @<{(\hyph)^{\downarrow} }<< \Gamma_{|E|}(hom(E, x^\ast F)) \\
\end{CD}

セクション化/反セクション化の同型により、ベクトルバンドル射と適当なベクトルバンドルのセクションは同一視可能になります。

ベクトルバンドル射の逆写像と対応するセクション

底空間のあいだの写像 x:|E|→|F| が可逆だとして、セクション化/反セクション化の同型 VectBundle(E, F)/x ←→ Γ|E|(hom(E, x*F)) は、次の同型も導きます。

  • IsoVectBundle(E, F)/x ←→ Γ|E|(iso(E, x*F))

ただし、iso(E, x*F) はもはやベクトルバンドルではないことに注意してください。iso(E, x*F) はベクトルバンドルではないファイバーバンドルです。

可逆なベクトルバンドル射ならば、逆射(ベクトルバンドル準同型としての逆写像)を対応付けることができるので、次の同型もあります。

  • IsoVectBundle(E, F)/x ←→ IsoVectBundle(F, E)/x-1

これらから、冒頭に出した可換図式の一部を描けます。

\require{AMScd}\newcommand{hyph}{\mbox{-}}
\begin{CD}
Iso{\bf VectBundle}(E, F)/x @>{(\hyph)^{-1} }>>      Iso{\bf VectBundle}(F, E)/x^{-1} \\
@V{ (\hyph)^{\uparrow} }VV                           @A{(\hyph)^{\downarrow} }AA \\\
\Gamma_{|E|}(iso(E, x^\ast F))  @.                   \Gamma_{|F|}(iso(F, x_\ast E))
\end{CD}

欠けている射(下の段の左から右)も、残りの射から構成できます。

  • (-)inv := (-)\circ(-)-1\circ(-) = (((-))-1)

しかし、より直接的に (-)inv を記述してみましょう。ちょっと細かい話をしますが、実用上は次の定義で十分です。

  • For s∈Γ|E|(iso(E, x*F)),
    sinv := s\circ(x-1)

最初に、(-):iso(E, x*F)→iso(x*F, E) in Bdl[|E|] というバンドル射(ベクトルバンドル射ではない)があることを注意します。これは、各点ごとの (-):iso(Ep, Fx(p))→iso(Fx(p), Ep) を寄せ集めて束ねればいいわけです。

次に、s∈Γ|E|(iso(E, x*F)) に対して、

  • s := (-)\circs

と定義します。点ごとの値は、

  • s(p) := s(p)

です。s\circ(x-1)∈Γ|F|(iso(x*F, E)/x-1) であることは分かります。

ところで引き戻しとセクションの関係から、

  • Γ|F|(iso(x*F, E)/x-1) \cong Γ|F|((x-1)*(iso(x*F, E)))

右辺の Γ(-) のなかのバンドルは、次のような同型の列で変形できます。x* = (x-1)* です。


\:\:\:\: (x^{-1})^\ast(iso(x^\ast F, E)) \\
\cong    iso((x^{-1})^\ast x^\ast F, (x^{-1})^\ast E) \\
\cong    iso(F, x_\ast E)

結局、

  • Γ|F|(iso(x*F, E)/x-1) \cong Γ|F|(iso(F, x*E))

この同型に沿って s\circ(x-1)∈Γ|F|(iso(x*F, E)/x-1) を右に動かせば、sinv∈Γ|F|(iso(F, x*E)) が得られます。

接ベクトル場の定義:補遺

多様体上の一点での接ベクトル、あるいは接ベクトル場の定義は何種類もあります。もちろん、どれも同値なので、どれをプライマリーな定義に選ぶかは趣味の問題になります。僕は微分作用素としての接ベクトル/接ベクトル場の定義をプライマリーにします。これは、愛着があるとか親の遺言とかの理由ではなくて、使い勝手がいいと感じるからです。

多様体Mの開集合U上に局所座標写像 x:U→Rn がある状況で考えます。x(U) = V, V⊆Rn と置きましょう。すると U \stackrel{\sim}{=} V (微分同相)です。そして、C(U) \stackrel{\sim}{=} C(V) (関数環として同型)ですが、この同型は次で与えられます。

  • xによる引き戻し x*:C(V)→C(U)
  • xによる前送り = x-1による引き戻し x* = (x-1)*:C(U)→C(V)

x*, x* の定義は:


\mbox{For}\: g\in C^{\infty}(V),\: x^\ast(g) := g \circ x \\
\mbox{For}\: f\in C^{\infty}(U),\: x_\ast(f) := f \circ (x^{-1})

ユークリッド空間上の関数環 C(V) 上の作用素(関数に関数を対応させる操作) K:C(V)→C(V) があるとき、それを多様体上に持ってくるには、


\mbox{For}\: f\in C^{\infty}(U),\: L(f) := x^\ast(K(x_\ast(f)))

あるいは、


L := x^\ast \circ K \circ x_\ast \;:\; C^{\infty}(U) \to C^{\infty}(U)

と定義すればいいでしょう。可換図式で書くなら:

\require{AMScd}\newcommand{where}{\:\:\: \mbox{where}\:}
\begin{CD}
C^{\infty}(U) @>L>>  C^{\infty}(U) \\
@V{x_\ast}VV        @AA{x^\ast}A \\
C^{\infty}(V) @>K>>  C^{\infty}(V) \\
\end{CD}

Lは、Kとxに依存して構成される作用素です。いま、x*\circK\circx* を K/x と書くと約束します。すると:


L := K/x \where K/x = x^\ast \circ K \circ x_\ast

以上の準備のもとで、微分作用素としての接ベクトル場(の基底要素)の定義を述べます。作用素Kとして、∂i:C(V)→C(V) を取るだけのことです。ここで、∂i は、第i座標方向への偏微分作用素です。∂i は通常、\frac{\partial}{\partial x^i} とか変数名付きで書かれますが、変数が出現するのはとても具合が悪い(理由は「微分計算、ラムダ計算、型推論」参照)ので、番号だけで書きます。

作用素Kとして、∂iを使った場合の、多様体上の作用素Lは、


L := \partial_i/x \where \partial_i/x = x^\ast \circ \partial_i \circ x_\ast

ですね。L(f) がどうなるかを見ると:


\:\:\:\: L(f) \\
= (\partial_i/x)(f) \\
= (x^\ast \circ \partial_i \circ x_\ast)(f) \\
= x^\ast(\partial_i (x_\ast(f))) \\
=  (\partial_i(f \circ (x^{-1})))\circ x

 \partial_i/x よりは、 \partial/\partial x^i あるいは  \frac{\partial}{\partial x^i} のほうが皆さんお馴染みの記号でしょう。結局:


\:\:\:\: \frac{\partial f}{\partial x^i} \\
= \frac{\partial}{\partial x^i}(f) \\
:=  (\partial_i(f \circ (x^{-1}))) \circ x

多様体上の(ユークリッド空間上のではない!)偏微分作用素 \frac{\partial}{\partial x^i} は、ユークリッド空間上の作用素 \partial_i と、局所座標写像 x による前送り/引き戻しだけから定義されます。それ以外の概念(例えばなめらかな曲線)を必要とはしません。

 \frac{\partial}{\partial x^1}, \frac{\partial}{\partial x^2}, \cdots , \frac{\partial}{\partial x^n} を基底として、関数係数で一次結合を作れば、(U上の)一般の接ベクトル場になります。


より詳しい事情は、次の記事を参照してください。

[追記]訂正した:

K:C(V)→C(V) がるとき、 K:C(V)→C(V) があるとき、
x*\circK\circx* を L/x と書くと約束します。 x*\circK\circx* を K/x と書くと約束します。
 \frac{\partial}{\partial x^1}, \frac{\partial}{\partial x^2}, \cdots , \frac{\partial}{\partial x^1}  \frac{\partial}{\partial x^1}, \frac{\partial}{\partial x^2}, \cdots , \frac{\partial}{\partial x^n}

[/追記]

MathJaxで可換図式

だいぶ前から、はてなブログTeX数式サポートはMathJaxを採用しています(昔はサーバー側で画像にレンダリングしていました)。ブラウザ側JavaScriptで数式レンダリングを実行するので、ページ表示が重くなってしまいますが、これは致し方ありません。

はてなブログのMathJaxで、可換図式を描きたいと思いました。MathJaxには、LaTeXのパッケージに相当するMathJax拡張〈MathJax extensions〉というライブラリモジュール機能があります。AMScdというMathJax拡張(のモジュール)があり、これをロードすると、可換図式が描けます。

ただし、AMScdで描けるのは、横方向の矢印と縦方向の矢印だけです。斜めの線や曲がった線は描けません。XyJaxというMathJax拡張(https://sonoisa.github.io/xyjax/xyjax.html)を使えば、Xy-pic相当の絵を描けるようですが、はてなブログではサポートされていません。ユーザー側のカスタマイズ*1でXyJaxを導入することも出来ないようです。残念。

とりあえず、AMScdを使ってみましょう。AMScdの構文は、例えば次の文書にまとまっています。

基本的にはテーブルレイアウトで、区切りとなる縦横の矢印はアットマークで始まるシーケンスで記述します。


まず、AMScdをロードするために次のrequireコマンドを書きます。はてなブログでは、全体を [tex: と ] で囲む必要があります。

\require{AMScd}

 \require{AMScd}モノイドの結合律を表す可換図式なら次のようです。

\begin{CD}
A\times A\times A  @>>>  A\times A \\
@VVV                     @VVV \\
A\times A          @>>>  A
\end{CD}


\begin{CD}
A\times A\times A  @>>>  A\times A \\
@VVV                     @VVV \\
A\times A          @>>>  A
\end{CD}

改行を示す'\\'を忘れがちですね(僕は)。

矢印にラベルを添えましょう。ラベルの位置は、矢印の上下左右を選べます。

\begin{CD}
A\times A\times A  @>m\times \mbox{id}_A>>  A\times A \\
@V \mbox{id}_A\times m VV                   @VV m V \\
A\times A          @>m>>                    A
\end{CD}


\begin{CD}
A\times A\times A  @>m\times \mbox{id}_A>>  A\times A \\
@V \mbox{id}_A\times m VV                   @VV m V \\
A\times A          @>m>>                    A
\end{CD}

モノイド積の結合律子〈associator〉である α もちゃんと書けば次。

\begin{CD}
(A\times A)\times A  @>m\times \mbox{id}_A>>  A\times A \\
@V\alpha_{A,A,A}VV                            @| \\
A\times (A\times A)  @.                       A\times A \\
@V \mbox{id}_A\times m VV                     @VV m V \\
A\times A            @>m>>                    A
\end{CD}


\begin{CD}
(A\times A)\times A  @>m\times \mbox{id}_A>>  A\times A \\
@V\alpha_{A,A,A}VV                            @| \\
A\times (A\times A)  @.                       A\times A \\
@V \mbox{id}_A\times m VV                     @VV m V \\
A\times A            @>m>>                    A
\end{CD}

対称 σ の自然性を述べる可換図式は:

\mbox{For} \\
f:A \to C \\
g:B \to D \\
\mbox{Commutes} \\
\begin{CD}
A\times B  @>\sigma_{A,B}>>  B\times A \\
@V f\times g VV              @VV g \times fV \\
C\times D  @>\sigma_{C,D}>>  D\times C
\end{CD}


\mbox{For} \\
f:A \to C \\
g:B \to D \\
\mbox{Commutes} \\
\begin{CD}
A\times B  @>\sigma_{A,B}>>  B\times A \\
@V f\times g VV              @VV g \times fV \\
C\times D  @>\sigma_{C,D}>>  D\times C
\end{CD}

マックレーンの五角形は、次の図のように五角形で描くのが自然ですが、AMScdでは五角形は描けません。

四角形になるようにレイアウト変更するなら:

\begin{CD}
( (A\otimes B)\otimes C)\otimes D  @>\alpha_{A\otimes B,C,D}>>  (A\otimes B) \otimes (C\otimes D) \\
@|                                                              @VV \alpha_{A,B,C\otimes D} V \\
( (A\otimes B)\otimes C)\otimes D  @.                           A\otimes (B \otimes (C\otimes D) ) \\
@V \alpha_{A,B,C}\otimes \mbox{id}_D VV                         @AA {\mbox{id}_A\otimes \alpha_{B,C,D}} A \\
(A \otimes (B \otimes C))\otimes D @>\alpha_{A,B\otimes C,D}>>  A\otimes ( (B\otimes C)\otimes D)
\end{CD}


\begin{CD}
( (A\otimes B)\otimes C)\otimes D  @>\alpha_{A\otimes B,C,D}>>  (A\otimes B) \otimes (C\otimes D) \\
@|                                                              @VV \alpha_{A,B,C\otimes D} V \\
( (A\otimes B)\otimes C)\otimes D  @.                           A\otimes (B \otimes (C\otimes D) ) \\
@V \alpha_{A,B,C}\otimes \mbox{id}_D VV                         @AA {\mbox{id}_A\otimes \alpha_{B,C,D}} A \\
(A \otimes (B \otimes C))\otimes D @>\alpha_{A,B\otimes C,D}>>  A\otimes ( (B\otimes C)\otimes D)
\end{CD}

ウーム、五角形じゃないとやっぱり違和感があるな、仕方ないけど。なお、矢印のラベルに、'>', '<','V', 'A' などの区切り文字が入るときは、ラベルをブレイスで囲まないとエラーになるので注意してください。

[追記 date="翌日"]
もし、XyJax が使えるようになると、ブログ内に次のようなTeXコードを記述すれば、

\newcommand\Ker{\mathrm{Ker}\,}
\newcommand\Coker{\mathrm{Coker}\,}
\begin{xy}
\xymatrix {
  0 \ar@[red][r]
  & {\Ker f} \ar@[red][r]
  & {\Ker a} \ar@[red][r] \ar[d]
  & {\Ker b} \ar@[red][r] \ar[d]
  & {\Ker c} \ar@[red]@`{[]+/r10pc/, [dddll]+/l10pc/}[dddll]_(0.55)d \ar[d]
\\
  &
  & A \ar@[blue][r]^f \ar@[blue][d]^a
  & B \ar@[blue][r] \ar@[blue][d]^b
  & C \ar@[blue][r] \ar@[blue][d]^c
  & 0
\\
  & 0 \ar@[blue][r]
  & A' \ar@[blue][r] \ar[d]
  & B' \ar@[blue][r]^{g'} \ar[d]
  & C' \ar[d]
\\
  &
  & {\Coker a} \ar@[red][r]
  & {\Coker b} \ar@[red][r]
  & {\Coker c} \ar@[red][r]
  & {\Coker g'} \ar@[red][r]
  & 0
}
\end{xy}

なんと、曲線を含む色付きの可換図式が描けるのですよ。素晴らしいね。はてなブログで XyJax をサポートしてくれないかなー。


[/追記]
[さらに追記]
Wikipedia、nLab、Wolfram MathWorld の「ヘビの補題」の項目を見ると、いずれも画像を貼り付けているので、XyJax の使用はまだ一般的ではないですね。知名度が足りない? のかな。たくさんの可換図式を持つページでは、描画が遅れ過ぎる問題があるかも知れません。
[/さらに追記]

*1:head内にscriptタグを追加することになります。