Category Theory for Programmersの2.1, 2.2の動画のノート
1.1, 1.2で説明されていた内容
オブジェクトとMorphism
Morphismは矢印
オブジェクトは、Morphismの始まりと終わりを表すもの
オブジェクトやMorphismに構造や属性はなく、原子のようなもの。
Composition
aからb, bからcの矢印が存在する時、
aからcへの矢印「g after f」が必ず存在する(。をafterと読む)
Category
オブジェクトと、矢印たちとその合成を定義する。マッピングテーブルのようなもの。
Identity
すべてのオブジェクトに、1つずつ、Identity Arrowが存在する。
Identity Arrowは、常にidと呼ばれる。
どの矢印とIdentity Arrowを合成しても、元の矢印になる。
Axiom
Left/right identity
矢印の左にあるIdentityをLeft identity
右側にあるIdentityをRight identityという。
この2つは違うもの。
Right identityの例
Associativity
h 。(g 。f) = (h 。g) 。f
Isomorphism
Functions that are both:
- Injective
- Surjective
Isomorphic functions are invertible
definition:
f 。g = id
g 。f = id
In Categorical language
e.g. f is an isomorphism if g exists
Domain, Codomain, Image, etc
Epimorphism
SurjectiveはGreekでEpic。
カテゴリーセオリーではEpimorphism。セットセオリーと違って、要素を使って定義することはできない。
なので、Epimorphismを、関数同士の関係のみを使って定義する。
上の図のように、f
がEpimorphismでないとき、b
からc
への関数が、f
のイメージ外の要素について違う要素にマップする g1
, g2
として複数存在する余地がある。この場合にも、f
のイメージからのマッピングについては同じなのでg1.f = g2.f
となる。
\exists\ g_1,g_2,\ g_1 \ne g_2 \implies g1 \circ f = g2 \circ f
f
がEpimorphismの場合には、b
=f
のイメージなので、b
からc
への関数が複数存在することは起こりえない。
なのでb
からc
へのマッピング g
は常に同じになる。これを使って、下のようにf
がEpimorphismであることを定義できる。
\forall\ g_1,g_2,\ g1 \circ f = g2 \circ f \implies g_1 = g_2
Monomorphism
Injectiveは、GreekでMonic。
カテゴリーセオリーではMonomorphism。
Epimorphismと同じような感じで、オブジェクト群c
上のオブジェクトz
から、オブジェクト群a
上のオブジェクトx1
, x2
への Morphism g1
, g2
を定義する。こうすると、f。g1
とf。g2
はどちらも、z
をy
にマップする。この場合に常にg1 = g2
なればf
は Monomorphism。以下が定義。
\forall g_1,g_2 \quad f \circ g_1 = f \circ g_2 \implies g_1=g_2
動画
Bartosz Milewski / Category Theory 2.1: Functions, epimorphisms
https://www.youtube.com/watch?v=O2lZkr-aAqk
Bartosz Milewski / Category Theory 2.2: Monomorphisms, simple types
https://www.youtube.com/watch?v=NcT7CGPICzo