Diary?

2009-05-22
Fri

(01:53)

第2回モニャドセミナーに行ってきた。今回は割と予定通りの進行になり、内容的にも結構な数の圏が紹介されて、結構報告記事を書くのがしんどいんだが、何か期待してる人が多そうなので書いてみる(お前今日の仕事はどうすんだって? 知るかよ、どうせろくに仕事がない状況だし)。既にセミナー資料が公開されているので、そちらも合わせて読んでください。

以下のレポートで大チョンボをやらかしているので、檜山さんのツッコミを踏まえて読んでください。個人的な事情(ちょっと忙しくなった)により、レポートの完成は今回は見送りです。

まずは圏の構成要素のおさらいから。以下はセミナー資料からの引用。

  • 対象の集合:O
  • 射の集合:M
  • 域:dom : M→O
  • 余域:cod : M→O
  • 恒等: id : O→M
  • 結合: ; : M×M⊃→M
  • f;g の結合可能性: dom(f) = cod(g)

これはつまりどういうことかっていうと、

  • とにかく対象が存在する。対象はなんだっていい
  • 任意の対象 a, b に対して a -> b となる射が存在する。射は写像とか関数とは限らない
  • a -> b という射において a を域、 b を余域とする
  • a -> a という恒等射を持つ
  • 射 f および g において、 f の余域と g の域が一致するとき f;g という結合が可能である

マジでこれだけ。あまりにシンプル過ぎて面食らうというか、これだけだと自分の持ってる知識を適当に継ぎ接ぎしたあげくに妙な先入観に基づく誤解をやらかしてしまいそうというかそれは俺の事なんだけど、とりあえず頑張って先入観を捨ててみよう(そういや常識というのは成人するまでに持ってしまった偏見とかいう言葉があったな)。

とにかく上記の条件に当てはまれば何だって圏だと言い張れるんだけど、例えば Web ページ同士のハイパーリンクは圏になってるんじゃないかな。この場合、対象は Web ページで射はハイパーリンクとなる。この日記の冒頭で檜山さんのブログ(檜山正幸のキマイラ飼育記)にリンクを張ってるけど、これは

  • f: Diary? -> 檜山正幸のキマイラ飼育記

という射。この場合、域(dom)が「DIary?」で余域(cod)が「檜山正幸のキマイラ飼育記」だ。それで檜山さんのブログからは本家の Chimaira.org にリンクが張られているので、

  • g: 檜山正幸のキマイラ飼育記 -> Chimaira.org

という射が存在する。域と余域は同様に考えればいい。ここで射 f の cod と g の dom が同じなので、二つの射を結合して

  • f;g: Diary? -> Chimaira.org

という事ができる。はず。恒等射については、自己言及的なハイパーリンクなんぞいくらでも作れるからそれでいいだろう(いざとなったらブラウザの更新ボタンを恒等射だと言い張る。 HTTP リクエスト上では同じだろ)。とにかく圏と見なせそうなものは割とそこらに転がってて、そういう圏論的な物の見方を体に覚えさせるというのが今回のセミナーの大きな主題。

セミナーの前半戦では自然数だけで作る圏がいろいろと紹介されたのだけど、それら全部の解説を書いてると大変なので、いくつかピックアップしてみる。ひとまずは自然数だけの圏について、セミナー資料から説明を引用。

  1. 自然数の集合 = N = {0, 1, 2, 3, ... }
  2. 自然数のペアの集合 = N×N = {(0, 0), (0, 1), (1, 0), ... }
  3. (圏の対象の集合)⊆N
  4. (圏の射の集合)⊆N、または (圏の射の集合)⊆N×N

「対象も射も自然数? 何それ?」と思う人がいるかもしれないけど、圏論というのは先に上げた構成要素を満たせば圏だという事になっているので、対象も射も自然数な圏が作れてもおかしい事はない(と思えるようになろう)。

まずは最初に例示された「Discrete」から。訳語の「離散」から想像ついちゃう人がいるかどうかわかんないけど、とりあえず Discrete における対象、射、域、余域、恒等、結合はこんな感じ(セミナー資料より)。

  • 対象: N
  • 射:N
  • dom : dom(n) = n
  • cod : cod(n) = n
  • id : id(n) = n
  • ; : n;n = n

何のこっちゃ。これだけ見ていても埒があかないので、具体的な数値を当てはめつつ考えてみる。

  • dom(1) = 1
  • cod(1) = 1
  • id(1) = 1
  • 1;1 = 1

……えーと、例えば f, g という二つの射が結合可能だとすると、

cod(f) = dom(g) ならば結合可能
cod(f) = f, dom(g) = g
Discrete における結合は n;n = n なので、
f = g の時のみ結合可能となる

つまりこれはどういう事かというと、 Discrete における射というのは

1: 1 -> 1
2: 2 -> 2
3: 3 -> 3
  :
  :
n: n -> n

こんなものばかりという事。要するに、全部の射が id になっちゃってる。こんなんでも圏の構成要素を満たしているので立派な圏だ。ちなみにこの圏は例えば N = {0, 1, 2, 3} とか N= {1, 3, 5, 7} とか N= {12, 34 ,56, 78} とか適当に N の範囲を限定したものを取ってきても、元の圏(Discrete)の構成要素を満たす。このような場合、適当に範囲を狭めても圏として成り立つようなものを部分圏とかいうらしい。

続いて「Addition」。こいつは足し算の圏なんだけど、まあまずは構成要素を見てみよう。

  • 対象: {0}
  • 射:N
  • dom : dom(n) = 0
  • cod : cod(n) = 0
  • id : id(0) = 0
  • ; : n;m = n + m

「対象が {0} ってどういうことだよ?」だって? そういうものなんだよ。実際のところ Addition においては対象が何かなんてどうでもいい話で、単にシングルトンでさえあればなんでもいい。ただ、この圏は自然数だけを相手にするのでとりあえず 0 としてある。それじゃあまた適当に数値を当てはめつつ考えてみよう。

  • dom(1) = 0
  • cod(2) = 0
  • 1;2 = 1 + 2 = 3

つまり Addition における結合というのは足し算の事で、足し算に使われる物が射なわけだな。「それじゃ対象は一体何の意味があるんじゃ?」だって? いやいや、結合すんのに必要でしょ。任意の射 f, g に対して

cod(f) = dom(g) ならば結合可能
cod(f) = 0, dom(g) = 0
なので任意の f, g は常に結合可能

となる。まあ要するに 1 + 2 だろうが 100 + 200 だろうが常にできるというか、できないと困るだろ。先に書いた対象がシングルトンならなんだっていいってのは、つまりはこういうことだ。ちなみに Addition もまた部分圏を作ることが出来て、例えば N = {0, 2, 4, 6 ...} と2の倍数だけの自然数だけを集めても足し算はできるので、これは部分圏になっている。


……とここまで書いたあたりで寝落ちしたくせえ。続きはまた後で書くことにして、とりあえずここまでをアップしておく。ただし、今日はとあるセミナー参加者にそそのかされて BP Study#21 に出ることになったので、続きを書けるのは多分明日だな。

Creative Commons
この怪文書はクリエイティブ・コモンズ・ライセンスの元でライセンスされています。引用した文章など Kuwata Chikara に著作権のないものについては、それらの著作権保持者に帰属します。