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

ご連絡は上記 X アカウントに DM にてお願いします。

参照用 記事

イイカゲンとインチキを悔い改めるためのコスト

共変関手/反変関手はほんっとうにややこしい」で次のように書きました。

反変・共変関手とカリー化と結合を、厳密で辻褄があった形で提示できれば、“直感的で雑な議論”と $`よ*よ \cong た`$ を合理化できるんですが ‥‥ 悪戦苦闘しております。

“直感的で雑な議論”は、発見的手法〈ヒューリスティック〉としては有効なんですが、それを合理化〈正当化〉しようとすると大きなコストがかかることがあります。淡中再構成(「モノイドと群の淡中再構成 1/n」参照)に関しては、合理化のコストがけっこう高い、ということです。

“直感的で雑な議論”では、イイカゲンなことやインチキをして払うべきコストを滞納しています。それにより複雑なことが簡単に見えるのはいいのですが、いずれツケは回ってきます。どこかでイイカゲンとインチキを悔い改めて、合理化と厳密化のコストを精算する必要があります。$`\newcommand{\cat}[1]{ \mathcal{#1} }
\newcommand{\mbf}[1]{ \mathbf{#1} }
\newcommand{\mrm}[1]{ \mathrm{#1} }
%\newcommand{\u}[1]{ \underline{#1} }
\newcommand{\o}[1]{ \overline{#1} }
\newcommand{\id}{ \mathrm{id}}
\newcommand{\Id}{ \mathrm{Id}}
\newcommand{\op}{ \mathrm{op}}
\newcommand{\In}{ \text{ in }}
\newcommand{\hyp}{\text{-} }
`$

内容:

イイカゲンとインチキ

淡中再構成のための基本公式 $`よ*よ \cong た`$ を、“直感的で雑な議論”で導いているとき、どんなイイカゲンなことやインチキをしているのでしょうか? それは次のようなことです。

  1. 二項関手〈双関手〉とそのカリー化を区別しない。
  2. 多項関手とタプル単項関手を区別しない。
  3. 共変関手と反変関手を結合する。
  4. 様々なオーバーロード
  5. 様々な省略

「イイカゲン」と「インチキ」は専門用語〈テクニカルターム〉ではないので、ハッキリした定義がわるわけではないですが、だいたい、「イイカゲンは、やればできることを手抜きしている」ことで、「インチキは、やってはいけないことをやって知らんぷりしている」という感じです。

イイカゲンを反省してマジメになる、インチキをやめてマットウになるのが悔い改めることです。

反変関手の問題

前節に列挙したイイカゲン・インチキのなかでも、その合理化〈正当化〉に僕が一番悩んている〈悪戦苦闘している〉のは、「共変関手と反変関手を結合する」ことです。共変関手と反変関手を結合するのが罪な事とは思えないのでやっちゃっているのですが、現在のスタンダードな圏論のなかで合理化するのが難しい。

背景を説明しましょう; 現在の圏論において、反変関手の定義はしますが、反変関手は使わないのです。反変関手の代わりに、反対圏〈opposite category〉からの共変関手を使います。つまり、現在の圏論で「反変関手」という言葉は、共変関手を意味しています。

反対圏からの共変関手ではないほんとの反変関手〈genuine contravariant functor〉 $`F:\cat{C} \to \cat{D}`$ は次のような反変関手性〈contravariant functoriality〉を持ちます。

$`\text{For }f:A \to B, g: B \to C \In \cat{C}\\
\quad F(f;g) = F(g); F(f)\\
\text{For }A \in |\cat{C}|\\
\quad F(\id_A) =\id_{ F(A)}
`$

ほんとの反変関手 $`F`$ の代理となる共変関手があります。代理である共変関手を(言葉が悪いですが)ニセ反変関手〈fake contravariant functor〉と呼ぶことにします。 ニセ反変関手は共変関手です。

現在のスタンダードな立場では、ニセ反変関手は共変関手なので何の問題も異議もなく関手として認められています。一方、ほんとの反変関手は完全に排除されます。使うにしても暗黙的であり(正面切っては使わない)、ゴマカシ(使ってないふり)やイイワケと共に使われています。

現在のスタンダードな立場とは、「ニセ反変関手こそが実在であり、ほんとの反変関手のほうが幻影なのだ」という立場です。

しかし、淡中再構成(「モノイドと群の淡中再構成 1/n」参照)を安直に説明したいとき、ほんとの反変関手を使うのが便利です。代理の共変関手ではない“ほんとの反変関手”をキチンと認めて、ほんとの共変関手も含めた関手計算をしたいな、と思うわけです。

共変関手/反変関手はほんっとうにややこしい」より:

過去記事「反対圏/反変関手と、2-圏のストリング図」で述べたように、ほんとの反変関手を含む圏達の2-圏を考えるのは一案です。共変関手と反変関手の結合が素直にできます。しかし、別なところで歪みが生じます。反変関手と共変関手のあいだの自然変換はどう定義したらいいでしょう? なんだかよく分かりません。“あちらを立てればこちらが立たず”な状況で難しい。

ほんとの共変関手も含めた関手計算を模索して四苦八苦していたのですが、難しいですね。感触としては「出来なくはない」と思えるのですが、色々と複雑になってしまいます。ほんとの反変関手が排除されてニセ反変関手だけになってしまった事情として、ほんとの反変関手が扱いにくいことがあるのでしょう。ニセ反変関手で代替してしまうのは、確かに便利な手法です。

妥協案としてのコアージョン

現在の圏論ではほんとの反変関手は使いませんが、ほんとの反変関手の存在を認めてないわけではないです。$`F`$ がほんとの反変関手であることを次のように書くことにします。

$`\quad F: \cat{C} \to \cat{D} \:\text{cont}`$

$`\text{cont}`$ は、contravariant の略記〈短縮形〉です。ほんとの反変関手は、圏達の2-圏 $`\mbf{CAT}`$ には所属できないので、$`\In \mbf{CAT}`$ のようにアビタ〈habitat | 生息地 | 居住地〉を書くことが出来ません。(「反対圏/反変関手と、2-圏のストリング図」では、$`\o{\mbf{CAT}}`$ という拡張した圏を導入しています。)

ほんとの反変関手は一時的に出現するだけで、すぐさま通常の関手〈共変関手〉に変換されてしまう、と考えましょう。ただし、ほんとの反変関手からニセ反変関手への変換は二種類あるとします。単一のほんとの反変関手に対して、ニセ反変関手が2つある、ということです。次のような記法を使います。

  • $`F: \cat{C} \to \cat{D} \:\text{cont}`$
  • $`{^\bowtie F}: \cat{C}^\op \to \cat{D} \In \mbf{CAT}`$
  • $`{F^\bowtie}: \cat{C} \to \cat{D}^\op \In \mbf{CAT}`$

層化ストリング図 // 裏返し反変関手」で導入した、$`\cat{C}`$ の裏返し関手〈reversing functor〉$`\mrm{Rev}_\cat{C}`$(対象パートも射パートも恒等写像であるほんとの反変関手)を使うと次のように書けます。アスタリスク '$`*`$' は、関手の図式順結合記号です。

  • $`{^\bowtie F} := \mrm{Rev}_{\cat{C}^\op} * F`$
  • $`{F^\bowtie} := F*\mrm{Rev}_{\cat{D}}`$

ほんとの反変関手 $`F`$ が何らかの式〈expression〉のなかに出現したとき、式内の出現文脈から判断して、$`{^\bowtie F}`$ か $`{F^\bowtie}`$ のどちらかにすぐさま変換し〈置き換え〉ます。ほんとの反変関手 $`F`$ は一時的な“かりそめの姿”であり、実際の解釈や計算は置き換えたニセ反変関手により行います。

式内の出現文脈から判断して変換〈置き換え〉を行うことをコアージョン〈coercion | 型強制〉といいます。この例では、ほんとの反変関手をニセ反変関手へとコアージョンしています。

例えば、次の状況を仮定します。

  • $`F: \cat{C} \to \cat{D}`$
  • $`G: \cat{D} \to \cat{E} \: \text{cont}`$

関手を結合した式 $`F*G`$ を考えます。$`F`$ は共変関手なのでそのままでいいのですが、$`G`$ はほんとの反変関手なので、次のいずれかにコアージョンします。

  • $`{^\bowtie G} : \cat{D}^\op \to \cat{E} \In \mbf{CAT}`$
  • $`{F^\bowtie} : \cat{D} \to \cat{E}^\op \In \mbf{CAT}`$

$`F*G`$ の場合、通常の関手の結合可能性の条件から $`{F^\bowtie}`$ を選ぶことになります。したがって、式 $`F*G`$ の解釈は:

$`\quad F * {G^\bowtie} : \cat{D} \to \cat{E}^\op \In \mbf{CAT}`$

さらに、$`G`$ がほんとの反変関手だったというのは一時の気の迷い・幻影だったとして、$`G`$ がもともと $`{G^\bowtie}`$ であったかのように扱います。

$`\quad F * G : \cat{D} \to \cat{E}^\op \In \mbf{CAT}`$

ヒューリスティックとして関手計算しているときは、ほんとの反変関手に対するコアージョンによる処理はめんどくさいので、イイカゲンにするわけです。つまり、イイカゲン・モードでは、共変関手 $`F`$ とほんとの反変関手 $`G`$ の直接的結合を許した体〈てい〉で計算します。

「モノイドと群の淡中再構成」シリーズ(第1回兼ハブ記事「モノイドと群の淡中再構成 1/n」)では、たぶんコアージョンを採用するでしょう。

反対化関手

裏返し関手 $`\mrm{Rev}_\cat{C}`$ や裏返し関手を使って定義した $`{^\bowtie F}, {F^\bowtie}`$ は、通常の圏達の2-圏 $`\mbf{CAT}`$ からは排除されています。これらを入れてしまうと、$`\mbf{CAT}`$ の規律と整合性が乱れるので許してないのです。

$`\mbf{CAT}`$ の規律と整合性を乱さずに、裏返しに近いことが出来るメカニズムとして、(2-圏ではなくて)1-圏 $`{_1\mbf{CAT}}`$ 上の厳密対合 $`\mrm{OP}`$ を定義しましょう。$`\mrm{OP}`$ は厳密な自己関手です。

$`\quad \mrm{OP} : {_1\mbf{CAT}} \to {_1\mbf{CAT}} \In \mathbb{CAT}`$

$`{_1\mbf{CAT}}`$ は、2-圏から2-射(この場合は自然変換)を捨てた1-圏です。1-圏にしているのは、自然変換が入るとまた話が込み入ってくるからです。

まず、$`{_1 \mbf{CAT}}`$ の対象〈0-射〉 $`\cat{C}`$ に対する $`\mrm{OP}(\cat{C})`$ は通常の反対圏 $`\cat{C}^\op`$ です。対象達の集合の上で、$`\cat{C}`$ は厳密対合写像〈strict involution〉です。

$`\quad \mrm{OP} : |{_1\mbf{CAT}}| \to |{_1\mbf{CAT}}| \In \mathbb{SET}\\
\quad \text{where } \mrm{OP};\mrm{OP} = \mrm{id}_{|{_1\mbf{CAT}}|}
`$

$`F:\cat{C} \to \cat{D}`$ に対して、$`G_\mrm{obj} = F_\mrm{obj}`$ かつ $`G_\mrm{mor} = F_\mrm{mor}`$ であるような $`G: \cat{C}^\op \to \cat{D}^\op`$ が一意に決まります。この $`G`$ を $`F^\op`$ と書くことにします。

$`\quad F^\op : \cat{C}^\op \to \cat{D}^\op \In {_1 \mbf{CAT}}`$

$`F \mapsto F^\op`$ は次のような写像です。

$`\quad (\hyp)^\op : \mrm{Mor}({_1 \mbf{CAT}}) \to \mrm{Mor}({_1 \mbf{CAT}}) \In \mathbb{SET}`$

圏に対する $`(\hyp)^\op`$ と関手に対する $`(\hyp)^\op`$ を一緒にしたものを $`\mrm{OP}`$ とします。

$`\text{For }\cat{C} \in |{_1 \mbf{CAT}}|\\
\quad \mrm{OP}(\cat{C}) := \cat{C}^\op\\
\text{For } F : \cat{C} \to \cat{D} \In {_1 \mbf{CAT}}\\
\quad \mrm{OP}(F) := (F^\op : \cat{C}^\op \to \cat{D}^\op)
`$

$`\mrm{OP}`$ の関手性(下)はすぐに確認できるので、$`\mrm{OP}`$ が自己関手なのが分かります。

$`\text{For } F : \cat{C} \to \cat{D} \In {_1 \mbf{CAT}}\\
\text{For } G : \cat{D} \to \cat{E} \In {_1 \mbf{CAT}}\\
\quad \mrm{OP}(F*G) = \mrm{OP}(F)*\mrm{OP}(G)\\
\text{For }\cat{C} \in |{_1 \mbf{CAT}}|\\
\quad \mrm{OP}(\Id_\cat{C}) = \Id_{\mrm{OP}(\cat{C})}
`$

$`\mrm{OP}`$ は厳密対合関手です。つまり、次が成立します。

$`\text{For }\cat{C} \in |{_1 \mbf{CAT}}|\\
\quad \mrm{OP}(\mrm{OP}(\cat{C}) ) = \cat{C}\\
\text{For } F : \cat{C} \to \cat{D} \In {_1 \mbf{CAT}}\\
\quad \mrm{OP}(\mrm{OP}(F)) = F
`$

厳密対合自己関手 $`\mrm{OP}`$ を反対化関手〈opposition functor〉と呼びましょう。$`\mrm{OP}`$ は、二種類のニセ反変関手を入れ替える働きがあります。前節の記号を使うなら:

$`\quad \mrm{OP}({^\bowtie F}) = F^\bowtie\\
\quad \mrm{OP}(F^\bowtie) = {^\bowtie F}
`$

ここでは、1-圏に限って $`\mrm{OP}`$ を定義しました。圏の次元が上がると、$`\mrm{OP}`$ もさほど単純ではなくなるようですが、$`\mrm{OP}`$ を明示的に使うのもひとつの方法です。反変関手を扱う手法として検討してみる価値はあるでしょう。

過去記事

反対圏と反変関手を直接話題としている記事に次があります。

次の記事達は、反対圏と反変関手に関連しています。

古い記事ですが、反対圏を扱っています。