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

メールでのご連絡は hiyama{at}chimaira{dot}org まで。

はじめてのメールはスパムと判定されることがあります。最初は、信頼されているドメインから差し障りのない文面を送っていただけると、スパムと判定されにくいと思います。

参照用 記事

コンストラクタ系と変換手性

昨日の記事「テレオロジー圏の公理の自然な解釈」にて:

[テレオロジー圏に関する] このような事実を、スッキリと短く書く記述方法はないものでしょうか? ロマン〈Mario Roman〉のストリング図は確かに便利ですが、大規模高次な代数系を直接的に表現する記法・描画法が欲しいところです。

関手性や自然性を持たたい対応/変換を使うことになりますね。この話題はn回目。$`\newcommand{\cat}[1]{\mathcal{#1} }
\newcommand{\mrm}[1]{\mathrm{#1} }
\newcommand{\op}{\mathrm{op}}
\newcommand{\id}{\mathrm{id}}
\newcommand{\In}{\text{ in }}
\newcommand{\lto}[1]{\overset{#1}{\longrightarrow} }
\newcommand{\plto}[1]{\supseteq\!\overset{#1}{\longrightarrow} }
%`$

内容:

あー、またコレか

テレオロジー圏の同語反復射の族 $`\varepsilon`$ は3つの添字〈引数〉を持ち、値は圏の射となります。単なる写像としてのプロファイル(域と余域の仕様)は次のようになります。

$`\quad \varepsilon : |\cat{M} \times (\cat{C}\times \cat{C}^\op)| \to \mrm{Mor}(\cat{T})
\In {\bf SET}
%`$

モノイド圏 $`\cat{M}`$ や圏 $`\cat{C}`$ が大きい圏の場合も想定して、$`{\bf SET}`$ は大きい集合も許す集合圏です。

$`\varepsilon`$ は、3つの添字に関して自然変換というわけではありません。テレオロジー圏の公理から、ひとつの添字に関しては対角自然変換、2つの添字に関しては自然変換になるのですが、これは変則的な“変換”です。

変則的な対応・変換はけっこう頻繁に登場します。関手や自然変換ではないので、そのテの法則性は仮定できません。しかし、役に立つヤツラなので無視することもできません。

「関手や自然変換でないヤツラも除け者にしないで扱いましょう」という話は何度もしています。2017年に続けて3つの記事を書きました。

今年〈2022年〉にも「再論」を書いています。

2022年の記事から引用すると:

ときに、非関手的対応/非自然変換が多用されることがあります。しかし、関手/自然変換ほどに用語・記法が整備されてなくて困ることになります。


まず困るのが、関手性を持たない対応や自然性を持たない変換を示す呼び名がないことです。

呼び名がないということは、それについて語ることが出来ないことなので、ほんとに困ります。過去の記事のなかでは、あまり馴染みがない以下のような用語を使っています。

  • 圏論的モダリティ
  • 非関手的〈形容詞〉
  • 非自然〈形容詞〉
  • 非全域〈形容詞〉
  • 圏論的コンストラクタ
  • 圏論的オペレータ〈圏論的コンビネータ〉
  • 不足変換手

圏論的モダリティは supply という呼び名がいいかも知れません。「装備」という訳語で次の記事で触れています。

まともな名前さえないヤツラをなぜ何度も話題にするのか? その理由も過去に書いています。

圏論的コンストラクタと圏論的オペレータ: 関手性・自然性の呪縛からの脱却」より:

圏論で関手と自然変換が重要なのは言うまでもありません。しかし、これらに拘り過ぎるのもマズイのではないか、と思います。プログラミングにおける型構成子や総称関数は、関手・自然変換に対応しないことがままあります。トレースや不動点オペレータは、関手・自然変換ではないけど重要な圏論的構成素です。非関手的対応、非自然な変換も積極的に使いましょう。


ここで僕が言いたいことは、我々に必要な操作・構成がすべて関手・自然変換であるとは限らないことです。また、最終的には関手・自然変換だと判明するにしても、最初からその姿で現れないかも知れません。そのような操作・構成の定式化に圏論的コンストラクタ/圏論的オペレータが有効です。

非全域関手と非自然変換」より:

非全域関手や非自然変換のような変なものをなぜ考えるのでしょう? その答は「使うから」「役に立つから」です。

さてこの記事では、非関手的/非自然/非全域なモノを表す記法を決めておきます。

コンストラクタ

原則的に「圏論的コンストラクタと圏論的オペレータ〈コンビネータ〉 再論」に従いますが、過去記事を参照しなくてよいように定義は繰り返します。

$`\cat{C}`$ がn-圏だとして、$`0 \le k \le n+1`$ に対して、

  • $` |\cat{C}|_k := \cat{C} \text{ の }k\text{-射の集合} `$

とします。特に:

  • $` |\cat{C}|_0 := |\cat{C}| = \mrm{Obj}(\cat{C})`$
  • $` |\cat{C}|_1 := \mrm{Mor}(\cat{C})`$

なお、n-圏の(n + 1)-射とは、n-射のあいだの等式のことです。

次のような写像を $`k\text{-to-}l`$ の(圏論的)コンストラクタと呼びます。

$`\quad T:|\cat{C}|_k \to |\cat{D}|_l \In {\bf SET}`$

コンストラクタも、n-圏からn-圏への対応/変換だと思って、次の書き方をします。

$`\quad T:\cat{C} \lto{k, l} \cat{D} \In \widehat{n{\bf CAT}}`$

ここで、$`\widehat{n{\bf CAT}}`$ は、行儀の良い関手〈1-射〉や自然変換〈2-射〉だけでなく、コンストラクタも含む圏的構造物〈category-like structure〉だとします。気持ちが悪いなら、コンストラクタのプロファイルを書くための方便だと思ってもいいです。

次の略記を導入します。

  • $`\lto{k, k}`$ は $`\lto{k}`$ と略記してよい。
  • $`\lto{k, k + 1}`$ は $`\lto{k, +}`$ と略記してよい。行き先の次元が上がることを強調したいので。
  • $`\lto{k, k + 2}`$ は $`\lto{k, ++}`$ または $`\lto{k, +2}`$ と略記してよい。

圏〈1-圏〉の対象〈0-射〉に対象を対応させるコンストラクタは次のように書けます。

$`\quad T:\cat{C} \lto{0} \cat{D} \In \widehat{\bf CAT}`$

圏の射〈1-射〉に射を対応させるコンストラクタは次のように書けます。

$`\quad F:\cat{C} \lto{1} \cat{D} \In \widehat{\bf CAT}`$

圏の対象に射を対応させるコンストラクタは次のようです。

$`\quad \alpha:\cat{C} \lto{0, +} \cat{D} \In \widehat{\bf CAT}`$

非全域性とコンストラクタ集合

全域的に定義されてないかも知れないコンストラクタも考えます。

$`\quad T:|\cat{C}|_k \to |\cat{D}|_l \In {\bf PARTIAL}`$

$`{\bf PARTIAL}`$ は、大きいかも知れない集合とそのあいだの部分写像〈非全域写像〉からなる圏です。非全域な写像で定義されるコンストラクタが非全域コンストラクタ〈{non-total | partial} constructor〉です。

「部分」ではなく「非全域」という言葉を使う理由は、subfunctor と partial functor などの翻訳語でコンフリクトが生じるので、その対策です。

非全域関手と非自然変換」より:

partial = non-total なので「非全域」という言葉を使うことにします。ここでの「非全域」は「全域ではない」という意味ではありません。「必ずしも全域とは限らない」です。

非全域コンストラクタは次の形に書きます。

$`\quad T:\cat{C} \plto{k, l} \cat{D} \In \widehat{n{\bf CAT}}`$

コンストラクタ〈全域コンストラクタ〉の場合と同じ略記の規則を適用します。

コンストラクタ(非全域コンストラクタも含む)全体の集合はブラケット記法で書きますが、対応する矢印を区切り記号に使うことにします。例えば n = 1 のケースで:

  • $`[\cat{C} \lto{0} \cat{D}]`$ : 圏 $`\cat{C}`$ から圏 $`\cat{D}`$ へのすべての $`0\text{-to-}0`$ コンストラクタの集合
  • $`[\cat{C} \lto{1} \cat{D}]`$ : 圏 $`\cat{C}`$ から圏 $`\cat{D}`$ へのすべての $`1\text{-to-}1`$ コンストラクタの集合
  • $`[\cat{C} \lto{0,+} \cat{D}]`$ : 圏 $`\cat{C}`$ から圏 $`\cat{D}`$ へのすべての $`0\text{-to-}1`$ コンストラクタの集合
  • $`[\cat{C} \plto{0} \cat{D}]`$ : 圏 $`\cat{C}`$ から圏 $`\cat{D}`$ へのすべての $`0\text{-to-}0`$ 非全域コンストラクタの集合

これらの集合は大きい集合になるかも知れません。サイズにセンシティブな場合は注意が必要です。

コンストラクタ系と変換手性

関手の素材として2つのコンストラクタが必要です。

$`\quad F_0 : \cat{C} \lto{0} \cat{D} \In \widehat{\bf CAT}\\
\quad F_1 : \cat{C} \lto{1} \cat{D} \In \widehat{\bf CAT}`$

このような、幾つかのコンストラクタのまとまりをコンストラクタ系〈system of constructors〉と呼ぶことにします。

自然変換 $`\alpha:F \Rightarrow G`$ を定義したいなら、次のようなコンストラクタ系が素材となります。

$`\quad F_0 : \cat{C} \lto{0} \cat{D} \In \widehat{\bf CAT}\\
\quad F_1 : \cat{C} \lto{1} \cat{D} \In \widehat{\bf CAT}\\
\quad G_0 : \cat{C} \lto{0} \cat{D} \In \widehat{\bf CAT}\\
\quad G_1 : \cat{C} \lto{1} \cat{D} \In \widehat{\bf CAT}\\
\quad \alpha : \cat{C} \lto{0, +} \cat{D} \In \widehat{\bf CAT}`$

コンストラクタ系が関手である/自然変換であるためには、等式的法則を満たす必要があります。そのような法則(の集まり)を「◯◯性」と呼びます。

  • 関手性〈functoriality〉: 関手であることを規定する法則・性質
  • 自然性〈naturality〉: 自然変換であることを規定する法則・性質

関手/自然変換の一般化に変換手〈transfor〉があります(nLab項目 transfor)。n-圏のあいだの関手が (n, 0)-変換手、n-圏のあいだの関手〈(n, 0)-変換手〉のあいだの自然変換が (n, 1)-変換手です。より一般に (n, k)-変換手があります。

  • (n, k)-変換手性〈(n, k)-transforiality〉: (n, k)-変換手であることを規定する法則・性質

まずは素材としてコンストラクタ系を準備して、それに変換手性の条件を付けて変換手を定義します。すべての構造が変換手とは限らないので、別な条件を付けることもあるでしょう。そのときでも、素材はコンストラクタ系です。

コンストラクタ系に対して、対角自然性やエキストラ自然性(「エキストラ自然変換のストリング図」参照)を課すこともあります。これらの条件は、変換手性とは別な性質です。

すべての圏論的構造が、関手/自然変換ベースではないので、素材にはプレーンなコンストラクタ系を選び、その上に様々な構造を載せていくアプローチが良いと思います。