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

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

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

参照用 記事

スパンとファイバー積と行列計算

集合圏内のスパンに対して、標準的なファイバー積を使ってスパンの結合〈composition | 合成〉を定義できます。その結合は、行列の掛け算で表示・計算できます。$`\newcommand{\NFProd}[3]{ \mathop{_{#1} \!\underset{#2}{\times}\,\!_{#3} } }
\newcommand{\mrm}[1]{ \mathrm{#1} }
\newcommand{\In}{\text{ in }}
`$

内容:

関連する記事:

  1. スパンの圏と行列の圏 2016年に同じ内容の記事を書いています。が、過去記事では詳細までは書いてありません。
  2. 集合係数のスカラー・ベクトル・行列・テンソル この記事の続きです。
  3. 集合・関数係数行列の2-圏、モナドも添えて

色々な記法

すべて集合圏のなかでの話です。射 $`f:X\to A \In {\bf Set}`$ は単に $`f:X \to A`$ と書きます。$`S\subseteq X`$ として、$`f`$ の $`S`$ への制限は $`f|_S : S \to A`$ と書きます。しかし、文脈から明らかなら、$`f`$ と $`f|_S`$ はオーバーロードします。

$`\quad f:X \to A \\
\quad f:S \to A \:\text{ where }S\subseteq X
`$

$`f:X \to A`$ と $`a\in A`$ に対して、$`f`$ が了解されているなら、次の記法を使います。

$`\quad X_a := \{x\in X\mid f(x) = a\} = f^{-1}(a)`$

さらに、次の状況を考えます。

$`\quad \xymatrix{
{}
& X \ar[dl]_{f} \ar[dr]^{g}
& {}
\\
A
&{}
&B
}
`$

$`f, g`$ が了解されているとして、$`a\in A, b\in B`$ に対して次の記法を使います。

$`\quad X_{a\,b} := \{x\in X\mid f(x) = a \;\land\; g(x) = b\} = f^{-1}(a)\cap g^{-1}(b)`$

また、次のようにも書きます。

$`\quad X_{a\,*} = \{x\in X\mid f(x) = a\} = f^{-1}(a)\\
\quad X_{*\,b} = \{x\in X\mid g(x) = b\} = g^{-1}(b)
`$

次が成立します。

$`\quad X_{a\,b} = X_{a\,*}\cap X_{*\, b}\\
\quad X_{a\,*} = \sum_{b\in B} X_{a\,b}\\
\quad X_{*\,b} = \sum_{a\in A} X_{a\,b}
`$

さて、以下の図式で、中央の $`\text{p.b.}`$(pullback)と書かれたひし形は集合圏内のデカルト四角形〈プルバック四角形〉になっているとします。

$`\quad \xymatrix{
{}
& {}
& Z \ar[dl]_{\pi_1} \ar[dr]^{\pi_2}
& {}
& {}
\\
{}
& X \ar[dl]_{f} \ar[dr]^{g}
& {\text{p.b.}}
& Y \ar[dl]_{h} \ar[dr]^{k}
& {}
\\
A
&{}
& B
& {}
& C
}
`$

$`Z`$ は集合圏の標準的なファイバー積で与えられているとします。次のようですね。

$`\quad Z := \{(x, y)\in X\times Y\mid g(x) = h(y)\}`$

ファイバー積 $`Z`$ を丁寧に書くときは次のように書きます。

$`\quad Z = X \NFProd{g}{B}{h} Y \; \subseteq X\times Y`$

$`g, h`$ が了解されているなら、次のように略記します。

$`\quad Z = X \times_B Y \; \subseteq X\times Y`$

次のようにも書けます。

$`\quad Z = X \NFProd{g}{B}{h} Y = \sum_{b\in B} (g^{-1}(b) \times h^{-1}(b))`$

ここで、総和記号は、互いに共通部分がない集合達の単なる合併です。タギングはしてません。

上の図式の外側だけ取り出すと:

$`\quad \xymatrix{
{}
& Z \ar[dl]_{\pi_1; f} \ar[dr]^{\pi_2; k}
& {}
\\
A
&{}
& C
}
`$

ここで、セミコロンは図式順結合記号です: $`\pi_1;f = f\circ \pi_1`$ 。$`{\pi_1; f}`$ と $`{\pi_2; k}`$ は了解されているものとして、次の記法を使います。

$`\quad Z{a\, c} := \{(x, y)\in Z\mid f(x) = a \;\land\;\ k(y) = c\} = (\pi_1;f)^{-1}(a)\cap (\pi_2;k)^{-1}(c)\\
\quad Z{a\, *} := \{(x, y)\in Z\mid f(x) = a\} = (\pi_1;f)^{-1}(a)\\
\quad Z{*\, c} := \{(x, y)\in Z\mid k(y) = c\} = (\pi_2;k)^{-1}(c)
`$

集合圏のスパンの結合

集合圏内で、3つの集合(同じものがあってもよい)と2つの写像から構成される次の形をスパン〈span〉と呼びます。

$`\quad \cdot \leftarrow \cdot \rightarrow \cdot \;\In {\bf Set}`$

3つの集合を左から順に左足〈left foot〉、ボディ〈body〉(またはヘッド〈head〉)、右足〈right foot〉と呼びます。2つの写像は、左脚〈left leg〉、右脚〈right leg〉です。

次のような2つのスパンがあったとします。

$`\quad A \overset{f}{\leftarrow} X \overset{g}{\rightarrow} B`$
$`\quad B \overset{h}{\leftarrow} Y \overset{k}{\rightarrow} C`$

この2つのスパンは結合可能で、結合〈composition〉は前節のデカルト四角形〈プルバック図式〉を使って定義されます。下に図式を再掲します。

$`\quad \xymatrix{
{}
& {}
& Z \ar[dl]_{\pi_1} \ar[dr]^{\pi_2}
& {}
& {}
\\
{}
& X \ar[dl]_{f} \ar[dr]^{g}
& {\text{p.b.}}
& Y \ar[dl]_{h} \ar[dr]^{k}
& {}
\\
A
&{}
& B
& {}
& C
}
`$

結合されたスパンは次のように書けます。

$`\quad A \overset{\pi_1;f}{\leftarrow} Z \overset{\pi_2;k}{\rightarrow} C`$

スパンを次のように一文字で表すとして:

$`\quad x := (A \overset{f}{\leftarrow} X \overset{g}{\rightarrow} B)`$
$`\quad y := (B \overset{h}{\leftarrow} Y \overset{k}{\rightarrow} C)`$

左足を域〈domain〉、右足を余域〈codomain〉と定義すれば、スパンの結合可能性は次のように書けます。

$`\quad \mrm{cod}(x) = \mrm{dom}(y)`$

また、集合 $`A`$ に対する恒等スパン〈identity span〉は $`A \overset{\mrm{id}_A}{\leftarrow} A \overset{\mrm{id}_A}{\rightarrow} A`$ と定義できます。

となると、集合を対象、スパンが射、スパンの結合が結合である圏ができそうです。実際、ほとんど圏になるのですが、残念ながら(そのままでは)圏とは言えません。そのことについては次の過去記事を参照してください。

写像はベクトル、スパンは行列

写像 $`f:X \to A`$ があると、次のようにして、$`A`$ でインデックス付けられた集合の族〈$`A`$-indexed family of sets〉を定義できます。

$`\quad (f^{-1}(a))_{a \in A}`$

これを、記号の乱用で以下のようにも書きましょう、と最初の節で約束しました。

$`\quad (X_a)_{a\in A}`$

集合を“スカラー”だと思えば、これは、スカラー達 $`X_a`$ を、インデキシング集合 $`A`$ にそって並べたものです。集合を成分とするベクトルだと思っていいでしょう。

スパン $`(A \overset{f}{\leftarrow} X \overset{g}{\rightarrow} B)`$ があると、次のようにして、$`A\times B`$ でインデックス付けられた集合の族を定義できます。

$`\quad (f^{-1}(a)\cap g^{-1}(b))_{(a, b) \in A\times B}`$

これを、記号の乱用で以下のようにも書きましょう、と最初の節で約束しました。

$`\quad (X_{a\,b})_{(a, b)\in A\times B}`$

これは、スカラー達 $`X_{a\,b}`$ を、2次元のインデキシング集合 $`A\times B`$ にそって並べたものです。集合を成分とする行列だと思っていいでしょう。

これで、スパンの結合が集合係数行列の掛け算だったりするとオイシイのですが、‥‥

行列計算の公式

出てくる記号は最初の節で約束したものだとして、もし、スパンの結合が集合係数行列の掛け算で計算できるならば、次の行列掛け算公式(積和の公式)が使えることになります。

$`\quad Z_{a\,c} = \sum_{b\in B} (X_{a\,b} \times Y_{b\,c})`$

これを示すためのガイドラインとして、次の図式を描いておきましょう。

$`\quad \xymatrix{
{}
& {}
& X_{a\,*} \times_B Y_{*\,c} \ar[dl]_{\pi_1} \ar[dr]^{\pi_2}
& {}
& {}
\\
{}
& X_{a\,*} \ar[dl]_{f} \ar[dr]^{g}
& {\text{p.b.}}
& Y_{*\, c} \ar[dl]_{h} \ar[dr]^{k}
& {}
\\
\{a\}
& {}
& B
& {}
& \{c\}
}`$

制限を明示してませんが、

$`\quad f = f|_{X_{a\,*}}\\
\quad g = g|_{X_{a\,*}}
`$

などと制限されてます。

まず、公式右辺が、$`B`$ 上のファイバー積になっていることを見ます。定義(最初の節にあり)をもう一度確認しましょう。

$`\quad X_{a\,b} \\
= \{x \in X \mid f(x) = a \;\land\; g(x) = b\}\\
= \{ x \in X \mid x\in X_{a\,*} \;\land\; g(x) = b \}\\
= \{x \in X_{a\,*} \mid g(x) = b \}
`$

$`\quad Y_{b\,c} \\
= \{ y \in Y \mid h(y) = b \;\land\; k(y) = c \}\\
= \{ y \in Y \mid h(y) = b \;\land\; y \in Y_{*\,c}\}\\
= \{ y \in Y_{*\, c} \mid h(y) = b\}
`$

これを使って次のように計算できます。

$`\quad X_{a\,b} \times Y_{b\,c}\\
= \{x \in X_{a\,*} \mid g(x) = b \} \times \{ y \in Y_{*\, c} \mid h(y) = b\}\\
= \{(x, y) \in X_{a\,*} \times Y_{*\, c} \mid g(x) = b \;\land\; h(y) = b\}
`$

$`b\in B`$ を走らせて総和を取ります。

$`\quad \sum_{b\in B}(X_{a\,b} \times Y_{b\,c})\\
= \sum_{b\in B}\{(x, y) \in X_{a\,*} \times Y_{*\, c} \mid g(x) = b \;\land\; h(y) = b\}\\
= \{(x, y) \in X_{a\,*} \times Y_{*\, c} \mid g(x) = h(y)\}\\
= X_{a\,*} \NFProd{g}{B}{h} Y_{*\, c}\\
= X_{a\,*} \times_B Y_{*\, c}
`$

これで、次が示せました。

$`\quad \sum_{b\in B} (X_{a\,b} \times Y_{b\,c}) = X_{a\,*} \times_B Y_{*\, c}`$

$`b\in B`$ を走らせる積和計算が、$`B`$ 上でファイバー積を作ることに対応していたわけです。

$`Z_{a\,c}`$ の定義(最初の節にあり)も、もう一度確認します。

$`\quad Z_{a\,c }\\
= \{(x, y)\in Z\mid f(x) = a \;\land\;\ k(y) = c\} \\
= \{(x, y)\in X\NFProd{g}{B}{h} Y \mid f(x) = a \;\land\;\ k(y) = c\} \\
= \{(x, y)\in X\times Y \mid g(x) = h(y) \;\land\;\ f(x) = a \;\land\;\ k(y) = c\} \\
= \{(x, y)\in X_{a\, *}\times Y_{*\, c} \mid g(x) = h(y)\} \\
= X_{a\,*} \NFProd{g}{B}{h} Y_{*\, c}\\
= X_{a\,*} \times_B Y_{*\, c}
`$

これで、次が示せました。

$`\quad Z_{a\, c} = X_{a\,*} \times_B Y_{*\, c}`$

結局、行列掛け算公式(積和の公式)は実際に使えるのです。

$`\quad Z_{a\,c} = \sum_{b\in B} (X_{a\,b} \times Y_{b\,c})`$

メデタシメデタシ。