名前の解釈をちゃんとしよう -- と、口頭では何百回も言った気がするのですが、ちゃんと書いたことはなかったので、この記事にまとめておきます。名前を正確に解釈せずにボヤッとした印象で済ませてしまう癖を矯正するのは難しいですね。それが、何百回も言うことになってしまう事情です。$`\newcommand{\In}{\text{ in }}
\newcommand{\BR}[1]{ \left[\!\left[ {#1} \right]\!\right] }
\newcommand{\hyp}{ \text{-} }
\newcommand{\mbf}[1]{ \mathbf{#1} }
\newcommand{\mrm}[1]{ \mathrm{#1} }
\newcommand{\mbb}[1]{ \mathbb{#1} }
\newcommand{\BRP}[1]{ \left[ !\, {#1} \,! \right] }
\newcommand{\BRG}[1]{ \langle\!\langle {#1} \rangle\!\rangle }
\newcommand{\BRR}[1]{\left[\!\left( {#1} \right)\!\right] }
\newcommand{\T}[1]{\text{#1} }
`$
内容:
関連記事:
意味論のための変数と記法
意味論では、構文的対象物〈syntactic object〉に意味的対象物〈semantic object〉がどのように対応付けられるかを記述して調べます。ここでは、名前の意味論を考えるので、構文的対象物は名前です。意味的対象物は、集合や集合の要素や、それらを組み合わせた複雑な構造物です。
名前達の集合の上を走る変数(メタ変数)にはギリシャ文字小文字を使います。$`\alpha, \xi, \tau`$ とかです。これらは特定の名前ではなくて、色々な名前を表す“変数”です。ただし、$`\lambda, \varepsilon, \chi`$ は特別な用途で使うので、変数としては使用しません。(この記事内で、予約されたギリシャ文字を使う機会はありませんでしたけど。)
- $`\lambda`$ : ラムダ計算のラムダ抽象記号
- $`\varepsilon`$ : ヒルベルトのイプシロン記号
- $`\chi`$ : 集合の指示関数〈indicator function〉
構文的対象物達と意味的対象物達が両方とも見えている俯瞰的立場に立って、構文的対象物に意味的対象物を対応させる関数を考えます。それを意味関数〈semantic function〉とか解釈〈interpretation〉とか意味割り当て〈meaning assignment〉とか、あるいはそれに類似の言葉で呼びます。
意味関数をひとつ決めたとき、それを次のような特別な括弧で表すと便利です。
$`\quad \BR{\cdots}`$
この特別な括弧は、スコット・ブラケット〈Scott brackets〉、表示ブラケット〈denotation brackets〉、セマンティック・ブラケット〈semantic brackets〉、オックスフォード・ブラケット〈Oxford brackets〉などと色々な名前で呼ばれますが、ここではスコット・ブラケットとします。
スコット・ブラケットの内部には通常、プログラム言語や数式などの人工言語の記号列を入れます。しかしここでは、スコット・ブラケット内に、日本語や英語の専門用語を入れます。例えば、$`\BR{実数}`$ 、$`\BR{モノイド}`$ 、$`\BR{対数関数}`$ とかです。当然ながら、自然言語の意味論をする気は毛頭ありません。専門用語は、字面が日本語や英語であっても、プログラム言語や数式同様に人工言語の語彙だと考えるべきです。スコット・ブラケットにより国語辞書的(あるいは英語辞書的)意味を記述するのではなくて、数学的に定義された概念的事物を“意味”とします。
名前の種類とスコット・ブラケット
名前の種類は三種類しか考えません。
- 固有名〈proper name〉
- 一般名〈{generic | common} name〉
- 構成素役割り名〈constituent role name〉
固有名は、固有特定のひとつのモノを指します。一方、一般名はいくつかのモノ達全般を総称的に指します。構成素役割り名は、構造に関連して出てきます。構造を構成している成分/パート(それを構成素〈constituent〉と呼ぶ)の、構造(複合的に組織化された概念的事物)における役割りを識別する名前です。
例えば、「実数」は一般名でしょう。「実数 $`\sqrt{2}`$」なら、個別特定の実数を指しているので固有名です。「モノイド」も一般名です。「自然数の加法モノイド」なら個別特定のモノイドを指しているので固有名です。「対数関数」は、常識的な文脈では個別特定の関数を指すでしょうから固有名です。単に「関数」なら、矢鱈に広い範囲のモノ達を指す一般名です。
モノイドは代数構造です。次の構成素からなります。
- 台集合
- 二項演算
- 単位元
- 結合法則
- 左単位法則
- 右単位法則
ここでは、法則も構成素だと考えます。今、出現した名前「台集合」「二項演算」などは、モノイドという構造の構成素を識別する名前なので構成素役割り名です。構成素役割り名を使うときは、「モノイドの台集合」「モノイドの二項演算」のように「の」を入れて使います。英語なら of でしょう、underlying set of a monoid とか binary operation of a monoid とか。
前節でスコット・ブラケットを紹介しましたが、名前の種類ごとに別な括弧を使うことにします(ここだけの一時的な記法)。
- 固有名 $`\alpha`$ を括弧内に入れるとき: $`\BR{\alpha} = \BRP{\alpha}`$ 、例えば $`\BRP{\T{対数関数} }`$
- 一般名 $`\beta`$ を括弧内に入れるとき: $`\BR{\beta} = \BRG{\beta}`$ 、例えば $`\BRG{\T{実数} }`$
- 構造を指す名前 $`\xi`$ と構成素役割り名 $`\gamma`$ を括弧内に入れるとき: $`\BR{\xi\T{の}\gamma} = \BRR{\xi\T{の}\gamma}`$ 、例えば $`\BRR{\T{モノイドの台集合}}`$
構造を指す名前と構成素役割り名のつなぎに、日本語では「の」を使いますが、英語の場合は $`\BRR{\gamma\T{ of }\xi}`$ でしょう。
名前の意味と使用法
ラテン文字の大文字・小文字 $`a, x, A, X`$ などは、名前を表す変数ではなくて、普通に概念的事物を表す変数として使います。例えば、$`\BR{\alpha} = A`$ と書いたら、「名前 $`\alpha`$ は、概念的事物 $`A`$ を指す」ということです。
名前 $`\alpha`$ が固有名のとき、その意味 $`\BR{\alpha} = \BRP{\alpha}`$ は、概念的世界に存在する固有特定のナニカです。ここで概念的世界とは何かというと、選ばれて固定されたグロタンディーク宇宙 $`\mbb{U}`$ だと思えばいいでしょう。例えば、$`\BRP{\T{実数} \sqrt{2}}`$ や $`\BRP{\T{自然数全体の集合}}`$ は、グロタンディーク宇宙 $`\mbb{U}`$ のなかに固有特定のモノとして存在しています。
$`\quad \BRP{\T{実数} \sqrt{2}} \in \mbb{U}\\
\quad \BRP{\T{自然数全体の集合}} \in \mbb{U}
`$
名前 $`\sigma`$ が一般名のとき、$`\sigma`$ は特定のモノを指すわけではないので、$`\sigma`$ の意味 $`\BR{\sigma} = \BRG{\sigma}`$ は、$`\sigma`$ という名前で呼ばれるモノ達全体からなる集合です。例えば $`\BRG{\T{実数} }`$ は、「実数」という名前で呼ばれるモノ達全体からなる集合なので、$`\BRG{\T{実数} } = \mbf{R}`$ です。$`\BRG{\T{実数}}`$ も、グロタンディーク宇宙 $`\mbb{U}`$ のなかに固有特定のモノとして存在しています。
$`\quad \BRG{\T{実数}} \in \mbb{U}`$
普通に考えて、「実数」は固有名ではないので、$`\BRP{\T{実数}}`$ は意味を持ちません(意味不明)。しかし、「実数達の集合〈the set of real numbres〉」は固有名なので $`\BRP{\T{実数達の集合}}`$ は意味を持ちます。一方で、一般名としての解釈 $`\BRG{\T{実数達の集合}}`$ もあります。$`\T{実数達の集合}`$ は一般名ではないから無意味〈不明〉としてもいいですが、「実数達の集合」という名前(固有名)で呼ばれるモノ達全体からなる集合なので単元集合という解釈もできます。
$`\quad \BRP{\T{実数}} = \T{不明}`$
$`\quad \BRG{\T{実数}} = \mbf{R}`$
$`\quad \BRP{\T{実数達の集合}} = \mbf{R}`$
$`\quad \BRG{\T{実数達の集合}} = \{\mbf{R}\}`$
構成素役割り名は、構造を指す名前と一緒に使います。例えば「モノイドの台集合」「群の単位元」「圏の結合」とかです。「の」の前に固有名でもかまいません。「自然数の加法モノイドの台集合」「ゼロ以外の複素数達の乗法群の単位元」「集合圏の結合」とか。
$`\sigma`$ が構造を表す一般名で、$`\varphi`$ が構成素役割り名のとき、$`\sigma\T{の}\varphi`$ の意味 $`\BR{\sigma\T{の}\varphi} = \BRR{\sigma\T{の}\varphi}`$ は、次のような関数です。
$`\quad \BRR{\sigma\T{の}\varphi} : \BRG{\sigma} \to \BRG{\sigma\T{の}\varphi}`$
関数 $`\BRR{\sigma\T{の}\varphi}`$ は、集合 $`\BRG{\sigma}`$ から集合 $`\BRG{\sigma\T{の}\varphi}`$ への関数です。つまり、$`\sigma`$ という名前で呼ばれる構造物全体からなる集合から、$`\sigma\T{の}\varphi`$ という名前で呼ばれる(可能性がある)モノ全体への関数です。この関数は、構造物から特定の構成素を取り出す〈抽出する | 選択する〉関数です。
たとえば:
$`\quad \BRR{\T{モノイド}\T{の}\T{台集合}} : \BRG{\T{モノイド}} \to \BRG{\T{モノイド}\T{の}\T{台集合}}`$
関数 $`\BRR{\T{モノイド}\T{の}\T{台集合}}`$ は、集合 $`\BRG{\T{モノイド}}`$ から集合 $`\BRG{\T{モノイド}\T{の}\T{台集合} }`$ への関数です。$`\T{モノイド}`$ という名前で呼ばれる構造物全体からなる集合は比較的分かりやすいです。モノイド達の圏を $`\mbf{Mon}`$ とすれば:
$`\quad \BRG{\T{モノイド}} = |\mbf{Mon}|`$
です。
「$`\T{モノイド}\T{の}\T{台集合}`$ という名前で呼ばれる(可能性がある)モノ」は分かりにくいですが、モノイドを定義するための指標では、これをハッキリと書きます。
$`\T{signature Monoid }\{ \\
\quad U \in |\mbf{Set}|\\
\quad m:U\times U \to U \In \mbf{Set}\\
\quad e \in U\\
\quad \cdots \T{ 法則は省略}\\
\}`$
この指標では、モノイドの台集合が $`U`$ というラベル(これも構成素役割り名)になっていて、$`U`$ が集合圏の対象だと宣言しています。つまり、「$`\T{モノイド}\T{の}\T{台集合}`$ という名前で呼ばれる(可能性がある)モノ」とは集合です。
$`\quad \BRR{\T{モノイド}\T{の}\T{台集合}} : \BRG{\T{モノイド}} \to \BRG{集合}`$
もっとハッキリ書けば:
$`\quad \BRR{\T{モノイド}\T{の}\T{台集合}} : |\mbf{Mon}| \to |\mbf{Set}|`$
$`\BRR{\T{モノイド}\T{の}\T{台集合}}`$ は関数なので、引数を渡すことができます。実引数〈actual argument〉として個別特定のモノイドである「自然数の加法モノイド」を渡しましょう。
$`\quad \BRP{\T{自然数の加法モノイド}} \in |\mbf{Mon}|\\
\quad \BRR{\T{モノイド}\T{の}\T{台集合}}(\BRP{\T{自然数の加法モノイド}} ) = \mbf{N}
\; \in |\mbf{Set}|
`$
これを日本語だけで書けば次のようです。
自然数の加法モノイドの台集合は、自然数全体の集合だ。
今の状況を振り返ると:
- 「モノイド」は、構造を指す一般名である。
- 「台集合」は、構造に付随する構成素役割り名である。
- 「モノイドの台集合」は、構造の一般名と構成素役割り名を組み合わせた用語(一般名+構成素役割り名 の複合語)である。
- 一般名「モノイド」の意味 $`\BRG{\T{モノイド}}`$ は、すべてのモノイド達の集合である。
- 一般名+構成素役割り名「モノイドの台集合」の意味 $`\BRR{\T{モノイドの台集合}}`$ は、すべてのモノイド達の集合から、すべての集合達の集合への関数である。(「すべての集合」はグロタンディーク宇宙 $`\mbb{U}`$ で限定されているから矛盾は置きない。)
- 「自然数の加法モノイド」は、全体として固有名である。
- 固有名「自然数の加法モノイド」の意味 $`\BRP{\T{自然数の加法モノイド}}`$ は、個別特定のモノイドである。
- 個別特定のモノイド $`\BRP{\T{自然数の加法モノイド}}`$ を、関数 $`\BRR{\T{モノイドの台集合}}`$ の引数として渡すと、値は個別特定の集合となる。
- したがって、「自然数の加法モノイドの台集合」は、全体として固有名である。
文脈を考慮する
ここでは、名前の種類は三種類しか考えず、次のように意味を割り当てました。
- 固有名の意味は、個別特定のモノである。
- 一般名の意味は、その名前で呼ばれるモノ達の集合である。
- 構成素役割り名(構造の一般名と共に)は、その名前で呼ばれる任意の構造から特定の構成素を取り出す関数である。
名前の意味はそれぞれ:
- 個体〈individual〉
- 集合〈set〉
- 関数〈function〉
ただし、現在の主流の集合論*1では、個体と集合の区別はありません! 考えられるすべてのモノ/存在物が含まれるグロタンディーク宇宙 $`\mbb{U}`$ の要素は集合であって、集合ではないアトムなんてものは考えません。個体と集合の区別は我々の気持ちのなかにしかありません。グロタンディーク宇宙 $`\mbb{U}`$ の要素を「個体と思いたい」とき、それは個体になるし、「集合と思いたい」とき、それは集合です。「ホントはどっちなの?」と聞かれれば、個体も集合です。
さて、名前の字面だけ見ても、その種類も意味も判断できないことがあります。また、名前の字面だけ見て種類/意味を判断すると解釈が間違ってしまうことがあります。
例えば、「実数」は一般名だと言いましたが、文脈のなかで特定された実数を単に「実数」と呼んでいたとしたら、用法としては固有名です(英語なら冠詞 the を付けるでしょう)。「ゼロ」や「イチ」は、自然数しか知らない小学生にとっては固有名でしょうが、後になると非常に広い範囲のモノ達を表す一般名になります。そして、文脈によっては「ゼロ」や「イチ」が再び固有名(例えば、2✕2の実数係数ゼロ行列と単位行列)として使用されます。
「実数」と「有理数」の通常の(特別な文脈を仮定しない)分類は一般名です。「有理数は実数である」の通常の解釈は次のようでしょう。
$`\quad \BRG{\T{有理数}} \subseteq \BRG{\T{実数}}\\
\text{i.e.}\\
\quad \mbf{Q} \subseteq \mbf{R}
`$
語の順番を入れ替えた「実数は有理数である」は無意味なわけではありません。ちゃんと次のように解釈できます。
$`\quad \BRG{\T{実数}} \subseteq \BRG{\T{有理数}}`$
解釈可能だけど、命題として偽なだけです。
さて、「実数」が文脈のなかで特定された実数である「その実数〈the real number〉」であるとき、「実数は有理数である」は次のように解釈できます。
$`\quad \BRP{\T{実数}} \in \BRG{\T{有理数}}`$
これが命題として真か偽かは情報不足で分かりませんが、「実数」を一般名とした解釈とは異なった解釈であるのは確かです。
“一般名+構成素役割り名”を一般名として解釈する
構成素役割り名の意味は、(構造の一般名と共に)関数だと言いました。次の例を挙げました。
$`\quad \BRR{\T{モノイド}\T{の}\T{台集合}} : \BRG{\T{モノイド}} \to \BRG{\T{モノイド}\T{の}\T{台集合}}`$
世間一般の事情として、そもそも関数の捉え方が曖昧です。関数 $`f:A \to B`$ に関連して、次のような概念があります。
- 関数 $`f`$ そのもの
- 関数の域〈ドメイン〉 $`\mrm{dom}(f) = A`$
- 関数の余域〈コドメイン〉 $`\mrm{cod}(f) = B`$
- 関数の像〈イメージ〉 $`\mrm{img}(f) = f(A) \subseteq B`$
- 関数の値 $`f(x) \text{ for }x\in \mrm{dom}(f)`$
構成素役割り名の意味であるところの関数に関してもこれらの概念をハッキリと捉える必要があります。$`\BRR{\T{モノイド}\T{の}\T{台集合}}`$ に関してならば:
- 関数 $`\BRR{\T{モノイド}\T{の}\T{台集合}}`$ そのもの
- 関数の域〈ドメイン〉 $`\mrm{dom}(\BRR{\T{モノイド}\T{の}\T{台集合}})`$
- 関数の余域〈コドメイン〉 $`\mrm{cod}(\BRR{\T{モノイド}\T{の}\T{台集合}})`$
- 関数の像〈イメージ〉 $`\mrm{img}(\BRR{\T{モノイド}\T{の}\T{台集合}})`$
- 関数の値 $`\BRR{\T{モノイド}\T{の}\T{台集合}}(x) \text{ for }x\in \mrm{dom}(\BRR{\T{モノイド}\T{の}\T{台集合}})`$
通常の関数に関しても、「域と余域をハッキリさせない」、「関数そのものと関数値を混同する」、「余域と像を混同する」などはしばしば見受けます。構成素役割り名の意味であるところの関数に関しては、このテの曖昧さ、混同、誤認がよりひどくなるでしょう。
前の節で、関数 $`\BRR{\T{モノイド}\T{の}\T{台集合}}`$ の余域を $`\BRG{\T{モノイド}\T{の}\T{台集合}}`$ と書きました。つまり、「モノイドの台集合」を一般名として解釈したのです。しかし、“一般名+構成素役割り名”を一般名として解釈した場合、それが関数の余域を表すかどうかは疑問です。
考えられる妥当な解釈として次の2つがあります。
- $`\BRG{\T{モノイド}\T{の}\T{台集合}} = \mrm{cod}(\BRR{\T{モノイド}\T{の}\T{台集合}})`$
- $`\BRG{\T{モノイド}\T{の}\T{台集合}} = \mrm{img}(\BRR{\T{モノイド}\T{の}\T{台集合}})`$
一番目と二番目の違いを日本語で書くなら:
- $`\mrm{cod}(\BRR{\T{モノイド}\T{の}\T{台集合}})`$ は、モノイドの台集合となる可能性がある集合達の集合。実際にモノイドの台集合とならない場合もある。
- $`\mrm{img}(\BRR{\T{モノイド}\T{の}\T{台集合}})`$ は、実際にモノイドの台集合となっている集合達の集合。モノイドの台集合とならない場合は除外する。
前の節で、$`\mrm{cod}(\BRR{\T{モノイド}\T{の}\T{台集合}}) = |\mbf{Set}|`$ と解釈しました。空集合はモノイドの台集合にはなれません。が、実際にモノイドの台集合とならない場合も許しているので、余域に空集合が入っていてもかまいません。
しかし、$`\mrm{img}(\BRR{\T{モノイド}\T{の}\T{台集合}})`$ に空集合が入るのは許されません。空でないすべての集合は $`\mrm{img}(\BRR{\T{モノイド}\T{の}\T{台集合}})`$ に入っています。そのことは、任意の非空集合に対して左自明モナドを作れることから分かります。左自明モナドについては、以下の古い過去記事の「左自明モノイドと右自明モノイド」の節をみてください。
“一般名+構成素役割り名”は、通常は関数として解釈するが、一般名としての解釈も在り得るということです。そして、一般名としての解釈は一通りに決まるわけではないのです。これは曖昧な状況ですが、関数の余域と像を区別できるなら、どっちであるかを決めれば済む話です。曖昧な状況の曖昧性を理解しているのなら問題はないのです。困るのは、なにが曖昧なのかも曖昧であることです。
おわりに
名前の解釈に関して注意すべきことや解釈のコツはまだ他にもあります。が、とりあえず基本的なことはこの記事で述べました。
名前が、非常に複雑な構造物や関数や集合を名指すことがあります。そのような名前に正確な解釈を与えることは難しく面倒な作業になります。複雑で面倒な事態に対処するには、単純で容易なところから始める必要があります。まずは、名前の種類「固有名、一般名、構成素役割り名」を区別して、それぞれを「個体、集合、関数」に割り当てるところから始めましょう。
重要なことは、名前の種類の区別や意味割り当ては文脈に影響されることです。名前の字面だけでなくて、背後の文脈に含まれる情報を考慮して種類の区別や意味割り当てを行います。
*1:主流の集合論とはZFC集合論のことです。ZFC集合論でない集合論では、アトムを認める集合論もあります。