前回「構造記述のための指標と名前 2/n 圏の記述」の最後で、
次回は「圏論を使って二重圏を定義する」予定です。
と書いたのですが、二重圏の話の前に、最初の回「構造記述のための指標と名前 1/n 基本」では述べきれなかった“名前に関する説明”を追加します。$`\newcommand{\mrm}[1]{ \mathrm{#1} }
\newcommand{\cat}[1]{ \mathcal{#1} }
%\newcommand{\op}{ \mathrm{op} }
\newcommand{\In}{\text{ in }}
%\newcommand{\Imp}{\Rightarrow}
%\newcommand{\u}[1]{\underline{#1}}
%\newcommand{\o}[1]{\overline{#1}}
%\newcommand{\twoto}{ \Rightarrow }
%\newcommand{\id}{ \mathrm{id} }
\newcommand{\hyp}{\text{-} }
\newcommand{\T}[1]{\text{#1} }
%%
\require{color}
\newcommand{\NN}[1]{ \textcolor{orange}{\text{#1}} } % New Name
`$
内容:
ハブ記事:
分類子名と固有名
指標によって名前が新規導入されたり、指標が既知の名前を使用したりします。指標が導入する名前はニ種類でした(「構造記述のための指標と名前 1/n 基本」参照)。
- 指標名〈signature name〉
- 構成素役割り名〈constituent role name〉
指標名は、もちろん指標自体に付けられた名前ですが、指標によって記述・定義される概念的事物の“種類の名前”としても使用します。
$`\quad \T{Semigroup}, \T{Monoid}, \T{SmallCategory}`$
などの名前は、概念的事物の“種類の名前”です。概念的事物の“種類の名前”を分類子名〈classifier name〉とも呼ぶことにします。つまり、指標名は分類子名としても使われる、ということです。
分類子名は型名と言っても同じです。が、しかし、様々な型理論において「型とはなんぞや?」がシリアスに議論されていて、型に対して思い入れや主義主張を持つ人もいるでしょうから、ここで「型」を使うのはやめておきます。とはいえ、「型〈type〉」という言葉は、型理論の厳密な定義のもとではなくて、国語辞書的意味で使うことはあります、よくあるでしょう。
分類子名は、構成素役割り名(初出時はオレンジ色で書きます)や変数名を導入するときに、その名前が指す予定の概念的事物の種類の指定に使われます。例えば:
$`\quad \T{variable }S \T{ is }\T{Semigroup}\\
\quad \T{variable }M \T{ is }\T{Monoid}\\
\quad \T{variable }\cat{C} \T{ is }\T{SmallCategory}\\
\:\\
\quad \T{datum }\NN{MulSemigrp} \T{ is }\T{Semigroup}\\
\quad \T{datum }\NN{LeftStim} \T{ is }\T{Monoid}\\
\quad \T{datum }\NN{base} \T{ is }\T{SmallCategory}
`$
これは確かに型名としての用法ですね。
分類子名とは別種な名前として、圏の固有名〈proper name〉があります。
$`\quad {\bf Semigrp}, {\bf Mon}, {\bf Cat}`$
はそれぞれ、
$`\quad`$ 半群達の圏、モノイド達の圏、小さい圏達の2-圏
を名指す固有名です。圏の固有名は太字〈ボールド体〉を使う習慣ですが、習慣が守られる保証はありません。
圏(2-圏も含む)の固有名を絶対値記号で囲むと、集合の固有名として使えます。
$`\quad |{\bf Semigrp}|, |{\bf Mon}|, |{\bf Cat}|`$
はそれぞれ、
$`\quad`$ 半群達の集合、モノイド達の集合、小さい圏達の集合
を名指す固有名です。これらの集合は大きな集合なので、圏 $`{\bf Set}`$ の対象ではありません(大きな集合達の圏 $`{\bf SET}`$ の対象です)。
変数名や構成素役割り名の型(名前が指す予定の概念的事物の種類)の指定には、集合の固有名を使うこともできます。
$`\quad \T{variable }S \in |{\bf Semigrp}|\\
\quad \T{variable }M \in |{\bf Mon}|\\
\quad \T{variable }\cat{C} \in |{\bf Cat}|\\
\:\\
\quad \T{datum }\NN{MulSemigrp} \in |{\bf Semigrp}|\\
\quad \T{datum }\NN{LeftStim} \in |{\bf Mon}|\\
\quad \T{datum }\NN{base} \in |{\bf Cat}|
`$
あるいは、次のように書いても同じです。
$`\quad \T{variable }S \In {\bf Semigrp}\\
\quad \T{variable }M \In {\bf Mon}\\
\quad \T{variable }\cat{C} \In {\bf Cat}\\
\:\\
\quad \T{datum }\NN{MulSemigrp} \In {\bf Semigrp}\\
\quad \T{datum }\NN{LeftStim} \In {\bf Mon}\\
\quad \T{datum }\NN{base} \In {\bf Cat}
`$
同じことを記述するのに、幾つかの書き方があります。
関手意味論
指標により導入される分類子名(指標名でもある)と、圏の固有名は次のように対応しています。
$`\text{分類子名}`$ | $`\text{圏の固有名}`$ |
---|---|
$`\T{Semigroup}`$ | $`{\bf Semigrp}`$ |
$`\T{Monoid}`$ | $`{\bf Mon}`$ |
$`\T{SmallCategory}`$ | $`{\bf Cat}`$ |
必ずしも同じ綴りにはなってませんが、それは習慣なのでしょうがありません。
どのような方法で、分類子名と圏の固有名の対応が作られるのでしょうか? ローヴェア〈William Lawvere〉が創始した関手意味論〈functorial semantics〉のメカニズムを使います。今、関手意味論について述べることはしませんが、関手意味論を背景とすれば、次のような定義が可能です。
$`\quad \T{define }{\bf Semigrp} := (\T{The category of }(\T{Semigroup})\T{s})
\quad \T{define }{\bf Mon} := (\T{The category of }(\T{Monoid})\T{s})
`$
これはどういうことかと言うと、指標(とターゲット)が与えられれば、その指標で定義される代数系〈代数構造〉を対象とする圏が自動的に作れる、ということです。
$`\quad (\T{The category of }(\hyp)\T{s})`$
が圏を作り出すメカニズムを表しています。ハイフンのところに指標名(分類子名でもある)を入れると、対応する圏が自動的に生成されます。その圏に固有名を付ければいいわけです。
ただし、指標の書き方〈フォーマット | 構文〉は一定の約束に従う必要があります。ローヴェア流の関手意味論が対応している指標は代数指標〈algebraic signature〉というフォーマットのものです。その他のフォーマットの指標に対する関手意味論(圏の自動生成メカニズム)も存在しますが、いずれにしても指標の書き方の約束はあります。
小さい圏の指標 $`\T{SmallCategory}`$ (「構造記述のための指標と名前 2/n 圏の記述」参照)から、小さい圏達の2-圏 $`{\bf Cat}`$ を自動生成できるでしょうか? 圏の2-圏では次元が上がっている(2次元になる)ので、半群やモノイドのような1次元の場合と比べて格段に難しくなります。出来なくはないけど大変だ、ということです。
ローヴェア流の関手意味論のマシナリーを使えば、対象を記述する指標さえ準備すれば、射の記述は不要となります。これは便利です。しかし、マシナリーは使わす、全部手作りする選択肢もあります。射を記述する指標も明示的に書いて、圏の公理系を満たすことを示せば圏を作れます。全部手作りで作った圏に固有名を与えることが出来ます。
固有名の曖昧さ
固有名は、唯一特定のモノを名指す名前です。しかし残念ながら、固有名とされる名前だけを見て、その名前が名指す対象物を特定することは出来ません。例えば、太字〈ボールド体〉の $`{\bf R}`$ は実数の集合を名指す固有名だとされますが、実数の集合以外を名指すためにも使われます。
実数には標準的な大小順序があります。その順序も“込み”で考えた $`{\bf R}`$ は順序集合なので、圏 $`{\bf Set}`$ の対象ではななくて、圏 $`{\bf Ord}`$ (順序集合の圏)の対象です。実数の足し算と掛け算、それに関わる諸々の法則を“込み”で考えると $`{\bf R}`$ は体になります。そのとき、$`{\bf R}`$ は圏 $`{\bf Field}`$ (体の圏)の対象です。
圏の固有名 $`{\bf Set}`$ にしたところで、唯一特定の圏を指すかどうかはあやしいのです。集合圏のデカルト構造を仮定することは多いですが、そうなると、$`{\bf Set}`$ はプレーンな圏ではなくてデカルト圏です。つまり、2-圏 $`{\bf CAT}`$ の対象ではなくて、2-圏 $`{\bf CartCAT}`$ の対象とみなしています。
ひとつの数字〈digit〉から構成される数表現〈numeral〉である $`1`$ は固有名とされますが、一意的に特定対象物を名指しているでしょうか? 名前(ひとつの数字)だけを見ても、それが自然数のイチなのか複素数のイチなのか、特定の単元集合を表しているのか、あるいはモノイドの単位元の構成素役割り名(このとき固有名ではない)なのかわかりません。
名前が指すモノの種類を表す分類子名を添えると、このような曖昧性を少なくすることが出来ます。例えば次のようです。
- $`{\bf R}\T{ as }\T{Set}`$
- $`{\bf R}\T{ as }\T{OrderedSet}`$
- $`{\bf R}\T{ as }\T{Field}`$
- $`{\bf Set}\T{ as }\T{LargeCategory}`$
- $`{\bf Set}\T{ as }\T{LargeCartesianCategory}`$
- $`{ 1 }\T{ as }\T{NaturalNumber}`$
- $`{ 1}\T{ as }\T{ComplexNumber}`$
- $`{ 1}\T{ as }\T{Set}`$
実際には、このような曖昧さ回避策が使用されるケースは少なく、文脈から分かるだろうという想定をします。逆に言えば、固有名といえども、文脈なしでは解釈が確定しない、ということです。
オーバーロード: ホムの例
ひとつの名前を複数の意味・用法で使い回すことがオーバーロードです。オーバーロードの例を挙げるときりがないですが、圏のホムセットの例を挙げます。
集合圏をプレーンな圏と考えて、固有名 $`{\bf Set}`$ で名指すことにします。念の為曖昧さ回避をしておくと:
$`\quad {\bf Set} := ({\bf Set} \T{ as }\T{LargeCategory})`$
どんな圏でも、そのホムセットがあります。ホムセットは単一の集合のことではなくて、2つの対象のペアに集合を対応させる写像です。
$`\quad \mrm{Hom}_{\bf Set} : |{\bf Set}| \times |{\bf Set}| \to |{\bf Set}| \In {\bf SET}`$
この写像はめちゃくちゃ多用されるので、単に $`{\bf Set}`$ と書きます。
$`\quad {\bf Set} : |{\bf Set}| \times |{\bf Set}| \to |{\bf Set}| \In {\bf SET}`$
写像としての $`{\bf Set}`$ が使われるときは、2つの引数をともなって、例えば
$`\quad {\bf Set}({\bf N}, {\bf R})`$
$`\quad {\bf Set}(X, Y)`$
とかなので、混乱の心配はあまりありません。
さらに、$`{\bf Set}`$ はホム関手の意味でもオーバーロードされます。
$`\quad {\bf Set} : {\bf Set}^\mrm{op} \times {\bf Set} \to {\bf Set} \In {\bf CAT}`$
この用法の $`{\bf Set}`$ では、引数に写像も入ります。例えば
$`\quad {\bf Set}(f, g)`$
$`\quad {\bf Set}(f, B)`$
とか。引数は対象〈集合〉だと思いこんでいると困惑します。
ホム関手については、次の過去記事で説明しています。
固有名 $`{\bf Set}`$ のオーバーロードに対する曖昧さ回避は例えば次のようです。
- $`{\bf Set}\T{ as }\T{LargeCategory}`$
- $`{\bf Set}\T{ as }\T{LargeMap}`$
- $`{\bf Set}\T{ as }\T{Bifunctor}`$
前節で言ったとおり、曖昧さ回避策が講じられることは少ないので、文脈によるオーバーロード解決をします。