檜山正幸のキマイラ飼育記 このページをアンテナに追加 RSSフィード Twitter

キマイラ・サイトは http://www.chimaira.org/です。
トラックバック/コメントは日付を気にせずにどうぞ。
連絡は hiyama{at}chimaira{dot}org へ。
蒸し返し歓迎!
このブログの更新は、Twitterアカウント @m_hiyama で通知されます。
Follow @m_hiyama
ところで、アーカイブってけっこう便利ですよ。

2018-05-17 (木)

ド・ラーム・コホモロジーとホッジ分解のオモチャ (2/2)

| 12:57 | ド・ラーム・コホモロジーとホッジ分解のオモチャ (2/2)を含むブックマーク

ド・ラーム・コホモロジーとホッジ分解のオモチャ (1/2)」の続き・後編です。今回の第2節から第6節(全8節)で、オモチャ=有限離散モデルを作ります。この部分は、純粋に線形代数の話です。ここだけを取り出して(文脈を無視して)、線形代数の練習問題として読むこともできます。第7節で、前回の話との関係を述べます。「背景を知らずに代数的議論だけを追うのはイヤだ」という方は、第7節を先に読んでください。

内容:

  1. この記事の記述方法について
  2. 内積ベクトル空間と随伴線形写像
  3. 部分空間の直交性と直交補空間
  4. ホッジの分解定理(ラプラシアンなしバージョン)
  5. ラプラシアンとホッジ分解
  6. ド・ラーム・コホモロジー空間
  7. 多様体から線形代数へ
  8. おわりに

前回・前編の内容

  1. 予備知識は線形代数だけ
  2. 背景のオハナシ(超・急ぎ足)
  3. 複体
  4. 複体上のパスとチェーン
  5. 実数係数チェーン空間
  6. 境界作用素 1
  7. 境界作用素 2
  8. 組み合わせ複体と代数的複体
  9. 代数的複体もっと
  10. ラプラシアンとラプラス方程式

この記事の記述方法について

この節には、僕からの注意とお願いが含まれます。

記事内で述べられている命題のあいだの関係をハッキリさせるために、命題にラベルを付けることにします。例えば:

  • [記述サンプル] (a + b) + c = a + (b + c) ---(足し算の結合法則)

この例では、「足し算の結合法則」というラベルが導入されています。ラベル付けされた命題を参照するときは、「$(ラベル)」と書くことにします。

  • [記述サンプル] $(足し算の結合法則)によりウンヌンカンヌン

参照からもとの命題にハイパーリンクを張ったりすると便利でしょうが、そこまではやってません。文字列検索で、もとの命題は探せるでしょう。

命題をラベルにより参照したとき、その命題を繰り返し記述(引用)するときは、次に形にします。

  • [記述サンプル] $(足し算の結合法則: (a + b) + c = a + (b + c) )によりウンヌンカンヌン

一時的なラベルには番号(「---(1)」や「$(1)」)を使います。

記事本文内で言及してないが、予備知識だと想定されている命題への参照は、「$?(ラベル)」とします。

  • [記述サンプル] $?(ピタゴラスの定理)によりウンヌンカンヌン

この場合、「ピタゴラスの定理」というラベルが記事本文内にあるわけではありません。必要があれば、ラベルの文言をヒントに何かで調べてください。

こういうルールで書き進めてみると、問題が発生しました。命題のラベルにそれらしい語句を割り当てようとすると、本文内で説明してない言葉が入り込んでしまうのです。例えば、「ヌルベクトル」について一切説明してないにも関わらず、ラベルは「非自明ヌルベクトルの非存在」となったりします(実際、このラベルを使っています)。それで、ラベル内の文言を脚注で説明しだしたのですが、いちいちこれをやっていると、脚注が増えて大変。

ラベルを、通し番号やランダム文字列にすればこの問題は発生しませんが、それも味気ないし、ラベルを記憶できません。それでお願いです。ラベルの意味が分からなくても詮索しないでください。識別用の文字列に過ぎない、と割り切ってください。よろしくお願いします。

ラベルが付いている命題を、この記事内ですべて証明しているわけではありません。が、要点となる目ぼしい命題には証明を付けています。僕は、説明(地の文)に証明を埋め込むスタイルが好きなんですが、それが苦しいときは別枠で証明を書きます(けっこう別枠が多い)。

あ、それと; 僕の横着から、F;Gのような図式順記法と、G¥circFのような反図式順記法が混じっています。それを不快と感じたり困惑してしまう方は、「双対や随伴に強くなるためのトレーニング」を読んでトレーニングしてくださいな。

内積ベクトル空間と随伴線形写像

Vは実数係数ベクトル空間で、内積〈inner product〉が備わっているとします。u, v∈V に対して、uとvの内積を(u|v)と書きます。内積は双線形(uに関してもvに関しても線形)な実数値関数で、次を満たすものです。

  1. (u|v) = (v|u) ---(内積の対称性)
  2. (v|v) ≧ 0 ---(内積の正定値性)
  3. (v|v) = 0 ならば v = 0 ---(非自明ヌルベクトル*1の非存在)

次の事実は、定義からすぐに出ますが、重要です。

  • (任意の u∈V に対して (u|v) = 0) ⇔ v = 0 ---(内積の非退化性*2)

ここから先、ベクトル空間は有限次元のものだけ考えます。ベクトル空間Vが内積を持つとき、正規直交枠 {a1, ..., an} (ai∈V)が取れます。枠〈frame〉とは、基底の要素に番号(全順序)を付けたものです*3。{a1, ..., an} の双対枠を {f1, ..., fn} としましょう。双対枠は、Vの双対空間 V* = (V上の線形形式の空間) の枠となります。双対枠の要素fjは、次のように定義されます。

  • i = 1, ..., n に対して、fj(ai) := δji ---(双対枠の定義)

ここでδjiはクロネッカーのデルタで、

  • δji := (if i = j then 1 else 0)

aiをfiに対応させる写像を線形に拡張して Φ:V→V* が定義できます。このΦは、実は正規直交枠の取り方に寄りません。正規直交枠を使わずいきなりΦを定義するなら、

  • Φ(u)(v) := (u|v) ---(カリー化内積の定義*4)

あるいはラムダ記法を用いて、

  • Φ(u) := λv.(u|v)

と定義します。Vが有限次元でないと、このΦが全射であることは自明ではありません(リースの表現定理など)。今は有限次元での話なので、Φが(ベクトル空間の)同型写像なのは容易にわかります。

V, Wが2つの内積ベクトル空間〈inner product vector space〉(内積が備わったベクトル空間)だとして、F:V→W を線形写像だとします。Fの随伴線形写像〈adjoint linear map〉Fを次のように定義します。

  • F := Φ;F*-1 :W→V ---(随伴線形写像の定義)

ここで:

  • ';'は、“写像の結合”の図式順〈diagrammatic-order〉記号です。反図式順〈anti-diagrammatic-order〉記号'¥circ'を使うなら、F := Φ-1¥circF*¥circΦ 。
  • 図式順記法で左のΦはWに対する Φ = ΦW :W→W* で、右のΦ-1はVに対する Φ-1 = (ΦV)-1 :V*→V です。つまり正確に書けば、F := ΦW;F*;(ΦV)-1
  • F*はFの双対線形写像〈dual linear map〉で、(F*(g))(v) := g(F(v)) として定義されます。

Fは次の性質を持ちます。

  • 任意の v∈V, w∈W に対して、(F(v)|w) = (v|F(w)) ---(随伴線形写像の基本性質)

この性質を持つような(唯一の)線形写像としてFを特徴付けることもできます。記法の工夫(すぐ下の箇条書き)の例示も兼ねて、実際に計算しておきましょう。

  1. f∈V*, v∈V に対して、f(v)を<f|v>とも書く。
  2. F;G = G¥circF を単に FG と書いてよい。
  3. F(v) を単に Fv と書いてよい。
  4. 結合(写像の合成、記号は'¥circ', ';', 併置)よりも、単項演算子のスター(-)*、ダガー(-)のほうが優先される。
  5. V** = (V*)* をVと同一視して、Φ:V→V* の双対を Φ*:V→V* とみなす。この設定で、F** = (F*)* = F, Φ* = Φ, (Φ-1)* = Φ-1

ターゲット命題: (F(v)|w) = (v|F(w)) ---(随伴線形写像の基本性質)

内積(-|-)を、Φと<-|->で表すなら、
$(随伴線形写像の基本性質: (F(v)|w) = (v|F(w)) )は
  <ΦFv|w> = <Φv|Fw> ---(1)
と同値なので、$(1)を示せばよい。

$(1: <ΦFv|w> = <Φv|Fw> )を示す。

先に、(F)* を計算しておく。
    (F)*
// $(随伴線形写像の定義)により
  = (ΦV-1F*ΦW)*
// $?(双対を取るスター・オペレーターの性質)により
  = ΦW*F**V-1)*
// F** = F, Φ* = Φ, (Φ-1)* = Φ-1 を使って
  = ΦWV-1
よって、
  (F)* = ΦWV-1
簡略に書けば
  F* = ΦFΦ-1 ---(2)

次に、目的の等式$(1)を示す。
    <Φv|Fw>
// $?(双対線形写像の性質)から
  = <(F)*Φv|w>
// 先に計算した $(2: F* = ΦFΦ-1 )を使って
  = <(ΦFΦ-1)Φv|w>
// Φ-1Φ を消して
  = <ΦFv|w>
よって、
  <ΦFv|w> = <Φv|Fw>

$(1)が示せた。

正規直交枠を使って行列表示すると、F*もFも、Fを表す行列の転置行列で表示できます。このため、F*とFは混同/同一視されがちですが、ここでは区別してください。F*とFでは、写像としてのプロファイル(域と余域)が違います。

  • F*:W*→V*
  • F:W→V

線形写像にその随伴線形写像を対応させるダガー・オペレーター(-)は、次のような法則を満たします。

  1. (F) = F ---(ダガーの対合性)
  2. (F;G) = G;F または (G¥circF) = F¥circG ---(ダガーの反変性)
  3. (idV) = idV ---(恒等のダガー)
  4. (0V,W) = 0W,V (0V,Wは、V→W のゼロ写像) ---(ゼロ射のダガー)

部分空間の直交性と直交補空間

Vを有限次元内積ベクトル空間だとして、S, TなどはVの部分ベクトル空間〈部分空間〉だとします。次の定義の右辺が成立するとき、SとTは直交している〈orthogonal〉といい、S⊥T と書きます。

  • S⊥T :⇔ 任意の u∈S, v∈T に対して、(u|v) = 0 ---(空間の直交の定義)

部分空間Sに対して、Sの直交補空間〈orthogonal complement〉S は次のように定義します。

  • S := {v∈V | 任意の s∈S に対して、(s|v) = 0} ---(直交補空間の定義)

定義からすぐに次が言えます。

  1. SはVの部分空間である。 ---(直交補空間の部分空間性)
  2. S⊥S ---(部分空間と直交補空間は直交)
  3. S⊥T ⇒ S∩T = {0} ---(直交する空間の共通部分)
  4. S⊥T ⇔ S⊆T ⇔ T⊆S ---(直交の言い換え)

Vの部分空間S, Tに対して、S∧TとS∨Tを次のように定義します。

  • S∧T := S∩T (集合の共通部分) ---(ミート空間の定義)
  • S∨T := {v∈V | s∈S と t∈T により、v = s + t と書ける} ---(ジョイン空間の定義)

S∧TとS∨Tの定義に内積は関係ありませんが、内積があると、次の法則が言えます。

  • (S∨T) = S∧T ---(直交補空間 ド・モルガンの法則 1)
  • (S∧T) = S∨T ---(直交補空間 ド・モルガンの法則 2)

これは、論理におけるド・モルガンの法則と同じ形です。“ド・モルガンの法則”の1番目の半分 (S∨T) ⊆ S∧T だけ示すと:

ターゲット命題: (S∨T) ⊆ S∧T

  v∈(S∨T) と仮定する。
$(ジョイン空間の定義)と$(直交補空間の定義)から
  任意の s∈S, t∈T に対して、(v|s + t) = 0
$?(内積の双線形性)から
  任意の s∈S, t∈T に対して、(v|s) + (v|t) = 0 ---(1)
t = 0 でも$(1)は成立するから
  任意の s∈S に対して、(v|s) = 0 ---(2)
s = 0 でも$(1)は成立するから
  任意の t∈T に対して、(v|t) = 0 ---(3)
$(2)を言い換えると
  v∈S ---(4)
$(3)を言い換えると
  v∈T ---(5)
$(4), $(5)から
  v∈(S∧T)
以上より
  v∈(S∨T) ⇒ v∈(S∧T)
vは任意だったから
  ∀v.(v∈(S∨T) ⇒ v∈(S∧T))
つまり
  (S∨T) ⊆ S∧T

対偶の法則に相当する次も成立します。

  • S⊆T ⇔ T⊆S ---(直交補空間 対偶の法則)

内積ベクトル空間Vの部分空間の集まりSubspace(V)は、命題論理やベキ集合のブール代数と酷似した構造を持ちます。どこまで似ていて、どこが違うかを調べるのは面白い課題です。

S⊥T のとき、S∨T を S¥oplusT とも書きます。S¥oplusT を、SとTの直交直和〈orthogonal direct sum〉といいます。S¥oplusT と書いたときは、S⊥Tを前提にしているので、S∧T = O (Oはゼロ空間{0})です。直交直和の命題論理における類似物は、排他的命題の連言です。

通常の直和 S¥oplusT は外部直和であり、S¥oplusT ⊆ V とはいえません。それに対して直交直和 S¥oplusTはS∨Tのこと(ただし、S⊥T)なので S¥oplusT ⊆ V です。とはいえ、外部直和 S¥oplusT に、S⊥Tとなるような内積を入れることが出来て、そうやって作った内積ベクトル空間も S¥oplusT と書くので、S¥oplusT ⊆ V かどうかは定義によりけりですね。

論理の排中律 P∨¬P = True (PまたはPでない は いつだって真)に相当する法則は次のように書けます。

  • S¥oplusS = V ---(直交補空間 排中律)

直交直和記号¥oplusに、S⊥Sの意味を込めているわけですが、¥oplusを使わずに2つの命題に分けたほうが分かりやすいかも知れません。

  1. S∧S = O = {0} ---(部分空間と直交補空間の排他性)
  2. S∨S = V ---(直交補空間 排中律 ジョイン版)

直交補空間の排中律から、一意直交分解が可能となります。

  • 任意の v∈V は、s∈S と t∈S により、v = s + t と一意的に分解できる。 ---(直交分解の原理)

ホッジの分解定理(ラプラシアンなしバージョン)

U, V, Wが有限次元の内積ベクトル空間だとして、F:U→V, G:V→W を線形写像とします。FとGは次の条件を満たすとします。

  • F;G = 0 :U→W ---(複体条件)

等式右辺の0はゼロ写像のことです。F;G = 0 と Im(F) ⊆ Ker(G) は同じことです。

F, Gと共にF, Gも考えます。これからの登場人物である空間・写像は次のようです(3つの空間と4つの写像)。

F;G = 0 を満たす (U, V, W, F, F, G, G) は、共変/反変を一緒にした代数的複体(前回の第2節第9節を参照)の一部を切り取ったものです。なので、このような構造をミニ複体〈mini-complex〉と呼ぶことにします*5。ここから先、特別に断らなければ、このミニ複体 (U, V, W, F, F, G, G) に関する命題を扱います。

[追記]前回・今回で話題にしている「オモチャ」とは何なのか? と聞かれれば、それはズバリ、ミニ複体です。ミニ複体は、有限次元内積空間の圏のなかで定義できる比較的簡単な構造です。ミニ複体に対して、ド・ラーム・コホモロジー(単一のベクトル空間)とラプラシアンが定義できます。そしてホッジ分解が成立します。背景はともかくとして、ミニ複体の議論には有限次元線形代数の概念しか使わないので、いじりやすいという意味で「オモチャ」と呼んでいいと思います。[/追記]

まず、次の補題を確認します。これは、F;G = 0 を使ってないので、随伴線形写像に関する一般的な事実です。

  • Im(G) = Ker(G) ---(Im-Ker随伴性 1)
  • Im(F) = Ker(F) ---(Im-Ker随伴性 2)

この2つは実質的に同じ命題なので、1番目だけ示します。

ターゲット命題: Im(G) = Ker(G) ---(Im-Ker随伴性 1)

Im(G) ⊆ Ker(G) と
Ker(G) ⊆ Im(G) を示せばよい。

Im(G) ⊆ Ker(G) を示す。

  v∈Im(G) と仮定する。
$?(Imの定義)より
  適当な w∈W を使って v = G(w)と書ける。

  u∈Ker(G)と仮定する。
u と v = G(w) の内積を計算する。
     (u|v)
  =  (u|G(w))
// $(随伴線形写像の基本性質)から
  = (G(u)|w)
// 仮定 u∈Ker(G) より G(u) = 0 だから
  = (0|w)
// $?(内積の双線形性)より
  = 0
よって、
  (u|v) = 0
u∈Ker(G)と v∈Im(G) は任意だったから
  ∀u∈Ker(G), v∈Im(G).(u|v) = 0
つまり、
  Im(G)⊥Ker(G)
$(直交の言い換え)から
  Im(G) ⊆ Ker(G)
が示せた。

Ker(G) ⊆ Im(G) を示す。

$(直交補空間 対偶の法則)から、Im(G) ⊆ Ker(G) を示せばよい。

Im(G) ⊆ Ker(G) を示す。

  u∈Im(G) と仮定する。
  v∈Im(G) と仮定する。
$?(Imの定義)より
  適当な w∈W を使って v = G(w)と書ける。
u と v = G(w) の内積は0だから
  (u|G(w)) = 0
$(随伴線形写像の基本性質)から
  (Gu|w) = 0
vは任意だったからwも任意となり、$(内積の非退化性)により
  Gu = 0
つまり
  u∈Ker(G)
以上により
  u∈Im(G) ⇒ u∈Ker(G)
uは任意だったから
  ∀u.(u∈Im(G) ⇒ u∈Ker(G))
つまり
  Im(G) ⊆ Ker(G)
が示せた。

Fの像Im(F)とGの像Im(G)は、いずれもVの部分空間です。この2つの部分空間は直交します。

  • Im(F) ⊥ Im(G) --(コバンダリと随伴コバンダリの直交性)

ターゲット命題: Im(F) ⊥ Im(G)

  v∈Im(F), v'∈Im(G) と仮定する。
$?(Imの定義)より
  適当な u∈U を使って v = F(u)と書ける。
  適当な w∈W を使って v' = G(w)と書ける。
v = F(u) と v' = G(w) の内積を計算する。
    (v|v')
  = (F(u)|G(w))
// $(随伴線形写像の基本性質)から
  = (G(F(u))|w)
// $(複体条件)から G(F(u)) = 0 だから
  = (0|w)
// $?(内積の双線形性)から
  = 0
よって
  (v|v') = 0
v, v'は任意だったから
  ∀v∈Im(F), v'∈Im(G).(v|v') = 0
$(空間の直交の定義)より
  Im(F) ⊥ Im(G) 。

さて、いよいよ今回のハイライト、ホッジの分解定理〈the Hodge decomposition theorem〉です。定理の主張は、ミニ複体において「Vに直交直和分解が作れるよ」と言っているだけですが、その意味は前回第7節を参照してください。

  • X = Ker(F)∧Ker(G) とすると、V = Im(F)¥oplusIm(G)¥oplusX ---(ホッジ分解)

ターゲット命題: V = Im(F)¥oplusIm(G)¥oplusX 

(Im(F)∨Im(G))を計算する。
    (Im(F)∨Im(G))
// $(直交補空間 ド・モルガンの法則 1)により
  = Im(F)∧Im(G)
// $(Im-Ker随伴性 2: Im(F) = Ker(F) )と$(Im-Ker随伴性 1: Im(G) = Ker(G) )により
  = Ker(F)∧Ker(G)
よって、
(Im(F)∨Im(G)) = Ker(F)∧Ker(G) ---(1)

$(直交補空間 排中律)から
  V = (Im(F)∨Im(G))¥oplus(Im(F)∨Im(G))
$(1)から
  V = (Im(F)∨Im(G))¥oplus(Ker(F)∧Ker(G))
X = Ker(F)∧Ker(G) としていたので
  V = (Im(F)∨Im(G))¥oplusX
$(コバンダリと随伴コバンダリの直交性)から Im(F)∨Im(G) = Im(F)¥oplusIm(G) なので
  V = (Im(F)¥oplusIm(G))¥oplusX

ラプラシアンとホッジ分解

前節と同じ状況設定 -- つまり、ミニ複体 (U, V, W, F, F, G, G) があるとして、線形写像 L:V→V を次のように定義します。

  • L := G;G + F;F = G¥circG + F¥circF = GG + FF ---(ラプラシアンの定義)

この線形写像Lは、(ミニ複体の)ラプラシアン〈Laplacian〉と呼びます。この言葉の由来は前回第7節で触れています。

ラプラシアンLに対して次が成立します。

  • Ker(L) = Ker(F)∧Ker(G) ---(調和コチェーンの特徴付け)

これからこの命題$(調和コチェーンの特徴付け)を示します。まずは補題からです。

  • Ker(G;G) = Ker(G) ---(随伴ラウンドトリップの核 1)
  • Ker(F;F) = Ker(F) ---(随伴ラウンドトリップの核 2)

この2つは実質的に同じ命題なので、1番目だけ示します。

ターゲット命題: Ker(G;G) = Ker(G) ---(随伴ラウンドトリップの核 1) 

Ker(G;G) ⊆ Ker(G) と
Ker(G) ⊆ Ker(G;G) を示せばよい。

Ker(G;G) ⊆ Ker(G) を示す。

  v∈Ker(G;G) と仮定する。
つまり
  (G;G)v = (G¥circG)v = G(G(v)) = 0
v∈V と G(G(v)) との内積を取ると
  (v|G(G(v))) = (v|0) = 0
$(随伴線形写像の基本性質)より (v|G(G(v))) = (G(v)|G(v)) だから
  (G(v)|G(v)) =  0
$(非自明ヌルベクトルの非存在)より
  G(v) = 0
つまり
  v∈Ker(G)
以上より
  v∈Ker(G;G) ⇒ v∈Ker(G)
vは任意だったから
  ∀v.(v∈Ker(G;G) ⇒ v∈Ker(G))
つまり
  Ker(G;G) ⊆ Ker(G)
が示せた。

Ker(G) ⊆ Ker(G;G) を示す。

  v∈Ker(G) と仮定する。
(G;G)v を計算する。
    (G;G)v
  = (G¥circG)v
  = G(G(v))
// 仮定より G(v) = 0 なので
  = G(0)
  = 0
よって
  (G;G)v = 0
つまり
  v∈Ker(G;G)
以上より、
  v∈Ker(G) ⇒ v∈Ker(G;G)
vは任意だったから
  ∀v.(v∈Ker(G) ⇒ v∈Ker(G;G))
つまり、
  Ker(G) ⊆ Ker(G;G)
が示せた。

さて、$(調和コチェーンの特徴付け: Ker(L) = Ker(F)∧Ker(G) )を示しましょう。$(複体条件: F;G = 0 (G¥circF = 0))があるので、Ker(F)∧Ker(G) ⊆ Ker(L) は簡単です。逆向きの包含 Ker(L) ⊆ Ker(F)∧Ker(G) だけを示します。

ターゲット命題: Ker(L) ⊆ Ker(F)∧Ker(G) 

Ker(L) ⊆ Ker(G) と
Ker(L) ⊆ Ker(F) を示せばよい。

Ker(L) ⊆ Ker(G) を示す。

  v∈Ker(L) と仮定する。
つまり
  Lv = 0
$(ラプラシアンの定義)より
  Lv = (GG + FF)v = 0
つまり
  GGv + FFv = 0 ---(1)

$(1)の両辺にGを作用させると
  GGGv + GFFv = 0
$(複体条件)より GF = 0 なので、
  GGGv = 0
つまり
  GG(v)∈Ker(G) ---(2)

一方で、
  GG(v)∈Im(G)
$(Im-Ker随伴性 1)より Im(G) = Ker(G) なので、
  GG(v)∈Ker(G) ---(3)
$(2), $(3)より
  GG(v)∈(Ker(G)∧Ker(G)) ---(4)
$(直交補空間は直交), $(直交する空間の共通部分) より
  Ker(G)∧Ker(G) = {0} ---(5)
$(4), $(5)より
  GG(v) = 0
つまり
  v∈Ker(GG)
$(随伴ラウンドトリップの核)より Ker(GG) = Ker(G) なので、
  v∈Ker(G)
以上より
  v∈Ker(L) ⇒ v∈Ker(G)
vは任意だったから
  ∀v.(v∈Ker(L) ⇒ v∈Ker(G))
つまり
  Ker(L) ⊆ Ker(G)
が示せた。

Ker(L) ⊆ Ker(F) を示す。

$(1)の両辺にFを作用させると
  FGG(v) + FFF(v) = 0 ---(6)
$(複体条件)より GF = 0 なので、
  FG = (GF) = 0 = 0 ---(7)
$(6), $(7)より
  FFF(v) = 0
つまり
  FF(v) ∈Ker(F)
$(Im-ker随伴性 2)より Im(F) = Ker(F) なので、
  FF(v)∈Im(F) ---(8)

一方で、
  FF(v)∈Im(F) ---(9)
$(8), $(9)より
  FF(v)∈Im(F)∧Im(F)
$(直交補空間は直交), $(直交する空間の共通部分) より
  FF(v) = 0
つまり
  v∈Ker(FF)
$(随伴ラウンドトリップの核 2)より
  v∈Ker(F)
以上より
  v∈Ker(L) ⇒ v∈Ker(F)
vは任意だったから
  ∀v.(v∈Ker(L) ⇒ v∈Ker(F))
つまり
  Ker(L) ⊆ Ker(F)
が示せた。

前節の$(ホッジ分解)により、V = Im(F)¥oplusIm(G)¥oplusX と直交直和分解できるわけですが、Xは Ker(F)∧Ker(G) でした。この節の$(調和コチェーンの特徴付け)によれば、Ker(L) = Ker(F)∧Ker(G) なので、ホッジ分解を次の形に書き直すことができます。

  • V = Im(F)¥oplusIm(G)¥oplusKer(L) ---(ホッジ分解 ラプラシアン版)

ラプラシアンの核空間Ker(L)とは、調和形式/調和コチェーンの空間です(前回第7節を参照)。

ド・ラーム・コホモロジー空間

引き続き、ミニ複体 (U, V, W, F, F, G, G) がある状況で話をします。

$(複体条件: F;G = 0 )から Im(F) ⊆ Ker(G) が言えるので、商ベクトル空間 Ker(G)/Im(F) を作ることができます。この商ベクトル空間 Ker(G)/Im(F) を、ミニ複体のド・ラーム・コホモロジー空間〈de Rham cohomology space〉と呼びます。この言葉の由来も前回第7節で触れています。

ド・ラーム・コホモロジー空間 Ker(G)/Im(F) は、ミニ複体から抽象的に定義されるベクトル空間で、Vの部分空間ではありません。しかし、Vの部分空間とみなすことができます。なぜなら、次の同型があるからです。

  • Ker(G)/Im(F) ¥stackrel{¥sim}{=} Ker(L) ---(ド・ラーム・コホモロジーの調和コチェーン表現 1)

ここで、Lは前節の$(ラプラシアンの定義)で定義したラプラシアンです。また前節で、$(調和コチェーンの特徴付け: Ker(L) = Ker(F)∧Ker(G) )を示しているので、次の形でも同じです。

  • Ker(G)/Im(F) ¥stackrel{¥sim}{=} Ker(F)∧Ker(G) ---(ド・ラーム・コホモロジーの調和コチェーン表現 2)

この$(ド・ラーム・コホモロジーの調和コチェーン表現 2)をこれから示すことにします。

まず、内積空間の一般論を少しします。S, Tは内積空間Vの部分空間で、S ⊆ T ⊆ V だとします。Sは、V内でのSの直交補空間です。それに対して、(S in T) は、TのなかでのSの直交補空間を表すとします。典型例を図示すれば次のようになります。

この状況で次が成立します。

  • (S in T) = S∧T ---(相対直交補空間と直交補空間のミート)

これは、u∈(S in T) と u∈S∧T を論理的に書いてみると、どちらも次のようになることから分かります。

  • (任意の s∈S に対して (s|u) = 0) かつ u∈T

次に、やはり S ⊆ T ⊆ V の状況で商空間と直交補空間の関係を考えます。次が成立します。

  • T/S ¥stackrel{¥sim}{=} S∧T ---(商空間と直交補空間)

ターゲット命題: T/S ¥stackrel{¥sim}{=} S∧T  ---(商空間と直交補空間)

線形代数の一般論から、$?(商空間T/Sは、TにおけるSの補空間と同型)。
これより
  T/S ¥stackrel{¥sim}{=} (S in T)
$(相対直交補空間と直交補空間のミート)より
  (S in T) = S∧T
したがって
  T/S ¥stackrel{¥sim}{=} S∧T

$(商空間と直交補空間)を、Im(F) ⊆ Ker(G) ⊆V に対して適用します。すると次が言えます。

  • Ker(G)/Im(F) ¥stackrel{¥sim}{=} Im(F)∧Ker(G)

$(Im-Ker随伴性 1)から、Im(F) = Ker(F) なので、

  • Ker(G)/Im(F) ¥stackrel{¥sim}{=} Ker(F)∧Ker(G)

これは、$(ド・ラーム・コホモロジーの調和コチェーン表現 2)そのものです。

以上より、Ker(G)/Im(F) ¥stackrel{¥sim}{=} Ker(F)∧Ker(G) が得られました。左辺はド・ラーム・コホモロジー空間、右辺はラプラシアンの核空間だったので、ミニ複体において:

  • ド・ラーム・コホモロジー空間 ¥stackrel{¥sim}{=} ラプラシアンの核空間

多様体から線形代数へ

前回の記事と今回の記事の大きな流れとしては、「多様体 → 有限離散近似 → 有限次元線形代数」という翻訳をしています。したがって、有限次元線形代数の範囲内だけで証明された定理に、その起源として、多様体上の幾何・解析的な事実が対応しています。

「多様体 → 有限離散近似」という翻訳は、次のような対応をもとにしています。

多様体 有限離散近似
多様体 M 幾何複体 K
特異チェーンの空間 Ck(M) 組み合わせチェーンの空間 Ck(K)
微分形式の空間 Ωk(M) 組み合わせコチェーンの空間 Ωk(K)
境界作用素 ∂k:Ck(M)→Ck-1(M) 境界作用素 Bk:Ck(K)→Ck-1(K)
外微分作用素 dkk(M)→Ωk+1(M) 余境界作用素 Dkk(K)→Ωk+1(K)
ベルトラミ作用素 δkk(M)→Ωk-1(M) ベルトラミ作用素 Akk(K)→Ωk-1(K)
ラプラシアン Δkk(M)→Ωk(M) ラプラシアン Lkk(K)→Ωk(K)
調和形式の空間 Θk(M) = Ker(Δk) 調和コチェーンの空間 Θk(K) = Ker(Lk)

幾つかの注意事項を述べます。

「多様体Mを、幾何複体Kで有限離散近似する」ことから話が出発しているわけですが、どんな多様体が有限離散近似可能なのか? そもそも、それは近似になっているのか? といった問題はほとんど議論してません。これは難しい問題です。が、個別事例においては「頑張って近似しよう」という態度でもいいのかな、と思います。

Ck(-)とΩk(-)は互いに双対空間となっています。この双対性は、ペアリング〈pairing | evaluation map | 評価射〉 <-|->:Ck(-)×Ωk(-)→R により与えるのがスッキリすると思います。多様体の場合は、微分形式の特異コチェーンに沿った積分がペアリングであり、有限離散近似では、チェーン空間×コチェーン空間上の非退化双線形形式がペアリングになります。

多様体のド・ラーム・コホモロジーは、外微分作用素さえ作れば定義できます。しかし、ホッジ分解の定式化には、Ωk(M)の内積が必要です。内積の構成はけっこう大変です。リーマン計量、外積代数、ホッジ・スター演算子、体積形式による積分などの道具が必要になります。それに対して有限離散近似では、いきなり「Ωk(K)に内積があるとしましょう」でした(苦笑)。個別事例においては、“自然な内積”が見つかりそうだからです。ただ、“正しく近似する”立場からは、有限離散近似でも系統的に内積を構成する手順が必要でしょう。

ベルトラミ作用素〈Beltrami operator〉とは、外微分作用素/余境界作用素の随伴線形写像のことです*6。余微分作用素〈codifferential operator〉と呼ばれることが多いのですが、用語法が混乱する(後述)ので、「ベルトラミ作用素」と呼ぶことにします*7。ベルトラミ作用素は、Ωk(-)→Ωk-1(-) と次数を下げるので、(δk, Akのように)添字は下にしたほうが良かったかも知れませんが、添字ルールはほころびを避けられないので気にしないことにしましょう。

多様体のΩk(M)の要素をk次微分形式/k-形式と呼ぶのですが、外微分作用素/ベルトラミ作用素との関連で、以下のような分類がされています。

呼び名 英語 意味
k次閉形式 closed form of deg. k Ker(dk)の要素
k次完全形式 exact form of deg. k Im(dk-1)の要素
k次余閉形式 coclosed form of deg. k Ker(δk)の要素
k次余完全形式 coexact form of deg. k Im(δk-1)の要素

ウーム、覚えられない。双対を意味する「コ」と「随伴」を形容詞に使ったほうが幾分か系統的でマシだと思います。

伝統的呼び名 マシな呼び名 意味
k次形式 k-コチェーン Ωk(M)の要素
k次閉形式 k-コサイクル Ker(dk)の要素
k次完全形式 k-コバンダリ Im(dk-1)の要素
k次余閉形式 k-随伴コサイクル Ker(δk)の要素
k次余完全形式 k-随伴コバンダリ Im(δk-1)の要素

さて、多様体からその有限離散近似に移った後で、特定のkに注目して、3つの空間 Ωk-1(K), Ωk(K), Ωk+1(K) とそのあいだの余境界作用素/ベルトラミ作用素 Dk-1, Dk, Ak+1, Ak を抜き出します。

そして、次のような名前の付け替えをします。

有限離散近似 有限次元線形代数
Ωk-1(K) U
Ωk(K) V
Ωk+1(K) W
Dk-1k-1(K)→Ωk(K) F:U→V
Akk(K)→Ωk-1(K) F:V→U
Dkk(K)→Ωk+1(K)G:V→W
Ak+1k+1(K)→Ωk(K) G:W→V

この表の右の欄 U, V, W, F, F, G, G によりミニ複体を構成しました。ミニ複体に対する有限次元線形代数の議論(いわばミニ・ホモロジー代数)を展開したのが、今回の第2節から第6節です。

ミニ複体のラプラシアンの定義 L := GG + FF :V→V は、適当なkにおいて、Lk := Ak+1Dk + Dk-1Ak となり、これは多様体上の Δk := δk+1dk + dk-1δk に対応します。そして、k次の離散ラプラシアンLkの核空間Ker(Lk)は、k次の調和形式の空間 Θk(M) = {α∈Ωk | Δk(α) = 0} に対応します。

有限次元線形代数の言葉で語られたホッジの分解定理を、多様体上に戻して解釈すれば:

  • k次微分形式の空間は、“コバンダリの空間”と“随伴コバンダリの空間”と“調和形式の空間”に直交直和分解される。

同様に、ド・ラーム・コホモロジーに関する定理は:

  • 微分形式のド・ラーム複体から構成されたド・ラーム・コホモロジーのk次の空間は、k次調和形式の空間と同型である。

もちろん、多様体上での理論は、有限次元線形代数で済むオモチャとは随分と違います。微積分の知識(ストークスの定理やポアンカレの補題)や、ド・ラーム・コホモロジー以外のホモロジー論(特異ホモロジーとチェック・コホモロジー)も必要になります。しかしそれでも、代数的な大枠は、オモチャと共通する部分があります。

おわりに

前回の記事と今回の記事でやってみたことは、なめらかな関数のグラフを折れ線で近似して、いくつかの数値データを取り出して、それを加減乗除だけの算数で計算したようなものです。算数の計算だけを見れば、それほど難しいことはなく、むしろ味気ないかも知れません。しかし、そのような算数計算も、もとの関数のグラフにおいて解釈すればなにがしかの意味はあるのです。

この2回の記事は、目で見えて手で触れるオモチャの提供が目的なので、端折った雑な議論が多かったです。連続的な対象物・現象の有限離散近似を真面目に考えるのは、もはやオモチャや遊びの域を越えて、シリアスなチャレンジとなります。体力・気力に満ちたアナタにお任せします。

*1:一般化された内積では、v ≠ 0 で (v|v)= 0 であるベクトルの存在を認めていて、それを(非自明な)ヌルベクトルと呼びます。

*2:すぐ後で定義されるカリー化内積Φの核がゼロ空間であることを意味します。これにより、カリー化内積Φは単射です。「(v|v) = 0 ならば v = 0」のことを非退化性と呼ぶことも多いです。

*3:Vの枠を、数ベクトル空間RnからVへの線形同型写像 a:Rn→V だと定義すると何かと都合がいいです。正規直交枠は、Rnの標準内積を保存する内積同型写像として定義できます。

*4:Vの内積は V×V→R という関数なので、カリー化すると V→Lin(V, R) となります。ここで、Lin(V, R)はVからRへの線形写像の空間。Lin(V, R) = V* なので、内積のカリー化は V→V* という線形写像です。

*5:共変/反変を一緒にまとめた代数的複体を双複体〈bicomplex〉とでも呼んで、ミニ双複体とか言うのが正確でしょう。しかし、「複体」という言葉は反変/共変の方向を気にしないで曖昧に使ったりするので、片方向か双方向かが曖昧でも責められはしないでしょう。

*6:有限離散版のベルトラミ作用素がAkとなっているのに大した理由はありません: Bだと境界作用素とかぶるので、余境界作用素DのAdjointだからAとしただけ。

*7:余微分作用素をベルトラミ作用素と呼んでいる前例は記憶にあるのですが、今、見つからない。

トラックバック - http://d.hatena.ne.jp/m-hiyama/20180517

2018-05-15 (火)

ド・ラーム・コホモロジーとホッジ分解のオモチャ (1/2)

| 11:35 | ド・ラーム・コホモロジーとホッジ分解のオモチャ (1/2)を含むブックマーク

技術者・プログラマが、ド・ラーム理論〈de Rham theory〉やホッジ理論〈Hodge theory〉を必要とすることなんてあるのか? ほとんどないとは思うのですが、「稀にはある」というのはどうも事実のようです。

なので、そのテの話をします。簡単なオモチャ〈toy model〉に関して、ド・ラーム・コホモロジーと調和形式によるその表示を、線形代数の技法だけで定式化します。その際、多様体や微積分の知識は仮定しませんし、使いもしません。ただし、背景や周辺のオハナシではいろんな概念が登場します、オハナシとして

今回・前編(1/2)と次回・後編(2/2)の2回に分けて書きます。「ド・ラーム・コホモロジーとホッジ分解のオモチャ」の中核となる有限次元線形代数の議論は次回に行います。今回は、全体像や周辺知識、準備的な項目についてウダウダ述べます。

内容:

  1. 予備知識は線形代数だけ
  2. 背景のオハナシ(超・急ぎ足)
  3. 複体
  4. 複体上のパスとチェーン
  5. 実数係数チェーン空間
  6. 境界作用素 1
  7. 境界作用素 2
  8. 組み合わせ複体と代数的複体
  9. 代数的複体もっと
  10. ラプラシアンとラプラス方程式

次回・後編の内容

  1. この記事の記述方法について
  2. 内積ベクトル空間と随伴線形写像
  3. 部分空間の直交性と直交補空間
  4. ホッジの分解定理(ラプラシアンなしバージョン)
  5. ラプラシアンとホッジ分解
  6. ド・ラーム・コホモロジー空間
  7. 多様体から線形代数へ
  8. おわりに

予備知識は線形代数だけ

ド・ラーム理論はなめらかな多様体、ホッジ理論はさらにリーマン計量を持つ多様体上で展開される理論です。したがって、本質的に微積分に依存しています。それにも関わらず、できるだけ組み合わせ的/代数的に定式化すれば、多様体にも微積分にも依存しない構造を取り出すことが出来ます。

こうして取り出した構造(有限離散近似)では、接ベクトルや計量のような大事な概念が欠落してますが、取り扱いがとても簡単なので、オモチャとしてイジるには適しています。そんなオモチャでも、雰囲気を感じ取るにはまーまー役立ったりします。

というわけで、オモチャの話をします。オモチャの構成に位相空間や多様体の知識は全く不要ですし、微積分も使いません(背景を理解するとなると話は別ですが)。しかし、線形代数はそれなりに使います。次の言葉は理解している必要があります。

  1. ベクトル空間〈線形空間〉
  2. ベクトル空間の基底
  3. 集合から作る自由ベクトル空間
  4. 線形写像
  5. 双対ベクトル空間と双対線形写像
  6. 線形写像の核空間
  7. 線形写像の像空間
  8. ベクトル空間の部分空間による商空間
  9. 線形写像の準同型定理 V/Ker(f) ¥stackrel{¥sim}{=} Im(f) where f:V→W
  10. 内積ベクトル空間と随伴線形写像(次回の記事内で説明あり)

オモチャとして出てくるベクトル空間はすべて有限次元です。有限次元の線形代数を使って、(次回だけど)ド・ラーム理論とホッジ理論のミニチュアを組み立てます。

背景のオハナシ(超・急ぎ足)

ド・ラーム・コホモロジーとホッジ分解のオモチャの構成には、ほんとに線形代数しか使わないので、純粋に代数的な話として理解することもできます。しかし、それでは味気ないという方のために、背景の説明をたいへんな急ぎ足でします。この節は、後(主に次回)で出てくる記号や用語が唐突過ぎるという感じを幾分かはやわらげるのに役立つでしょう。「この節がサッパリわからん」だとしても、次節以降(次回も含む)を読むのに差し支えはありません。なんなら、スキップしてもかまいません。

扱いやすくタチの良い図形を多様体〈manifold〉と呼びます。多様体の次元〈dimension〉とは、僕らが直感的に“図形の次元”と理解している“あの次元”のことです。Mをn次元の多様体とします。Mの図形的性質が反映された代数的情報をMから取り出したい、としましょう。そんな情報のひとつに、Mのコホモロジーがあります。スカラーとして実数を使うと決めれば、Mのコホモロジーは、実数係数ベクトル空間の添字族〈indexed family〉になります。

Mのコホモロジー H0(M), H1(M), H2(M), ... (上付き添字は番号/インデックスで、各Hk(M)は実数係数ベクトル空間)を定義するひとつの方法として、M上の実数値関数の全体Ω0(M)を利用する方法があります。M上で微積分(ベクトル解析)ができるなら、関数 f∈Ω0(M) は微分できるので、関数fの微分dfが定義できます(ベクトル解析をご存知の方は、だいたい df = grad(f) と思ってください)。ここで、dfはもはやΩ0(M)の要素ではなくて、関数とは別なナニモノカの集合Ω1(M)に属します。つまり、d:Ω0(M)→Ω1(M) です。Ω1(M)の要素は、関数の微分(無限小変位)を表すものなので、微分形式〈differential form〉と呼びます。

微分作用素(正確には外微分作用素〈exterior derivative operator〉)dは、d = d00(M)→Ω1(M) だけではなく、d11(M)→Ω2(M), d22(M)→Ω3(M), ... のような系列として定義できます。各Ωk(M)は(実数係数の)ベクトル空間で、その要素はk次の微分形式〈differential form of degree k〉、あるいはより短くk-形式〈k-form〉と呼びます。各dkは線形写像で、k次の外微分作用素〈exterior derivative operator of degree k〉です。また、dk+1¥circdk = 0 を満たします(これ重要!)。記号'¥circ'は作用素(線形写像)の反図式順の結合記号〈anti-diagrammatic composition symbol〉です*1

(... → Ω-1(M) - d-1 → Ω0(M) - d0 → Ω1(M) - d1 → Ω2(M) - d2 → ...) という、ベクトル空間Ωk(Ω)達と線形写像dk達の無限系列を、Mのド・ラーム複体〈de Rham complex〉と呼びます。ここで、kが負整数のときのΩk(M)はゼロ空間です。k > n のときのΩk(M)もゼロ空間になります。無限系列とはいっても、非ゼロな部分は有限個しかありません。

Hk(M) := Ker(dk)/Im(dk-1) と定義して作ったベクトル空間の族 (..., H-1(M), H0(M), H1(M), H2(M), ...) が、Mのド・ラーム・コホモロジー〈de Rham cohomolgy〉です。Hk(M)には、M上のk-形式の振る舞いの情報がエンコードされています。ひいてはそれが、Mの図形的性質も反映します。

ド・ラーム複体を構成するk-形式のベクトル空間Ωk(M)達に内積が入ったとしましょう。外微分作用素 dkk(M)→Ωk+1(M) に対して、内積に関する随伴線形写像 δk = (dk-1)k(M)→Ωk-1(M) が定義できます。(... - Ω-1(M) ← δ0 - Ω0(M) ← δ1 - Ω1(M) ← δ2 - Ω2(M) ← δ3 ← ...) は、もとのド・ラーム複体とは矢印の向きと番号付けが変わっています*2。こちらを随伴ド・ラーム複体〈adjoint de Rham complex〉と呼びましょう。ド・ラーム複体と随伴ド・ラーム複体を一緒に書くと、次のような感じです。

適当なkに注目して、dk-1¥circδkとδk+1¥circdkを考えます。dk-1¥circδkもδk+1¥circdkも、道順は違いますが、Ωk(M)から出て戻ってくる作用素(線形写像)になります。dk-1¥circδk, δk+1¥circdkk(M)→Ωk(M) ですね、下の図を見てください。

dk-1, δk, δk+1, dk を使って、k次のラプラシアン〈Laplacian of degree k〉Δkを次のように定義します。

  • Δk := dk-1¥circδk + δk+1¥circdkk(M)→Ωk(M)

反図式順結合記号'¥circ'と添字は、煩雑なのでしばしば省略されます。

  • Δ := dδ + δd

ユークリッド空間Rnの標準座標系を使って Δ00(Rn)→Ω0(Rn) を陽に表示すると、それは古典的ラプラシアンに(符号は気にしなければ)一致します。(ラプラシアンについては、最後の節にも説明があります。)

¥Delta^0(f) = - ¥sum_{i = 1}^n ¥frac{¥partial^2 f}{(¥partial x^i)^2}

Ωk(M)の部分ベクトル空間Θk(M)を次のように定義します。

  • Θk(M) := {α∈Ωk(M) | Δk(α) = 0}

α∈Θk(M) のとき、αを(M上の)調和k-形式〈harmonic k-form〉と呼びます。特に調和0-形式を調和関数〈harmonic function〉と呼びます。Θk(M)は、M上の調和k-形式の空間です。調和形式とド・ラーム複体/随伴ド・ラーム複体/ド・ラーム・コホモロジーのあいだには次の関係があります。

  • Hk(M) ¥stackrel{¥sim}{=} Θk(M)
  • Ωk(M) = Im(dk-1)¥oplusIm(δk+1)¥oplusΘk(M) (¥oplusは直交直和を表す)

k次のド・ラーム・コホモロジーは、調和k-形式の空間と同型であり、k-形式の空間は、“外微分作用素の像空間”と“随伴外微分作用素*3の像空間”と“調和形式の空間”に直交直和分解します(ホッジ分解)。

今、ザーッと述べたことは、例えば次の本『微分形式の幾何学』にチャンと書いてあると思います(持ってるけど、ほとんど読んでない)。

微分形式の幾何学

微分形式の幾何学

複体

「複体〈complex〉」という言葉は、色々な分野・文脈で使われます。「簡単なモノを素材として出来上がる、より複雑なモノ」といった意味です。ここでは、複体を幾何複体、組み合わせ複体、代数的複体の3種に分けます。

  • 幾何複体〈geometric complex〉は、「簡単な図形を素材として出来上がる、より複雑な図形」です。
  • 組み合わせ複体〈combinatorial complex〉は、幾何複体の組み合わせ構造を抽出して、図形の点集合としての側面を忘れたものです。
  • 代数的複体〈algebraic complex〉は、(前節を読んだのなら; ド・ラーム複体や随伴ド・ラーム複体のような)ベクトル空間と作用素(線形写像)の系列のことです。

この記事では、幾何複体は正式には定義せずに、絵を描いて済ませる(お茶を濁す、ともいう)ことにします。絵は、我々の目と心が認識するだけの対象物で、対応する組み合わせ複体をオフィシャルに扱います。組み合わせ複体から代数的複体は機械的な手順で作られます。したがって、幾何複体、組み合わせ複体、代数的複体は密接に関連していて、あまり区別しなくても(ほぼ同一視しても)問題は少ないと思います*4

幾何複体の具体例を挙げておきます*5(下図)。この図形は、多様体の模倣ではなく、もっと自由気ままな図形です。

幾何複体の素材となる簡単な図形をセル〈cell〉と呼びます。

  • 0次元セル: 点のこと
  • 1次元セル: 線分のこと
  • 2次元セル: 多角形のこと

k次元のセルを短くk-セル〈k-cell〉とも呼びます。0-セルは頂点〈vertex〉、1-セルは〈edge〉、2-セルは〈face | area〉とも呼びます。

複体のセルには前もって向き〈orientation〉を与えておきます。「セルの向き」という概念には微妙なところがあります。セルの向きに関して2つの解釈が可能です。

  1. セルの向きは、幾何複体の重要な特徴であり、セルの向きが変わると異なる複体とみなす。
  2. セルの向きは、便宜的なものであり、セルの向きが変わっても、複体としては同じとみなす。

二番目の場合、注目しているのは向きを無視した図形であり、記述や計算の都合から向きを適当に割り当てている、ということです。ここでは、二番目の立場をとります。向きが最初からあるわけではなくて、人為的・無根拠に割り当てたとします。しかし、一度割り当てた向きは変えません。

さて、とりあえずは向きを便宜的に割り当てたとします。その後で、幾何複体が持つ幾何構造としての向きを定義することができます。他のセルの境界(の一部)ではないセルに、本来の向きが便宜的向きと一致しているかどうかを符号で指定します。セルの形状ごとに、そういう指定方法を考える必要があります*6。いずれにしろ実際の応用では、下部構造である便宜的向きの上に、上部構造として本来の向きを指定することになると思います。

複体上のパスとチェーン

Kが幾何複体だということは、Kが各次元のセルから構成されているということです。前節の例で言えば:

  • Kの頂点=0-セルの集合 = K0 = {1, 2, 3, 4, 5}
  • Kの辺=1-セルの集合 = K1 = {ア, イ, ウ, エ, オ, カ}
  • Kの面=2-セルの集合 = K2 = {あ, い}

便宜上、k = 0, 1, 2 以外では、Kk = {} と定義します。これにより、任意の k∈Z に対して集合Kkが決っていることになります。集合Kkの要素は、図形としてのセルというより、セルに貼り付けたラベルの集合ですが、ここでは、ラベルと図形を同一視して語ります。

複体Kの、順序付けられた辺の列 [e1, e2, ..., e] で、eiの終点 = ei+1の始点 (1 ≦ i < ℓ)を満たすものをパス〈path | 道 | 経路〉と呼びます。次はパスの例です。

  • [ウ, オ, -オ, -イ, -ア, エ, -イ]

ここで、マイナス符号'-'は辺を逆向きに辿ることを意味します。例えば [オ, -オ] の部分は、順方向に頂点3から頂点4に行って、逆方向に頂点4から頂点3に戻ることを示します。通過する頂点の列は、[1, 3, 4, 3, 2, 1, 3, 2] です。ただし、頂点を並べても、パスの記述にはなりません。[1, 3] だけでは、辺ウを通ったか辺エを通ったか不明です。

パスは、その辺に順序があるのでリスト・データでした。順序を無視してしまうと、次の集合になります。

  • {ウ, オ, -オ, -イ, -ア, エ, -イ}

純粋な集合なら、二回出現する'-イ'は一回につぶせます。しかし、ここではマルチ集合〈multiset | bag〉とみなして、さらに符号の効果も考慮します。

  1. 順序は問題ではない。自由に符号付き辺を並べ替えてよい。
  2. 同じ辺がプラス(順行)とマイナス(逆行)で出現したらキャンセルして無くなる。
  3. 同符号の同じ辺が複数回出現しても、それをつぶす(重複を除く)ことは出来ない。

次のような計算ができます。

  {ウ, オ, -オ, -イ, -ア, エ, -イ}
 // アイウエオ順でソート
= {-ア, -イ,  -イ, ウ, エ,  オ, -オ }
 // オ, -オ を消去
= {-ア, -イ,  -イ, ウ, エ}
 // -イ, -イ をまとめる
= {-ア, -2イ, ウ, エ}

{-ア, -2イ, ウ, エ} は、形式的な和を使って -ア + (-2イ) + ウ + エ あるいは、-ア - 2イ + ウ + エ とも書けます。先に提示した計算ルールは、和の記法と完全に整合します。

結局、ア, イ, ウ, エ, オ, カ に整数係数を付けて足し算した形になります。この形を整数係数のチェーン〈chain with integer coefficients〉と呼びます。整数係数のチェーンでは、当たり前の方法で足し算と整数スカラー倍ができます。例えば:

  (2ア + 5エ - カ) + (イ - 2エ + カ)
= 2ア + 5エ - カ + イ - 2エ + カ
= 2ア + イ + 5エ - 2エ - カ + カ
= 2ア + イ + (5 - 2)エ + (-1 + 1)カ
= 2ア + イ + 3エ + 0カ
= 2ア + イ + 3エ

  3(2ア + 5エ - カ)
= 3・2ア + 3・5エ - 3カ
= 6ア + 15エ - 3カ

パスは、図形の上を走る道/経路として具体的なイメージを持てます。それに対してチェーンは、天下りに代数的に定義されるので、幾何的イメージを持ちにくいものです。パスの素材である“向き付き辺”をバランバランにして、足し算できるようにしたモノ、くらいに考えてください。パスが持つ情報の一部は失われますが、その代わりチェーンの計算は自由にできます。

実数係数チェーン空間

前節で整数係数のチェーンを考えましたが、係数は形式的なものなので、実数係数にすることもできます。x, x, x, x, x, x を勝手な6つの実数として、形式的なスカラー倍と和:

  • xア + xイ + xウ + xエ + xオ + x

を考えればいいのです。例えば、ア + √2イ + πエ - オ はそのような形式的な和です。

このような形式的な線形結合達は、全体として実数体上のベクトル空間を形成します。こうして作ったベクトル空間を実数係数チェーン空間〈chain space with real coefficients〉と呼びます。その要素である形式的な線形結合は実数係数チェーン〈chain with real coefficients〉ですね。以下、係数は常に実数とするので、「実数係数」は省略します。

チェーン空間は、もとになった幾何複体Kから決まるものです。そこで、C1(K) と書きます。ん? 下付きの1は何でしょうか? 今定義したチェーン空間は、1次の(または1次元の)チェーン空間であり、他に0次のチェーン空間、-1次のチェーン空間、2次のチェーン空間などもあります(後述)。

複体Kに対する1次のチェーン空間は、Kの1-セル=辺の集合K1から自由生成された自由ベクトル空間です。集合Sからの自由ベクトル空間をRSと指数形式で書くとして:

  • C1(K) := RK1

我々の具体例においては、

  • C1(K) := RK1 = R{ア, イ, ウ, エ, オ, カ} ¥stackrel{¥sim}{=} R6

複体Kに対して、0次のチェーン空間C0(K)は、1次と同様に定義します。

  • C0(K) := RK0

我々の具体例においては、

  • C0(K) := RK0 = R{1, 2, 3, 4, 5} ¥stackrel{¥sim}{=} R5

ここで、表記上のちょっとして問題が発生します。事例のC0(K)は、集合{1, 2, 3, 4, 5}から生成されるので、自然な基底も{1, 2, 3, 4, 5}です。基底の要素1, 2に実数係数2, -3を付けて足すと 21 + (-3)2 = 21 - 32 となりワケワカリマセン。この問題を回避するためによく使われるのは物理起源のケットベクトル記法で、2|1> + (-3)|2> = 2|1> - 3|2> のように書きます。ここでは、もっと安直に長さ1のリストのように書いて 2[1] - 3[2] としましょう。辺の線形結合も、[ア] + √2[イ] + π[エ] - [オ] のように書いてもかまいません。

k = 0, 1, 2 以外の次数(または次元)kについても、

  • Ck(K) := RKk

としてk次のチェーン空間を定義します。

我々の例では、k = 0, 1, 2 以外では、Kk = {} だったので、

  • Ck(K) := RKk = R{} ¥stackrel{¥sim}{=} R0 = {0}

となり、Ck(K)(k = 0, 1, 2 以外)はゼロベクトル空間になります。

境界作用素 1

幾何複体Kに対して、k次のチェーン空間Ck(K)が定義できました。ベクトル空間Ck(K)の要素は、k次のチェーン〈chain of degree k〉、あるいはより短くk-チェーン〈k-chain〉と呼びます。0-チェーンは0-セル=頂点の形式的線形結合、1-チェーンは1-セル=辺の形式的線形結合、2-チェーンは2-セル=面の形式的線形結合でした。

これから、k-セルに(k-1)-チェーンを対応させる写像 Bk:Kk→Ck-1(K) を考えます。具体例を先に見ておきましょう。

我々の具体例である複体において、1-セルeに対してB1(e)を次のように定義します。

e B1(e)
[2] - [1]
[3] - [2]
[3] - [1]
[3] - [1]
[4] - [3]
[5] - [5] = 0

これは、1-セル=辺の両端となる頂点に符号を付けて足した(引いた)もので、次のようにも書けます。

  • B1(e) = eの終点 - eの始点

一般の1-チェーン、つまり1-セル=辺の線形結合に対しては、上記定義を線形に拡張します。例えば:

  B1(ア + イ + オ)
= B1(ア) + B1(イ) + B1(オ)
= ([2] - [1]) + ([3] - [2]) + ([4] - [3])
= [2] - [1] + [3] - [2] + [4] - [3]
= [4] - [3] + [3] + [2] - [2] - [1]
= [4] - [1]

  B1(-ウ + 2エ)
= B1(-ウ) + B1(2エ)
= -B1(ウ) + 2B1(エ)
= -([3] - [1]) + 2([3] - [1])
= -[3] + [1] + 2[3] - 2[1]
= [3] - [1]

B1に慣れるには、幾つかの例を計算してみるのが一番です。パスに対応するチェーン [ア] + [イ] + [オ](上で計算済み)とか [エ] + [オ] + (-[オ]) + (-[イ]) などのB1値を計算すると両端の差が出るはずです。また、[ア] + [イ] + (-[ウ]) のような一周するパスに対応するチェーンでは結果がゼロになるはずです。

写像 B1:K1→C0(K) 、あるいは線形写像としての B1:C1(K)→C0(K) を、1次の境界作用素〈boundary operator〉と呼びます。「境界」と呼ぶことは、計算例から納得できると思います(納得できるまで事例を計算してください)。

我々の具体例では、C1(K) ¥stackrel{¥sim}{=} R6、C0(K) ¥stackrel{¥sim}{=} R5 だったので、B1:C1(K)→C0(K) は5行6列の行列で表示できます。その具体的な形は:

[tex:
B1 = \begin{pmatrix}

			
  • 1 & 0 & -1 & -1 & 0 & 0 \\
1 & -1 & 0 & 0 & 0 & 0 \\ 0 & 1 & 1 & 1 & -1 & 0 \\ 0 & 0 & 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 0 & 0 & 0 \\ \end{pmatrix} ]

B1 = ¥begin{pmatrix}-1 & 0  & -1 & -1 & 0  & 0 ¥¥1  & -1 & 0  & 0  & 0  & 0 ¥¥0  &  1 & 1  & 1  & -1 & 0 ¥¥0  &  0 & 0  & 0  & 1  & 0 ¥¥0  &  0 & 0  & 0  & 0  & 0 ¥¥¥end{pmatrix}

ソフトウェアで行列計算してみましょうか。すぐ上の手計算をMaximaに計算させると次のようです。

B1 : matrix(
            [-1,  0, -1, -1,  0, 0],
            [ 1, -1,  0,  0,  0, 0],
            [ 0,  1,  1,  1, -1, 0],
            [ 0,  0,  0,  0,  1, 0],
            [ 0,  0,  0,  0,  0, 0]);
B1 . [1, 1, 0, 0, 1, 0] /* 1, 2, 3, 4を通るパスの境界 */;
B1 . [0, 0, -1, 2, 0, 0] /* パスではないチェーンの境界 */;

境界作用素 2

2-セル=面xに対しては、B2(x)を次のように定義します。

x B2(x)
[ア] + [イ] - [ウ]
[カ]

この定義は、図形としての面[あ]と面[い]の境界(周り)を1-チェーンとして表現していることになります。

面[あ]と面[い]の形式的線形結合である2次のチェーン(C2(K)の要素)には、上記の定義を線形に拡張します。

  B2(-[あ] + 2[い])
= B2(-[あ]) + B2(2[い])
= -B2([あ]) + 2B2([い])
= -([ア] + [イ] - [ウ]) + 2([カ])
= -[ア] - [イ] + [ウ] + 2[カ]

具体例における2次の境界作用素B2を行列表示すれば:

[tex:
B2 = \begin{pmatrix}
1  & 0 \\
1  & 0 \\

			
  • 1 & 0 \\
0 & 0 \\ 0 & 0 \\ 0 & 1 \\ \end{pmatrix} ]

B2 = ¥begin{pmatrix}1  & 0 ¥¥1  & 0 ¥¥-1 & 0 ¥¥0  & 0 ¥¥0  & 0 ¥¥0  & 1 ¥¥ ¥end{pmatrix}

上の手計算をソフトウェアでやってみれば次のようです。

B2 : matrix(
            [1,  0],
            [1,  0],
            [-1, 0],
            [ 0, 0],
            [ 0, 0],
            [ 0, 1]);
B2 . [-1, 2];

B1とB2のあいだには、極めて重要な次の関係が成立しています。

  • B1¥circB2 = 0

右辺の0はゼロ線形写像のことです。具体例で確認をしてみます。

B1 . B2;

B1¥circB2 = 0 の幾何的意味は次のように述べることができます。

  • 1次元高い図形の境界となっているような図形には、もはや境界はない。

この事実は、次元によらずに成立すべきことで、一般的には次の形になります。

  • Bk-1¥circBk = 0

我々の具体例では、k = 2, 1 以外のBk(例えば、B3, B0)はゼロ線形写像なので、確かに(自明に)すべてのkで、Bk-1¥circBk = 0 です。

この記事の第3節「複体」において、複体という言葉は色々な場面で少しずつ違った意味で使われる、と言いました。Bk-1¥circBk = 0 という等式は、「複体」全般に共通する大原則なのです。幾何複体、組み合わせ複体、代数的複体のいずれも、この等式「境界には境界がない」で統御されています。

さて、今まで、境界作用素について具体例を使って説明してきました。一般的な定義はしていません。これから一般的な定義をする … かと言うと、しません。出来ません。境界の定義は、幾何セル(図形としてのセル)の形状によって扱いが変わります。幾何セル/幾何複体は絵を描いて済ませているこの記事では、正確な議論は出来ないのです。

境界作用素Bkを実際どう定義するか、の話題は割愛せざるを得ないのですが、どのように定義したにしろ、Bk-1¥circBk = 0 は成立する必要があります。成立するように定義するのです。

組み合わせ複体と代数的複体

Kが幾何複体だとすると、Kはセルという基本図形から構成される複合図形でした。そして、Kのk-セルの集合をKkと書きました。実のところ、このKkは図形の集合というよりはラベルの集合で、「ラベルと図形を同一視」することで、我々の心に“図形のイメージ”を持ち続けよう、という方針でした。

この“図形のイメージ”を捨て去れば、(Kk | k∈Z)は単に整数で番号(インデックス)付けられた集合族に過ぎません。ただし、集合の族だけでは、次元ごとに素材を書き並べているだけで、素材どうしの繋がり具合の情報が全くありません。組み合わせ的な繋がり具合/隣接関係の情報は、境界作用素として抽出することができます。つまり、組み合わせ複体は、「Z-インデックス付き集合族 + 境界作用素の族」となります。

k次の境界作用素は、Bk:KkZKk-1 という形で定式化できます。ここで、ZKk-1は、Kk-1の要素(セルのラベル)を整数係数で線形結合したチェーンの集合(Z-加群という構造を持ちます)でした。

今回、スカラーは実数と決めているので、Bk:KkZKk-1 は、Bk:KkRKk-1 へと係数拡張して使いました。後から実数にするなら、最初から実数係数で考えて、「k次境界作用素は Bk:KkRKk-1 として与えられる」としたほうが手っ取り早いですね。

そんなこんなを考慮して、組み合わせ複体の正式な定義を与えましょう。(Kk, Bk | k∈Z) が組み合わせ複体〈combinatorial complex〉だとは:

  1. k∈Z に対して、Kkは有限集合(空集合でもよい)。
  2. Kk ≠ (ゼロ空間) であるkは有限個しかない。
  3. k∈Z に対して、Bkは KkRKk-1 という写像。
  4. k∈Z に対して、Bk-1¥circBk = 0 が成立する。

1番と2番の条件で、セル(のラベル)の総数が有限であることが保証され、神ならぬ人間/コンピュータでも取り扱い可能となります。「負次数(負次元)のセルがない」も条件に入れることが多いですが、これは気にしないことにします。

定義の上では、境界作用素Bkは KkRKk-1 として与えられます。しかしこれは、自明な線形拡張により Bk:RKkRKk-1 という線形写像とみなせます。KkRKk-1 でも RKkRKk-1 でも大差ないので、同じ記号Bkを使います。(圏論をご存知なら、R(-)によるモナドのクライスリ圏とクライスリ結合を考える、と言えば察しが付くでしょう。)

BkとBk-1の結合は、Bk-1を線形写像 Bk-1:RKk-1RKk-2 と考えて、Bk:KkRKk-1 の後に*7結合すれば、Bk-1¥circBk:KkRKk-2 が出来ます。あるいは、最初から線形写像どうしの結合と考えてもいいです。

等式 Bk-1¥circBk = 0 の左辺は今説明した結合写像〈composed map〉であり、右辺は常にゼロベクトルの値を取るゼロ写像です。k-セル x∈Kk での値を考えるなら、等式は次の形です。

  • Bk-1(Bk(x)) = 0 in RKk-2

境界作用素Bkをすべて線形写像と考えると、組み合わせ複体Kから、ベクトル空間 Ck(K) := RKk と 線形写像 Bk:Ck(K)→Ck-1(K) のZ-インデックス付き族 (Ck(K), Bk | k∈Z) が得られます。これは代数的複体〈algebraic complex〉です。

組み合わせ複体から、ただちに代数的複体(ベクトル空間と線形写像の系列)が得られました。組み合わせ複体Kと対応する代数的複体(Ck(K), Bk | k∈Z)は、ほとんど同じものです。しかし、組み合わせ複体から独立した、純粋な代数的複体を考えることができるし、純粋な代数的複体を調べておいたほうがいいでしょう。次節で述べます。

代数的複体もっと

代数的複体は、チェーン複体〈chain complex〉と呼ばれることが多いのですが、「チェーン複体」はかなり曖昧な使い方がされる言葉なので、「代数的複体」という言葉を使って話を進めます。

代数的複体は、Zで番号付けられた無限個のベクトル空間Vk達と、隣り合ったベクトル空間のあいだの線形写像の列fk達から構成されます。線形写像の向きによって、二種類に分けます。

  • 共変代数的複体: fk:Vk→Vk-1 と、番号が減る方向が線形写像の向き。
  • 反変代数的複体: fk:Vk→Vk+1 と、番号が増える方向が線形写像の向き。

共変/反変という形容詞は、代数的複体を圏論(の関手圏)で定式化すれば、合理的な意味を持ちます。が、今は気にしなくていいです。番号は、次数〈degree〉、次元〈dimension〉、階数〈grade | 位数〉など、色々と呼び名がありますが、これも気にしてもしゃーないです。まー、どうでもいい、と。

前々節で強調したように、複体と呼ばれるからには、次の条件が成立しています。

  • 共変代数的複体: fk-1¥circfk = 0
  • 反変代数的複体: fk+1¥circfk = 0

これらの条件を満たすようなベクトル空間/線形写像の無限列がそれぞれ、共変代数的複体〈covariant algebraic complex〉、反変代数的複体〈contravariant algebraic complex〉で、それらを総称して代数的複体〈algebraic complex〉と(ここでは)呼びます。

この定義だけだと、茫漠としていて何が嬉しいかサッパリ分かりませんが、線形代数を一般化した理論(ホモロジー代数)を展開できます。ベクトル空間より弱い構造である加群を考えたり、付加的な条件(例えば有界性、有限性)を付けたりします。

定義から感じるもうひとつの疑問: 共変代数的複体と反変代数的複体ってほぼ同じなのに、なんで2種類あるんだ? 2種類いらんだろう、と。実は、両方を一度に考えることがあるので、必要なんですよ。

(Vk, fk) が共変代数的複体だとします。fk:Vk→Vk-1 と、番号が減る方向です。ベクトル空間Vk達の双対ベクトル空間と、線形写像fk達の双対線形写像を考えます。すると:

  • (fk)*:(Vk-1)*→(Vk)*

Wk := (Vk)* と置けば:

  • (fk)*:Wk-1→Wk

と、番号が増える方向の線形写像の列ができます。番号付けをちょっと変えて、gk-1 := (fk)* (g := (fℓ+1)*)とすると:

  • g:W→Wℓ+1

(W, g)は、反変代数的複体となります。(W, g)は(Vk, fk)の双対なので、ペアとして一緒に扱うことになります。

共変/反変の別を、番号添字を下付き/上付きで区別する習慣があります。しかし、絶対的なルールはないので、その場その場で、どのような番号付け・添字ルールを採用しているかを確認するしかないです。

そもそも、「チェーン複体」あるいは形容詞なしの「複体」が、共変代数的複体と反変代数的複体のどちらを指しているかは場面・文脈に依存しているので、なんとも言えません。「チェーン複体」とは反変代数的複体かも知れないし、共変代数的複体かも知れないし、両者を総称してるかも知れないし、あるいは、多様体や幾何複体から作った具体的代数的複体を指しているかも知れません。

ラプラシアンとラプラス方程式

電磁気、流体、熱伝導などの分野では、ラプラシアン〈Laplacian | Laplace operator〉と呼ばれる微分作用素が登場します。

¥Delta f = ¥Delta(f) ¥,:= ¥frac{¥partial^2 f}{{¥partial x}^2} + ¥frac{¥partial^2 f}{{¥partial y}^2} + ¥frac{¥partial^2 f}{{¥partial z}^2}

これは直交座標系で書いたラプラシアンΔですが、ベクトル解析では、grad(勾配)とdiv(発散)を使ってラプラシアンを書きます。

 ¥Delta f = ¥Delta(f) ¥,:= ¥mbox{div}¥: ¥mbox{grad} f

現象の記述として、ラプラシアンを使った(偏微分)方程式 Δf = g (ポアソン方程式)が出てきます。現象が特別に単純な場合は、Δf = 0 となり、これをラプラス方程式〈Laplace equation〉(斉次〈せいじ〉ポアソン方程式)と呼びます。

僕は物理に無知なんで、ホントのところよく分からんのですが、特別に単純な現象を表現するラプラス方程式の解とは、次のようなものらしいです。

  • 電磁気: 電荷がない自由空間における電位(電気的ポテンシャル)の場
  • 流体: 非圧縮性流れの速度ポテンシャル場
  • 熱伝導: 熱源がない場合の定常熱伝導の温度分布場

ん? 話題が突然変わったような? -- いや、そうでもないんです。物理現象そのものは、僕には理解も説明もできませんが、使われる方程式を整理すると代数的複体のなかで定式化できる、という話なんです。第2節と同様、代数構造として抽出蒸留される前の背景を述べてます。

現象が起きる舞台である空間をMとします。Mはn次元の多様体ですが、n = 2 または 3 のユークリッド空間だと思ってもいいです。Mの上には、様々な量の場があります。量の場とは、ベクトル解析で扱う対象なんですが、これがねー、なんだかワケワカランのですよ。

「ベクトル解析ワケワカラン!」という話は過去にしています。次の記事達(古い順)とそこからリンクされている他の記事達に書いてあります。

要約すると、「反変ベクトル、共変ベクトル〈コベクトル | 余ベクトル〉、極性ベクトル、軸性ベクトル(擬ベクトル)とかって、何なんだよ、あれは! フザケンナヨ、わっかんねーよ」です。

なぜ分かりにくいのかと言うと、ベクトル解析で扱う量(の場)はスカラー(場)とベクトル(場)なのですが、なし崩しに「ベクトルつっても、2種類あるかもな」だの「スカラーつっても、密度はちょっと違うかな」だのと言い出して、量の分類が不明瞭なのです。

空間M上の量の分類を整理すると、第2節で触れたド・ラーム複体と随伴ド・ラーム複体になります。

  • Mのド・ラーム複体: … → Ω-1(M) - d-1 → Ω0(M) - d0 → Ω1(M) - d1 → Ω2(M) - d2 → Ω3(M) - …
  • Mの随伴ド・ラーム複体: … → Ω3(M) - δ3 → Ω2(M) - δ2 → Ω1(M) - δ1 → Ω0(M) - δ0 → Ω-1(M) - …

Mのド・ラーム複体は、反変代数的複体であり、随伴ド・ラーム複体は共変代数的複体です。ちなみに、ここで使われている形容詞「反変/共変」は圏論由来であり、「反変ベクトル/共変ベクトル」とは関係ありませんから要注意。

Mのド・ラーム複体と随伴ド・ラーム複体はペアになりますが、(前節で説明したような)線形代数の意味での双対になっているわけではなくて、ベクトル空間の内積によりペアを形成します。双対ペアじゃなくて随伴ペアです。ここらへんの代数的メカニズムは、次回に説明します。

ド・ラーム複体と随伴ド・ラーム複体により、ベクトル解析を明瞭に再定式化すると、grad, div, curlなどの微分作用素は、外微分作用素dk/随伴外微分作用素〈ベルトラミ作用素〉δkに置き換えられます。そして、ラプラス方程式は次の形に一般化されます(第2節で既出)。

  • (dk-1¥circδk + δk+1¥circdk)α = 0 (α∈Ωk(M))

k = 0 の場合が、特別に簡単な電位場/速度ポテンシャル場/温度分布場などを記述する方程式です。一般化されたラプラス方程式の k = 1 のときは、ベクトル解析の言葉で書くなら次のようになるようです。

関数(スカラー場)に限らず、一般の微分形式(ベクトル場の双対となる場)にまで通用するラプラシアンの定義 Δ := dδ + δd *8を誰が発見したか僕は知りません。歴史的事実はワキに置いて、一般化ラプラシアンを表す言葉には、ド・ラーム〈de Rham〉、ベルトラミ〈Beltrami〉、ホッジ〈Hodge〉の名前を適当に混ぜて冠すればいいようです(例: ラプラス/ベルトラミ作用素、ラプラス/ド・ラーム作用素、ホッジ/ラプラス作用素)。

一般化ラプラシアン/ラプラス方程式は、代数的複体の枠組み内で定義できるわけですが、逆に、一般化ラプラシアン/ラプラス方程式により、代数的複体の構造を記述・分析できます。ラプラシアン/ラプラス方程式に現象的イメージをお持ちの方は(僕はダメですが)、代数的複体の構造にもヴィヴィッドな描像を得られるのではないでしょうか。


次回は実際に、ラプラシアンを道具に、代数的複体の構造を記述・分析します。現象を背景としたヴィヴィッドな描像を伝えることは僕には出来ませんが、代数的複体への線形代数的アプローチを説明したいと思います。

*1:最初にf, 次にgの順序での結合(合成)を、f;gと書くのが図式順、g¥circfと書くのが反図式順です。

*2:番号付けを変えるのは単なる習慣です。習慣に反しますが、δk = (dk)k-1(M)→Ωk(M) としたほうがスッキリする場面もあります。

*3:δは、余微分作用素〈codifferential operator〉と呼ばれることが多いですが、この言葉は混乱を招くので、随伴外微分作用素としておきます。後(次回)でベルトラミ作用素〈Beltrami operator〉という言葉も使います。

*4:ここでの「問題」はコミュニケーション上の問題のことで、「概念的に区別しなくてもよい」ということではありません。

*5:当初、この事例に関して露骨な計算〈explicit calculation〉を全てやるつもりでしたが、気力が萎えてやめました。

*6:メビウス・バンドのように、原理的に向きを割り当てられない図形もあります。

*7:図式順記法なら、「後に」は右になり、反図式順記法なら、「後に」は左になります。

*8:添字の省略と補完をうまくやる前提で、dd = 0, δδ = 0 なので、Δ := (d + δ)2 とも書けます。

hitotakuchanhitotakuchan 2018/05/15 18:06 ちょうど最近似たような記事を読みました。
http://lucien0308.hateblo.jp/entry/2018/04/29/040839

私はこの辺りは代数的にやっただけで、物理的な意味を全く理解せずに来たので、物理的な理解にはとても興味があります。

m-hiyamam-hiyama 2018/05/15 19:43 hitotakuchanさん、
> 物理的な理解にはとても興味があります。
僕も物理的に理解したいと思ってるんですが、物理苦手なんですよ。
オモチャをいじると少しは理解が進むかと思って、オモチャ作りから始めたわけです。

2018-05-09 (水)

米田、米田、米田

| 13:21 | 米田、米田、米田を含むブックマーク

米田埋め込みは頻繁に登場するので、短く印象的な記法を使いたいのは人情でしょう。「米田の「よ」とか: ちょっと変わった記法・名前達」で、ひらがな「よ」を使う書き方を紹介しました。

僕も「よ」を使ってみたのですが、ちょっと問題があるのに気付きました。英文(より一般には非日本語文)内では、「よ」は目立つのですが、日本語のなかだと地の文にまぎれてしまうのです。太字にして「」ならいいかも知れません。

頻繁に使う操作なら、演算子記号を割り当てるのも良い方法ですね。下の引用(PDFの画像コピー)では、上付きの黒丸を使っています。

この引用は次の論文からです。

Xの定義は:

  • (-):C→[Cop, Set]
  • for X∈|C|, X:CopSet
  • for Y∈|C|, X(Y) := C(Y, X)
  • for h∈C(Y, Y'), X(h:Y→Y') := (h*X := λk∈C(Y' X).k¥circh)

困った時の米田頼み、ご利益ツールズ // ラムダ記法と米田の星」で僕は、「米田の星」として上付きの「米」を使ってみたのですが、これは「米田の丸」ですね。

エミリー・リエル〈Emily Riehl〉の教科書"Category theory in context"(公開PDFはhttp://www.math.jhu.edu/~eriehl/context.pdf)のp.153に

the category theorist's joke that "all theorems are Yoneda."

という文言が出てきます。他でも、"category theorist"とは、何でも"a special case of Yoneda's lemma"で片付ける人だ、とか見たことがあります。([追記]「象を冷蔵庫に入れるには?」参照。[/追記]

米田の「よ」とか: ちょっと変わった記法・名前達」で紹介した、

のp.16、Remark 2.2によると、レンスター〈Tom Leinster〉が次のように言っていたそうです。(なんでninjaなのか、よく分からないのですけど。)

Australian ninja category theorists call everything the Yoneda Lemma.

レンスターは、『ベーシック圏論』を書いた人です。


というように、何でも("all theorems", "everything")米田から派生するみたいですよ。

象を冷蔵庫に入れるには?

| 15:51 | 象を冷蔵庫に入れるには?を含むブックマーク

今日書いた記事「米田、米田、米田」のジョーク "all theorems are Yoneda." に関して検索しているときGoogleブックス検索で見つかったのが次の本 "Encyclopedia of Humor Studies":

Encyclopedia of Humor Studies

Encyclopedia of Humor Studies

この本の "Mathematical Humor" の項目に、「象を冷蔵庫に入れるには?」("How to put an elephant into a refrigerator")という質問に対して、各分野の数学者が答えるというジョークがあるらしいです。

  1. Real Analyst (実解析)
  2. Differential Geometer (微分幾何)
  3. Set Theoritic Geometer (集合論的幾何)
  4. Algebraist (代数)
  5. Topologist (トポロジー)
  6. Geometer (幾何)
  7. Complex Analyst (複素解析)
  8. Probabilist (確率)
  9. Combinatorist (組合せ論)
  10. Statistician (統計)
  11. Logician (論理)
  12. Category Theorist (圏論)
  13. Experimental Mathematician (実験数学)
  14. Set Theorist (集合論)

笑えそうなのだけピックアップすると:

  • Set Theoritic Geometer: バナッハ/タルスキーの定理を使え。
  • Topologist: 象はコンパクトなので、有限個の冷蔵庫で覆える。通常、これで十分である。
  • Probabilist: ランダムな方法でそれを何度も試みるんだ。いつかは出来る。
  • Statistician: サンプルとして象のしっぽを冷蔵庫に入れる。それでもういいのだ。
  • Logician: それが可能なのは知っているぞ。私は出来ないけどね。
  • Set Theorist: 強制しろ(Force it)。

で、ケンロニスト((c)id:bonotake)の答は:

  • Category Theorist: それはどうせ米田の補題の特殊ケースでしょ?("Isn't this just a special case of Yoneda's lemma?")

幾何学者の答となっているのが、むしろ論理学者だと思うんだけどなー。

  • Geometer: 「象は冷蔵庫に入る」という公理を持った公理的体系を作ればいい。

chiguri_schiguri_s 2018/05/09 15:55 てっきり「既に入ってるでしょ?」という日本語のジョークかと思ってしまいました。>象を冷蔵庫に

m-hiyamam-hiyama 2018/05/09 15:58 chiguri_sさん、
それも笑えますね :-)

2018-05-08 (火)

viXraを眺める

| 15:12 | viXraを眺めるを含むブックマーク

暇で無気力なとき、viXra(http://vixra.org/ または http://www.rxiv.org/)を眺めると癒やされます。現代のポエム(広義)の宝庫。

1ページや3ページの短い論文も多く、こういうのは簡単に読めます。現在の未解決問題も、viXraでは解けている(ことになっている)ので、検索してみるといろんな解法(と言われているもの)が見つかります。"Riemann hypothesis"とかで検索すると、肯定も否定もよりどりみどりですぜ、だんな/奥さん。

viXra論文がみんなトンデモってわけではないです。まだ完成度が低いドラフト(だが、マトモなもの)を一時的に公開している人もいます。なかには、思い付きや勉強した内容をメモしておくのに使っている人もいるようです。PDFベースのgistみたいな感じで。

自分が書いたものにメタデータとURLが付いて、バージョン管理もしてくれるので、そういうサービスとして利用するのもアリかも知れませんね。

トラックバック - http://d.hatena.ne.jp/m-hiyama/20180508

2018-05-07 (月)

絵算からテキスト、そして可換図式化もやってみた(当然疲れた)

| 09:29 | 絵算からテキスト、そして可換図式化もやってみた(当然疲れた)を含むブックマーク

絵算のテキスト化を完全にやってみた(超・疲れた)」において、絵算の計算過程を、行列レイアウトの等式的推論としてテキストに写し取ってみました。これは、値を変えずに項を変形していく過程で、通常の等式変形(等式論理系における証明)そのものです。

ところで圏論では、可換図式が多用されます。可換図式が、圏論で一番ポピュラーな記述・計算デバイスなのです。この記事では、絵算やそのテキスト表現を可換図式にしてみます。また、この機会に可換図式に関する説明もします。

内容:

  1. 結合律の可換図式
  2. この可換図式はどうやって作ったか
  3. 可換図式とは何なのか
  4. 可換図式と他の表現方法
  5. おわりに

結合律の可換図式

以下の記事達で、強モナドから作られたモノイドの結合律を題材にしました。

もとの定理(結合律 (m¥otimesN);m = αN,N,N;(N¥otimesm);m)の内容はあんまり気にしなくていいです。同じ定理の記述と証明を、いろんな手法でやってみようというノリです。

結合律の絵による証明とテキスト(項と等式)による証明は既に述べたので、可換図式〈commutative diagram〉による証明を挙げましょう。以下の図がソレです。GraphVizで描いたので、雰囲気〈フレーバー〉が普通の可換図式とは違います*1が、内容的には紛れもなく可換図式です。

この可換図式が結合律の証明になっていることや、他の証明手法との関連などについて説明していきます。

この可換図式はどうやって作ったか

先の可換図式は、「絵算のテキスト化を完全にやってみた(超・疲れた)」で書いたテキスト表現をもとにして作りました。テキスト項の番号が1から13(trm1からtrm13)まであるので、そのなかに出現する目ぼしい対象に枝番(例えば、3.1, 3.2)を付けます。その対象を可換図式のノードにして、射を矢印として描きます。異なる項に出現する同一対象は同一ノードにマップされることもあります。

手描きするにしろ、TeXパッケージを使うにしろ、可換図式のレイアウトを調整するのは苦痛なので、自動レイアウトを行うソフトウェアであるGraphVizを使いました。DOT言語によるデータを作れば、あとはGraphVizがやってくれます。

DOT言語のソースは以下のとおりです。オプション(属性)はすべてデフォルトで、見た目の調整は何もしてません。モノイド積を表すテンソル積記号'¥otimes'は入力が面倒なので'×'で代用しています。自然変換の下付き添字(τN,Iの'N,I'など)は丸括弧の引数形式(例:τ(N,I))にしています -- 丸括弧引数でも何の不都合もないし、むしろ便利なので僕はよく使います。

// -*- coding: utf-8 -*-
// This is m2m-assoc.gv

digraph Assoc {


/* 1 */
trm1_1 [label="1.1 (N×N)×N\n3.1 (N×N)×F(I)"];
trm1_2 [label="1.2 N×N\n2.1 N×F(I)"];
trm1_3 [label="1.3, 13.2 N\n2.4 F(I)"];
  trm1_1 -> trm1_2 [label="m×N"];
  trm1_2 -> trm1_3 [label="m"];

/* 2 */
    trm1_2 -> trm2_2 [label="τ(N, I)"];
// trm2_1 = trm1_2
trm2_2 [label="2.2 F(N×1)"];
trm2_3 [label="2.3 F(N)\nFF(I)"];
  trm2_2 -> trm2_3 [label="F(ρ(N))"];
    trm2_3 -> trm1_3 [label="μ(I)"];

/* 3 */
    trm1_1 -> trm3_2 [label="τ(N×N,I)"];
// trm3_1 = trm1_1
trm3_2 [label="3.2 F((N×N)×I)"];
    trm3_2 -> trm2_2 [label="F(m×I)"];

/* 4 */
    trm3_2 -> trm4_1 [label="F(ρ(N×N))"];
trm4_1 [label="4.1 F(N×N)\n7.1, 8.1, 10.1 F(N×F(I))"];
    trm4_1 -> trm2_3 [label="F(m)"];

/* 5 */
    trm3_2 -> trm5_1 [label="F(α(N,N,I))"];
trm5_1 [label="5.1 F(N×(N×I))"];
    trm5_1 -> trm4_1 [label="F(N×ρ(N))"];

/* 6 */
    trm1_1 -> trm6_1 [label="α(N,N,N)"];
trm6_1 [label="6.1, 12.1 N×(N×N)\nN×(N×F(I))"];
trm6_2 [label="6.2 N×F(N×I)"];
trm6_3 [label="6.3, 11.1 N×F(N)"];
  trm6_1 -> trm6_2 [label="N×τ(N,I)"];
  trm6_2 -> trm6_3 [label="N×F(ρ(N))"];
    trm6_3 -> trm4_1 [label="τ(N,I)"];

/* 7 */
    trm4_1 -> trm7_2 [label="F(τ(N,I))"];
// trm7_1 = trm4_1
trm7_2 [label="7.2 FF(N×1)"];
trm7_3 [label="7.3 FF(N)\nFFF(I)"];
  trm7_2 -> trm7_3 [label="FF(ρ(N))"];
    trm7_3 -> trm2_3 [label="F(μ(I))"];

/* 8 */
// trm8_1 = trm4_1
    trm4_1 -> trm8_2 [label="F(τ(N,I))"];
trm8_2 [label="8.2, 10.2 FF(N×1)"];
    trm8_2 -> trm7_3 [label="FF(ρ(N))"];

/* 9 */
    trm7_3 -> trm9_1 [label="μ(F(I))"];
trm9_1  [label="9.1 FF(I)"];
    trm9_1 -> trm1_3 [label="μ(I)"];
    trm9_1 -> trm2_3 [label="=", arrowhead="none"];

/* 10 */
// trm10_1 = trm4_1
// trm10_2 = trm8_2
trm10_3 [label="10.3 F(N×I)"];
  trm8_2 -> trm10_3 [label="μ(N×I)"];
    trm10_3 -> trm9_1 [label="F(ρ(N))"];

/* 11 */
    trm6_3 -> trm11_2 [label="N×μ(I)"];
// trm11_1 = trm6_3
trm11_2 [label="11.2 N×F(I)"];
// trm11_3 = trm10_3
    trm11_2 -> trm10_3 [label="τ(N×I)"];

/* 12 */
    trm6_1 -> trm12_2  [label="N×m"];
// trm12_1 = trm6_1
trm12_2  [label="12.2, 13.1 N×N"];
    trm12_2 -> trm11_2  [label="=", arrowhead="none"];

/* 13 */
// trm13_1 = trm12_2
// trm13_2 = trm1_3
    trm12_2 -> trm1_3 [label="m"];

}

このファイルm2m-assoc.gvをレンダリングするには、次のようなコマンドラインを使います。

  • dot -Nfontname="ノード用フォント名" -Efontname="辺用フォント名" -Tpng m2m-assoc.gv -odiagram.png

ここで、フォント名指定は環境に依存するので、適当なフォント名で置き換えてください。

可換図式とは何なのか

圏論における可換図式とは、ノードが対象、有向辺が射を表す有向グラフです。「可換」と呼ばれるのは、2つのノード間を結ぶどんなパス〈道 | 経路〉も同じ射を表すと約束されているからです。図式(有向グラフ)内の多角形領域が、射のあいだの等式になっているのです。

可換図式 圏の概念
ノード 対象
基本的な射
パス 結合により得られた射
多角形領域 射の同一性、等式

我々の例である結合律の可換図式で言えば、1.1(または3.1)とラベルされた一番上のノードから、1.3(または2.4, 13.2)とラベルされた一番下のノードに至るすべてのパスは等しい射です。特に、左側外周を通るパス (m×N);m と、右側外周を通るパス α(N,N,N);(N×m);m は等しいので、この図式には次の等式が含まれます。

  • (m×N);m = α(N,N,N);(N×m);m

より普通の記法だと:

  • (m¥otimesN);m = αN,N,N;(N¥otimesm);m

可換図式に含まれる多角形領域が全部で12個あります。それぞれの多角形領域が射の等式を表しています。左外周パスから、多角形領域を横断しながら、パスを右へ右へとズラしていくと、最終的に右外周パスに到達します。このように、パスをズラしていく過程が証明です。

証明の最初の2つのステップだけ書いてみると。

  • 四角形1.2, 1.3, 2.2, 2.3 (下の一番目の図)
    • 最初のパス: (m×N);m (左外周のパス)
    • 等式: m = τ(N,I);F(ρ(N));μ(I)
    • 結果のパス: (m×N);τ(N,I);F(ρ(N));μ(I)
  • 四角形1.1, 1.2, 2.2, 3.2 (下のニ番目の図)
    • 最初のパス: (m×N);τ(N,I);F(ρ(N));μ(I)
    • 等式: (m×N);τ(N,I) = τ(N×N,I);F(m×I)
    • 結果のパス: τ(N×N,I);F(m×I);F(ρ(N));μ(I)

可換図式では、何も書いてない空白の多角形領域にこそ意味があるのです。この領域に、使った法則とか説明とかを書ければいいのですが、組版レンダリングの都合でそういうことは出来ません。対話的グラフィックスを使って、領域をクリックすると説明がポッポアップするとか、解説ページへのハイパーリンクを辿るとか出来るソフトウェアがあるといいのですが。

可換図式は、単一の等式や、組織化された複数の等式群を表現するグラフィックスです。意味的には等式、または等式の連鎖と同じなので、定理の記述や証明に可換図式が利用されるのです。

可換図式と他の表現方法

可換図式と他の表現方法(等式的推論、絵算、アニメーション)との対応は次のようにまとめられます。

可換図式 等式的推論 絵算 アニメーション
パス フレーム(スチル)
多角形領域 等式 絵の変形 フレーム遷移
可換図式全体 等式的証明 絵証明 ムービー

いずれも一長一短で、これがベストという表現手段はないです。

そもそも、圏論で使う記述・証明デバイスに関しては、これといったテクノロジーがなく、旧態依然たる紙の数式組版(の電子版)だけしか利用できません。とても不幸な事態だと思います。

望ましいのはアニメーションによる記述・表現でしょう。何十年か後の人々は、VR/AR技術により体感する記述・証明デバイスにより、計算や証明をしているでしょう(「「コミュニケーションの多次元化」という革命に立ち会っているのだと思う」参照)。そのときが出来るだけ早く来るといいのですが。何十年後まで生きてられねーからな。

おわりに

定理の記述・証明のグラフィック表現を記録する目的では、DOT言語のソースはコンパクトに書けていいと思います。しかし、あくまで視覚表現の記述で、証明の意味的な情報は持ってません。グラフィックスの記述ではなくて、論理的証明の記述がマスターデータで、そこからグラフィックスは自動生成されるべきです。

Globularは内部的に証明データを持ってますが、それを外部化できないし、単純にシリアライズしても、それが交換形式に適しているとは限りません。

当面は紙と鉛筆、せいぜいTeXGraphVizかぁー。ともかく道具がない、あってもゴジラに竹槍みたいな非力さ。はぁー(ため息)。

*1:よく見る可換図式では、(1)「矢印に曲線は使わず直線だけを使う」(2)「多角形領域は凸多角形になるようにする」ようです。GraphVizで描いた図では、このルールは守られません。そのため、雰囲気が違うのです。

トラックバック - http://d.hatena.ne.jp/m-hiyama/20180507

2018-05-02 (水)

絵算のテキスト化を完全にやってみた(超・疲れた)

| 12:54 | 絵算のテキスト化を完全にやってみた(超・疲れた)を含むブックマーク

4月26日の記事「新しい絵算手法:ストリング+ストライプ図」を書いた時点で、例題である“結合律”を証明する絵〈pictorial proof〉は描いていました。翌日の「絵算のテキスト表現(結論:疲れる)」において、行列レイアウトを使って絵の一部をテキストに写し取ってみたのですが、疲れて途中でやめてしまいました。

4月30日の夜と5月1日の朝を使って、残りの写し取り作業を完成させたので、その結果をお見せしましょう。面倒だったよー。たぶん、こんな事はもうやらないと思います。

内容:

  1. はじめに
  2. 書き方のお約束
  3. 定義
  4. ターゲット
  5. 項1から項6
  6. 項6'から項9'
  7. 項10から項13
  8. 図の凡例
  9. 図1から図6
  10. 図6'から図9'
  11. 図10から図13'

はじめに

なんで面倒な作業をやったのかというと; 典型的例題として提示した計算を途中でうっちゃっておく*1のもイカガナモノカ、という理由がひとつ。もうひとつ別な理由もあります。

絵算に関して、次のような印象を持つ人がいるかと思います。

  • 人間の素朴な幾何的直感に頼っているので厳密性に欠ける。
  • 絵図の操作は、公理化/アルゴリズム化が出来ない。

これらの疑念や不信がナンセンスであることを示すこともこの記事を書いた動機です。実際は、

  • 人間の素朴な幾何的直感に頼っているのは事実だが、厳密性に欠けるわけではない。
  • 絵図の操作を公理化/アルゴリズム化することは可能である。ただし、容易でないのは事実。

絵をテキストに翻訳してみれば、やっていることは記号的表現の等式的推論〈equational reasoning〉と同等なことだと分かるでしょう。

使ったテキスト表現手法は、「絵算のテキスト表現(結論:疲れる)」で紹介した行列レイアウトを使う方法です。これは、いわば苦肉の策です。苦肉の策でも無策よりはマシですが、いくつか問題があります。

行列レイアウトは、碁盤目状のグリッドレイアウトしか出来ません。絵算の絵は、碁盤目に区切るのが適切とは限りません。次の図は「絵算の威力をお見せしよう」で出したものです。

ご覧のように碁盤目ではない分割を使っています。仮に自由なレイアウトが出来ても、ワイヤーの繋がり具合という情報が見えなくなるので、テキスト化は劣化を伴います。

今回の等式的推論過程は、あくまで絵の写しと捉えてください。テキスト表現だけの計算としては無駄なところがあったりします。そもそも、テキスト表現だけで計算が出来るのか? というと、個人的には出来る気がしません。テキスト表現を見ても、どこをどう変形するかの方針が(僕には)立たないからです。しかし、計算過程をチェックする用途にはテキスト表現だけでも十分だと思います。

書き方のお約束

等式的推論とは、項をイコール記号で結んで変形していくことです。

  項1
= 項2
  :
  :
= 項n

という形です。等式的推論しているんだ、って前提がハッキリしているなら、イコール記号は省略していいとします。

  項1
  項2
  :
  :
  項n

さらに、項の前後やあいだには説明(コメント)を入れます。説明文がどの項を説明しているかをハッキリさせるために次の約束をします。

  • 直前の項に関する説明は、「//< 説明」と書く。
  • 直後の項に関する説明は、「//> 説明」と書く。
  • 直前の項から直後の項への変形を説明するときは、「//= 説明」と書く。

上記の約束でテキスト表現を記述します。絵はこの記事の後のほうに載せます。が、もともとは絵で、実質12ステップの変形で絵証明をしました。レイアウト変更(内容に変化なし)が3回あるので、絵図は16枚、レイアウト変更含めて15ステップです。先に絵を見たほうが分かりやすいかも知れません。

対応する項は全部で24項、計算は23ステップです。項が増えているのは、行列のレイアウト変更があるからです。

no 図番号 項番号 no 図番号 項番号 no 図番号 項番号
1 図1 項1 11 図6' 項6' 21 図11 項11
2 図2 項2 12 図6' 項6'-A 22 図12 項12
3 図2 項2-A 13 図7 項7 23 図12 項12-A
4 図2 項2-B 14 図7 項7-A 24 図13 項13
5 図2 項2-C 15 図7 項7-B 25 図13' -
6 図3 項3 16 図7 項7-C
7 図4 項4 17 図8 項8
8 図4 項4-A 18 図9 項9
9 図5 項5 19 図9' 項9'
10 図6 項6 20 図10 項10

定義

[tex:
(\mbox{def1}):\:
N \,:=\, F(I)
]

(¥mbox{def1}):¥:N ¥,:=¥, F(I)

//< (def1)は明示的等号ノード〈explicit equality node〉として使う。

[tex:
(\mbox{def2}):\:
m \,:=\,
\begin{bmatrix}
& N\otimes N \\
= & N\otimes F(I) \\
\tau_{N, I} & \downarrow \\
& F(N\otimes I) \\
F(\rho_{N}) & \downarrow \\
& F(N) \\
= & FF(I) \\
\mu_I & \downarrow \\
& F(I) \\
= & N \\
\end{bmatrix}
]

(¥mbox{def2}):¥:m ¥,:=¥,¥begin{bmatrix}& N¥otimes N ¥¥= & N¥otimes F(I) ¥¥¥tau_{N, I} & ¥downarrow ¥¥& F(N¥otimes I) ¥¥F(¥rho_{N}) & ¥downarrow ¥¥& F(N) ¥¥= & FF(I) ¥¥¥mu_I & ¥downarrow ¥¥& F(I) ¥¥= & N ¥¥¥end{bmatrix}

//< (def2)は置換〈substitution〉ルールとして使う。

ターゲット

//> 次が示すべきターゲットの等式。

[tex:
\begin{bmatrix}
& (N \otimes N)\otimes N \\
m\otimes N & \downarrow \\
& N\otimes N \\
m & \downarrow \\
& N \\
\end{bmatrix}
\,=\,
\begin{bmatrix}
& (N\otimes N)\otimes N \\
\alpha_{N,N,N} & \downarrow \\
& N\otimes (N\otimes N) \\
N\otimes m  & \downarrow \\
& N\otimes N \\
m & \downarrow \\
& N \\
\end{bmatrix}
]

¥begin{bmatrix}& (N ¥otimes N)¥otimes N ¥¥m¥otimes N & ¥downarrow ¥¥& N¥otimes N ¥¥m & ¥downarrow ¥¥& N ¥¥¥end{bmatrix}¥,=¥,¥begin{bmatrix}& (N¥otimes N)¥otimes N ¥¥¥alpha_{N,N,N} & ¥downarrow ¥¥& N¥otimes (N¥otimes N) ¥¥N¥otimes m  & ¥downarrow ¥¥& N¥otimes N ¥¥m & ¥downarrow ¥¥& N ¥¥¥end{bmatrix}

項1から項6

[tex:
(\mbox{trm1}):\:
\begin{bmatrix}
& (N \otimes N)\otimes N \\
m\otimes N & \downarrow \\
& N\otimes N \\
m & \downarrow \\
& N \\
\end{bmatrix}
]

(¥mbox{trm1}):¥:¥begin{bmatrix}& (N ¥otimes N)¥otimes N ¥¥m¥otimes N & ¥downarrow ¥¥& N¥otimes N ¥¥m & ¥downarrow ¥¥& N ¥¥¥end{bmatrix}

//< (trm1)は結合律の左辺。

//= 4行目のmを(def2)により置換する。

[tex:
(\mbox{trm2}):\:
\begin{bmatrix}
& (N \otimes N)\otimes N \\
m\otimes N & \downarrow \\
& N\otimes N \\
\begin{bmatrix}
 & N\otimes N \\
 = & N\otimes F(I) \\
 \tau_{N, I} & \downarrow \\
 & F(N\otimes I) \\
 F(\rho_{N}) & \downarrow \\
 & F(N) \\
 = & FF(I) \\
 \mu_I & \downarrow \\
 & F(I) \\
 = & N \\
\end{bmatrix} & \downarrow \\
& N \\
\end{bmatrix}
]

(¥mbox{trm2}):¥:¥begin{bmatrix}& (N ¥otimes N)¥otimes N ¥¥m¥otimes N & ¥downarrow ¥¥& N¥otimes N ¥¥¥begin{bmatrix} & N¥otimes N ¥¥ = & N¥otimes F(I) ¥¥ ¥tau_{N, I} & ¥downarrow ¥¥ & F(N¥otimes I) ¥¥ F(¥rho_{N}) & ¥downarrow ¥¥ & F(N) ¥¥ = & FF(I) ¥¥ ¥mu_I & ¥downarrow ¥¥ & F(I) ¥¥ = & N ¥¥¥end{bmatrix} & ¥downarrow ¥¥& N ¥¥¥end{bmatrix}

//= レイアウト変更。

[tex:
(\mbox{trm2-A}):\:
\begin{bmatrix}
& (N \otimes N)\otimes N \\
m\otimes N & \downarrow \\
& N\otimes N \\
& \begin{bmatrix}
  & N\otimes N \\
  = & N\otimes F(I) \\
  \tau_{N, I} & \downarrow \\
  & F(N\otimes I) \\
  F(\rho_{N}) & \downarrow \\
  & F(N) \\
  = & FF(I) \\
  \mu_I & \downarrow \\
  & F(I) \\
  = & N \\
\end{bmatrix} \\
= & N \\
\end{bmatrix}
]

(¥mbox{trm2-A}):¥:¥begin{bmatrix}& (N ¥otimes N)¥otimes N ¥¥m¥otimes N & ¥downarrow ¥¥& N¥otimes N ¥¥& ¥begin{bmatrix}  & N¥otimes N ¥¥  = & N¥otimes F(I) ¥¥  ¥tau_{N, I} & ¥downarrow ¥¥  & F(N¥otimes I) ¥¥  F(¥rho_{N}) & ¥downarrow ¥¥  & F(N) ¥¥  = & FF(I) ¥¥  ¥mu_I & ¥downarrow ¥¥  & F(I) ¥¥  = & N ¥¥¥end{bmatrix} ¥¥= & N ¥¥¥end{bmatrix}

//= 入れ子をはずす。

[tex:
(\mbox{trm2-B}):\:
\begin{bmatrix}
& (N \otimes N)\otimes N \\
m\otimes N & \downarrow \\
& N\otimes N \\
= & N\otimes F(I) \\
\tau_{N, I} & \downarrow \\
& F(N\otimes I) \\
F(\rho_{N}) & \downarrow \\
& F(N) \\
= & FF(I) \\
\mu_I & \downarrow \\
& F(I) \\
= & N \\
\end{bmatrix}
]

(¥mbox{trm2-B}):¥:¥begin{bmatrix}& (N ¥otimes N)¥otimes N ¥¥m¥otimes N & ¥downarrow ¥¥& N¥otimes N ¥¥= & N¥otimes F(I) ¥¥¥tau_{N, I} & ¥downarrow ¥¥& F(N¥otimes I) ¥¥F(¥rho_{N}) & ¥downarrow ¥¥& F(N) ¥¥= & FF(I) ¥¥¥mu_I & ¥downarrow ¥¥& F(I) ¥¥= & N ¥¥¥end{bmatrix}

//> ここで、マクロT1を定義する。

[tex:
(\mbox{mac1}):\:
\langle\mbox{T1}\rangle \,:=\,
\begin{bmatrix}
& F(N) \\
= & FF(I) \\
\mu_I & \downarrow \\
& F(I) \\
= & N \\
\end{bmatrix}
]

(¥mbox{mac1}):¥:¥langle¥mbox{T1}¥rangle ¥,:=¥,¥begin{bmatrix}& F(N) ¥¥= & FF(I) ¥¥¥mu_I & ¥downarrow ¥¥& F(I) ¥¥= & N ¥¥¥end{bmatrix}

//= (mac1)を使って、(trm2-B)をマクロ縮約する。

[tex:
(\mbox{trm2-C}):\:
\begin{bmatrix}
& (N \otimes N)\otimes N \\
m\otimes N & \downarrow \\
& N\otimes N \\
= & N\otimes F(I) \\
\tau_{N, I} & \downarrow \\
& F(N\otimes I) \\
F(\rho_{N}) & \downarrow \\
& F(N) \\
\langle\mbox{T1}\rangle & \cdots \\
\end{bmatrix}
]

(¥mbox{trm2-C}):¥:¥begin{bmatrix}& (N ¥otimes N)¥otimes N ¥¥m¥otimes N & ¥downarrow ¥¥& N¥otimes N ¥¥= & N¥otimes F(I) ¥¥¥tau_{N, I} & ¥downarrow ¥¥& F(N¥otimes I) ¥¥F(¥rho_{N}) & ¥downarrow ¥¥& F(N) ¥¥¥langle¥mbox{T1}¥rangle & ¥cdots ¥¥¥end{bmatrix}

//= テンソル強度を使って、左にあるmをFの内部に押し込む。

[tex:
(\mbox{trm3}):\:
\begin{bmatrix}
& (N\otimes N)\otimes N \\
= &  (N\otimes N)\otimes F(I) \\
\tau_{N\otimes N,I} & \downarrow \\
& F((N\otimes N) \otimes I) \\
F( m \otimes I)  & \downarrow \\
& F(N\otimes I) \\
F(\rho_{N}) & \downarrow \\
& F(N) \\
\langle \mbox{T1}\rangle & \cdots \\
\end{bmatrix}
]

(¥mbox{trm3}):¥:¥begin{bmatrix}& (N¥otimes N)¥otimes N ¥¥= &  (N¥otimes N)¥otimes F(I) ¥¥¥tau_{N¥otimes N,I} & ¥downarrow ¥¥& F((N¥otimes N) ¥otimes I) ¥¥F( m ¥otimes I)  & ¥downarrow ¥¥& F(N¥otimes I) ¥¥F(¥rho_{N}) & ¥downarrow ¥¥& F(N) ¥¥¥langle ¥mbox{T1}¥rangle & ¥cdots ¥¥¥end{bmatrix}

//= 右単位律子の作用点を上にズラす。

[tex:
(\mbox{trm4}):\:
\begin{bmatrix}
& (N\otimes N)\otimes N \\
= &  (N\otimes N)\otimes F(I) \\
\tau_{N\otimes N,I} & \downarrow \\
& F((N\otimes N)\otimes I) \\
F(\rho_{N\otimes N}) & \downarrow \\
& F(N \otimes N) \\
F( m )  & \downarrow \\
& F(N ) \\
\langle \mbox{T1}\rangle & \cdots \\
\end{bmatrix}
]

(¥mbox{trm4}):¥:¥begin{bmatrix}& (N¥otimes N)¥otimes N ¥¥= &  (N¥otimes N)¥otimes F(I) ¥¥¥tau_{N¥otimes N,I} & ¥downarrow ¥¥& F((N¥otimes N)¥otimes I) ¥¥F(¥rho_{N¥otimes N}) & ¥downarrow ¥¥& F(N ¥otimes N) ¥¥F( m )  & ¥downarrow ¥¥& F(N ) ¥¥¥langle ¥mbox{T1}¥rangle & ¥cdots ¥¥¥end{bmatrix}

//> ここで、マクロT2を定義する。

[tex:
(\mbox{mac2}):\:
\langle\mbox{T2}\rangle \,:=\,
\begin{bmatrix}
& F(N \otimes N) \\
F( m )  & \downarrow \\
& F(N ) \\
\langle \mbox{T1}\rangle & \cdots \\
\end{bmatrix}
]

(¥mbox{mac2}):¥:¥langle¥mbox{T2}¥rangle ¥,:=¥,¥begin{bmatrix}& F(N ¥otimes N) ¥¥F( m )  & ¥downarrow ¥¥& F(N ) ¥¥¥langle ¥mbox{T1}¥rangle & ¥cdots ¥¥¥end{bmatrix}

//= (mac2)を使って、マクロ縮約する。

[tex:
(\mbox{trm4}):\:
\begin{bmatrix}
& (N\otimes N)\otimes N \\
= &  (N\otimes N)\otimes F(I) \\
\tau_{N\otimes N,I} & \downarrow \\
& F((N\otimes N)\otimes I) \\
F(\rho_{N\otimes N}) & \downarrow \\
& F(N \otimes N) \\
\langle \mbox{T2}\rangle & \cdots \\
\end{bmatrix}
]

(¥mbox{trm4}):¥:¥begin{bmatrix}& (N¥otimes N)¥otimes N ¥¥= &  (N¥otimes N)¥otimes F(I) ¥¥¥tau_{N¥otimes N,I} & ¥downarrow ¥¥& F((N¥otimes N)¥otimes I) ¥¥F(¥rho_{N¥otimes N}) & ¥downarrow ¥¥& F(N ¥otimes N) ¥¥¥langle ¥mbox{T2}¥rangle & ¥cdots ¥¥¥end{bmatrix}

//= 一貫性と結合律子を使って、右単位律子の作用範囲を変更する。

[tex:
(\mbox{trm5}):\:
\begin{bmatrix}
& (N\otimes N)\otimes N \\
= &  (N\otimes N)\otimes F(I) \\
\tau_{N\otimes N,I} & \downarrow \\
& F((N\otimes N)\otimes I) \\
F(\alpha_{N,N,N}) & \downarrow \\
& F(N\otimes (N\otimes I)) \\
F(N\otimes \rho_{N}) & \downarrow \\
& F(N \otimes N) \\
\langle \mbox{T2}\rangle & \cdots \\
\end{bmatrix}
]

(¥mbox{trm5}):¥:¥begin{bmatrix}& (N¥otimes N)¥otimes N ¥¥= &  (N¥otimes N)¥otimes F(I) ¥¥¥tau_{N¥otimes N,I} & ¥downarrow ¥¥& F((N¥otimes N)¥otimes I) ¥¥F(¥alpha_{N,N,N}) & ¥downarrow ¥¥& F(N¥otimes (N¥otimes I)) ¥¥F(N¥otimes ¥rho_{N}) & ¥downarrow ¥¥& F(N ¥otimes N) ¥¥¥langle ¥mbox{T2}¥rangle & ¥cdots ¥¥¥end{bmatrix}

//= テンソル強度をアンバンドルする。

[tex:
(\mbox{trm6}):\:
\begin{bmatrix}
& (N\otimes N)\otimes N \\
\alpha_{N,N,N} & \downarrow \\
& N\otimes (N\otimes N) \\
= &  N\otimes (N\otimes F(I)) \\
N\otimes \tau_{N,I} & \downarrow \\
& N\otimes F(N\otimes I) \\
N\otimes F(\rho_N) & \downarrow \\
& N\otimes F(N) \\
\tau_{N,I} & \downarrow \\
& F(N\otimes N) \\
\langle \mbox{T2}\rangle & \cdots \\
\end{bmatrix}
]

(¥mbox{trm6}):¥:¥begin{bmatrix}& (N¥otimes N)¥otimes N ¥¥¥alpha_{N,N,N} & ¥downarrow ¥¥& N¥otimes (N¥otimes N) ¥¥= &  N¥otimes (N¥otimes F(I)) ¥¥N¥otimes ¥tau_{N,I} & ¥downarrow ¥¥& N¥otimes F(N¥otimes I) ¥¥N¥otimes F(¥rho_N) & ¥downarrow ¥¥& N¥otimes F(N) ¥¥¥tau_{N,I} & ¥downarrow ¥¥& F(N¥otimes N) ¥¥¥langle ¥mbox{T2}¥rangle & ¥cdots ¥¥¥end{bmatrix}

項6'から項9'

//= マクロT2をマクロ展開する。

[tex:
(\mbox{trm6'}):\:
\begin{bmatrix}
& (N\otimes N)\otimes N \\
\alpha_{N,N,N} & \downarrow \\
& N\otimes (N\otimes N) \\
= &  N\otimes (N\otimes F(I)) \\
N\otimes \tau_{N,I} & \downarrow \\
& N\otimes F(N\otimes I) \\
N\otimes F(\rho_N) & \downarrow \\
& N\otimes F(N) \\
\tau_{N,I} & \downarrow \\
& F(N\otimes N) \\
F( m )  & \downarrow \\
& F(N ) \\
= & FF(I) \\
\mu_{I} & \downarrow \\
& F(I) \\
= & N \\
\end{bmatrix}
]

(¥mbox{trm6’}):¥:¥begin{bmatrix}& (N¥otimes N)¥otimes N ¥¥¥alpha_{N,N,N} & ¥downarrow ¥¥& N¥otimes (N¥otimes N) ¥¥= &  N¥otimes (N¥otimes F(I)) ¥¥N¥otimes ¥tau_{N,I} & ¥downarrow ¥¥& N¥otimes F(N¥otimes I) ¥¥N¥otimes F(¥rho_N) & ¥downarrow ¥¥& N¥otimes F(N) ¥¥¥tau_{N,I} & ¥downarrow ¥¥& F(N¥otimes N) ¥¥F( m )  & ¥downarrow ¥¥& F(N ) ¥¥= & FF(I) ¥¥¥mu_{I} & ¥downarrow ¥¥& F(I) ¥¥= & N ¥¥¥end{bmatrix}

//> ここで、マクロT3を定義する。

[tex:
(\mbox{mac3}):\:
\langle\mbox{T3}\rangle \,:=\,
\begin{bmatrix}
& (N\otimes N)\otimes N \\
\alpha_{N,N,N} & \downarrow \\
& N\otimes (N\otimes N) \\
= &  N\otimes (N\otimes F(I)) \\
N\otimes \tau_{N,I} & \downarrow \\
& N\otimes F(N\otimes I) \\
N\otimes F(\rho_N) & \downarrow \\
& N\otimes F(N) \\
\tau_{N,I} & \downarrow \\
& F(N\otimes N) \\
\end{bmatrix}
]

(¥mbox{mac3}):¥:¥langle¥mbox{T3}¥rangle ¥,:=¥,¥begin{bmatrix}& (N¥otimes N)¥otimes N ¥¥¥alpha_{N,N,N} & ¥downarrow ¥¥& N¥otimes (N¥otimes N) ¥¥= &  N¥otimes (N¥otimes F(I)) ¥¥N¥otimes ¥tau_{N,I} & ¥downarrow ¥¥& N¥otimes F(N¥otimes I) ¥¥N¥otimes F(¥rho_N) & ¥downarrow ¥¥& N¥otimes F(N) ¥¥¥tau_{N,I} & ¥downarrow ¥¥& F(N¥otimes N) ¥¥¥end{bmatrix}

//= (mac3)を使って、マクロ縮約する。

[tex:
(\mbox{trm6'-A}):\:
\begin{bmatrix}
\langle\mbox{T3}\rangle & \cdots \\
& F(N\otimes N) \\
F( m )  & \downarrow \\
& F(N ) \\
= & FF(I) \\
\mu_{I} & \downarrow \\
& F(I) \\
= & N \\
\end{bmatrix}
]

(¥mbox{trm6’-A}):¥:¥begin{bmatrix}¥langle¥mbox{T3}¥rangle & ¥cdots ¥¥& F(N¥otimes N) ¥¥F( m )  & ¥downarrow ¥¥& F(N ) ¥¥= & FF(I) ¥¥¥mu_{I} & ¥downarrow ¥¥& F(I) ¥¥= & N ¥¥¥end{bmatrix}

//= 3行目 F(m) のmを、(def2)により置換する。

[tex:
(\mbox{trm7}):\:
\begin{bmatrix}
\langle\mbox{T3}\rangle & \cdots \\
& F(N\otimes N) \\
F\(
 \begin{bmatrix}
 & N\otimes N \\
 = & N\otimes F(I) \\
 \tau_{N, I} & \downarrow \\
 & F(N\otimes I) \\
 F(\rho_{N}) & \downarrow \\
 & F(N) \\
 = & FF(I) \\
 \mu_I & \downarrow \\
 & F(I) \\
 = & N \\
 \end{bmatrix}
\)  & \downarrow \\
& F(N ) \\
= & FF(I) \\
\mu_{I} & \downarrow \\
& F(I) \\
= & N \\
\end{bmatrix}
]

(¥mbox{trm7}):¥:¥begin{bmatrix}¥langle¥mbox{T3}¥rangle & ¥cdots ¥¥& F(N¥otimes N) ¥¥F¥( ¥begin{bmatrix} & N¥otimes N ¥¥ = & N¥otimes F(I) ¥¥ ¥tau_{N, I} & ¥downarrow ¥¥ & F(N¥otimes I) ¥¥ F(¥rho_{N}) & ¥downarrow ¥¥ & F(N) ¥¥ = & FF(I) ¥¥ ¥mu_I & ¥downarrow ¥¥ & F(I) ¥¥ = & N ¥¥ ¥end{bmatrix}¥)  & ¥downarrow ¥¥& F(N ) ¥¥= & FF(I) ¥¥¥mu_{I} & ¥downarrow ¥¥& F(I) ¥¥= & N ¥¥¥end{bmatrix}

//= レイアウト変更

[tex:
(\mbox{trm7-A}):\:
\begin{bmatrix}
\langle\mbox{T3}\rangle & \cdots \\
& F(N\otimes N) \\
& F\(
 \begin{bmatrix}
 & N\otimes N \\
 = & N\otimes F(I) \\
 \tau_{N, I} & \downarrow \\
 & F(N\otimes I) \\
 F(\rho_{N}) & \downarrow \\
 & F(N) \\
 = & FF(I) \\
 \mu_I & \downarrow \\
 & F(I) \\
 = & N \\
 \end{bmatrix}
\) \\
& F(N ) \\
= & FF(I) \\
\mu_{I} & \downarrow \\
& F(I) \\
= & N \\
\end{bmatrix}
]

(¥mbox{trm7-A}):¥:¥begin{bmatrix}¥langle¥mbox{T3}¥rangle & ¥cdots ¥¥& F(N¥otimes N) ¥¥& F¥( ¥begin{bmatrix} & N¥otimes N ¥¥ = & N¥otimes F(I) ¥¥ ¥tau_{N, I} & ¥downarrow ¥¥ & F(N¥otimes I) ¥¥ F(¥rho_{N}) & ¥downarrow ¥¥ & F(N) ¥¥ = & FF(I) ¥¥ ¥mu_I & ¥downarrow ¥¥ & F(I) ¥¥ = & N ¥¥ ¥end{bmatrix}¥) ¥¥& F(N ) ¥¥= & FF(I) ¥¥¥mu_{I} & ¥downarrow ¥¥& F(I) ¥¥= & N ¥¥¥end{bmatrix}

//= Fを結合に対して分配する。

[tex:
(\mbox{trm7-B}):\:
\begin{bmatrix}
\langle\mbox{T3}\rangle & \cdots \\
& F(N\otimes N) \\
& \begin{bmatrix}
 & F(N\otimes N) \\
 = & F(N\otimes F(I)) \\
 F(\tau_{N, I}) & \downarrow \\
 & FF(N\otimes I) \\
 FF(\rho_{N}) & \downarrow \\
 & FF(N) \\
 = & FFF(I) \\
 F(\mu_I) & \downarrow \\
 & FF(I) \\
 = & F(N) \\
 \end{bmatrix} \\
& F(N ) \\
= & FF(I) \\
\mu_{I} & \downarrow \\
& F(I) \\
= & N \\
\end{bmatrix}
]

(¥mbox{trm7-B}):¥:¥begin{bmatrix}¥langle¥mbox{T3}¥rangle & ¥cdots ¥¥& F(N¥otimes N) ¥¥& ¥begin{bmatrix} & F(N¥otimes N) ¥¥ = & F(N¥otimes F(I)) ¥¥ F(¥tau_{N, I}) & ¥downarrow ¥¥ & FF(N¥otimes I) ¥¥ FF(¥rho_{N}) & ¥downarrow ¥¥ & FF(N) ¥¥ = & FFF(I) ¥¥ F(¥mu_I) & ¥downarrow ¥¥ & FF(I) ¥¥ = & F(N) ¥¥ ¥end{bmatrix} ¥¥& F(N ) ¥¥= & FF(I) ¥¥¥mu_{I} & ¥downarrow ¥¥& F(I) ¥¥= & N ¥¥¥end{bmatrix}

//= 入れ子をはずす。

[tex:
(\mbox{trm7-C}):\:
\begin{bmatrix}
\langle\mbox{T3}\rangle & \cdots \\
& F(N\otimes N) \\
= & F(N\otimes F(I)) \\
F(\tau_{N, I}) & \downarrow \\
& FF(N\otimes I) \\
FF(\rho_{N}) & \downarrow \\
& FF(N) \\
= & FFF(I) \\
F(\mu_I) & \downarrow \\
& FF(I) \\
= & F(N) \\
= & FF(I) \\
\mu_{I} & \downarrow \\
& F(I) \\
= & N \\
\end{bmatrix}
]

(¥mbox{trm7-C}):¥:¥begin{bmatrix}¥langle¥mbox{T3}¥rangle & ¥cdots ¥¥& F(N¥otimes N) ¥¥= & F(N¥otimes F(I)) ¥¥F(¥tau_{N, I}) & ¥downarrow ¥¥& FF(N¥otimes I) ¥¥FF(¥rho_{N}) & ¥downarrow ¥¥& FF(N) ¥¥= & FFF(I) ¥¥F(¥mu_I) & ¥downarrow ¥¥& FF(I) ¥¥= & F(N) ¥¥= & FF(I) ¥¥¥mu_{I} & ¥downarrow ¥¥& F(I) ¥¥= & N ¥¥¥end{bmatrix}

//= 無駄な等号ノードを削除。

[tex:
(\mbox{trm8}):\:
\begin{bmatrix}
\langle\mbox{T3}\rangle & \cdots \\
& F(N\otimes N) \\
= & F(N\otimes F(I)) \\
F(\tau_{N, I}) & \downarrow \\
& FF(N\otimes I) \\
FF(\rho_{N}) & \downarrow \\
& FF(N) \\
= & FFF(I) \\
F(\mu_I) & \downarrow \\
& FF(I) \\
\mu_{I} & \downarrow \\
& F(I) \\
= & N \\
\end{bmatrix}
]

(¥mbox{trm8}):¥:¥begin{bmatrix}¥langle¥mbox{T3}¥rangle & ¥cdots ¥¥& F(N¥otimes N) ¥¥= & F(N¥otimes F(I)) ¥¥F(¥tau_{N, I}) & ¥downarrow ¥¥& FF(N¥otimes I) ¥¥FF(¥rho_{N}) & ¥downarrow ¥¥& FF(N) ¥¥= & FFF(I) ¥¥F(¥mu_I) & ¥downarrow ¥¥& FF(I) ¥¥¥mu_{I} & ¥downarrow ¥¥& F(I) ¥¥= & N ¥¥¥end{bmatrix}

//= モナドの結合律により変形。

[tex:
(\mbox{trm9}):\:
\begin{bmatrix}
\langle\mbox{T3}\rangle & \cdots \\
& F(N\otimes N) \\
= & F(N\otimes F(I)) \\
F(\tau_{N, I}) & \downarrow \\
& FF(N\otimes I) \\
FF(\rho_{N}) & \downarrow \\
& FF(N) \\
= & FFF(I) \\
\mu_{F(I)} & \downarrow \\
& FF(I) \\
\mu_{I} & \downarrow \\
& F(I) \\
= & N \\
\end{bmatrix}
]

(¥mbox{trm9}):¥:¥begin{bmatrix}¥langle¥mbox{T3}¥rangle & ¥cdots ¥¥& F(N¥otimes N) ¥¥= & F(N¥otimes F(I)) ¥¥F(¥tau_{N, I}) & ¥downarrow ¥¥& FF(N¥otimes I) ¥¥FF(¥rho_{N}) & ¥downarrow ¥¥& FF(N) ¥¥= & FFF(I) ¥¥¥mu_{F(I)} & ¥downarrow ¥¥& FF(I) ¥¥¥mu_{I} & ¥downarrow ¥¥& F(I) ¥¥= & N ¥¥¥end{bmatrix}

//= マクロT3をマクロ展開。

[tex:
(\mbox{trm9'}):\:
\begin{bmatrix}
  & (N\otimes N)\otimes N \\
  \alpha_{N,N,N} & \downarrow \\
  & N\otimes (N\otimes N) \\
  = &  N\otimes (N\otimes F(I)) \\
  N\otimes \tau_{N,I} & \downarrow \\
  & N\otimes F(N\otimes I) \\
  N\otimes F(\rho_N) & \downarrow \\
  & N\otimes F(N) \\
  \tau_{N,I} & \downarrow \\
\cdots\,\cdots & \cdots\,\cdots \\
  & F(N\otimes N) \\
= & F(N\otimes F(I)) \\
F(\tau_{N, I}) & \downarrow \\
& FF(N\otimes I) \\
FF(\rho_{N}) & \downarrow \\
& FF(N) \\
= & FFF(I) \\
\mu_{F(I)} & \downarrow \\
& FF(I) \\
\mu_{I} & \downarrow \\
& F(I) \\
= & N \\
\end{bmatrix}
]

(¥mbox{trm9’}):¥:¥begin{bmatrix}  & (N¥otimes N)¥otimes N ¥¥  ¥alpha_{N,N,N} & ¥downarrow ¥¥  & N¥otimes (N¥otimes N) ¥¥  = &  N¥otimes (N¥otimes F(I)) ¥¥  N¥otimes ¥tau_{N,I} & ¥downarrow ¥¥  & N¥otimes F(N¥otimes I) ¥¥  N¥otimes F(¥rho_N) & ¥downarrow ¥¥  & N¥otimes F(N) ¥¥  ¥tau_{N,I} & ¥downarrow ¥¥¥cdots¥,¥cdots & ¥cdots¥,¥cdots ¥¥  & F(N¥otimes N) ¥¥= & F(N¥otimes F(I)) ¥¥F(¥tau_{N, I}) & ¥downarrow ¥¥& FF(N¥otimes I) ¥¥FF(¥rho_{N}) & ¥downarrow ¥¥& FF(N) ¥¥= & FFF(I) ¥¥¥mu_{F(I)} & ¥downarrow ¥¥& FF(I) ¥¥¥mu_{I} & ¥downarrow ¥¥& F(I) ¥¥= & N ¥¥¥end{bmatrix}

項10から項13

//= 右単位律子の作用点を下にさげる。

[tex:
(\mbox{trm10}):\:
\begin{bmatrix}
& (N\otimes N)\otimes N \\
\alpha_{N,N,N} & \downarrow \\
& N\otimes (N\otimes N) \\
= &  N\otimes (N\otimes F(I)) \\
N\otimes \tau_{N,I} & \downarrow \\
& N\otimes F(N\otimes I) \\
N\otimes F(\rho_N) & \downarrow \\
& N\otimes F(N) \\
\tau_{N,I} & \downarrow \\
& F(N\otimes N) \\
= & F(N\otimes F(I)) \\
F(\tau_{N, I}) & \downarrow \\
& FF(N\otimes I) \\
\cdots\,\cdots & \cdots\,\cdots \\
\mu_{N\otimes I} & \downarrow \\
& F(N\otimes I) \\
F(\rho_N)  & \downarrow \\
& F(N) \\
= & FF(I) \\
\cdots\,\cdots & \cdots\,\cdots \\
\mu_{I} & \downarrow \\
& F(I) \\
= & N \\
\end{bmatrix}
]

(¥mbox{trm10}):¥:¥begin{bmatrix}& (N¥otimes N)¥otimes N ¥¥¥alpha_{N,N,N} & ¥downarrow ¥¥& N¥otimes (N¥otimes N) ¥¥= &  N¥otimes (N¥otimes F(I)) ¥¥N¥otimes ¥tau_{N,I} & ¥downarrow ¥¥& N¥otimes F(N¥otimes I) ¥¥N¥otimes F(¥rho_N) & ¥downarrow ¥¥& N¥otimes F(N) ¥¥¥tau_{N,I} & ¥downarrow ¥¥& F(N¥otimes N) ¥¥= & F(N¥otimes F(I)) ¥¥F(¥tau_{N, I}) & ¥downarrow ¥¥& FF(N¥otimes I) ¥¥¥cdots¥,¥cdots & ¥cdots¥,¥cdots ¥¥¥mu_{N¥otimes I} & ¥downarrow ¥¥& F(N¥otimes I) ¥¥F(¥rho_N)  & ¥downarrow ¥¥& F(N) ¥¥= & FF(I) ¥¥¥cdots¥,¥cdots & ¥cdots¥,¥cdots ¥¥¥mu_{I} & ¥downarrow ¥¥& F(I) ¥¥= & N ¥¥¥end{bmatrix}

//= テンソル強度の作用点を下にさげる。

[tex:
(\mbox{trm11}):\:
\begin{bmatrix}
& (N\otimes N)\otimes N \\
\alpha_{N,N,N} & \downarrow \\
& N\otimes (N\otimes N) \\
= &  N\otimes (N\otimes F(I)) \\
N\otimes \tau_{N,I} & \downarrow \\
& N\otimes F(N\otimes I) \\
N\otimes F(\rho_N) & \downarrow \\
& N\otimes F(N) \\
\cdots\,\cdots & \cdots\,\cdots \\
=& N\otimes FF(I) \\
N\otimes \mu_{I} & \downarrow \\
& N\otimes F(I) \\
\tau_{N,I} & \downarrow \\
& F(N\otimes I) \\
\cdots\,\cdots & \cdots\,\cdots \\
F(\rho_N)  & \downarrow \\
& F(N) \\
= & FF(I) \\
\mu_{I} & \downarrow \\
& F(I) \\
= & N \\
\end{bmatrix}
]

(¥mbox{trm11}):¥:¥begin{bmatrix}& (N¥otimes N)¥otimes N ¥¥¥alpha_{N,N,N} & ¥downarrow ¥¥& N¥otimes (N¥otimes N) ¥¥= &  N¥otimes (N¥otimes F(I)) ¥¥N¥otimes ¥tau_{N,I} & ¥downarrow ¥¥& N¥otimes F(N¥otimes I) ¥¥N¥otimes F(¥rho_N) & ¥downarrow ¥¥& N¥otimes F(N) ¥¥¥cdots¥,¥cdots & ¥cdots¥,¥cdots ¥¥=& N¥otimes FF(I) ¥¥N¥otimes ¥mu_{I} & ¥downarrow ¥¥& N¥otimes F(I) ¥¥¥tau_{N,I} & ¥downarrow ¥¥& F(N¥otimes I) ¥¥¥cdots¥,¥cdots & ¥cdots¥,¥cdots ¥¥F(¥rho_N)  & ¥downarrow ¥¥& F(N) ¥¥= & FF(I) ¥¥¥mu_{I} & ¥downarrow ¥¥& F(I) ¥¥= & N ¥¥¥end{bmatrix}

//= 余分な等号ノードを導入する。

[tex:
(\mbox{trm12}):\:
\begin{bmatrix}
& (N\otimes N)\otimes N \\
\alpha_{N,N,N} & \downarrow \\
& N\otimes (N\otimes N) \\
= &  N\otimes (N\otimes F(I)) \\
N\otimes \tau_{N,I} & \downarrow \\
& N\otimes F(N\otimes I) \\
N\otimes F(\rho_N) & \downarrow \\
& N\otimes F(N) \\
=& N\otimes FF(I) \\
N\otimes \mu_{I} & \downarrow \\
& N\otimes F(I) \\
\cdots\,\cdots & \cdots\,\cdots \\
= & N\otimes N \\
= & N\otimes N \\
= & N\otimes F(I) \\
\cdots\,\cdots & \cdots\,\cdots \\
\tau_{N,I} & \downarrow \\
& F(N\otimes I) \\
F(\rho_N)  & \downarrow \\
& F(N) \\
= & FF(I) \\
\mu_{I} & \downarrow \\
& F(I) \\
= & N \\
\end{bmatrix}
]

(¥mbox{trm12}):¥:¥begin{bmatrix}& (N¥otimes N)¥otimes N ¥¥¥alpha_{N,N,N} & ¥downarrow ¥¥& N¥otimes (N¥otimes N) ¥¥= &  N¥otimes (N¥otimes F(I)) ¥¥N¥otimes ¥tau_{N,I} & ¥downarrow ¥¥& N¥otimes F(N¥otimes I) ¥¥N¥otimes F(¥rho_N) & ¥downarrow ¥¥& N¥otimes F(N) ¥¥=& N¥otimes FF(I) ¥¥N¥otimes ¥mu_{I} & ¥downarrow ¥¥& N¥otimes F(I) ¥¥¥cdots¥,¥cdots & ¥cdots¥,¥cdots ¥¥= & N¥otimes N ¥¥= & N¥otimes N ¥¥= & N¥otimes F(I) ¥¥¥cdots¥,¥cdots & ¥cdots¥,¥cdots ¥¥¥tau_{N,I} & ¥downarrow ¥¥& F(N¥otimes I) ¥¥F(¥rho_N)  & ¥downarrow ¥¥& F(N) ¥¥= & FF(I) ¥¥¥mu_{I} & ¥downarrow ¥¥& F(I) ¥¥= & N ¥¥¥end{bmatrix}

//= N¥otimes をくくり出す(モノイド積の共通因子)

[tex:
(\mbox{trm12-A}):\:
\begin{bmatrix}
& (N\otimes N)\otimes N \\
\alpha_{N,N,N} & \downarrow \\
& N\otimes (N\otimes N) \\
N\otimes
  \begin{bmatrix}
  & N\otimes N \\
  = & N\otimes F(I) \\
  \tau_{N,I} & \downarrow \\
  & F(N\otimes I) \\
  F(\rho_N) & \downarrow \\
  & F(N) \\
  =& FF(I) \\
  \mu_{I} & \downarrow \\
  &  F(I) \\
  = & N \\
  \end{bmatrix} & \downarrow \\
& N\otimes N \\
 = & N\otimes F(I) \\
 \tau_{N,I} & \downarrow \\
 & F(N\otimes I) \\
 F(\rho_N)  & \downarrow \\
 & F(N) \\
 = & FF(I) \\
 \mu_{I} & \downarrow \\
 & F(I) \\
 = & N \\
\end{bmatrix}
]

(¥mbox{trm12-A}):¥:¥begin{bmatrix}& (N¥otimes N)¥otimes N ¥¥¥alpha_{N,N,N} & ¥downarrow ¥¥& N¥otimes (N¥otimes N) ¥¥N¥otimes  ¥begin{bmatrix}  & N¥otimes N ¥¥  = & N¥otimes F(I) ¥¥  ¥tau_{N,I} & ¥downarrow ¥¥  & F(N¥otimes I) ¥¥  F(¥rho_N) & ¥downarrow ¥¥  & F(N) ¥¥  =& FF(I) ¥¥  ¥mu_{I} & ¥downarrow ¥¥  &  F(I) ¥¥  = & N ¥¥  ¥end{bmatrix} & ¥downarrow ¥¥& N¥otimes N ¥¥ = & N¥otimes F(I) ¥¥ ¥tau_{N,I} & ¥downarrow ¥¥ & F(N¥otimes I) ¥¥ F(¥rho_N)  & ¥downarrow ¥¥ & F(N) ¥¥ = & FF(I) ¥¥ ¥mu_{I} & ¥downarrow ¥¥ & F(I) ¥¥ = & N ¥¥¥end{bmatrix}

//= (def2)により縮約する。

[tex:
(\mbox{trm13}):\:
\begin{bmatrix}
& (N\otimes N)\otimes N \\
\alpha_{N,N,N} & \downarrow \\
& N\otimes (N\otimes N) \\
N\otimes m  & \downarrow \\
& N\otimes N \\
m & \downarrow \\
& N \\
\end{bmatrix}
]

(¥mbox{trm13}):¥:¥begin{bmatrix}& (N¥otimes N)¥otimes N ¥¥¥alpha_{N,N,N} & ¥downarrow ¥¥& N¥otimes (N¥otimes N) ¥¥N¥otimes m  & ¥downarrow ¥¥& N¥otimes N ¥¥m & ¥downarrow ¥¥& N ¥¥¥end{bmatrix}

//< オシマイ

図の凡例

まず、絵図で使うアイコン(マーカー)を定義します。

念の為:

  1. モノイドの乗法 m:N¥otimesN→N
  2. 圏の単位対象 I
  3. 名前の展開 N = F(I)
  4. 関手の値 F(X)
  5. テンソル強度 τX,Y:X¥otimesF(Y)→F(X¥otimesY)
  6. 名前への縮約 F(I) = N
  7. 右単位律子 ρX:X¥otimesI→X
  8. モナド乗法 μX:FF(X)→F(X)

図1から図6

各変形ステップについては、項1から項6の説明(コメント)を参照してください。P1, P2は、描画を簡略化するために絵の一部に名前を付けたものです。項におけるマクロ定義に対応しています。

図6'から図9'

各変形ステップについては、項6'から項9'の説明(コメント)を参照してください。P3は、マクロです。

図10から図13'

各変形ステップについては、項10から項13の説明(コメント)を参照してください。図13'は、レイアウトをわずかに変更しただけです。

*1:東日本の地域により(どこの地域かはよく分からない)使われる方言。「放置しておく」「無視して放任する」などの意味。

2018-04-27 (金)

絵算のテキスト表現(結論:疲れる)

| 15:40 | 絵算のテキスト表現(結論:疲れる)を含むブックマーク

昨日、新しい絵算手法について述べたのですが、絵算の困るところは、適切な描画ツールがない、絵をテキストにシリアライズエンコードする方法とデータ交換形式〈data interchange format〉がないことです。“絵”と“絵の変形過程”をテキスト表現できれば、コミュニケーションのコストが劇的に下がります。

そうはいっても、テキスト・エンコード形式を提案したところで普及するような状況ではないので、既存の数式組版(=TeX)でテキスト表現できないか試してみます。

内容:

  1. ほんとに困っている
  2. 例題:モナドから作るモノイド
  3. 図式順・反図式順混合記法と行列記法
  4. 計算してみる(が、疲れた)

ほんとに困っている

絵算の絵を描く適当なツールはないと思います。Globularは、お絵描きに使えるほどの描画能力は持ってない*1し、ストライプ図をまったくサポートしていません。次のような絵(マースデンマッカーディ)は、通常の(汎用の)お描きツールで描いていると思われます。

僕は手描きの絵をスキャンしてますが、汚いし、編集して再利用が出来ないのが難点です。

テキスト表現では記述や計算が困難なので絵図を使っているわけで、それをテキストにしても嬉しいことはないのですが、編集と交換の容易性を重視するなら、「なにかしらのテキストで」となるでしょう。また、「どうしても絵図には馴染めない」という人とのコミュニケーション手段としてもテキスト表現が必要です。

こんな困った状況や、妥協的代替手段が必要となるのは、今が過渡期だからだと思います。

例題:モナドから作るモノイド

昨日の記事「新しい絵算手法:ストリング+ストライプ図」で、下のような絵等式〈pictorial equation〉は、「しばらく眺めていると」分かると言いました。実際、数個の変形ルールに慣れれば、等式の絵証明〈pictorial proof〉は難しくはありません。

上記の絵等式の意味は、モノイドの結合律ですが、次の主張の一部となっています。

  • モノイド圏 C = (C, ¥otimes, I, α, λ, ρ) 上の強モナド F = (F, μ, η, τ) があると、N = F(I) を台対象とするモノイド N = (N, m, e) を構成可能である。

図式順・反図式順混合記法と行列記法

テキスト表現に際して、図式順・反図式順混合記法を使うので、次の記事の演算子一覧表を見ておいてください。

まず、N = F(I) と置きますが、これは明示的等号ノードで描きます。

関手Fを表すストライプ〈関手シース〉は、色鉛筆で薄く塗りつぶしていたのですが、今日は無色です(面倒だから)。色付きの絵と見比べれば、どこが関手か判断できるでしょう。

モノイドの乗法 m:N¥otimesN→N は次のように定義されます。

  • m := τN,I;F(ρN);μI

これは、図式順・反図式順混合記法です。混合記法が、ストリング+ストライプ図と相性がいいようです。完全な反図式順記法だと:

  • m := μI¥circF(ρN)¥circτN,I

完全な図式順記法だと:

  • m := (N, I).τ ; N.ρ.F ; I.μ

絵算では、この等式を、絵の一部を置換するために使います。

テキスト表現で縦結合(記号は';'または'¥circ')が横並びになるのが辛すぎるので、行列記法で縦(上から下)に並べることにします。

 m ¥,:=¥, ¥begin{bmatrix} ¥tau_{N,I} ¥¥ F(¥rho_N) ¥¥ ¥mu_I¥end{bmatrix}

明示的等号ノードも入れて、射のプロファイルも書けば、絵が持っている情報をエンコードできます。

 (m:¥,N¥otimes N ¥to N) ¥,:=¥, ¥begin{bmatrix} N¥otimes (N = F(I)):¥, N¥otimes N ¥to N¥otimes F(I) ¥¥ ¥tau_{N,I} :¥, N¥otimes F(I) ¥to F(N¥otimes I) ¥¥ F(¥rho_N) :¥, F(N¥otimes I) ¥to F(N)¥¥ F(N = F(I)):¥, F(N)¥to F(F(I))  ¥¥ ¥mu_I :¥, F(F(I)) ¥to F(I) ¥¥ F(I) = N :¥, F(I)¥to N ¥¥ ¥end{bmatrix}

レイアウトを工夫すれば、もう少し絵に近くなるかも。

¥begin{bmatrix} & N ¥otimes N ¥¥ m & ¥downarrow ¥¥ & N¥end{bmatrix}¥,:=¥,¥begin{bmatrix} & N ¥otimes N  ¥¥ N ¥otimes (N = F(I)) & ¥downarrow ¥¥ & N ¥otimes F(I) ¥¥ ¥tau_{N,I} & ¥downarrow ¥¥ & F(N ¥otimes I) ¥¥ F(¥rho_N) & ¥downarrow ¥¥ & F(N) ¥¥ F(N = F(I)) & ¥downarrow ¥¥ & F(F(I)) ¥¥ ¥mu_I  & ¥downarrow ¥¥ & F(I) ¥¥ F(I) = N& ¥downarrow ¥¥ & N ¥end{bmatrix}

「写し取ったゾッ!」という達成感はあるものの、疲れますな。この段階でTeXソースは次のよう。

\begin{bmatrix}
 & N \otimes N \\
 m & \downarrow \\
 & N
\end{bmatrix}

\,:=\,

\begin{bmatrix}
 & N \otimes N  \\
 N \otimes (N = F(I)) & \downarrow \\
 & N \otimes F(I) \\
 \tau_{N,I} & \downarrow \\
 & F(N \otimes I) \\
 F(\rho_N) & \downarrow \\
 & F(N) \\
 F(N = F(I)) & \downarrow \\
 & F(F(I)) \\
 \mu_I  & \downarrow \\
 & F(I) \\
 F(I) = N& \downarrow \\
 & N
\end{bmatrix}

誰かが便利パッケージにまとめてくれたりすると楽に書けるかもしれないけど…

計算してみる(が、疲れた)

モノイドの結合律を証明する最初のステップは、(m¥otimesN);m (NはidNの意味)を図示した初期状態から、左のmをテンソル強度τで関手Fの内部に引っ張り込むことです。絵では次の操作になります。

ノードmがストライプ〈関手シース〉内へと貫入〈かんにゅう〉する変形過程ですね。これを行列記法による等式で表しましょう。

¥begin{bmatrix}m¥otimes N ¥¥ N¥otimes (N = F(I)) ¥¥ ¥tau_{N,I} ¥¥ F(¥rho_N) ¥¥ F(N = F(I)) ¥¥ ¥mu_I ¥¥F(I) = N ¥end{bmatrix} ¥,=¥, ¥begin{bmatrix}(N¥otimes N)¥otimes (N = F(I)) ¥¥ ¥tau_{N¥otimes N, I} ¥¥ F(m¥otimes I)¥¥ F(¥rho_N) ¥¥ F(N = F(I)) ¥¥ ¥mu_I ¥¥F(I) = N ¥end{bmatrix}

実際に変化した部分(上部)と変化してない部分(下部)に分割すると見やすいかも知れません。

¥begin{bmatrix} ¥begin{bmatrix}  m¥otimes N ¥¥ N¥otimes (N = F(I)) ¥¥ ¥tau_{N,I} ¥end{bmatrix} ¥¥ ¥begin{bmatrix}  F(¥rho_N) ¥¥ F(N = F(I)) ¥¥ ¥mu_I ¥¥ F(I) = N ¥end{bmatrix} ¥end{bmatrix} ¥,=¥, ¥begin{bmatrix} ¥begin{bmatrix}  (N¥otimes N)¥otimes (N = F(I)) ¥¥ ¥tau_{N¥otimes N, I} ¥¥ F(m¥otimes I) ¥end{bmatrix} ¥¥ ¥begin{bmatrix}  F(¥rho_N) ¥¥ F(N = F(I)) ¥¥ ¥mu_I ¥¥F(I) = N ¥end{bmatrix} ¥end{bmatrix}

行列記法を使わないでフラットに書いて、NをちゃんとidNにして、イコール記号による誤解を避けるために、明示的等号ノードをeqX,Yの形に直して書いてみます。

¥( m¥otimes id_{N}  ;  id_{N}¥otimes (eq_{N, F(I)})  ;  ¥tau_{N,I}¥)¥,; ¥¥ ¥:¥:¥:¥:¥( F(¥rho_N)  ;  F(eq_{N, F(I)})  ;  ¥mu_I  ;  eq_{F(I), N}¥)

 =

¥( (id_{N}¥otimes id_{N})¥otimes (eq_{N, F(I)})  ;  ¥tau_{N¥otimes N, I}  ;  F(m¥otimes I)¥)¥,; ¥¥ ¥:¥:¥:¥:¥( F(¥rho_N)  ;  F(eq_{N, F(I)})  ;  ¥mu_I  ; eq_{F(I), N}¥)

mを貫入させるだけの操作なんだけど……まったくイメージが湧かない(泣く)

次のステップ -- Fのストライプ内に入ったmを、mの定義に従って展開すると次の絵になります。

これをテキスト表現すると … …
はぁ、もう気力が続かない。
後で追記で書くかも … しれないけど、
今日はオシマイ。

[追記 date="翌日"]

とりあえず絵を写し取るなら、

¥begin{bmatrix}(N ¥otimes N)¥otimes(N = F(I)) ¥¥¥tau_{N¥otimes N,I} ¥¥F¥( ¥begin{bmatrix}  N ¥otimes (N = F(I)) ¥¥  ¥tau_{N, I} ¥¥  F(¥rho_{N}) ¥¥  F(N = F(I)) ¥¥  ¥mu_{I} ¥¥  (F(I)  = N) ¥end{bmatrix} ¥otimes I ¥) ¥¥F(¥rho_{N}) ¥¥(N = F(I)) ¥¥¥mu_I ¥¥(F(I) = N)¥end{bmatrix}

これだと情報が少ないので、プロファイルも入れましょう。等号ノードは、横向きの矢印で表すことにします。

¥begin{bmatrix}& (N¥otimes N)¥otimes N ¥to   (N¥otimes N)¥otimes F(I) ¥¥¥tau_{N¥otimes N,I} & ¥downarrow ¥¥& F((N¥otimes N) ¥otimes I) ¥¥F¥( ¥begin{bmatrix} & N¥otimes N ¥to N¥otimes F(I) ¥¥ ¥tau_{N, I} & ¥downarrow ¥¥ & F(N¥otimes I) ¥¥ F(¥rho_{N}) & ¥downarrow ¥¥ & F(N) ¥to F(F(I))¥¥ ¥mu_{I} & ¥downarrow ¥¥ & F(I) ¥to N ¥end{bmatrix}  ¥otimes I¥)  & ¥downarrow ¥¥& F(N¥otimes I) ¥¥F(¥rho_{N}) & ¥downarrow ¥¥& F(N) ¥to F(F(I)) ¥¥¥mu_I & ¥downarrow ¥¥& F(I) ¥to N¥end{bmatrix}

左側の入れ子を右に押し込んだほうが見やすいかな。

¥begin{bmatrix}& (N¥otimes N)¥otimes N ¥to   (N¥otimes N)¥otimes F(I) ¥¥¥tau_{N¥otimes N,I} & ¥downarrow ¥¥& F((N¥otimes N) ¥otimes I) ¥¥& F¥( ¥begin{bmatrix} & N¥otimes N ¥to N¥otimes F(I) ¥¥ ¥tau_{N, I} & ¥downarrow ¥¥ & F(N¥otimes I) ¥¥ F(¥rho_{N}) & ¥downarrow ¥¥ & F(N) ¥to F(F(I))¥¥ ¥mu_{I} & ¥downarrow ¥¥ & F(I) ¥to N ¥end{bmatrix}  ¥otimes I¥)  ¥¥& F(N¥otimes I) ¥¥F(¥rho_{N}) & ¥downarrow ¥¥& F(N) ¥to F(F(I)) ¥¥¥mu_I & ¥downarrow ¥¥& F(I) ¥to N¥end{bmatrix}

最後(三番目)のTeXソースは:

\begin{bmatrix}
& (N\otimes N)\otimes N \to   (N\otimes N)\otimes F(I) \\
\tau_{N\otimes N,I} & \downarrow \\
& F((N\otimes N) \otimes I) \\
& F\(
 \begin{bmatrix}
 & N\otimes N \to N\otimes F(I) \\
 \tau_{N, I} & \downarrow \\
 & F(N\otimes I) \\
 F(\rho_{N}) & \downarrow \\
 & F(N) \to F(F(I))\\
 \mu_{I} & \downarrow \\
 & F(I) \to N
 \end{bmatrix}
  \otimes I
\)  \\
& F(N\otimes I) \\
F(\rho_{N}) & \downarrow \\
& F(N) \to F(F(I)) \\
\mu_I & \downarrow \\
& F(I) \to N
\end{bmatrix}

[/追記]

*1:Globularはお絵描きツールを意図してません。証明支援系です。使い方の導入は、Globularの使い方 (1)((1)から(3)まで)などを参照。

2018-04-26 (木)

新しい絵算手法:ストリング+ストライプ図

| 14:49 | 新しい絵算手法:ストリング+ストライプ図を含むブックマーク

ここ数日、新しい絵算〈{pictorial | graphical | diagrammatic} calculation〉を考えて試しているんですけど、けっこう使えそう。新しいとは言っても、本質的に新しいものではなくて、既存の2つの描画法を組み合わせたものです。ストリング図ストライプ図のハイブリッドなので、ベタにストリング+ストライプ図〈string+stripe diagram〉と呼んでます。メインはストライプ図なので、ストリング図機能を取り込んだストライプ図とも言えます。

内容:

  1. “モノイド圏の圏”における3つの方向
  2. 3次元見取り図
  3. 正面図:ストライプ図
  4. 側面図:ストリング図
  5. 例題のサワリ
  6. おわりに

“モノイド圏の圏”における3つの方向

2つのモノイド圏とそのあいだの関手を扱うと、射の結合の方向、モノイド積の方向、関手の結合方向の3つの方向が出てきます。3次元の見取り図を描けばいいのですけど、これは手間がかかる! それで、側面図としてストリング図、正面図としてストライプ図を使うことにします。

このとき、「射の結合方向を縦(上から下)、関手の結合方向を横(左から右)に見る」のが側面で、「射の結合方向を縦(上から下)、モノイド積の結合方向を横(左から右)に見る」のが正面とします。自然変換に関しては、縦結合の方向=射の結合方向、横結合の方向=関手の結合方向 です。

3次元見取り図

実例を出さないとピンとこないでしょう。次の絵は、モナド乗法とテンソル強度の組み合わせの3次元見取り図です。

C = (C, ¥otimes, I) がモノイド圏で、F = (F, μ, η, τ) はモノイド圏C上の強モナド〈strong monad〉とします。τはテンソル強度〈tensorial strength〉で、A, X∈|C| でインデックスされた射の族(自然変換)です。

  • τA,X:A¥otimesF(X)→F(A¥otimesX)

3次元での絵の描き方は:

  1. Cは壁のような平面とする。
  2. Cの対象は、平面内を縦に走るワイヤー
  3. Cの射は、平面内のノード(上の絵には登場しない)
  4. 関手(の断片)は、2枚の平面のあいだに在るストライプ(リボン)

関手の結合方向は、後(奥)から前(手前)の方向とします。関手 F:CC は、奥側にあるC平面から手前のC平面のあいだに在ります。F*F:CC なら、Fのストライプを2枚並べて置くことになります。モナド乗法 μ::F*F⇒F:CC は、2枚のストライプ(リボン)を1枚に融合する操作で、μを赤い縫い目で表しています。

テンソル強度は、手前のC側で対象Aを左から掛ける操作を、奥のCでの掛け算操作に変換します。このことを、手前の青ワイヤーが奥の青ワイヤーへと移動しているように描いています。縦方向は、射の結合方向/自然変換の縦結合方向ですが、同時に操作が実行される時間方向だとも解釈するといいでしょう。

正面図:ストライプ図

上記の状況を、手前から見て描いた正面図が次です。正面からの観察者は、関手の結合方向が自分に向かって来る位置から見ているとします。

関手を表すストライプは半透明だとして、奥のストライプは細い幅にします。奥から順に、対象X、一番目のF、二番目のFが入れ子に見えます。対象Aの左掛け算は、青いワイヤーを左に併置するだけです。青いワイヤーがストライプを突き抜けている箇所がテンソル強度と解釈します。ストライプの内側に入った青いワイヤーは、奥のC側での掛け算とみなされます。

側面図:ストリング図

同じ状況を側面から見てみます。ただし、3次元見取り図をそのまま横側から写生するのではなくて、ストリング図の流儀による多少の描き換えが発生します。

  1. ストリング図における圏は、平面(を側面から見た直線)ではなくて領域です。
  2. ストリング図における対象は、自明圏☆からの関手として表します。(例: X)
  3. ストリング図における掛け算(モノイド積)は、スタンピング関手として表します。(例: (A¥otimes))

このような“流儀”の違いがあるものの、ストライプ図とストリング図を併用すると、3次元的な状況を把握しやすくなります。

例題のサワリ

例題として*1、モノイド圏 C = (C, ¥otimes, I) 上の強モナド F = (F, μ, η, τ) から、対象 N = F(I) に載ったモノイド N = (N, m, e) を構成することを考えます。

単位対象Iでの値F(I)の上に、μ, ηから誘導されたモノイド構造が載ることは、直感的には“いかにも”なのですが、どう計算していいかハッキリしません。ストリング+ストライプ図だと、F(I)上のモノイド構造を比較的楽に構成できます。次の図は、N = F(I) 上のモノイドの結合律を示す図です。

この図をしばらく眺めていると、左辺から右辺へ(あるいは逆方向)の変形過程のアニメーションムービーが見えてきます。ムービーの各フレーム〈スチル | コマ〉を時間順に並べれば、求める結合律の証明が得られます。

今日は、証明=変形操作の詳細は割愛しますが、図の各部の意味は次のようです。

  1. 2本のNを囲んでいる糸は、 (N¥otimesN)¥otimesN の括弧に相当し、(N¥otimesN)¥otimesN→N¥otimes(N¥otimesN) で糸は右に移動します(移動後の糸を描き忘れているけど、まーいいでしょ)。
  2. '='が書いてあるノードは、明示的等号ノード〈explicit equality nodes〉で、N = F(I) または F(I) = N を示します。
  3. ピンクまたは赤のストライプは、関手 F:CC を表します。
  4. 点線は、単位対象Iです。
  5. N¥otimesI→N は、右単位律子〈right unitor〉ρNです。
  6. 赤い横線は、モナド乗法 μ::F*F⇒F:CC です。
  7. モノイドの乗法 m:N¥otimesN→N は、τN:N¥otimesF(I)→F(N¥otimesI), F(ρN):F(N¥otimesI)→(F(N) = F(F(I))), μI:F(F(I))→(F(I) = N) の縦結合で定義されます。

証明を与えるムービーにおけるフレーム間の遷移は、モナドやテンソル強度に関する法則に対応します。

おわりに

前節の例題をはじめとする、強モナドの計算を幾つかしたので、そのうち紹介するかも知れません。最初、“モナドの圏の上のモナド”を作ろうとしてたのですが、それは失敗(目論見違い)でした。しかし、強モナドのイメージはだいぶハッキリと持てるようになりました。

ストリング図だけ、ストライプ図だけだとうまくいかない計算もストリング+ストライプ図だとサクサク進んだりするので、この絵算手法はまーまーいいんじゃないか、という感触です。

*1:これは、単なる一例題ではなくて、この計算を自明化したくてストリング+ストライプ図を考えた、という動機になったものです。

2018-04-25 (水)

自然同型と自然同値

| 17:06 | 自然同型と自然同値を含むブックマーク

僕、自然同型〈natural isomorphism〉と自然同値〈natural equivalence〉という言葉を区別してなかったわ。

nLabによると、自然同値のほうは、一般的n-圏のあいだの関手のあいだの関係のようです。よく使われる例は2-関手の2-圏における関係。しかし、

  • In 1-category theory it is a natural isomorphism.

1-圏論(通常の圏論)で自然同値と言ったらそれは自然同型のことだから、1-圏論の範囲内では、自然同型=自然同値 で間違いでもないみたい。修正はしないことにした。

2018-04-24 (火)

指数関手や加群圏の簡単な例

| 09:46 | 指数関手や加群圏の簡単な例を含むブックマーク

比較的最近の記事で二項指数関手を扱い、その例を幾つか挙げています。

上記の記事より簡単な例をここで述べます。加群圏とその準同型についても触れます。

内容:

  1. 有限集合と有限次元ベクトル空間
  2. 写像ベクトル空間の二項関手性
  3. モノイド圏上の加群圏
  4. 関手の連続性と指数法則
  5. 加群圏の準同型としての次元関手

有限集合と有限次元ベクトル空間

指数関手と構文論・意味論 // 二項指数関手の例」の三番目の例は、コンパクト・ハウスドルフ空間と連続写像の圏CompHousと、バナッハ空間と有界(=連続)線形写像の圏Banに関するものでした -- ちょっとむずかしげ。コンパクト・ハウスドルフ空間を離散なものに限ってみます。すると、離散コンパクト・ハウスドルフ空間=有限集合と簡単になります。ベクトル空間も有限次元の空間だけ考えればよくなります。

以下、有限集合と写像の圏をFinSet、有限次元ベクトル空間と線形写像の圏をFdVectとします。有限次元ベクトル空間のスカラー体〈係数体 | 基礎体〉は何でもいいので特に指定しません(が、何かに固定されています)。

FinSetは、集合の直積によりモノイド圏になります。また、集合の直和によってもモノイド圏になります。FinSetにモノイド構造を考えるとき、どちらのモノイド構造かが分かるように、次の書き方をしましょう。

  • FinSet× = (FinSet, ×, 1)
  • FinSet+ = (FinSet, +, 0)

1は単元集合、0は空集合です。結合律子と左右の単位律子は省略しています(律子に関しては「律子からカタストロフへ」を参照)。

FdVectも、2つのモノイド構造を持ちます。有限集合のときと同じ記法を採用します。

  • FdVect = (FdVect, ¥otimes, I)
  • FdVect = (FdVect, ¥oplus, O)

Iはスカラー体と同型な1次元ベクトル空間、Oはゼロ空間です。テンソル積モノイド構造は、今回表立っては使いません。

FdVectで圏論的直積を考えると、それはベクトル空間の直和に一致します。ベクトル空間の直和は圏論的直積でもあり圏論的直和でもある双積〈biproduct〉というものです。そこで、'¥oplus'を'×'とも、OはZとも書くことにしして、次のモノイド構造(直和モノイド構造と同じ)も考えます。

  • FdVect× = (FdVect, ×, Z)

FinSetFdVectも、2つのモノイド構造が分配法則で連携しています。この意味で、この2つの圏は半環圏〈semiringal category | semiring category〉です。が、今回はこの事実は使いません。半環圏の定義については「デカルト半環圏の定義を確認してみる(デカルト半環作用圏のために)」を参照してください。

写像ベクトル空間の二項関手性

以下、X, Yなどは有限集合、V, Wなどは有限次元ベクトル空間とします。有限集合Xから有限次元ベクトル空間Vへの写像の全体をMap(X, V)とします。v∈Map(X, V) とすると、v:X→V です。このvは、Xでインデックスされたベクトルの族(I-indexed family of vectors)と考えることもできます。

Map(X, V)にはVのベクトル空間構造に基づき、(標準的な)ベクトル空間構造を入れることができます。Map(X, V)をベクトル空間と考えましょう。つまり、Map(X, V)∈|FdVect| となります。さらに、φ:X→Y, f:V→W に対して、Map(φ, V), Map(X, f), Map(φ, f) を次のように定義できます。非形式的なラムダ記法を使います。

  • Map(φ:X→Y, V):Map(Y, V)→Map(X, V)
    Map(φ, V) := λu∈Map(Y, V).(λx∈X.u(φ(x)))
  • Map(X, f:V→W):Map(X, V)→Map(X, W)
    Map(X, f) := λv∈Map(X, V).(λx∈X.f(v(x)))
  • Map(φ:X→Y, f:V→W):Map(Y, V)→Map(X, W)
    Map(φ, f) := λu∈Map(X, V).(λx∈X.f(u(φ(x))))

Map(φ, f)だけを上記のように定義して、Map(φ, V), Map(X, f) を次のようにしてもかまいません。

  • Map(φ, V) := Map(φ, idV)
  • Map(X, f) := Map(idX, f)

このように定義された Map:FinSetop×FdVectFdVect が二項関手〈双関手〉になること(以下の等式)は簡単に確認できます*1

  • Map((ψ, f);(φ, g)) = Map(φ;ψ, f;g) = Map(ψ, f);Map(φ, g)
  • Map(id(X, V)) = Map(idX, idV) = idMap(X, V)

Map(-, -) を中置記法 -¥odot- と書いてみると;

  • (φ;ψ)¥odot(f;g) = (ψ¥odotf);(φ¥odotg)
  • idX¥odotidV = idX⊙V

FinSetが反変(反対圏)になっているのでちょっと形がイレギュラーですが、'¥odot'を一種の積とみなして、交替律〈interchange law | exchange law〉が成立していることになります。

モノイド圏上の加群圏

M = (M, ¥otimes, I) がモノイド圏、Cが単なる圏のとき、二項関手 ¥odot:M×CC左モノイド作用〈left monoidal action〉であるとは、およそ次が成立することです。

  • (X¥otimesY)¥odotA ¥stackrel{¥sim}{=} X¥odot(Y¥odotA)
  • I¥odotA ¥stackrel{¥sim}{=} A

律子と一貫性もちゃんと考慮した正確な定義は次の記事を参照してください。

モノイド圏M、圏C、左モノイド作用¥odotを組にした(M, C, ¥odot)を、左加群圏〈left mudule category〉と呼びます。右モノイド作用と右加群圏も同様に定義できます。

左加群圏(M, C, ¥odot)があると、Mのモノイド積を逆転させたモノイド圏M'に対する右加群圏(M', C, ¥odot')を作ることができます。M'は、射の向きはMと同じなので反対圏ではありません。モノイド積の向きが反転しています -- そういう圏に特に呼び名はないようです。

  • M' = (M, ¥otimes', I) として、X¥otimes'Y := Y¥otimesX
  • A¥odot'X := X¥odotA

同様に、M上の右加群圏からM'上の左加群圏が作れます。

有限集合の圏FinSetには直積モノイド構造がありました。有限次元ベクトル空間の圏は、とりあえずは単なる圏と考えます。Map(X, V)をX¥odotVとも書きます。この状況で:

  • (X×Y)¥odotV ¥stackrel{¥sim}{=} X¥odot(Y¥odotV) (Map(X×Y, V) ¥stackrel{¥sim}{=} Map(X, Map(Y, V)))
  • 1¥odotV ¥stackrel{¥sim}{=} V (Map(1, V) ¥stackrel{¥sim}{=} V)

つまり、FdVectは、左モノイド作用 -¥odot- = Map(-, -) によりFinSet×上の左加群圏になります。右加群圏構造も定義できます。FinSet×は対称モノイド圏なので、左加群圏と右加群圏に本質的な差はありません。

関手の連続性と指数法則

関手の連続性は意外と厄介な概念です。連続性の定義には圏の完備性が必要で、完備性には極限が必要で、極限の定義と存在は使用する形状圏(または箙〈えびら〉)のクラスに依存します。このことは「指数関手と構文論・意味論 // 指数関手=反変連続・共変連続なモノイド作用」で述べています。極限については次の記事を参照してください。

Φを箙のクラスとして、どんな図式 Q∈Φ, F:Q→C も極限を持つときCはΦ-完備で、余極限を持つときΦ-余完備でした。Φを有限離散箙のクラスに選んだとき、Φ-完備は有限離散完備、Φ-余完備は有限離散完備になります。次が成立します。

  • Cが有限離散完備である ⇔ Cは終対象と有限直積を持つ
  • Cが有限離散余完備である ⇔ Cは始対象と有限直和を持つ

有限離散(余)完備性に関する連続性を有限離散(余)連続と呼ぶことにすると、F:CD に関して:

  • Fが有限離散連続である ⇔ Fが終対象と有限直積を保つ
  • Fが有限離散余連続である ⇔ Fが始対象と有限直和を保つ

極限が反対圏では余極限であることから、G:CopD に関して:

  • Gが有限離散連続である ⇔ Gは始対象を終対象に写し、有限直和を有限直積に移すCからの反変関手である
  • Gが有限離散余連続である ⇔ Gは終対象を始対象に写し、有限直積を有限直和に移すCからの反変関手である

さて、Map(-, -) = -¥odot- :FinSetop×FdVectFdVect は、V∈|FdVect| を固定すると FinSetopFdVect という関手となり、X∈|FinSet| を固定すると FdVectFdVect という関手になります。それぞれの関手の有限離散連続性は次のように記述されます。

  1. 0¥odotV ¥stackrel{¥sim}{=} Z
  2. (X + Y)¥odotV ¥stackrel{¥sim}{=} (X¥odotV)×(Y¥odotV)
  3. X¥odotZ ¥stackrel{¥sim}{=} Z
  4. X¥odot(V×W) ¥stackrel{¥sim}{=} (X¥odotV)×(X¥odotW)

以上に述べた性質は、指数関数の次の性質(1から4)に対応します。

  1. a0 = 1
  2. ax+y = axay
  3. 1x = 1
  4. (ab)x = axbx
  5. a1 = a
  6. (ax)y = axy

5番目と6番目は、先の述べた左加群性です。

  1. 1¥odotV ¥stackrel{¥sim}{=} V
  2. (X×Y)¥odotV ¥stackrel{¥sim}{=} X¥odot(Y¥odotV)

加群圏の準同型としての次元関手

有限次元ベクトル空間には、その次元と呼ばれる自然数が一意的に決まります。次元dimは、圏FdVectの対象達の上で定義された自然数値関数とみなされていますが、関手に仕立てましょう。さらに、次元関手は、FinSet×上の加群圏のあいだの準同型とみなせます。

まず、次元関手が値を取る圏Dを定義します。Dは、集合N(自然数全体の集合)から作った余離散圏〈密着圏 | カオス圏〉です。

  • |D| = N
  • Mor(D) = {[n, m] | n, m∈N}
  • dom([n, m]) = n, cod([n, m]) = m
  • [n, m];[m, k] = [n, k]
  • idn = [n, n]

任意の圏CからDへの関手 F:CD は、その対象部分だけで決定されてしまいます。次の1:1対応があります*2

  • (関手 F:CD) ←→ (関数 |C|→|D|)

したがって、dim:|FdVect|→N は、関手 Dim:FdVectD とみなせます。

Dに対して、FinSet×の左モノイド作用を定義します。

  • X¥odotn := #(X)・n

ここで、#(X)は有限集合Xの基数である自然数、'・'は自然数の掛け算です。これが左モノイド作用である条件は次のとおり:

  • 1¥odotn := #(1)・n = n
  • (X×Y)¥odotn := #(X×Y)・n = X¥odot(Y¥odotn) = #(X)・(#(Y)・n)

#(X×Y) = #(X)・#(Y) を考慮すれば明らかですね。

モノイド圏M上の左加群圏C, Dがあるとき、関手 F:CD が左加群圏の準同型であるとは、およそ次が成立することです。

  • X¥odotF(A) ¥stackrel{¥sim}{=} F(X¥odotA)

次元関手Dimでは、

  • X¥odotDim(V) = Dim(X¥odotV)

つまり、

  • #(X)・dim(V) = dim(X¥odotV) = dim(Map(X, V))

が成立します。有限次元ベクトル空間の次元は、有限集合の直積モノイド圏が作用する左加群圏のあいだの準同型関手の例になります。

*1:反対圏が入る等式は、ラフに書くと分かりにくいですね。図式を使ったりして丁寧に考えてみてください。

*2:圏に対象集合を対応させる関手を Obj:CatSet、集合から余離散圏を作る関手を Codisc:SetCat とすると、CodiscとObjは随伴関手対になります。Set(Obj(C), S) ¥stackrel{¥sim}{=} Cat(C, Codisc(S)) という随伴同型があります。

トラックバック - http://d.hatena.ne.jp/m-hiyama/20180424