曖昧な記法だと、ほんとに話がグチャグチャになって、考えがまとまりません。記法の整理・整備は大事です。
内容:
飾り文字
上付き・下付きで小さく書く文字・文字列を飾り文字と呼ぶことにします。
上の例で:
- a は左上付き飾り文字
- b は左下付き飾り文字
- c は右上付き飾り文字
- d は右下付き飾り文字
- X は親文字
「文字」と言ってますが、文字列でも複雑な表現でもかまいません。
右下付き飾り文字は非常によく使われます。右上付き飾り文字も、累乗以外でも使われます。伝統的テンソル計算では、上下添字(右上付き飾り文字と右下付き飾り文字)をうまく利用しています。
複雑なことを記述しようと思うと、右側だけでは足りなくなります。
例えばこれ(↑)は(わざとらしいけど)、
すべての位置の飾り文字を入れ子にして使う、なんてことも起こりえます。
注釈飾り文字
Xは位相空間だとして、X上で定義された実数値連続関数の全体を CFun(X) としましょう。CFun(X) には足し算と掛け算が定義できるので可換環だとみまします。すると、CFun(-) は、位相空間の圏から可換環の圏への関手になります。位相空間の圏をTop、可換環の圏をCRngとすると、
- CFun:Top→CRng
いやっ、待て、CFunは反変関手なので、
- CFun:Topop→CRng
と書くべきですね。
関手が「共変だっけ? 反変だっけ?」と迷うことはよくあります。迷わなくて済むように、次のルールを設けましょう。
- 共変関手には、(必要なら)右下飾り文字として○を付ける。
- 反変関手には、(必要なら)右上飾り文字として○を付ける。
このルールによると、
- CFun = CFun○
この用途の上付きマルは、“なければなくてもいい”ので、注釈飾り文字と呼ぶことにします。飾り文字を付けて意味が変わるわけではないけど、情報を明示化する役割です。
識別飾り文字
Xは集合だとして、Xの部分集合の全体 -- つまり、Xのベキ集合を Pow(X) としましょう。Pow(X) は再び集合となるので、集合圏(Setと書く)から集合圏への関手にできます。
- Pow:Set→Set
いやっ、待て、Powって共変関手? それとも反変関手?
Powには、共変関手(像集合関手)と反変関手(逆像集合関手)があります。単にPowと書いただけでは区別が付きません。そこで次のルールを設けましょう。
- 共変のベキ集合関手は Pow○ と書く。
- 反変のベキ集合関手は Pow○ と書く。
今度の上付きマルは、取ってしまうと意味が曖昧になります。注釈飾り文字ではありません。同じ親文字(親文字列、親表現)に異なる意味を持たせるために飾り文字を付けます。異なる対象物を識別するために付ける飾り文字を識別飾り文字と呼ぶことにします。
識別飾り文字がないときの解釈のために、デフォルト・ルールを設ける場合はあります。例えば:
- 単に Pow と書いた場合は、共変関手 Pow○ の意味だとする。
これはあくまでデフォルト・ルール(省略時の解釈ルール)であって、識別する必要はあります。
関手飾り文字
Fが共変関手のとき、F(f) を f* と書き、Gが反変関手のとき G(f) を f* と書く、というルールは広く使われています。例えば、CFun(f) = f*, Pow○(f) = f*, Pow○(f) = f* 。この用途の飾り文字は、関手の略記になっているので関手飾り文字と呼ぶことにします。
複数の関手があるときに、なんでもかんでも上付きアスタリスク/下付きアスタリスクにするのは混乱のもとです。そのことは、次の記事で書きました。
飾り文字がアスタリスクでもその他の文字でも、どの関手をどんな飾り文字で表すのかハッキリと示しましょう。例として、ベキ集合関手に関するルールを挙げましょう。
飾り文字ルール:
関手 | 飾り文字 | 使用例 |
---|---|---|
Pow○ | 右下 * | f* |
Pow○ | 右上 * | f* |
右下と右上で違う飾り文字を使ってもかまいません。
飾り文字ルール:
関手 | 飾り文字 | 使用例 |
---|---|---|
Pow○ | 右下 ▷ | f▷ |
Pow○ | 右上 ◁ | f◁ |
実際に多く使われている飾り文字ルールは:
関手 | 飾り文字 | 使用例 |
---|---|---|
Pow○ | なし | f |
Pow○ | 右上 -1 | f-1 |
つまり、Pow○(f) と f は区別できなくて、Pow○(f) と fの逆写像を区別できないルールになっているのです。よろしくないですね。ひどいですね。
微分幾何からの例
「微分幾何で上付き・下付きアスタリスクを使い過ぎるのはよくない」で取り上げた微分幾何からの例を見てみましょう。
実際に次のような飾り文字ルールが使われることがあります。(上付きマル/下付きマルは注釈飾り文字です。)
関手 | 飾り文字 | 使用例 |
---|---|---|
T○ | 右下 * | f* |
(C∞)○ | 右上 * | f* |
Ω○ | 右上 * | f* |
VectBdl○[-] | 右上 * | f* |
一言説明をしておくと:
- T○ は接ベクトルバンドル関手で、T○:Man→VectBundle
- (C∞)○ は関数可換環関手で、(C∞)○:Manop→CRng
- Ω○ は微分形式関手で、Ω○:Manop→Mod[C∞(-)]
- VectBdl○[-] はベクトルバンドルの圏を対応させるインデックス付き圏で、VectBdl○[-]:Manop→CAT
すべてアスタリスクを使っているので、f:M→N in Man に対して:
- f* = T○(f) :T○(M)→T○(N)
- f* = (C∞)○(f) :(C∞)○(N)→(C∞)○(M)
- f* = Ω○(f) :Ω○(N)→Ω○(M)
- f* = VectBdl○[f] :VectBdl○[N]→VectBdl○[M]
これは辛すぎます。多少のオーバーロード〈多義的使用〉は許すとして、例えば、次の飾り文字ルールならだいぶマシです。
関手 | 飾り文字 | 使用例 |
---|---|---|
T○ | 使用しない | Tf |
(C∞)○ | 右上 * | f* |
Ω○ | 右上 * | f* |
VectBdl○[-] | 右上 # | f# |
まとめ
- 関手の共変・反変が分かりにくいときは、注釈飾り文字で注釈しよう。
- 同一の名前(親文字)を持つ共変関手/反変関手は識別飾り文字で区別して書こう。
- 関手飾り文字は、使う前にルールを明示しよう。
- 関手飾り文字として、同じ文字を過度にオーバーロードするのはやめよう。
- とはい、幾分かのオーバーロードは許さないと煩雑過ぎるだろう。
[追記]
最近、左上・左下・右上・右下でも足りなくて、真上と真下も使ったりしているなー(苦笑)。TeXではめんどくさいけど、手書きだとけっこう便利。
[/追記]