某所で圏論的線形代数の話をしたのですが、いきなり圏論バキバキでは面食らうだろうと思い、次のような方針にしました。
- 慣用の用語・記法は尊重する。
- 部分集合という概念を使う。
- 有限次元ベクトル空間に限定する。
- 忘却関手を強調しない。
これは、常識的かつ穏健な態度だと思います。
しかし、言い方を換えれば中途半端な態度です。中途半端にはやはり弊害があります。この記事では、以下の方針に基づいて圏論的線形代数の一部をまとめ直して、「 丸く収まらなかった基底とフレーム 」で述べた「フレーム」の解釈を再論します。
この記事の方針:
- 慣用の用語・記法は尊重しない。
- 部分集合という概念を使わない。
- 有限次元ベクトル空間に限定しない。
- 忘却関手を強調する。
内容:
準備と注意
ベクトル空間の係数体〈スカラー体 | 基礎体〉は実数体Rに固定して、以下、係数体には言及しません。ベクトル空間と線形写像の圏をVectとします。Setは集合圏です。
集合圏とベクトル空間の圏のホムセットを、次のようにも書きます。
- For A, B∈|Set|, Map(A, B) := Set(A, B)
- For V, W∈|Vect|, LinMap(V, W) := Vect(V, W)
次のような記号の乱用〈abuse of notation〉は非常によく使われます。
- ベクトル空間 V = (V, +, ・) ←これは記号の乱用
ベクトル空間Vとその台集合〈underlying set〉を同じ記号で表しています。'+'は足し算ですが、ベクトル空間ごとに足し算記号を区別すること(例えば、'+V' と書く)はほぼありません。'・'はスカラー倍のつもりですが、この演算子記号はほとんど常に省略され、併置で代用されます。
記号 '+', '・' のオーバーロード(多義的使用)と '・' の省略は、まー許すとして、ベクトル空間とその台集合の同一視はやめます。次のように書きます。
- ベクトル空間 V = (Und(V), +, ・)
'Und'は underlying set/map の最初の3文字です。Und(V) を V と書くこともあります。これは、underlying と underline をかけた駄洒落記法です。
線形写像 f:V → W in Vect を、単なる写像とみなしたものは、Und(f):Und(V) → Und(W) in Set と書き、台写像〈underlying map〉といいます([追記]台写像については、「忘却関手は難しい」に書いています。[/追記])。ベクトル空間と線形写像に対して定義された Und(-) は関手になります。
- Und:Vect → Set
このUndが忘却関手〈forgetful functor〉です。
集合Aから自由ベクトル空間を生成する関手を FreeVect とします。
- FreeVect:Set → Vect
与えられた集合Aから自由ベクトル空間を作る方法はいくつかありますが、Aの要素の形式的線形結合〈形式的一次結合 | formal linear combination〉の全体を台集合にする方法を採用しましょう。足し算とスカラー倍の定義は自明でしょう。
足し算とスカラー倍が自明なので、ついつい、「形式的線形結合の集合」と「それに足し算とスカラー倍を一緒にしたベクトル空間」を同一視してしまいがちです。圏論的に線形代数をやろうとすると、この同一視が落とし穴になります。同一視しちゃダメです。
Aからの形式的線形結合の集合(単なる集合!)のほうを LinComb(A) と書くことにして、自由ベクトル空間は次のように書きます。
- FreeVect(A) := (LinComb(A), +, ・)
LinComb(A)∈|Set|, FreeVect(A)∈|Vect| なので、LinComb(A) と FreeVect(A) は所属する圏(生息地=アビタ)が違います。忘却関手を使って書けば:
- Und(FreeVect(A)) = LinComb(A) in Set
FreeVectとUndの随伴性
関手 FreeVect:Set → Vect, Und:Vect → Set は随伴関手ペアです。もっと正確な言い方をすると、FreeVectとUndを構成素とする規準的〈canonical〉な随伴系が存在します。
FreeVectとUndが随伴関手ペアであることは、次のホムセット同型により記述できます。
- For A∈|Set|, V∈|Vect|
Vect(FreeVect(A), V) Set(A, Und(V))
注意すべきは、このホムセット同型の族(AとVでインデックスされた族)が自然同型〈可逆自然変換〉になっていることです。が、今ここではあまり拘らないことにします。随伴に関する詳細は次の記事で解説しています。
随伴関手ペア(正確には随伴系)のホムセット同型を与える写像に名前を付けておきます。
- For A∈|Set|, V∈|Vect|
- linRestrictA,V:Vect(FreeVect(A), V) → Set(A, Und(V))
- linExtA,V:Set(A, Und(V)) → Vect(FreeVect(A), V)
linRestrict, linExt は次のように定義されます。
- linRestrictA,V := λf∈LinMap(FreeVect(A), V).(linEmbedA;f)
- linEmbedA := λa∈A.([a])
[a] は、要素aに対応する形式的線形結合の“単項式”あるいは“形式的シンボル”
- linEmbedA := λa∈A.([a])
- linExtA,V := λψ∈Map(A, Und(V)).(λx∈LinComb(A).(Σ xaψ(a)))
λx∈LinComb(A).(Σ xaψ(a)) の部分をもっと詳しく丁寧に書けば:
ここで、 は形式的和(ナカグロのスカラー倍も形式的スカラー倍)、一方の はベクトル空間内の実際の和(ナカグロのスカラー倍も実際のスカラー倍)です。Aが無限集合でも、和は有限和です。
linExtは、集合のあいだの写像 ψ:A → Und(V) を線形写像に拡張する働きを持つ関数(プログラミング的に言えば総称高階関数)です。次の略記(右肩にニョロ)を導入します。
- ψ~ := linExtA,V(ψ)
略記だと、linExtA,V の下付き添字の情報は落ちます。「短く書ける ←→ 情報が落ちて曖昧になる」がトレードオフの関係にあります。
写像の独立性、生成性、基底性
通常の線形代数では、ベクトル空間Vの台集合の部分集合 A⊆Und(V) に対して、「Aが線形独立である/Aが生成系である/Aが基底である」という概念を定義します。台集合の部分集合という概念を圏論的に扱うときは、包含写像 inclUnd(V)A:A → Und(V) in Set に置き換えて考えるのが定石です。
今ここでは、「線形独立である/生成系である/基底である」という概念を、部分集合ではなくて写像に対して定義して、その特別な場合として包含写像が「線形独立である/生成系である/基底である」状況を考えることにします。
線形代数の話をしている文脈では、線形独立を単に独立ということにして、形容詞と名詞化された形容詞(性質の名前)を次のように決めます。
形容詞 | 名詞化された形容詞 |
---|---|
独立{な}?〈independent〉 | 独立性〈independence | independency〉 |
生成{的}?〈generative | generating〉 | 生成性〈generativeness | generating property〉 |
基底{的}?〈basis〉 | 基底性〈basis property〉 |
basis は名詞ですが、無理にでも形容詞として使います -- 慣用の用語・記法は尊重しないし、なんなら、自然言語としての正書法も尊重しない方針なので。
形容詞である「独立/生成的/基底的」は、部分集合ではなくて写像にかかります。
- ψ:A → Und(V) in Set が独立 :⇔ ψ~:FreeVect(A) → V in Vect が単射
- ψ:A → Und(V) in Set が生成的 :⇔ ψ~:FreeVect(A) → V in Vect が全射
- ψ:A → Und(V) in Set が基底的 :⇔ ψ~:FreeVect(A) → V in Vect が全単射〈双射〉
より圏論的言葉づかいをしたいなら、「単射/全射/全単射」は「モノ射/エピ射/同型射」といいます。
「独立/生成的/基底的」な写像からなる集合を次のように定義します。
- IndepMap(A, V) := {ψ∈Map(A, Und(V)) | ψは独立}
- GenMap(A, V) := {ψ∈Map(A, Und(V)) | ψは生成的}
- BasisMap(A, V) := {ψ∈Map(A, Und(V)) | ψは基底的}
「独立/生成的/基底的」をベクトル空間の台集合の部分集合に対して使いたいときは:
- A⊆Und(V) が独立 :⇔ inclUnd(V)A:A → Und(V) in Set が独立
- A⊆Und(V) が生成的 :⇔ inclUnd(V)A:A → Und(V) in Set が生成的
- A⊆Und(V) が基底的 :⇔ inclUnd(V)A:A → Und(V) in Set が基底的
多義語「フレーム」の解釈
フレーム〈frame | 標構〉に関しては、次の記事で議論しています。
過去記事のタイトルを見てだいたい分かるように、「基底」「フレーム」という言葉の色々な解釈の妥協案を探したがうまくいかなかった、という経緯があります。
うまくいかないのも致し方ないかも知れません。現時点での僕の認識だと、「フレーム」と呼ばれる可能性がある写像が8種類、「フレーム」と呼ばれる可能性がある集合が4種類、合計で10種類あります。10種類の意味に全部別な語を割り当てるのも無理だし、文脈からどの意味かを判断するのも難しいでしょう。
有限次元ベクトル空間に関して「フレーム」と呼ばれる可能性がある8種類の写像を一覧表で列挙しましょう。表内で使われている言葉と記号は次のとおりです。
- V は有限次元ベクトル空間で、dim(V) = m 。
- I と A は有限集合で、その基数〈cardinality〉は k, m 、 k ≦ m 。
- InjLinMap は、ベクトル空間のあいだの単射線形写像の全体を表す。
- IsoLinMap は、ベクトル空間のあいだの全単射〈同型な〉線形写像の全体を表す。
- インデックス付けとは、任意の単射写像 I → Und(V) 。
- 番号付けとは、集合 I が番号の集合であるインデックス付け。
- 以下の表の欄には集合(写像の集合)が書き込んであり、その集合の要素(写像)が「フレーム」と呼ばれる可能性がある。
一覧表:
一般的な単射 | 基底的な単射 | |
---|---|---|
一般的インデックス付け | IndepMap(I, V) | BasisMap(A, V) |
番号付け(特別なインデックス付け) | IndepMap({1, ..., k}, V) | BasisMap({1, ..., m}, V) |
インデックス付けの線形拡張 | InjLinMap(FreeVect(I), V) | IsoLinMap(FreeVect(A), V) |
番号付けの線形拡張 | InjLinMap(FreeVect({1, ..., k}), V) | IsoLinMap(FreeVect({1, ..., m), V) |
次に「フレーム」と呼ばれる可能性がある4種類の集合の一覧表です。いずれも、上の表の写像の像〈image〉となる集合です。欄には“集合の集合”が書き込んであり、その“集合の集合”の要素(集合)が「フレーム」と呼ばれる可能性があります。Pow はベキ集合を表します。
一覧表:
一般的な単射の像 | 基底的な単射の像 | |
---|---|---|
インデックス付け | {ψ(I)∈Pow(Und(V)) | ψ∈IndepMap(I, V)} | {ψ(A)∈Pow(Und(V)) | ψ∈BasisMap(A, V)} |
番号付け | {ψ({1, ..., k})∈Pow(Und(V)) | ψ∈IndepMap({1, ..., k}, V)} | {ψ({1, ..., m})∈Pow(Und(V)) | ψ∈BasisMap({1, ..., m}, V) |