【誰か教えて】謎構造・「射の分割」ができる圏

\gdef\Set{\mathrm{\mathbf{Set}}} \gdef\id{\mathrm{id}} \gdef\map{\mathrm{map}} \gdef\blank{\mathord{-}} \gdef\dom{\mathrm{dom}} \gdef\cod{\mathrm{cod}}

「射の分割」ができる圏

次のような条件を満たす小圏Cについて調べている。

  • Cの対象の集合をC_0、射の集合をC_1とする。 CのホムセットをC_1(a,b)と書く。

  • 射のうち始域がaであるものを集めた集合をC_1(a) = \bigcup_{b} C_1(a,b)と書くことにする。

  • 対象の集合C_0は可換モノイドになっている。

    • 対象0 \in C_0を持つ。(これは圏としての始対象や零対象の意味ではない。)
    • Cの対象の集合は結合的な2項演算(+):C_0\times C_0 \to C_0を持つ。
    • この2項演算は0を単位元とする: a + 0 = 0 + a = a
    • この2項演算は可換である: a + b = b + a
    • ただし、Cモノイド圏になることまでは要求しない+が関手のような性質を持ったりする必要はない。
  • a,bを任意の対象とする。a + bを始域とする射t \in C_1(a + b)へ射\frac{a}{a,b}t\in C_1(a)を対応させる演算\frac{a}{a,b}(\blank)\colon C_1(a + b)\to C_1(a)を持つ。この演算(の族)を射の分割と呼ぶことにする。

    • 可換性から、\frac{b}{b,a}(\blank)\colon C_1(a+b)\to C_1(b)である。

    • 射の分割はC_0のモノイド演算と次の意味で整合的であることを要求する。

      • 任意のt\in C_1(a) = C_1(a + 0)に対して、\frac{a}{a,0}t = t
      • 任意のa,b,c \in C_0t \in C_1(a + b + c)に対して、\frac{a}{a,b+c}t = \frac{a}{a,b}\left(\frac{a+b}{a+b,c}t\right)
  • 次の性質を満足するような射の分割(を持つ圏)に特に興味がある。これらの性質を満たすものを仮に”properな”射の分割(を持つ圏)と呼ぶことにする。

    • C_1(0) = C_1(0,0)、すなわち0からそれ以外の対象への射は存在しない。

    • 恒等射の分割は恒等射である。すなわち次式が成り立つ。

      \begin{equation*} \frac{a}{a,b}\id_{a+b} = \id_a \end{equation*}

    • 終域がcである射t \in C_1(a+b,c)を次のように分割したとする。

      \begin{align*} t_a &= \frac{a}{a,b}t \in C_1(a)\\ t_b &= \frac{b}{b,a}t \in C_1(b) \end{align*}

      このとき、t_at_bの終域がどの対象になるかは決まっていない。(a,b,cによって決まることさえ保証しなくてよい。)しかし、それらの終域をモノイド演算で足し合わせるとcに戻ることは要求する。

      \begin{equation*} \cod(t_a) + \cod(t_b) = \cod(t) = c \end{equation*}

    • 以下のように合成できる射t,uがあるとする。

      \begin{CD} {a+b} @>t>> c @>u>> d \end{CD}

      このとき、以下の等式が成り立つ必要がある。

      \begin{equation*}     \frac{a}{a,b}\left(t;u\right) = \left(\frac{a}{a,b}t\right); \left(\frac{c_a}{c_a,c_b}u\right) \end{equation*}

      ただし、c_a, c_btの射の分割それぞれの終域とする。

      \begin{align*} c_a &= \cod\left(\frac{a}{a,b}t\right) \\ c_b &= \cod\left(\frac{b}{b,a}t\right) \end{align*}

      前項で要求した性質よりc_a + c_b = cであるため、cを始域とする射uc_a,c_bで分割することができる。

なぜこんなものを考えているのか

最近考えていることの一つに、多項式Comonadが小圏と対応すること1がある。ここで、Comonadに加えてApplicativeのような演算2をサポートする型クラスComonadApplyを考えてみる。Comonadと小圏の対応を通じてApplicativeの演算を小圏での表現に送り込むと、「対象の集合C_0の(関手的ではない)モノイド演算」「射の分割」ができる。また、以下のようにComonadの演算とApplicativeの演算が両立することを要求するならば、それは「射の分割」に対するさらなる性質の要求と読み替えることができる。

extract (pure a)    = a   -- free theorem
duplicate (pure a)  = pure (pure a)
extract (x <*> y)   = extract x (extract y)
duplicate (x <*> y) = (<*>) <$> duplicate x <*> duplicate y

これを単純のため、可換なApplicativeに限って考えて得たものが、上記の「射の分割」の定義である。 (可換に限らなくてもできるが、書き下すのが非常に面倒) “properな”射の分割の定義は、このComonadの演算とApplicativeの演算が両立する条件を翻訳したものである。

Applicativeの構造をあわせもつComonadについてはこの論文を大いに参考にしている。


  1. Daniel Ahman and Tarmo Uustalu “Directed Containers as Categories.” https://arxiv.org/abs/1604.01187↩︎

  2. ComonadApplypureを除いている。↩︎