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

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

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

参照用 記事

みずすましさんの「圏論メモ」への注釈集

「代数系と準同型写像の絵を描いてみました」にて:

圏論の概念や用語で少し気になる点もあるんですが、それは次の機会(があれば)にしましょう。

間をおくと、「次の機会」は消えて無くなりそう。だから、とり急ぎ書いておきます。

みずすましさんのエントリー「圏論メモ」を上から順に読んでいって、気がついたことを記していきます。

圏の対象は(構造付き)集合とは限らない

圏の例として:

  • 対象は、集合に構造(例:演算とか順序とか)を載せたモノ
  • 射は、構造を(なんらかの意味で)保つ写像

であるものは実際にとても多いのですが、あまりこのケースに捕<と>らわれないほうがいいと思います。例えば、“図形としてのブレイド(組み紐)”*1の圏では、対象は有限個の点(紐を打ち付ける釘)、射は立体交差した曲線(紐)達です(「アミダとブレイド」を参照)。

用語と記号法: domain/codomain, homset

codomainに対する訳語として「値域」は避けたほうがいいかと。写像f:X→Yに対して、像f(X)(これはYの部分集合)を値域と呼ぶ場合もあるので。僕は「域/余域」を使っています。

Cのホムセット(homset, hom-set)を表すために、HomC(X, Y), homC(X, Y), MorC(X, Y)も使われますが、(印象として)一番多いのはC(X, Y)のようです。C(X, Y)は短い記法なので僕は好きです。

「射の射」って?

関手を、「圏の圏の射」と捉えるのはよい(正しい態度)ですが、関手とは「射の射」と言ってしまうと、言葉使いで誤解を招くかもしれません。というのも、射と射を結ぶ、より高次の射として2-射とか2-セルという概念があるからです。人によっては(少なくとも僕は)「射の射」で2-セルをイメージします。関手とは、「対象には対象を、射には射を対応させる“写像”」という(普通の)説明のほうが無難でしょう。

圏としてのモノイド

非負整数(0を含めた自然数)全体をNとします(Iは違和感があるので)、Z4は(4で割った余りとしての){0, 1, 2, 3}、Bは真偽値集合(または{0, 1})とします。これらが(それぞれ1個の演算を伴って)圏とみなせることを紹介してますが、ここ、もう少し明瞭にしたほうがいいと思います。

まず、(N, AddOneN)の例。これに対応する圏をAとします。その対象集合は、Obj(A) = |A| = {N} であり、A単一対象の圏です。「極端な圏達」で述べたごとく、単一対象の圏=モノイドです。この“圏としてのモノイド”を少し詳しく見てみます。

明らかに、Aには射idNがあり、これは idN(i) = i で定義されるN上の恒等写像。他に、AddOneN(i) = i + 1 で定義されるAddOneNもあります。ということは、結合(合成)AddOneN;AddOneNとか、AddOneN;AddOneN;AddOneNなども射として存在します。累乗形式で書いてまとめれば、Aの射集合Mor(A) = {AddOneNk | k = 0, 1, 2, ...}(ただし、AddOneN0 = idN)。

結局、圏Aは、非負整数Nの足し算モノイドと同型になります。同様に、圏BZ4の足し算(mod 4)モノイド、圏Cは真偽値のXOR(あるいはmod 2の足し算)モノイドになります。いずれのケースでも、集合Xとf:X→Xの組(X, f)から出発して、自己写像モノイドEnd(X)なかでfから生成される部分モノイドを考えたことになっています。

あるいは、単なる記号としてのfを準備して、f0 = 1, f1 = f, f2 = ff, f3 = fff, ... などとして:

  1. fn;fm = fn + m として演算「;」(圏の結合=モノイドの積)を定義。特に条件はない。
  2. f4 = 1 という条件(関係)を入れる。
  3. f2 = 1 という条件を入れる。

としても、圏としてのモノイドA, B, Cを再現できます。

さて、NZ4Bなどを圏とみなすもうひとつの方法は、これらの上に存在する順序構造、あるいは有向グラフ構造(プレ順序構造のハッセ図)をベースに圏を作ることです。この場合は、単一対象の圏=モノイドにはならずに、“圏の対象集合=もとの集合”となります。

具体圏とは

具体圏(言葉としては「具象圏」のほうが好きですが)とは、対象が「集合+構造」で、射が「構造を保つ写像」である圏、と理解すればいいと思います。「集合+構造」の構造を忘れて(捨て去り)、集合だけを取り出す行為は関手とみなせて、忘却関手と呼びます。よって、具体的な圏とは集合圏への忘却関手を持つ圏といってもいいでしょう。

ただし、「忘却関手ってなに?」と聞かれるとちゃんと答えるのは難しいです。「構造」やら「忘れる」ことを真面目に定義しなくてはならないので。場合によっては、構造だけではなくて、土台の集合の一部を捨てることもあります。例えば、体K上のベクトル空間Vの線形構造を“忘却”するとき、Kのほうは集合ごと捨て去って、Vの土台の集合だけを取り出したりします。

一般的な忘却関手をうまく定義できれば、集合圏以外の圏に対して「相対的に具体(具象)的」という概念も定義できるはずです。が、僕、ハッキリわかりませんわ、やっぱり。

小規模・軽量な圏

圏が何重にも入れ子になった絵が登場しますが、これはいいですね。モノイドやプレ順序構造を圏と考えれば、「圏の圏」はすぐさま登場します。例えば、数個のモノイドとモノイド準同型からなるグループを圏と考えて、それらを基点付き集合(pointed sets)へと“忘却”する関手を考えれば、「圏(モノイド)の圏(グループ)の圏(グループ2つと忘却関手)」です。

集合圏のような巨大な圏から出発すると、「圏の圏」や「圏の圏の圏」は考えにくいのですが、小規模・軽量な圏なら抵抗なく入れ子を作れます。圏の入れ子に慣れておくと、圏Cat(全ての小さい圏の圏)とかも受け入れやすいと思います。

※もうひとつのエントリー「関数型言語Haskellとの関係」についても、できれば間をおかずに(後で)コメントしたいと思いますが……

*1:「図形としての」と付けたのは、ブレイドブレイド群の要素と考えることも多いからです。