プログラミング/圏論入門 の履歴(No.1)
更新概要†
前から気にはなっていたのだけれど、
https://ktgw0316.github.io/milewski-ctfp-markdown/
こちらにフリーの日本語テキストがあると聞いて読み始めました。
→ 全然理解できなかったので、いろいろと調べながら分かった範囲をまとめようとしています
目次†
準備: 「クラス」 について†
圏論では『「要素の集まり」ではあるけれど「集合」とは呼べないもの』を扱うことがある。これは、ラッセルの逆説として有名な話、「自分自身を含まない集合全体」を集めてそれを集合であるとすると矛盾が生じる。という事実と関連している。 何でもかんでも「要素の集まり」を「集合」と言ってしまうとまずいことが起きるのだ。
そこで「集合」よりも広い意味で「要素の集まり」と言いたいときの用語として数学的な専門用語である「クラス」が使われる。これ、数学的に定義をしっかりしようとすると結構ややこしいのだが、「クラス」は「集合」と「要素の集まりだが集合とはみなせないもの(真のクラス)」の両方を含む概念。集合はクラスである一方、クラスではあるが集合ではないもの(真のクラスと呼ばれる)が存在する。
以下に出てくる「クラス」という用語は多くの場合「集合」に置き換えられるけど、そうでない場合があるので念のため「クラス」と書いている、という程度で読み進めるといい。
圏(category)の定義(公理)†
圏 $\mathcal C(O, hom(\cdot,\cdot))$ と書くとそれは以下を意味する。
- $O$ は対象(object)と呼ばれる要素のクラス(集まり)
- 任意の2つの対象 $A, B\in O$ を順序付きで取り出すと、そこに「射(morphism)」のクラス(集まり) $\mathrm{hom}(A,B)$ が付随する
- さらにこの「射」に対して下で述べる公理が成り立つ
と言ってもなんだかわからないのだが、 「対象」同士を結ぶ「矢印」をイメージするのが分かりやすい。
この図では黒丸が「対象」、矢印が「射」を表す。
Counter: 162 (from 2010/06/03),
today: 3,
yesterday: 16