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

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

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

参照用 記事

圏から作る有向コンテナ/余有向コンテナの記法

集合・関数係数行列の2-圏、モナドも添えて」において、「アスタリスクで総和をとり、ハイフンでラムダ抽象〈関数抽象〉をする」記法を導入しました。これ、なかなかに使いやすいですね。この記法を他の場面でも使いたくなりました。

複余有向コンテナ〈オペラッドコンテナ〉によるオペラッドの定義 // 圏から作る有向コンテナ/余有向コンテナ」にて:

見慣れない記法だと戸惑うので、通常の圏論の記法をそのまま使ってもいいのではないかと思います。有向コンテナがいまいちポピュラーにならないのも、変わった記法を使っているのが一因かと思うので。

圏から作る有向コンテナ/余有向コンテナの記法として「アスタリスクで総和をとり、ハイフンでラムダ抽象〈関数抽象〉をする」記法を使ってみます。$`\newcommand{\mrm}[1]{ \mathrm{#1} }
\newcommand{\In}{\text{ in }}
\newcommand{\hyp}{\text{-} }
\newcommand{\cat}[1]{\mathcal{#1}}
`$

圏 $`\cat{C}`$ のホムセット $`\mrm{Hom}_\cat{C}`$ を、圏と同じ記号で $`\cat{C}`$ と書きます。まぎらわしいときは、ホムセットの引数位置にハイフンを書いて $`\cat{C}(\hyp, \hyp)`$ とするといいでしょう。

$`\quad \cat{C}(\hyp, \hyp) = \mrm{Hom}_\cat{C}`$

圏のホムセットの解釈は次のニ通りがあります。

  1. 対象のペアをインデックスとする集合のファミリー〈indexed family of sets〉:
    $`\cat{C}(\hyp, \hyp): |\cat{C}|\times |\cat{C}| \to |{\bf Set}| \In {\bf SET}`$
  2. 反変・共変の二項関手〈双関手〉:
    $`\cat{C}(\hyp, \hyp): \cat{C}^\mrm{op}\times \cat{C} \to {\bf Set} \In {\bf CAT}`$

今回は一番目の解釈、つまり2つのインデックスを持つファミリーとしての解釈を採用します。ハイフンは無名のラムダ変数になります。

$`\quad \cat{C}(\hyp, \hyp) = \lambda\, x, y\in |\cat{C}|.\cat{C}(x, y)`$

「アスタリスクで総和をとり、ハイフンでラムダ抽象〈関数抽象〉をする」なら、アスタリスクを次のように使います。

$`\quad \cat{C}(\hyp, *) := \lambda\, x\in |\cat{C}|. \sum_{y\in |\cat{C}|}\cat{C}(x, y)\\
\quad \cat{C}(*, \hyp):= \lambda\, y\in |\cat{C}|. \sum_{x\in |\cat{C}|}\cat{C}(x, y)\\
\quad \cat{C}(*, *):= \sum_{x, y\in |\cat{C}|}\cat{C}(x, y) = \mrm{Mor}(\cat{C})
`$

複余有向コンテナ〈オペラッドコンテナ〉によるオペラッドの定義」で導入した言葉を使うなら、

  • $`\cat{C}(\hyp, *)`$ は放出ホムセット〈outgoing homset〉
  • $`\cat{C}(*, \hyp)`$ は吸入ホムセット〈incoming homset〉

となります。

集合・関数係数行列の2-圏、モナドも添えて」の注釈で書いたように、アスタリスクは終対象の唯一の要素としてよく使われます。

$`\quad {\bf 1} = \{*\}`$

記号の衝突〈コンフリクト〉が起きますが、$`{\bf 1} = \{0\}`$ とか $`{\bf 1} = \{\bullet\}`$ とかして回避できますから、深刻な問題ではないでしょう。

複余有向コンテナ〈オペラッドコンテナ〉によるオペラッドの定義」で定義した片側ホムセット(放出ホムセットまたは吸入ホムセット)に関するオペレータ〈コンビネータ〉を、アスタリスク・ハイフンの記法で書いてみます。

余域と域:

$`\text{For }a\in |\cat{C}|\\
\quad \mrm{cod}_a : \cat{C}(a, *)\to |\cat{C}| \\
\text{For }c\in |\cat{C}|\\
\quad \mrm{dom}_c : \cat{C}(*, c)\to |\cat{C}|
`$

プレ結合による引き戻し〈pull-back〉:

$`\text{For }a\in |\cat{C}|\\
\text{For }f \in \cat{C}(a, *)\\
\quad \mrm{back}_a(f) : \cat{C}(\mrm{cod}_a(f), *) \to \cat{C}(a, *)
`$

ポスト結合による前送り〈push-forward〉:

$`\text{For }c\in |\cat{C}|\\
\text{For }g \in \cat{C}(*, c)\\
\quad \mrm{forward}_c(g) : \cat{C}(*, \mrm{dom}_c(g)) \to \cat{C}(*, c)
`$

見慣れた記法+アスタリスクなので、だいぶ分かりやすくなったと思います。有向コンテナ/余有向コンテナの法則については「複余有向コンテナ〈オペラッドコンテナ〉によるオペラッドの定義」を参照してください。