コアージョン〈coercion〉とは、同じ名前・記号の意味を文脈に応じて変える行為のことです。「どんな文脈ではどんな解釈をするか」という規則はコアージョン規則といいます。ソフトウェアでコアージョンを実装する場合は、コアージョン・グラフというデータ構造によりコアージョン規則セットを保持します。
コアージョンは、なんらかの変換を明示しない/暗黙化していることから必要になる行為です。変換を明示的に書けばコアージョンは不要になります。「明示的に変換を書くか? それとも読み手〈解釈者〉のコアージョンに任せるか?」は難しい判断です。明示的変換を使うと煩雑になるし、コアージョンに頼ると読み手に負担をかけます。
読み手の解釈行為だけではなくて、明示されない変換自体を指してコアージョンとも呼びます。つまり、明示されない変換としてのコアージョンを認識する行為が、読み手が行うコアージョンです。
圏論の記述でもコアージョンはよく使われます。この記事では、圏論に出てくる各種の変換と、それをコアージョンにしてよいか(暗黙化してよいか)についてまとめます。$`\newcommand{\cat}[1]{\mathcal{#1}}
\newcommand{\mbf}[1]{\mathbf{#1}}
\newcommand{\mrm}[1]{\mathrm{#1}}
%\newcommand{\twoto}{\Rightarrow}
%\newcommand{\msc}[1]{\mathscr{#1}}
%\newcommand{\msf}[1]{\mathsf{#1}}
\newcommand{\mbb}[1]{\mathbb{#1}}
%\newcommand{\o}[1]{\overline{#1} }
\newcommand{\u}[1]{\underline{#1} }
\newcommand{\op}{\mathrm{op} }
\newcommand{\In}{\text{ in } }
\newcommand{\hyp}{\text{-} }
\newcommand{\dimU}[2]{{#1}\!\updownarrow^{#2}}
\newcommand{\H}{\text{-}}
`$
内容:
各種の変換
ここで扱う変換は:
- 包含: 部分構造内のモノを全体構造内で考える。
- 埋め込み: 埋め込みがあるとき、それを包含であるかのように扱う。
- サイズの変更: 集合・圏などを、より大きなサイズのモノだとみなす。
- 次元調整: 圏の次元を変える。「圏の次元調整」参照。
- 離散圏化: 次元調整の特別なもの。集合を離散圏だとみなす。
- 余離散圏化: 集合を余離散圏〈codiscrete category〉だとみなす。
- モノイドのデルーピング: モノイドを単一対象の圏〈1-圏〉だとみなす。
- モノイド圏のデルーピング: モノイド圏を単一対象の2-圏だとみなす。
- 忘却: 構造の一部を忘れる。
- 自由生成: あるモノを、なんらかの構造の生成系だとみなして自由構造を生成する。
変換を明示的に書きたいときは次のように書きます。
- 包含: 包含写像/包含関手に、例えば $`i,J`$ のような名前を付けて、$`i(x), J(\cat{C})`$ などと書く。
- 埋め込み: 包含と同じ。
- サイズの変更: 包含と同じ。
- 次元調整: 「圏の次元調整」で述べた次元調整の記号($`\dimU{\cat{C}}{k}`$ など)を使う。
- 離散圏化: 集合 $`A`$ から作った離散圏を $`\mrm{Disc}(A)`$ または $`A^\delta`$ と書く。
- 余離散圏化: 集合 $`A`$ から作った余離散圏を $`\mrm{CoDisc}(A)`$ または $`A^\gamma`$ と書く。
- モノイドのデルーピング: $`M`$ をモノイドとして、$`\mbf{B}M`$ または $`M_\bot`$ と書く。
- モノイド圏のデルーピング: $`\cat{V}`$ をモノイド圏として、$`\mbf{B}\cat{V}`$ または $`\cat{V}_\bot`$ と書く。
- 忘却: $`X`$ から何かを忘却したモノを $`\mbb{U}(X)`$ または $`\u{X}`$ と書く。
- 自由生成: $`X`$ から自由生成したモノを $`\mbb{F}(X)`$ と書く。
いくつかの注意事項:
- 埋め込みとは、写像なら単射のこと、関手なら“対象集合上で単射な忠実関手”のことです。
- 集合 $`A`$ の余離散圏 $`\mrm{CoDisc}(A) = A^\gamma`$ とは、$`A`$ の要素が対象で、2つの要素(同じ要素でもよい)のあいだに必ず1本だけ射がある圏です。
- 「デルーピング」は、代数トポロジーに語源があるらしいですが、語源は気にしなくていいです。「そう呼ぶのだ」と了解すれば済む話です。
- $`\bot`$ は、デルーピングで追加する対象を示唆する記号です。記号はなんでもいいのですが、“一番下に位置する”ことになるのでボトムとしました。
- $`\mbb{U}`$ は、忘却写像/忘却関手を表すために汎用的に使える記号だとします。
- $`\mbb{F}`$ は、自由生成写像/自由生成関手を表すために汎用的に使える記号だとします。
世界のグリッド構造に基づくコアージョン
圏のサイズとその背景である“宇宙と世界”に関しては次の過去記事達を参照してください。
サイズレベルが $`r`$ である$`n`$-圏達が作る$`(n +1)`$-圏は次のように書きます。
$`\quad n\mbf{Cat}_{\#r}`$
デフォルトのサイズレベルを $`d`$ としたとき、次の記法も使います。
$`\quad n\mbf{Cat}_{\#+s} := n\mbf{Cat}_{\#(d + s)}`$
$`\quad n\mbf{Cat}_{\#-s} := n\mbf{Cat}_{\#(d - s)}`$
$`n, r`$ が小さいときは、以下の略記を使います(「ファミリー構成モナド: 大規模構造の事例として // 一般化されたファミリーとその圏」の表に対して追加・拡張)。
$`r = d `$ | $`r = d + 1`$ | $`r = d + 2`$ | $`r = d + 3`$ | |
$`n = 0`$ | $`{\bf Set}`$ | $`{\bf SET}`$ | $`\mathbb{SET}`$ | $`\mathscr{SET}`$ |
$`n = 1`$ | $`{\bf Cat}`$ | $`{\bf CAT}`$ | $`\mathbb{CAT}`$ | $`\mathscr{CAT}`$ |
$`n = 2`$ | $`2{\bf Cat}`$ | $`2{\bf CAT}`$ | $`2\mathbb{CAT}`$ | $`2\mathscr{CAT}`$ |
$`n = 3`$ | $`3{\bf Cat}`$ | $`3{\bf CAT}`$ | $`3\mathbb{CAT}`$ | $`3\mathscr{CAT}`$ |
高次圏を含めた圏達は、上の表のようなグリッド構造のなかに位置付けられます。$`n\le m, r \le s`$ のとき、次のような包含があります。
$`\quad n\mbf{Cat}_{\#r} \hookrightarrow m\mbf{Cat}_{\#s}`$
この包含が明示されることはほとんどありません。$`n\mbf{Cat}_{\#r}`$ の構成素(対象、射、高次の射など)は、そのまま(特に何の断りもなく)$`m\mbf{Cat}_{\#s}`$ の構成素とみなします。上記の包含に伴う変換には、サイズの変更と次元調整が含まれます。
サイズが大きいモノをサイズが小さいモノへと変換することは出来ません。が、次元が高いモノを次元が低いモノに変換することは出来ます。つまり、$`n\ge k`$ のとき、次のような変換(包含や埋め込みではない)があります。
$`\quad n\mbf{Cat}_{\#r} \to k\mbf{Cat}_{\#r}`$
この変換では、次元が高い圏の高次部分を切り捨てます。高次の射を捨ててしまうので、もともと持っていた構造・情報の一部を失います。
サイズ・次元が大きくなる変換(アップキャスト)は、コアージョンにして(暗黙化して)も問題はないでしょうが、次元が小さくなる変換(ダウンキャスト)をコアージョンにすると混乱をまねくかも知れません。$`\dimU{\cat{C}}{k}`$ のように明示したほうが無難です。
コアージョンが適切か?
以下の表は、コアージョンを使うのが適切かどうかの目安です。
- ◯ : コアージョンを使ってもよい
- △ : 混乱のリスクがあるが、許容範囲
- ☓ : コアージョンを使うべきではない
変換 | コアージョンが適切か? |
---|---|
包含 | ◯ |
埋め込み | △ |
サイズの変更 | ◯ |
次元調整 | △ |
離散圏化 | △ |
余離散圏化 | ☓ |
モノイドのデルーピング | △ |
モノイド圏のデルーピング | ☓ |
忘却 | △ |
自由生成 | ☓ |
ひどい例(フィクション)
余離散圏化やモノイド圏のデルーピングをコアージョンに(暗黙化)すべきではありません。実際のところ、余離散圏化/モノイド圏のデルーピングを暗黙化することはあり得ないと思います。フィクションとして、暗黙化するとどうなるかを試してみましょう。
$`X`$ を集合、$`\cat{V}`$ を対称モノイド圏として、集合 $`X`$ を対象集合とする$`\cat{V}`$-豊穣圏達の2-圏を $`\cat{V}\H\mbf{Cat}[X]`$ とします。この圏の射は、対象集合上で恒等な$`\cat{V}`$-豊穣関手です。この圏の2-射は、$`\cat{V}`$-豊穣自然変換です。
ホム2-圏 $`2\mbf{Cat}_{\#2}(\hyp, \hyp)`$ を $`[\hyp, \hyp]_2`$ と略記します。
以上の記法の約束で、ひどいコアージョン規則を使えば、以下が成立します。
$`\quad \cat{V}\H\mbf{Cat}[X] = [X, \cat{V}]_2`$
この等式を解釈するには:
- 集合 $`X`$ を余離散圏だと解釈する。
- モノイド圏 $`\cat{V}`$ を2-圏だと解釈する。
つまり、明示的変換により書けば次のようになります。
$`\quad [X, \cat{V}]_2 = [\mrm{CoDisc}(X), \cat{V}_\bot]_2
`$
$`\mrm{CoDisc}(X)`$ を2-圏とみなすことも明示的に書けば:
$`\quad [X, \cat{V}]_2 = [\dimU{\mrm{CoDisc}(X)}{2}, \cat{V}_\bot]_2
`$
すべてを明示的に書けば、当該の等式(下)は解釈可能です。
$`\quad \cat{V}\H\mbf{Cat}[X] = [\dimU{\mrm{CoDisc}(X)}{2}, \cat{V}_\bot]_2`$
この等式がほんとかどうかを確認するのは良い練習問題です。
おわりに
コアージョンはコアージョン規則セット〈コアージョン・グラフ〉に基づき行います。厄介なのは、コアージョン規則セットが明示されないことが多いことです。しかも、複数のコアージョン規則セットから文脈に応じて適切な規則セットを選ぶ必要があります。
曖昧性・多義性を解決するためのコアージョン規則セットがたくさんあり、どんな規則セットがどれだけあるかも曖昧、どんな文脈でどのコアージョン規則を適用すべきかのメタ規則も曖昧、という状況で適切なコアージョンを選ぶ必要があるかも知れません。こりゃ大変です。
しかし、短く簡潔に書きたいときにコアージョンはホントに便利で魅力的です。「使うな」と言っても無理ですが、「ほどほどに」とは言っておきます。