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

ご連絡は上記 X アカウントに DM にてお願いします。

参照用 記事

n角形の対角線とペースティング図

ペースティング図は、2-圏や二重圏内に描かれた図式〈diagram〉です。1-圏でも、射のあいだの等式を2-射とみなせば2-圏になります。そして、1-圏のペースティング図は可換図式なのです。

圏論ではペースティング図(可換図式含む)を多用しますが、ペースティング図をちゃんと分かりやすく描くのはけっこう面倒です。境界(である多辺形)内部に面が張っているのか、空洞なのかをちゃんと区別しないと誤解の原因になります。同じ境界に複数の面が張っていると、2次元的に描くのは困難です。また、ラベルの用途・意味が伝わらないこともよくあります。

ペースティング図を使ったコミュニケーションの基本となる事項をこの記事で述べます。$`\newcommand{\cat}[1]{\mathcal{#1}}
\newcommand{\mrm}[1]{\mathrm{#1}}
\newcommand{\mbf}[1]{\mathbf{#1}}
%\newcommand{\msf}[1]{\mathsf{#1}}
%\newcommand{\o}[1]{\overline{#1}}
%\newcommand{\id}{\mathrm{id}}
%\newcommand{\op}{\mathrm{op}}
\newcommand{\In}{\text{ in }}
\newcommand{\hyp}{ \text{-} }
\newcommand{\twoto}{\Rightarrow }
`$

内容:

話題と過去記事

ペースティング図は、2次元のグラフから2-圏(1-圏でもよい)への写像です。写像の域である2-次元のグラフをここでは2-グラフと呼びます。2-グラフを2-コンピュータッドともいいます。2-グラフ/2-コンピュータッドに関する過去記事には以下があります。

可換図式は特別なペースティング図とみなせます。これは、1-圏を特別な2-圏とみなすことで遂行されます。1-圏を2-圏とみなす方法は:

今回この記事では、多角形に対角線を描くことで面〈surface〉を表す方法を述べます。基礎知識として多辺形と多角形(二辺形/二角形も含む)について詳しく説明します。

1-グラフと2-グラフ

単に「グラフ」と言った場合、有向グラフ〈directed graph〉を意味するとします。グラフ=有向グラフ を、集合と写像で定義するなら、次の図式で表現できます。

$`\quad \xymatrix{
E \ar@/^/[r]^{\mrm{src}} \ar@/_/[r]_{\mrm{trg}}
& V
}\\
\quad \In \mbf{Set}
`$

グラフの構成素は:

  • 頂点〈vertex〉達の集合 $`V\in |\mbf{Set}|`$
  • 〈edge〉達の集合 $`E\in |\mbf{Set}|`$
  • 辺に始点〈source〉を対応させる写像 $`\mrm{src}:E\to V \In \mbf{Set}`$
  • 辺に終点〈target〉を対応させる写像 $`\mrm{trg}:E\to V \In \mbf{Set}`$

ひとつのグラフを $`G`$ としたとき、その構成素の書き方は色々あります(「構造とその素材の書き表し方」参照)が、例えば次のように書きます。

$`\quad G = (\mrm{Vert}(G), \mrm{Edge}(G), \mrm{src}_G, \mrm{trg}_G)`$

通常のグラフは1次元の図形なので、1-グラフ〈1-graph〉ともいいます。2次元のセルも持つグラフは2-グラフ〈2-graph〉と呼びます。2次元のセルは〈surface〉と呼びます。

2-グラフの面(2次元のセル)の境界は、1次元グラフ内の2本のパスで表現します。そのことを次節以降で説明します。

n辺形とn角形と対角線

n辺形〈closed n-line〉は説明しなくても分かるでしょう。n辺形は、辺に向きを付ければ、n個の頂点とn本の辺を持つグラフ〈有向グラフ〉です。一方、n角形〈n-gon〉は、n辺形を境界に持つ2次元図形です。n角形はひとつの面を持ちます。

ちなみに、英語だとn辺形とn角形の区別がハッキリとはしてないので、closed polyline〈閉じた折れ線〉と polygon の poly の部分を n- に置き換えて、closed n-line 、n-gon としました。二辺形/二角形なら closed 2-line 、2-gon です。二辺形では line ではなくて curve ですけど。

n辺形/n角形の対角線〈diagonal〉とは、n辺形/n角形の二頂点を結ぶ辺です。ただし、多くの人が思っている対角線とは違う概念かも知れません。以下の点線で描いた矢印は、二辺形、三辺形(2つ)、四辺形の対角線の一例です。

$`\quad \xymatrix@C+1pc{
\cdot \ar@/^0.8pc/[r] \ar@/_0.8pc/[r] \ar@{.>}[r]
&\cdot
}`$

$`\quad \xymatrix@R+1pc{
{}
&\cdot \ar[dr]
&{}
\\
\cdot \ar[ur] \ar[rr] \ar@{.>}@/^1pc/[rr]
&{}
&\cdot
}`$

$`\quad \xymatrix@R+1pc{
{}
&\cdot \ar@/_/[dl]
\ar@{.>}@(dl, dr)[]
&{}
\\
\cdot \ar[rr]
&{}
&\cdot \ar@/_/[ul]
}`$

$`\quad \xymatrix@C+1pc{
\cdot \ar[r]
&\cdot \ar[d]
\\
\cdot \ar[u] \ar[r] \ar@{.>}@/^1pc/[r]
&\cdot
}`$

面の境界と面の向き

2-グラフは、1-グラフとは違って面(2次元のセル)を持ちます。2-グラフの面の内部を取り除いた(境界は残す)1-グラフは、当該2-グラフの1-骨格〈1-skeleton〉と呼びます。辺(1次元のセル)も取り除いた頂点達の集合は0-骨格〈0-skeleton〉です。

[補足]
1-グラフ、2-グラフを一般化したn-グラフに対して、そのk-骨格(0 ≦ k ≦ n)を定義できます。骨格とは別にk-切り捨て〈k-truncation | k-打ち切り〉という概念も定義できます。骨格と切り捨て〈打ち切り〉は別な概念です。しかし、直感的な議論をしているときは、骨格と切り捨て〈打ち切り〉の差は分からないので、当面は「骨格」と「切り捨て〈打ち切り〉」は同義語だと思ってかまいません。

念の為、形状付き集合における骨格と切り捨ての違いを言っておくと; 形状圏の部分圏の包含関手によるプレ結合引き戻しが切り捨てで、切り捨てを延長関手でもとの形状圏の上に戻したものが骨格です。詳細は「位相的形状付き集合 再論」参照。
[/補足]

2-グラフの面の境界は、1-骨格である1-グラフ内の2本のパスで表現します。パスとは、隣接した辺達の列〈sequence〉です。2本のパスは共通の始点・終点を持ちます。面も“向き”を持ちます。以下の五角形を例に説明しましょう。

$`\quad \xymatrix{
{}
&2
&{}
\\
1 \ar[ur] \ar@{}[rr]|{\Rightarrow}
&{}
&3 \ar[ul]
\\
5 \ar[u]
&{}
&4 \ar[ll]\ar[u]
}`$

1本目のパスは、4, 5, 1, 2 の順で頂点を通る長さ 3 のパスです。2本目のパスは、4, 3, 2 の順で頂点を通る長さ 2 のパスです。2本のパスに共通の始点は頂点 4 、2本のパスに共通の終点は頂点 2 です。面(五角形)の向きは、1本目のパスから2本目のパスへと向かう向きで、おおよそ左から右です。五角形内部の二重矢印が面の向きを示しています。

まとめると; 2-グラフの面の境界〈boundary〉を表す情報としては、2本のパスを指定します。それらのパスは共通の始点・終点を持っている必要があります。パスには順番があり、一番目のパスが始パス〈source path〉、二番目のパスが終パス〈target path〉です。面の向き〈direction | orientation〉は、始パスから終パスに向かう向きです。

面の情報を対角線により指定する

ペースティング図として使う2-グラフにおいて、面(多角形)に対角線を引くことにします。対角線は3つのことを表します。

  1. 対角線があることにより、面〈多角形〉の存在を示す。対角線がない場合は多辺形であり、内部に面が張ってない。
  2. 対角線の始点は、境界であるパス達の共通の始点であり、対角線の終点は、境界であるパス達の共通の終点を示す。
  3. 対角線の向きを時計回りに90度回転した方向が、(おおよその)面の向きを示す。

上記3つのことを示す目的の対角線であることを強調したいなら、面を示す対角線〈surface-indicating diagonal〉と呼ぶことにします。

前節の五角形に、面を示す対角線を描くと次のようです。

$`\quad \xymatrix{
{}
&2
&{}
\\
1 \ar[ur]
&{}
&3 \ar[ul]
\\
5 \ar[u]
&{}
&4 \ar[ll]\ar[u] \ar@{.>}[uul]|{\nearrow}
}`$

面を示す対角線は情報を追加する注釈であり、射ではないので、矢印のヘッドは無いほうがいいでしょう。面の向きを示す矢印は二重矢印がいいのですが、斜め方向(例えば、右上〈北東〉方向)の二重矢印が(MathJaxに)ないので致し方なく普通の矢印にします。

[追記]
MathJaxのCSSスタイル機能を使うと、任意角度の回転ができます。右向き二重矢印を-45度(反時計回りに45度)回転させるには:

\style{display: inline-block; transform: rotate(-45deg)}{\Rightarrow}

次のようにレンダリングされます。

$`\quad \style{display: inline-block; transform: rotate(-45deg)}{\Rightarrow}`$

これを使うと、面の向きを示す斜め二重矢印が描けます。

$`\quad \xymatrix{
{}
&\cdot
&{}
\\
\cdot \ar[ur]
&{}
&\cdot \ar[ul]
\\
\cdot \ar[u]
&{}
&\cdot \ar[ll]\ar[u]
\ar@{.}[uul]|{\style{display: inline-block; transform: rotate(-45deg)}{\Rightarrow}}
}`$

今後使うかも。
[/追記]

2-グラフの面は、単なる多角形ではなくて、パスのペアの情報と面の向きの情報を持つので、見た目が五角形でも、色々な面があります。その幾つかを図示します。

$`\quad \xymatrix{
{}
&\cdot \ar[dr]
&{}
\\
\cdot \ar[ur] \ar[d]
\ar@{.}[drr]|{\swarrow}
&{}
&\cdot \ar[d]
\\
\cdot \ar[rr]
&{}
&\cdot
}`$

$`\quad \xymatrix{
{}
&\cdot \ar[dr]
&{}
\\
\cdot \ar[ur] \ar[d]
\ar@{.}[drr]|{\nearrow}
&{}
&\cdot \ar[d]
\\
\cdot \ar[rr]
&{}
&\cdot
}`$

$`\quad \xymatrix{
{}
&\cdot \ar[dr]
&{}
\\
\cdot \ar[ur] \ar[d]
\ar@{.}[rr]|{\downarrow}
&{}
&\cdot
\\
\cdot \ar[rr]
&{}
&\cdot \ar[u]
}`$

$`\quad \xymatrix{
{}
&\cdot \ar[dr]
&{}
\\
\cdot \ar[ur] \ar[d]
\ar@{.}@/^1pc/[d]|{\rightarrow}
&{}
&\cdot \ar[d]
\\
\cdot
&{}
&\cdot \ar[ll]
}`$

$`\quad \xymatrix{
{}
&\cdot \ar[dl]
\ar@{.}@(dr, dl)[]|{\uparrow}
&{}
\\
\cdot \ar[d]
&{}
&\cdot \ar[ul]
\\
\cdot \ar[rr]
&{}
&\cdot \ar[u]
}`$

最後(5番目)の例は、2本のパスの片方が長さ 0 の例です。境界は自己ループパスで、対角線も自己ループです。長さ 0 のパスは、恒等射を表します。

最後に少し複雑な2-グラフの例を挙げます。

$`\quad \xymatrix{
{}
&{}
&\cdot \ar[dr]
&{}
&{}
\\
\cdot \ar[r] \ar[dr]
&\cdot \ar[ur]\ar[rr]
\ar@{.}@/^0.8pc/[rr]|{\downarrow}
&{}
&\cdot \ar@/^0.8pc/[r] \ar@/_0.8pc/[r]
\ar@{.}[r]|{\downarrow}
&\cdot
\\
{}
&\cdot \ar[rr] \ar[u]
\ar@{.}[urr]|{\searrow}
&{}
&\cdot \ar[u]
&{}
}
`$

左の三角形には対角線が描いてないので、三辺形があるだけで内部はカラッポです。残りの三角形、二角形、四角形は内部を持つ2次元図形です。もし1-圏内に図式がレンダリングされるなら、左の三辺形は可換とは言えず、残りの三角形、二角形、四角形は可換性を持ちます。

同じ境界を持つ複数の面

平面キャンバス内にペースティング図を描く場合、困ってしまうのは同じ境界を持つ複数の面です。例えば、境界として次の三辺形を考えましょう。

$`\quad \xymatrix@R+0.8pc{
{}
&{B} \ar[dr]
&{}
\\
{A} \ar[ur] \ar[rr]
&{}
&{C}
}`$

この三辺形の内部を埋める三角形が2つあるとします。つまり、同一の境界を持つ面が二枚ある状況です。どうやって図示しましょうか?

苦肉の策ですが、面を示す対角線を2本描いて、面の名前をラベルすることにします。

$`\quad \xymatrix@R+0.8pc{
{}
&{B} \ar[dr]
&{}
\\
{A} \ar[ur] \ar[rr]
\ar@{.}@/^/[rr]|{\downarrow\, \alpha}
\ar@{.}@/^1.5pc/[rr]|{\downarrow\, \beta}
&{}
&{C}
}`$

1-グラフにおいて、二頂点を結ぶ辺が1本とは限らないのと同様、2-グラフにおいて、ひとつの三辺形を境界とする三角形が一枚とは限らないのです。こういう状況では、図だけではキビシイので、テキスト表現も併用すべきでしょう。

ペースティング図とラベル

ペースティング図によるコミュニケーションが失敗する原因にラベルがあります。図の頂点、辺、面にラベルが付けられますが、「ラベルが、何に対して付けられているか?」が誤認・誤解されるリスクがあります。

ペースティング図とは、2-グラフから2-圏への写像です。2-グラフがペースティング図なのではありません。2-グラフの頂点に2-圏の対象が対応し、2-グラフの辺に2-圏の射が対応し、2-グラフの面に2-圏の2-射が対応することによりペースティング図となるのです。

2-グラフの頂点・辺・面に付くラベルには、次の二種類があります。

  • 2-グラフのなかで、各部分(頂点・辺・面)を識別するためのラベル
  • ペースティング図(と呼ばれる写像)において、2-グラフの各部分(頂点・辺・面)に対応した値(対象・射・2-射)を示すラベル

2-グラフの各部分の識別には番号を使うなら、ペースティング図の値との混同は起きにくいでしょう。例えば次の2-グラフを考えます。

$`\quad \xymatrix@R+0.8pc{
{}
&{2} \ar[dr]
&{}
\\
{1} \ar[ur] \ar[rr]
\ar@{.}@/^1pc/[rr]|{\downarrow}
&{}
&{3}
}`$

頂点に付けられた番号は識別用のラベルです。簡単な2-グラフなので、辺と面も番号ベースで識別できます。

  • 頂点の識別: 番号 $`1, 2, 3`$
  • 辺の識別: 番号のペア $`\vec{1\,2}, \vec{1\,3}, \vec{2\, 3}`$
  • 面の識別: 番号のトリプル $`\triangle(1\,2\,3)`$

この2-グラフに、2-圏 $`\mbf{Cat}`$ の対象〈圏〉、射〈関手〉、2-射〈自然変換〉を対応させるとします。その対応は次のように書けます。

  1. $`1\mapsto \cat{C}`$
  2. $`2\mapsto \cat{D}`$
  3. $`3\mapsto \cat{E}`$
  4. $`\vec{1\,2}\mapsto F`$
  5. $`\vec{1\,3}\mapsto H`$
  6. $`\vec{2\, 3}\mapsto G`$
  7. $`\triangle(1\,2\,3)\mapsto \alpha`$

今度は、識別用のラベルではなくて、ペースティング図(という写像)の値をラベルすると、次の図になります。

$`\quad \xymatrix@R+0.8pc{
{}
&{\cat{D}} \ar[dr]^G
&{}
\\
{\cat{C}} \ar[ur]^F \ar[rr]_H
\ar@{.}@/^1pc/[rr]|{\downarrow\,\alpha}
&{}
&{\cat{E}}
}\\
\quad \In \mbf{Cat}
`$

テキストに書き写すなら:

$`\quad \alpha :: F*G \twoto H:\cat{C}\to \cat{E} \In\mbf{Cat}`$

識別用のラベルとペースティング図の値ではまったく違うのですが、誤認・誤解されることがあります。単に2-グラフ(という図形)の話をしているのか、2-グラフの各部に2-圏の対象・射・2-射を割り当てたペースティング図(という写像)の話をしているのか、ちゃんと区別できるように/するように注意が必要です。