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

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

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

参照用 記事

米田テンソル計算 2: 準備


\newcommand{\Iff}{\Leftrightarrow }
%\newcommand{\hyp}{\text{-}}
\newcommand{\cat}[1]{\mathcal{#1}}
\newcommand{\In}{\text{ in } }
\newcommand{\op}{\mathrm{op} }
\newcommand{\id}{\mathrm{id} }
\newcommand{\Id}{\mathrm{Id} }
\newcommand{\ID}{\mathrm{ID} }
\newcommand{\cequiv}{\mathrel{\overset{\sim}{\equiv}} }
\require{color}
\newcommand{\Keyword}[1]{ \textcolor{green}{\text{#1}} }%
\newcommand{\For}{\Keyword{For }  }%
\newcommand{\Define}{\Keyword{Define }  }%
\newcommand{\Where}{\Keyword{Where }  }%
\newcommand{\When}{\Keyword{When }  }%
\newcommand{\Holds}{\Keyword{Holds }  }%
\newcommand{\Declare}{\Keyword{Declare }  }%
\newcommand{\qto}[1]{\mathrel{\text{-}_{\text{#1}}\!\!\!\to} }
米田テンソル計算の内容について書こうと思ったら、けっこう色々準備が必要みたい。「圏論からの準備」というより、もっとツマラナイこと、しかし無視できないことに関する細々とした準備です。記述や計算のためのツマラナイ道具(いや、ツマラナクないが)も、意外と整備されてないのです。

結果的にこの記事は、米田テンソル計算に限らず使えそうな基本的な用語・記法の約束を集めたものになっています。

内容:

方向付き区切り記号

リスト/タプルの区切り記号にはカンマが使われますが、我々の目的ではカンマだけでは足りません。まず、記号 ':>' をカンマと同じ意味・使用法で導入します。例えば:

\quad (x, y, z) = (x:> y:> z)

':>' はカンマより優先度が低いので、次のように入れ子が書けます。

\quad ( (x, y) , z) = (x,  y:> z)

'\lt:' で区切ると、並び順が逆転する(右から左に読む)とします。

\quad (x, y, z) = (z \lt: y \lt: x)\\
\quad ( (x, y) , z) = ( z \lt: x, y)

もっと優先度を低くしたいならコロンの数を増やします。


\quad ( (x, y) , z) = ( z \lt: x, y) = ( z \lt:: y \lt: x) \\
\quad ( (x, y) , (z, w) ) = ( w \lt: z \lt:: y \lt: x)

これらの方向付き区切り記号〈directed delimiter〉は、関数や関手への引数渡しのときも使います。例えば次のように。

\For f:(A\times B)\times C \to D \In {\bf Set}\\
\For x\in A, y\in B, z\in C\\
\Holds \\
\quad f( ((x, y), z) ) = f((x, y), z) = f(x, y :> z) = f(z \lt: x, y) = f(z \lt:: y \lt: z)\\
\quad \text{ by notational convention}

圏のホムセットにも方向付き区切り記号を使います。


\quad \cat{C}(A, B) = \cat{C}(A :> B) = \cat{C}(B \lt: A)

この書き方が便利なのは、対象がリストのときです。


\quad \cat{C}( (A, B), (C) ) = \cat{C}(A, B :> C) = \cat{C}(C \lt: A, B)

空リストの囲み記号を省略してもそれほど混乱しません。


\quad \cat{C}( (), (A, B) ) = \cat{C}( () :> A, B) = \cat{C}( :> A, B)
  = \cat{C}( A, B \lt: )

修飾付き矢印

複数の圏を扱っているとき、f:A \to B と書いても、f がどの圏の射かハッキリしません。また、ひとつの実体(例えば写像)が2つの圏に所属していて、圏によりプロファイルが変わるときがあります。例えば、F = (F, \mu, \eta){\bf Set} 上のモナドとして:


\quad f:A \to F(B) \In {\bf Set}\\
\quad f:A \to B \In \mathrm{Kl}(F/{\bf Set})

どの圏の射かを区別するために矢印の形を変えることがあります。例えば、集合圏なら f:A\to F(B) で、モナドのクライスリ圏 \mathrm{Kl}(F/{\bf Set}) なら f:A \nrightarrow B とかです。

ここでは、矢印を文字・文字列で修飾することにします。例えば、集合圏なら f:A\to F(B) で、モナドのクライスリ圏なら f:A \qto{k} B とかです。よく使うのは次の組み合わせです。

  • 関数〈写像〉は f:A \to B 、行列は  F:A \qto{m} B
  • 関手は F:\cat{C} \to \cat{D} 、プロ関手は P:\cat{C} \qto{p} \cat{D}

文字・文字列で修飾された矢印を修飾付き矢印〈qualified arrow〉と呼ぶことにします。どの圏の射か明白に分かるなら、あえて修飾付き矢印にする必要はありません。しかし、冗長になっても別に問題ありません。


\quad P:\cat{C} \qto{p} \cat{D} \\
\Iff P:\cat{C} \to \cat{D} \In {\bf Prof}\\
\Iff P:\cat{C} \qto{p} \cat{D} \In {\bf Prof}

無名ラムダ変数

無名ラムダ変数にはハイフン/マイナス記号がよく使われますが、ここではアンダースコアも使います。典型的な使用例は、ホムセットによる米田埋め込みの記述です。

  • \cat{C}(-, A) = \lambda\, x : \cat{C}.\cat{C}(x, A) \;: \cat{C}^\op \to {\bf Set} (マイナス記号)
  • \cat{C}(\_, A) = \lambda\, x : \cat{C}.\cat{C}(x, A) \;: \cat{C}^\op \to {\bf Set} (アンダースコア)

上記の例では、ラムダ変数は(名前があってもなくても)圏の対象または射を表します。

アンダースコアに番号を付けて、変数の区別や同一視ができます。

  • \cat{C}(\_1, \_2) = \lambda\, (x, y) : \cat{C}^\op\times \cat{C}.\cat{C}(x, y) \;: \cat{C}^\op\times \cat{C} \to {\bf Set}
  • \cat{C}(\_1, \_1) = \lambda\, X \in |\cat{C}|.\cat{C}(X, X) \;: |\cat{C}| \to |{\bf Set}|

二番目は、無名ラムダ変数は対象だけを走りますが、それは別途断り書きが必要です。

ハイフン/マイナス記号は出現位置が異なれば異なる変数として扱い、アンダースコアは出現位置が異なっても同じ変数として扱います。2変数関数について言えば:

\quad f = f(-, - ) = f(\_1,\_2) = \lambda\, (x, y).f(x, y)\\
\quad f\circ \Delta = f(\_, \_) = f(\_1,\_1) = \lambda\, x.f(x, x)

番号なしアンダースコアを上記の意味で使うのは紛らわしいので、番号付きで使うことにします。

論理式から作る述語関数

P が論理式で、P に出現する変数の型(変域の集合)が分かっているとします。このとき、P に出現する変数のひとつ、または幾つかを無名ラムダ変数に置き換えた式を作ることができます。

例えば、(A, \le) が順序集合のとき、

\quad x \le y \quad\text{for x, y}\in  A

は論理式ですが、変数 x, y を無名ラムダ変数に置き換えると:

  1.  (- \le y) = \lambda\, s\in A.( s \le y )
  2.  (x \le -) = \lambda\, t\in A.( x \le t )
  3.  (\_2 \le \_1) = \lambda\, (s, t)\in A.( t \le s )

{\bf B} はブール値〈真偽値〉の集合として、これらのラムダ式の正確な意味は次のようになります。

  1.  \lambda\, y\in A.( \lambda\, s\in A.( s \le y )  ):A \to \mathrm{Map}(A, {\bf B})
  2.  \lambda\, x\in A.( \lambda\, t\in A.( x \le t )  ):A \to \mathrm{Map}(A, {\bf B})
  3.  \lambda\, (s, t)\in A.( t \le s ): A\times A \to {\bf B}

以上に説明した用法を強調する目的で、無名ラムダ変数を含む論理式を [\:]? で囲むことにします。

  1.  [- \le y]? = \lambda\, y\in A.( \lambda\, s\in A.( s \le y )  )
  2.  [x \le -]? = \lambda\, x\in A.( \lambda\, t\in A.( x \le t )  )
  3.  [\_2 \le \_1]? = \lambda\, (s, t)\in A.( t \le s )
  4.  [- \le -]? = \lambda\, (s, t)\in A.( s \le t )

行列記法と行列計算

米田テンソル計算をささえるアナロジーのひとつに

  • 関数 : 行列 = 関手 : プロ関手

があります。アナロジーとして引き合いに出す行列についてまとめておきます。

通常の行列はインデックスが番号(自然数値)ですが、任意の集合の要素をインデックスに許した行列を拡張行列〈extended matrix〉と呼ぶことにして、S係数拡張行列達の圏を {\bf XMat}[S] とします。ここで、S は半環ですが、S が省略されたら S = {\bf R}_{\ge 0} (非負実数の半環)だと約束します。つまり、 {\bf XMat} = {\bf XMat}[{\bf R}_{\ge 0}] とします。一般には、デフォルトの半環の決め方は目的により変わります。

{\bf XMat} の対象類は |{\bf XMat}| = {\bf Set} で、ホムセットは次のように定義します。

\For A, B \in |{\bf XMat}| \\
\Define {\bf XMat}(A, B) := \\
\quad \{ F \in {\bf Set}(A\times B, {\bf R}_{\ge 0}) \mid \\
\qquad  \forall x\in A.(\, \{ y\in B \mid F(x, y) \ne 0\} \text{ is-finite-set}
  \,)\\
\quad \}

関数に条件が付いているのは、行列の掛け算が出来るようにです。B が有限集合ならこの条件は不要です(自動的に満たされる)。

行列の結合=行列の掛け算の定義は以下のとおり。

\For F: A \to B, G:B \to C \In {\bf XMat} \\
\Define F;G := \\
\quad \lambda\, (x, z)\in A\times C.(\,
   \sum_{y\in B} F(x, y)G(y, z)
  \,)

結合を反図式順で書くときは、反対方向付き区切り記号を使うと便利です。


\quad G\circ F = \lambda\, (z \lt: x)\in A\times C.(\,
   \sum_{y\in B} G(z \lt: y)F(y \lt: x)
  \,)

ちなみに確率の計算では、条件付き確率の伝統的記法から、反対方向(右から左)の区切り記号に縦棒を使います。


\quad G\circ F = \lambda\, (z \mid x)\in A\times C.(\,
   \sum_{y\in B} G(z \mid y)F(y \mid x)
  \,)

関数〈写像〉と行列のプロファイルを区別したいときは、修飾付き矢印を使います。


\quad F:A \qto{m} B \\
\Iff  F:A\times B \to {\bf R}_{\ge 0}

次のように書いても同じです。


\quad F:A \to B \In {\bf XMat}\\
\Iff  F:A\times B \to {\bf R}_{\ge 0} \In {\bf Set}

{\bf XMat} の恒等射は次のように与えられます。

\For A \in |{\bf XMat}|\\
\Define \id_A := \lambda\, (x, x')\in A\times A.\delta(x, x')

ここで、\delta(-, -)クロネッカーのデルタです。

単位対象、単元集合、自明圏

記号の乱用を使ってモノイド圏を簡略に表すときは \cat{C} = (\cat{C}, \otimes, I) とします。異なるモノイド圏のモノイド積/単位対象を区別したいなら次のよう。


\quad \cat{C} = (\cat{C}, \otimes_\cat{C}, I_\cat{C})\\
\quad \cat{D} = (\cat{D}, \otimes_\cat{D}, I_\cat{D})

単位対象はイタリック体〈斜体〉を使います。ローマン体〈立体〉の \mathrm{I} は別な意味で使うことがあるので。

直積をモノイド積とする集合圏の単位対象は I_{\bf Set} ですが、これは特定された単元集合なのでボールド体で {\bf 1} と書きます。空集合{\bf 0} = \emptyset です。

直積をモノイド積とする圏の圏(2-圏)の単位対象は I_{\bf Cat} ですが、これは特定された自明圏なので黒板文字で \mathbb{I} と書きます。

  • {\bf Set} = ({\bf Set}, \times, {\bf 1}) \text{ where } {\bf 1} = I_{\bf Set}
  • {\bf Cat} = ({\bf Cat}, \times , \mathbb{I}) \text{ where } \mathbb{I} = I_{\bf Cat}

ストリング図のラベルとしては、\mathbb{I} の代わりに ☆ を使うことがあります。

0, 1, 2個のモノからなる集合/圏

特定された単元集合は:

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

唯一の要素 * が具体的に何であるかは保留にしておきます。どうしても具体的に決めたいときは目的により都合がいい要素を選びます。

{\bf B} = \{0, 1\} はブール値〈真偽値〉の二元集合とします。


\quad {\bf 0}, {\bf 1}, {\bf B} \in |{\bf Set}|

一方、0, 1, 2個の対象を持つ圏は次のように書きます。


\quad \mathbb{O}, \mathbb{I}, \mathbb{B} \in |{\bf Cat}| \subseteq |{\bf CAT}|

いずれも集合圏 {\bf Set} の充満部分圏で:


\quad |\mathbb{O} | = {\bf 0} = \emptyset\\
\quad |\mathbb{I} | = {\bf 1} = \{*\}\\
\quad |\mathbb{B} | = \{{\bf 0}, {\bf 1} \} \cong {\bf B}

射はそれぞれ、0本、1本、3本持ちます。\mathbb{B} が離散圏(恒等しか射がない圏)ではないことに注意してください。{\bf B} := |\mathbb{B} | と定義しておいてもかまいません。

演算記号と恒等

図式順と反図式順の両方を準備します。オーバーロード/コンフリクトはあります。

演算 図式順 反図式順
射の結合 ; \circ
関手の結合 * \cdot
プロ関手の結合 \diamond \odot
自然変換の横結合 * \cdot
自然変換の縦結合  ; \circ
関数・関手への引数渡し x.F F(x)
自然変換へのインデックス渡し X.\alpha \alpha_X

恒等:

  • 圏の恒等射: \id_A : A \to A \In \cat{C}
  • 恒等関手: \Id_{\cat{C}}: \cat{C} \to \cat{C} \In {\bf Cat}
  • 恒等自然変換: \ID_{F} : F \to F \In {\bf Cat}(\cat{C}, \cat{D})

ホムセットの交わり

集合論と圏論がズレるとき: 空リスト問題」の第2節で述べたように、圏のホムセットは交わりません。

\For A, B, C, D\in |\cat{C}|\\
\Holds (A, B) \ne (C,D) \Rightarrow \cat{C}(A, B)\cap\cat{C}(C, D) = \emptyset

しかし、圏の定義や記述のときは、ホムセットが交わっても気にしないことにします。例えば、すべての対象ペアのあいだに1本の射がある圏を記述するとき、次のように書いてもいいとします。

\For A, B \in |\cat{C}|\\
\Define \cat{C}(A, B) := {\bf 1}

この定義では、すべてのホムセットが交わってしまいますが、次のように補正すれば交わらないようになります。

\For A, B \in |\cat{C}|\\
\Define \cat{C}(A, B) := \{A\}\times {\bf 1}\times \{B\}

この補正は後から常に出来るので、圏の定義や記述の際にはホムセットが交わってもいいとします。

同型・同値

記号 '\cong' は圏における対象の同型を示します。どの圏における同型かを明示したときは、次のどちらかの書き方をします。

  1.  A \cong_\cat{C} B
  2.  A \cong B \In \cat{C}

\cat{C} における同型の定義は次のとおりです。

\For A, B \in |\cat{C}|\\
\Define A \cong_\cat{C} B :\Iff \\
\quad \exists f:A \to B, g:B \to A \In \cat{C}.\\
\qquad f;g = \id_A \land g;f = \id_B

小さい圏の2-圏 {\bf Cat} においては、次の概念があります。

  1. 対象である圏のあいだの同型 = 圏同型
  2. 関手圏の対象である関手のあいだの同型 = 自然同値
  3. 対象である圏のあいだの同値 = 圏同値

圏の圏同型と関手の自然同値はどちらも '\cong' で表し、圏同値は '\cequiv' を使います。

\For \cat{C}, \cat{D} \in |{\bf Cat}|\\
\For F, G \in {\bf Cat}(\cat{C}, \cat{D})\\
\Define F \cong G :\Iff \\
\quad \exists \alpha:F \to G, \beta:G \to F \In {\bf Cat}(\cat{C}, \cat{D}). \\
\qquad \alpha ; \beta = \ID_F \land \beta ; \alpha = \ID_G

\For \cat{C}, \cat{D} \in |{\bf Cat}|\\
\Define \cat{C} \cequiv \cat{D} :\Iff \\
\quad \exists F: \cat{C} \to \cat{D}, G:\cat{D} \to \cat{C} \In {\bf Cat}.\\
\qquad F*G \cong \Id_\cat{C} \land  G*F \cong \Id_\cat{D}

小さいとは限らない圏の2-圏 {\bf CAT} においても同様です。

CD構造と余CD構造

対称モノイド圏 \cat{C} = (\cat{C}, \otimes, I, \sigma) (結合律子、単位律子は省略)に次のような付加的構造が載っているとします。

  1. \cat{C} の対象をインデックスとする射の族 (\Delta_A)_{A\in |\cat{C}|}, (!_A)_{A\in |\cat{C}|} がある。
  2. A\in |\cat{C}| に対して、
    • \Delta_A:A \to A\otimes A \In \cat{C}
    • !_A:A \to I \In \cat{C}
  3. A\in |\cat{C}| に対して、(A, \Delta_A, !_A) は余可換余モノイドになる。
  4. 余可換余モノイド達 (A, \Delta_A, !_A)\cat{C} のモノイド構造と協調する。

「モノイド構造と協調する」の定義は省略しますが、その詳細は例えば次の論文。

  • Title: Supplying bells and whistles in symmetric monoidal categories
  • Authors: Brendan Fong, David I Spivak
  • Submitted: 7 Aug 2019 (v1), 5 May 2020 (v2)
  • Pages: 20p
  • URL: https://arxiv.org/pdf/1908.02633.pdf

上記の条件を満たす圏をCD圏〈CD category〉または準マルコフ圏〈quasi-Markov category〉と呼びます。"CD" は "copy delete" の略です。

CD圏 \cat{C} が次の条件を満たすときデカルト〈semi-Cartesian〉といいます。

\For f:A \to B \In \cat{C}\\
\Holds f;!_B = !_A

デカルトなCD圏がマルコフ圏〈Mrakov category〉です。

CD構造と双対な構造を余CD構造と呼びます。それは:

  1. \cat{C} の対象をインデックスとする射の族 (\nabla_A)_{A\in |\cat{C}|}, (i_A)_{A\in |\cat{C}|} がある。
  2. A\in |\cat{C}| に対して、
    • \nabla_A:A\otimes A \to A \In \cat{C}
    • i_A:I \to A \In \cat{C}
  3. A\in |\cat{C}| に対して、(A, \nabla_A, i_A) は可換モノイドになる。
  4. 可換モノイド達 (A, \nabla_A, i_A)\cat{C} のモノイド構造と協調する。

余CD構造を備えた対称モノイド圏を余CD圏〈coCD category〉または準余マルコフ圏〈quasi-coMarkov category〉と呼びます。半余デカルト余CD圏〈semi-coCartesian coCD category〉、余マルコフ圏〈coMarkov category〉も同様に(双対的に)定義します。

複、余複、多

米田テンソル計算 1: 経緯と発想 // 追記 にて:

僕はこの整合的なネーミングで押し通したいのですが、既にある概念と名前がコンフリクトしたり、伝統・習慣と合わなかったりします。

既存の名前・習慣のしがらみを考慮しないなら、...[snip]...

これはほんとに悩みの種ですが、米田テンソル計算のなかでは、「複、余複、多」をなるべく系統的(「完全に系統的」ではない)に使うことにします。

(形容詞無し) 複〈マルチ〉 余複〈コマルチ〉 多〈ポリ〉
複圏 余複圏 多圏
複射 余複射 多射
行列 複行列 余複行列 多行列
線形写像 複線形写像 余複線形写像 多線形写像

現実的には整合的な用語法だけでは済まないので、以下の注意事項があります。

  1. 多圏〈polycategory〉は一般的な多圏ではなくて、モノイド圏から作られた簡約多圏のこと。この狭い意味の多圏はシーケント圏〈sequent category〉とも呼ぶ。
  2. モノイド圏からそのシーケント圏を作る構成法は \mathrm{Seq} と書く。以前 \mathrm{Poly} と書いていたもの。
  3. シーケント圏の射=多射を「シーケント」とは呼ばない。シーケント〈sequent〉は多射のプロファイルのことで多射そのものではない。
  4. 「複行列/余複行列/多行列」は辻褄が合っていても使われてない用語なので、主に「テンソル」を使う。「テンソル」は曖昧多義語で積極的には使いたくないが致し方ない。