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

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

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

参照用 記事

丸く収まらなかった基底とフレーム

今年の8月に「基底とフレーム、丸く収まる妥協案」という記事を書きました。その記事で、混同されがちな3つの概念を区別して、それぞれに別な名前を与えました。「うまくいった」と思ったのですが、まだ問題がありました。

内容:

定義が狭すぎた

基底とフレーム、丸く収まる妥協案」において、3つの概念に付けた呼び名は、

  1. 基底集合
  2. 基底フレーム
  3. 線形フレーム

でした。一部省略を許すと:

  1. 基底集合 または 基底
  2. 基底フレーム または 基底 または フレーム
  3. 線形フレーム または フレーム

省略により呼び名の衝突が起きますが、区別されてない状況が再現するだけだから別にかまわない(区別したいなら省略するな)、という態度。

実際にこの用語法で書いたり話したりしてみたのですが、どうも具合が良くない。基底フレーム、線形フレームの概念が狭すぎるのです。一般性に欠ける、特殊ケースしか扱ってないのです。

準備

A, B などは集合、V, W などはベクトル空間を表します。ベクトル空間Vの台集合はU(V)と書きます。'U'は underlying set の'u'からです。通常、ベクトル空間とその台集合は区別しませんが、区別しないと曖昧さから混乱するリスクがあるので区別します。

圏論の概念を使うことにします; F:SetVect は自由ベクトル空間{生成}?関手とします(中括弧と疑問符は、「生成」が省略可能なことを示します)。台集合を対応させるUは忘却関手 U:VectSet です。自由ベクトル空間関手Fと忘却関手Uは随伴ペアとなっているので、次のホムセット同型があります。

  • Vect(F(A), V) \cong Set(A, U(V))

このホムセット同型を与える2つの写像に名前を付けておきます。

  • 線形拡張〈linear extension〉 linExtA,V:Set(A, U(V)) → Vect(F(A), V)
  • 線形制限〈linear restriction〉 linRestrictA,V:Vect(F(A), V) → Set(A, U(V))

linExtA,V と linRestrictA,V は互いに逆です。

任意の写像 f:A → U(V) in Set に対して、線形写像 linExtA,V(f):F(A) → V in Vect を構成できます。できた線形写像に linRestrictA,V を適用すると、もとの写像に戻ります。

  • linRestrictA,V(linExtA,V(f)) = f :A → U(V) in Set

linExtA,V と linRestrictA,V は互いに逆だったので、次も成立します。

  • 線形写像 g:F(A) → V in Vect に対して linExtA,V(linRestrictA,V(g)) = g :F(A) → V in Vect

B⊆A のとき、包含写像〈inclusion map〉を inclAB:B → A in Set と書きます。

再定義

基底とフレーム、丸く収まる妥協案」と、そこから参照されている関連する記事では、基底集合を基本的概念としています。基底集合は広く知られているお馴染みな概念なので、「基底集合ありき」とするのは当然とも言えます。が、圏論的セッティングで線形代数をするときは「基底集合ありき」から出発するのはなんかシックリ来ない。

ではどうするか?「フレームありき」から出発しましょう。「フレーム」を改めて次のように定義します。新しい定義は以前の「基底フレーム」の定義よりずっと一般的です。

  • ベクトル空間Vに対して、写像 f:A → U(V) in Set がVのフレーム〈frame〉だとは、linExtA,V(f):F(A) → V in Vect が線形同型であること。

フレームの定義に先立って、自由ベクトル空間関手 F と線形拡張 linExtA,V(AとVを動かした全体は自然変換になる)が必要になります。が、どちらも具体的に構成可能です。

さて、基底集合はフレームを使って定義します。

  • ベクトル空間Vに対して、集合 A⊆U(V) が基底集合〈basis set〉だとは、包含写像 inclU(V)A:A → U(V) in Set がフレームであること。

従来の基底集合の定義(線形独立な生成系集合)を知っている場合は、上の定義と従来の定義が同値であることを確認しましょう。従来の定義と新しい定義にくいちがいはありません。

ベクトル空間が有限次元のときを考えましょう。dim(V) = m だとは、Vの基底集合Aの基数〈cardinality | 濃度〉がmであることです。したがって、A \cong {1, ..., m} in Set 。この同型を与える写像(のひとつ)を φ:{1, ..., m} → A (AはVの基底集合)とします。φ;inclU(V)A:{1, ..., m} → U(V) in Set がVのフレームになることは、次のことから分かります。

  1. linExt(φ;inclA) = F(φ);linExt(inclA) (一部の添字を省略)
  2. F(φ):F({1, ..., m}) → F(A) in Vect は線形同型

一番目は随伴系の反転置に関して一般的に成立する等式*1ですが、直接具体的に計算しても示せます。二番目は、同型射を関手で移せば同型射に移ることから示せます。

これで、典型的なVのフレームが二種類得られました。

  1. A⊆U(V) がVの基底集合のとき、包含写像 inclU(V)A はフレームである。
  2. A⊆U(V) がVの基底集合、φ:{1, ..., m} → A が同型写像のとき、φ;incluU(V)A はフレームである。

基底とフレーム、丸く収まる妥協案」で「基底フレーム」と呼んでいたものは、φ;inclU(V)A の形のフレームでした。今回の定義は、この形に限定してないので、域〈domain〉が番号の集合じゃないフレームもあります。例えば、dim(V) = 3 のとき、3つのラテン小文字の集合 {'x', 'y', 'z'} を使ったフレーム e:{'x', 'y', 'z'} → U(V) は世間で普通に使われています。

整理と反省

Vはベクトル空間だとして:

  1. Vのフレーム: 写像 f:A → U(V) in Set で、その線形拡張が線形同型であるもの。
  2. Vの基底{集合}?: 集合 A⊆U(V) で、包含写像 inclU(V)A がVのフレームであるもの。
  3. Vの線形フレーム: 線形写像 g:F(A) → V in Vect で線形同型〈可逆線形〉であるもの。

フレームと基底集合は1:1対応しません*2が、フレームと線形フレームは1:1対応します。その1:1対応が、線形拡張/線形制限で与えられます。

  • linExt:Set(A, U(V))⊇FrameA(V) ←→ LinFrameA(V)⊆Vect(F(A), V):linRestrict

ここで、

  • FrameA(V) は、Aを域とするVのフレームの集合。
  • LinFrameA(V) は、F(A)を域とするVの線形フレームの集合。

前節で挙げたフレームの特殊例、よく使うフレームは次のように呼ぶとよいでしょう。

  • ダイレクトフレーム: 域が基底集合で、包含写像であるフレーム
  • ナンバリングフレーム: 域が番号〈自然数〉の集合 {1, ..., m} であるフレーム(当然に有限次元のとき)

この呼び名は、「古典的微分幾何・ベクトル解析のモダン化: ダイレクトインデックス記法」のダイレクトインデックスとナンバリング{インデックス}?と整合します。

今まで僕が書いた/話したなかで、基底集合とフレームをゴッチャにすることはなかったと思いますが、フレームと線形フレームを区別しない(同じ呼び名・記号をオーバーロードする)ことは多かったです。今後も徹底して区別することは出来ないだろうし、その必要もないと思います。

ただし、この記事で定義した(ナンバリングフレームに限らない)一般的なフレームは便利なので使い続けるでしょう。ナンバリングフレームに限定するのは辛い、もう嫌だ。

*1:随伴系の反転置を (-) で書くと、(f;g) = F(f);g、反転置 (-) を随伴系の余単位により書いて絵算を使えばほぼ自明です。

*2:フレームの像集合が基底集合になります。フレームの新しい定義では、ひとつの基底集合に対応するフレームはとんでもなくイッパイあります。