順序対(ペア) (a, b) はどっから来るのでしょう? その起源、故郷はどこにあるのでしょうか?
「どうしてそんなことを疑問に思うのか? それが疑問だ」と思う方が多いでしょう。一連の話のなかで、大乗仏教中観〈ちゅうがん〉派とか手塚治虫とかを引き合いに出してはいますが、僕が仏教思想をマトモに分かるはずもなく、そこは“マジ”ではなく“ネタ”です。疑問や興味の動機は、圏論的な発想から出てくるものです。座禅を組んでいたら舞い降りた考えではありません。
「ペアはどっから来るのか?」という問題意識が納得できるように、出来るだけ丁寧な説明を試みます。参照をあまり辿らずに読めるように、以前の内容をある程度は再掲します。
内容:
圏論的な相互依存主義とは
「大乗仏教中観派と一般モデル理論」で、谷村先生の「物理学者のための圏論入門」から引用をしました。現在、谷村講義録は次のURLから入手できます。
以前とまったく同じ引用を再度します。
対象たちが無関係にばらばらにあるのではなく, 射の有機的なネットワークでつながっている, というのが圏の大事な性質です.
[対象である] a や b は集合のように内部を持っているかどうかすらわかりません. いまのところ a, b の内部には立ち入らず, さしあたって対象と呼んでいるだけです. 圏論では, 元や集合の存在に先立って, 射の存在を認めるのです.
対象 a の性質を圏論的に知りたかったら, [a 自体ではなくて] 射の連動関係・絡み具合を調べることによって対象 a の特徴を探ろうとします. [...snip...] 物理学や化学では, 未知の物質に光や音や熱や他の粒子をぶつけるなどの刺激を与えて, そこから出て来る光や破片などを見て, その物質の性質や正体をつきとめようとします. このような方法は, 物理と化学に限った話ではなく, 生物学や心理学でも似たような方法が使われるでしょう.
この引用内に端的に記述されているのですが、圏論のマントラは:
- 対象だけではなく射を考えよ。
- 対象の内部構造(が仮にあったとしても、それ)を見るな。
- 1-射(通常の射)だけではなくk-射(k ≦ n)を考えよ。
も加わります。ケンロニストは毎日これを唱えています(嘘です)。
圏やn-圏の対象が、それ自身で集合である、圏である、2-圏であるといった状況は珍しくはありません。しかし、対象の内部構造には言及せずに、対象の外にある射やk-射により議論を進めたいのです。くどいですが、繰り返し言うと:
- 対象が集合であっても、その内部の要素に言及するな。
- 対象が圏であっても、その内部の対象と射に言及するな。
- 対象が2-圏であっても、その内部の対象と1-射と2-射に言及するな。
- …(以下同様)…
対象の内部構造を見ないので、すべての議論は対象の外にあるモノ、つまり対象をホストしている環境が備えているモノを使って行います。「環境が備えているモノ」とは、環境側にある(他の)対象、射、2-射、…… です。
今回の話における圏論的発想とは、今述べたような捉え方/考え方だと思ってください。モノの構造や特徴は、モノの内部に在るのではなく、他のモノ達との関係性、相互依存性のネットワークのなかに在る、のです。相互依存性のネットワークは、環境側が持っています。
すごく雰囲気的な例え話をすれば、… … 囲み記事にしよう。
集合や圏が、硬い殻を持った生き物だとしましょう。殻をかち割れば、内臓やら何やらが見えます。でも、殻を割られたら彼らは死にます。生物学的研究のために、殻を割って解剖をすることもあるでしょう。が、殺生は良くない(また仏教だ)。できるなら、殻を割らないで彼らの特徴や生態を調べるほうが望ましいでしょう。
無闇な殺生はつつしめという教えです。これ、例え話ね。
[/補足]
恐縮だが、またモノイドの例
前節で述べた圏論のマントラに忠実に従うのは容易ではありません。今日は頑張って従いますが、圏論の戒律は厳しくはないので、対象の内部構造を使ってしまうことも日常茶飯事です。そこはご安心下さい。
さて、毎度同じ例で恐縮ですが、モノイド M = (M, ・, 1) を考えます。"・"は二項演算、"1"は単位元です。今書いた "M = (M, ・, 1)" は記号の乱用をしていて、モノイド構造とその台集合〈underlying set〉を同じ"M"で表しています。ちゃんと区別すれば、
- M = (U, ・, 1)
"・"は中置演算子記号のつもりですが、前置する関数記号として使いたいときは、Haskellのセクション風に"(・)"とします。念の為、y = (・) と別名も付けておきましょう。
以上の状況で、
- U in Set
- y:U×U→U in Set
です。"in"の使い方は:
- X in C ⇔ X∈|C|
- f:X→Y in C ⇔ f∈C(X, Y)
上で言ってることは、「Uは圏Setの対象」「yは圏Setの射」です。
では、単位元1はどうでしょうか?
- 1は圏Setの対象ですか?
- 1は圏Setの射ですか?
どちらの問に対しても答えはNOです。1は集合Uの要素です。
- 1∈U
次のモットーを思い出してください。
- 対象が集合であっても、その内部の要素に言及するな。
集合Uの要素1を表に出したら、圏論の戒律(厳しくはないですよ!)を破っています。じゃ、どうすればいいの? -- 要素1の代わりに、要素1をポインティングする写像
- i:1→U
を使います。これならば、
- 1は単元集合で、圏Setの対象です。
- iは写像で、圏Setの射です。
したがって、Uの要素への言及はなくなっています。Uの環境であるSetに備わったモノだけになっています。
モノイドの法則である結合律、左単位律、右単位律も、U, y, i と、どんな圏でも持っている id(恒等射), ;(結合)、それとデカルト・モノイド構造である ×(直積), α(結合律子), λ(左単位律子), ρ(右単位律子)で記述します(律子に関しては「律子からカタストロフへ」を参照)。変数は用いません。idUをjと略記することにして:
- [結合律] (y×j);y = αU,U,U;(j×y);y :(U×U)×U→U in Set
- [左単位律] (i×j);y = λU : 1×U→U in Set
- [右単位律] (j×i);y = ρU : U×1→U in Set
添字が付いた αU,U,U, λU, ρU は圏Setの射で、
- αU,U,U:(U×U)×U→U×(U×U) in Set
- λU:1×U→U in Set
- ρU:U×1→U in Set
圏Setを外から眺める
前節で頻繁に、中置演算子記号"×"が出てきています。これは直積集合を作る演算を表します。"×"(が表すモノ)は何でしょうか?
- ×は圏Setの対象ですか?
- ×は圏Setの射ですか?
どちらの問に対しても答えはNOです。×は、次のような二項関手です。
- (×):Set×Set→Set
おっと、2つの"×"の区別が付くように片方を黒板文字にしておきます。
- (×):Set𝕏Set→Set
では、二項関手(×)の棲んでいる環境は何でしょうか? Setを対象として持つような環境ですね。これには、小さくない圏も許す“圏の圏”CATを持ち出す必要があります*1。
- 圏Setは、2-圏CATの対象です。
- 二項関手(×)は、2-圏CATの射です。
そして、
- α, λ, ρ は、2-圏CATの2-射です。
出てくる記号(が表すモノ)が、いったいどこに棲んでいるのか、その次元はいくつか(対象か、射か、2-射か)を常に強く意識するようにしてください。"in"記法を徹底的に使うといいですよ。
次の記号を使うことにします。
- I -- 単一対象と恒等射だけからなる自明圏 I in CAT
- 𝕀 -- 単元集合を指すポインティング関手 𝕀:I→Set in CAT
- J -- IdSetの別名 J = IdSet : Set→Set in CAT
- Y -- (×)の別名 Y = (×) : Set𝕏Set→Set in CAT
- 𝕏 -- メタな直積演算子(二項関手) in (さらに上の環境)
- α, λ, ρ -- メタな結合律子/左単位律子/右単位律子(自然変換) in (さらに上の環境)
"*"を関手の図式順結合記号として、α, λ, ρ のプロファイルを書いておきましょう。モノイドの法則との類似性に注意してください。
- α::(Y𝕏J)*Y⇒αSet,Set,Set*(J𝕏Y)*Y : (Set𝕏Set)𝕏Set→Set in CAT
- λ::(𝕀𝕏J)*Y⇒λSet : I𝕏Set→Set in CAT
- ρ::(J𝕏𝕀)*Y⇒ρSet : Set𝕏I→Set in CAT
環境Set内のモノイドと、環境CAT内のデカルト圏(の実例Set)は次のような類似性を持ちます。
環境Setにおいて | 環境CATにおいて | |
---|---|---|
台対象 | U | Set |
単位対象 | 1 | I |
単位ポインティング射 | i:1→U | 𝕀:I→Set |
台の恒等射 | j = idU:U→U | J = IdSet:Set→Set |
乗法/積 | y = (・):U×U→U | Y = (×):Set𝕏Set→Set |
結合性 | 結合律(等式) | 結合律子 α (自然変換) |
左単位性 | 左単位律(等式) | 左単位律子 λ (自然変換) |
右単位性 | 右単位律(等式) | 右単位律子 ρ (自然変換) |
𝕏, α, λ, ρ は、CATのさらに外(上)にある環境の射と2-射です。
この類似性は、マイクロコスモ原理に由来するもので、無限に続きます。今日は深入りしませんが、Setをホストする環境であるCAT、さらにCATをホストする環境などを扱うためにグロタンディーク宇宙や宇宙公理が必要になります。
太字だの黒板文字だのを使うのはシンドイ、勘弁してくれという人(それは僕だ!)のために、ダッシュ記法という書き方を考案しました(メモ編の「モノイドやモノイド圏の指標 補足解説」参照)。これを使うと太字だの黒板文字だのは避けられます。
Uにおいて | Setにおいて | CATにおいて | さらに上の環境において |
---|---|---|---|
1 | 1' = 1 | 1'' = I | 1''' |
i:1'→U | i' = 𝕀:1''→Set | i'':1'''→CAT | |
j = idU:U→U | J = IdSet:Set→Set | J' = IDCAT:CAT→CAT | |
y = (・):U×U→U | Y = (×):Set×'Set→Set | Y' = (×') = (𝕏):CAT×''CAT→CAT | |
結合律 | α | α' = α | |
左単位律 | λ | λ' = λ | |
右単位律 | ρ | ρ' = ρ |
ダッシュ〈プライム〉を使えば、文字種/文字装飾をだいぶ減らせます。扱う次元が増えれば、文字種/文字装飾で区別する方式は破綻します。なお、ダッシュの数は直接に次元を表すわけではなくて、基準となった記号(ダッシュなし)からいくつ次元を上げたかを示すだけなので注意してください。
ペアを作る操作
では、a∈A, b∈B に対するペア (a, b) について考えていきます。(a, b) は、「ハイフンをプレースホルダ(何かを入れる場所)として、(-, -) というオペレータ」があって、それに「引数 a, b」を渡したように見えます。となると、(-, -) は2引数(2項)のオペレータでしょうか?
とりあえず、 (-, -):A, B→A×B と書いてみます。矢印の左の A, B は2引数のつもりで書きましたが、2引数は1タプル引数ですから、(-, -):A×B→A×B ですね。この状況で (-, -) はいかなるオペレータか? と考えると:
- (-, -) = idA×B
以上のように考えるのは何も間違ってないし、まっとうで健全な態度です。当然ながら、「(a, b) を使ったらマズイ」なんてことは全くありません。ですが、我々は圏論の教義、もとい、考え方に従うので、そもそも集合Aの要素には言及しません。
- 対象が集合であっても、その内部の要素に言及するな。
要素の代わりに、集合圏の単位対象 1' = 1 からの射を使えます。1'からの射をポインティング射〈pointing morphism〉、あるいはポインター〈pointer〉と呼びましょう。a∈A, b∈B の代わりに、f:1'→A, g:1'→B in Set を考えます。
ペアリングは、2つの要素ではなく2つのポインターに対して構成されます。すぐに思いつくのは、×です。(×):Set×'Set→Set は関手(二項関手)でしたから、関手の値である f×g は意味を持ちます。
- (f×g):1'×1'→A×B in Set
このままだと dom(f×g) = 1'×1' でポインターとは言えません(ポインターの域は1')。対角自然変換δの1'成分は:
- δ1':1'→1'×1' in Set
これを前結合〈pre-composition〉すると:
- δ1';(f×g):1'→A×B in Set
ポインター f, g に対する δ1';(f×g) を <f, g> と略記することにします*3。
- <f, g>:1'→A×B in Set
いま定義されたペアリング <-, -> はプリミティブではありません*4。×, δ, 1', ; から構成されています。そして、構成の素材は、(1'を除けば)Setの外の世界に棲んでいます。つまり、<-, -> はメタレベルの素材から組み立てられているのです。
ペアリングとデカルト構造
集合論でペアをよりプリミティブな素材から構成する場合、通常はクラトフスキーペア (a, b) := {{a, b}, {a}} を使います。これが集合論的ペアの標準的定義です。
それに対して、圏論的ペアの定義として、前節で <f, g> := δ1';(f×g) : 1'→A×B in Set を提示しました。この定義は、集合の要素を使ってません。よりプリミティブな素材は、集合圏Setの外(上)の世界からやって来ます。
- 集合圏内のペアリングを構成するには、素材を上位の階層から調達する必要がある。
上位の階層であるCAT内でペアリングを構成したいなら、さらに上位の階層から素材を調達する必要があります。こうして我々は、無限階層を無限に登り続けるはめになります。でも、「世界はそんなふうにできている」と淡々と受け入れましょう。「悟り」ですね。
まー、それはそうと、圏論的に定義した <-, -> が集合論的ペアの代替としてうまく機能するのでしょうか? Setのデカルト構造は、「デカルト構造の無限タワー: 怖がらずに登れ // デカルト構造」で述べたように、×, i' に関するモノイド構造に加えて、!, π1, π2, δ を使って定義します。これらが満たすべき公理(等式)は、環境CATのなかで記述されます。
デカルト構造の定義には、「デカルト圏、こんな定義もあります」で紹介したように、随伴性を利用します。随伴性〈随伴系〉の素材を列挙すると(紛らわしいけど、!, i, 1の違いに注意!):
- !'Set:Set→1'' in CAT
- i':1''→Set in CAT
- δ'Set:Set→Set×'Set in CAT
- (×):Set×'Set→Set in CAT
ここで、!'とδ'は、CATの外(上)の環境にある自然変換で、!'Set と δ'Set はその特定成分射です。×', !', δ' などは、CATのデカルト構造の素材なんですね。つまり、Setのデカルト構造のための素材調達の段階で、CATのデカルト構造の存在を前提してます。そのCATのデカルト構造は、その外の環境のデカルト構造なしには定義できません。そう、マイクロコスモ原理です。「世界はそんなふうにできている」のです。
デカルト構造を定義する随伴系は次のように書けます。
- (η, ε): i' -| !'Set :Set→1'' in CAT
- (δ, π): (×) -| δ'Set :Set→Set×'Set in CAT
恒等は一律に"^"で表すとして、単位・余単位のプロファイルは:
- η::Set^⇒!'Set*i':Set→Set in CAT
- ε::i'*!'Set⇒(1'')^:1''→1'' in CAT
- δ::Set^⇒δ'Set*(×):Set→Set in CAT
- π::(×)*δ' Set⇒(Set×'Set)^:Set×'Set→Set×'Set in CAT
ここで、η = ! 、εは自明な2-射、δは対角自然変換そのもの、π = <π1, π1>' = δ'Set*(π1×'π2) です。CATより上の世界の概念(×', !', δ' など)がバンバン使われているのが分かるでしょう。「世界はそんなふうにできている」のです。
随伴系はニョロニョロ等式〈snake {equation | identity}〉で統制されます。2つの随伴系があるので、合計4つのニョロニョロ等式があり、それがデカルト構造に対する天空の支配者〈Ruler in the Sky〉になっています。
天空のニョロニョロ等式から、それなりの作業を経ることにより、我々にお馴染みの等式/命題を得ることができます。f, h:1'→A, g, k:1'→B in Set に対して:
- <f, g>;π1 = f
- <f, g>;π2 = g
- <f, g> = <h, k> ⇔ f = h かつ g = k
圏論的オペレータ/自然変換の添字をチャンと付けて、プロファイルも添えれば:
- <f, g>A,B;(π1)A,B = f : 1'→A in Set
- <f, g>A,B;(π2)A,B = g : 1'→B in Set
- [(<f, g>A,B = <h, k>A,B : 1'→A×B) ⇔ (f = h :1'→A かつ g = k : 1'→B)] in Set
これらの事実は、圏論的ペアリング <-, -> を、集合論的ペアリング (-, -) と同じように取り扱ってもよいことを保証します。
階層横断的な記述
圏論のマントラによれば、我々が集合圏Set内で作業をするとき、Setの対象である集合の「内部構造を見るな」と訓戒されています。しかし、「見るな」と言われても見えてしまうかも知れません。
A in Set, a∈A と見えてしまったとします。見えてしまったものはしょうがないですが、aを直接使うのは憚られます。そんなとき、要素aの代理としてaをポインティングするポインティング写像 f:1'→A in Set, 1' = {0}, f(0) = a を使います。fはaから一意に決まるので、a~ と書きましょう。
a~ は、僕が格上げ〈bump up | promotion〉と呼んでいたものです。格上げについては、例えば次を参照。
集合論的な/あるいは内部的な (a, b) の代わりに、圏論的な/あるいは外部的な <a~, b~> を使っても何も不都合は起きません。次のような同値性がありますから。
- (a~ = b~ :1'→A in Set) ⇔ (a = b in A)
<a~, b~> という表現は、集合圏Setにいながら、その下の階層である集合Aの内部も見ています。その意味で2つの階層にまたがった記述になっています。「内部構造を見るな」を破ってますが、階層的世界を垂直方向に見るときは、階層横断的な観察と記述も必要だと思います。
おわりに
ある階層における概念が、それより下の階層で定義された概念をもとに構成されるなら、安心感もあるし確実な感じがします。一方で、ある階層における概念が、それより上の階層における概念をバンバン使って構成されたら、不安をおぼえ、不確実な感じがします。
僕の比較的最近の経験で言えば、「上の階層を前提してしまう」のはもうしょうがないと思います。モノイド構造、デカルト構造、ペアリングなどは、構成の前提がドンドン上の階層に逃げてしまう典型例です。割と簡単で基本的な構造でこの現象が起きるので、避けるのは無理だろう、と(現状では)思っています。