Cが圏のとき、Cop→Set という関手をC上の前層と呼びます。C上の前層の全体 [Cop, Set] は、関手圏として圏になります(その射は自然変換)。Cが小さいときは、[Cop, Set] はトポスになります。この前層トポスの部分対象分類子〈subobject classifier〉の構成がめんどくさいですね。どうやって作るか忘れちゃうんでメモしておきます。
具体例を出さないと退屈しちゃう構成法だけど、例を入れると長くなるのでとりあえず作り方のみ。その代り、作り方は丁寧に追いかけます。ちょっともたついている(未整理で冗長な)ところがありますが、省略はしないで書いています。
内容:
小さい圏のふるい
この記事では、Cは小さい圏とします。Cの対象Aに対して、C/Aをオーバー圏とします。オーバー圏の対象類を今回は使います。オーバー圏の対象類とは:
- Obj(C/A) = |C/A| = {f∈Mor(C) | cod(f) = A}
Obj(C/A)をC→Aと書くことにします。C→Aは射の集合なので、C→A⊆Mor(C) です。
J⊆Mor(C) に関する次の性質を考えます。
- u∈J かつ tとuがこの順で結合可能 ならば、t;u∈J
Cの射の集合Jがこの条件を満たすとき、次のような言い方をします。
- 射の集合Jは、前結合に関して閉じている。
- 射の集合Jは、前結合に関して安定している。
- 射の集合Jは、前結合に関して飽和している。
トポスの文脈では、「飽和している〈saturated〉」という言い方をよくします*1。前結合または後結合に関して飽和した射の集合は、モノイドのイデアルと似たものです。空集合も(前結合または後結合に関して)飽和しているとします。前結合に関して飽和した射の集合を、短く前結合飽和集合〈a set saturated under precomposition〉、あるいはより短く飽和集合〈saturated set〉と呼ぶことにします*2。
前結合飽和集合は、圏C全域に渡ってモヤッと広がるかも知れません。特定の対象Aの上側(絵の描き方により下側)に閉じ込められている場合はふるい〈sieve | 篩〉と呼びます。Sが対象AにおけるCのふるいだとは:
- S⊆C→A (Aの上側に閉じ込められている。)
- Sは前結合に関して飽和している。
一番目の条件から、Sは u:X→A の形の射の集まり*3です。単なる集まりではなくて、Cの射を前結合してもSからはみ出さない集まりです。
対象AにおけるCのふるいの全体をSieveC(A)と書きます。
- S∈SieveC(A) ⇔ Sは、対象AにおけるCのふるい
⇔ Sは、C→Aに含まれる飽和集合
圏Cが文脈から明らかなときは、SieveC(-)を単にSieve(-)と書きます。
ふるい集合反変関手
圏Cの対象Aに対して、Aにおけるふるいは、射の集合C→Aに含まれます。これは次のように書けます。
- S∈Sieve(A) ⇒ S⊆C→A
ベキ集合をPow(-)と書くと、すぐ上の事実は、次のようにも書けます。
- S∈Sieve(A) ⇒ S∈Pow(C→A)
Pow(-)を反変関手と捉えると、A|→Pow(C→A) という対応は反変関手になります。それは、次の理由からです。
- A|→C→A という対応は、f:A→B in C に対して、f*(u:X→A) := u;f = fu と定義して共変関手 C→Set に拡張できる。拡張により作られた関手をOverCとすると、OverC:C→Set, OverC(A) = C→A, OverC(f) = f* 。
- PowをSet上の自己反変関手 Pow:Setop→Set とみなす(像ではなくて逆像対応を使う)。すぐ上の共変関手 OverC:C→Set に反変関手 Pow:Setop→Set を結合すると、反変関手 OverC*Pow:Cop→Set になる('*'は関手の図式順結合)。
対応 A|→Sieve(A) は、反変関手 OverC*Pow:Cop→Set の部分反変関手(部分関手は次節で述べる)に拡張できます。対象に対する対応 Sieve:|C|→|Set| は既に定義されています。f:A→B in C に対して、写像 f★:Sieve(B)→Sieve(A) in Set を定義します。f★は、Pow(C→(-)) の射部分〈morphism part〉と同じです。具体的に書き下せば:
- 部分集合 T⊆C→B に対して、f★(T) := {u∈C→A | u;f∈T} = (写像 f*:C→A→C→B に対するTの逆像)
問題は、TがBにおけるふるいのとき、f★(T)がAにおけるふるいになるかです。が、「TはBにおけるふるい ⇒ f★(T)はAにおけるふるい」は定義からすぐわかるので、f★を Sieve(B)→Sieve(A) という写像とみなせます。Sieve(f) := f★ : Sieve(B)→Sieve(A) と定義すれば、Sieve(-)は Cop→Set という反変関手になります。
以上により、Cの対象ごとにそのふるい全体の集合を対応させる対応は、Cから集合圏Setへの反変関手となりました。これをふるい集合反変関手〈sieve-set contrafunctor〉と呼びましょう。切れ目を入れるなら、「ふるい集合-反変関手」です。
部分関手、部分対象
C上の前層は集合圏への(反変)関手なので、集合圏特有の性質を使えます。集合圏には、集合の包含関係があるので、それを使って部分関手*4という概念が定義できます。F, G:Cop→Set のとき、FがGの部分関手〈subfunctor〉であるとは:
- 任意の A∈|C| に対して、F(A)⊆G(A) ---(集合の包含条件)
- 任意の f:A→B in C に対して、F(f) = G(f)|F(B), G(f)(F(B))⊆F(A) ---(写像の包含条件)
二番目の条件は、F(f):F(B)→F(A) が G(f):G(B)→G(A) を制限して得られることです。あるいは、次の図式が可換なことです。
F(B) ⊆→ G(B) | | F(f) G(f) | | v v F(A) ⊆→ G(A)
集合の包含関係の記号を流用して、FがGの部分関手であることを F⊆G と書きます。
- F⊆G ⇔ FはGの部分関手である
関手 G:Cop→Set の部分関手の全体をSub(G)と書きます。
- F∈Sub(G) ⇔ F⊆G ⇔ FはGの部分関手である
部分関手の概念は、共変関手でも反変関手でも同じように定義できます。F, G が前層で、F⊆G のとき、FはGの部分前層〈subpresheaf〉ともいいます。
部分対象〈subojbect〉の一般論を、前層の圏[Cop, Set]に適用するなら、次のようになります; Gを固定して、成分がすべて単射である自然変換 α::F⇒G の全体をSUB(G)とします。(α::F⇒G), (β::H⇒G)∈SUB(G) が同値であることを次のように定義します。
- α ≡ β ⇔ 自然同型(可逆自然変換) ξ::F⇒H があって ξ;β = α, ξ-1;α = β (';'は自然変換の図式順縦結合)
単射自然変換の集合SUB(G)を同値関係≡で割って、Sub(G) := SUB(G)/≡ と定義します。
しかし、このような一般論を経由せずに、直接Sub(G)を定義しても同じだし、簡潔なので、最初に出した部分関手(部分前層)の定義を採用することにします。
部分関手の特性自然変換
圏C上のふるい集合反変関手Sieveは、圏Cから集合圏Setへの反変関手でした。つまり、SieveはC上の前層です。C上の前層G(つまり、関手 Cop→Set)を固定します。前層Gの部分前層Fに対して、自然変換(前層のあいだの準同型)χF::G⇒Sieve:Cop→Set を構成しましょう。これから構成する自然変換χFを、部分前層Fの特性自然変換〈{characteristic | indicator} natural transformation〉と呼びます。χFは、Gにも依存するので、χGFのように書くべきですが、Gは省略しています。なお、'χ'はギリシャ文字カイで、部分集合の特性関数の意味でよく使われる文字です。
記号を簡単にするために、φ = χF = χGF と置きます。φ::G⇒Sieve:Cop→Set です。A∈|C| に対して成分表示すれば、
- φA:G(A)→Sieve(A) in Set
G(A)は集合、φAは写像なので、x∈G(A)ごとに、φA(x)∈Sieve(A) を決めればφAが決まります。A上のふるいφA(x)は、要素xと部分前層Fに依存します(φはFから決まるものなので)。
φA(x)∈Sieve(A) ということは、φA(x)⊆C→A なので、u:X→A という形の射がφA(x)に所属するかどうかを決めればいわけです。次のように定義します。
- (u:X→A)∈φA(x) ⇔ G(u)(x)∈F(X)
まず、定義の右辺の意味を確認します。Gは反変関手だったので、u:X→A に対して G(u):G(A)→G(X) in Set が決まります。x∈A だったので、写像G(u)の値G(u)(x)は集合G(X)の要素として決まります。F(X)⊆G(X) であることから、G(u)(x)∈F(X) かどうかは意味を持ちます。よって、集合 {(u:X→A)∈C→A | G(u)(x)∈F(X)} は確定します。この集合がふるいであるかどうかが問題です。
φA(x)が(Aにおける)ふるいであるとは、次のことです。
- (u:X→A)∈φA(x), t:Z→X in C ⇒ t;u∈φA(x)
命題の結論 t;u∈φA(x) は、φの定義から G(t;u)(x)∈F(Z) を意味します。Gが関手であることから、(G(t);G(u))(x)∈F(Z) 、つまり G(t)(G(u)(x))∈F(Z) 。示すべきは、次になります。
- G(u)(x)∈F(X), t:Z→X in C ⇒ G(t)(G(u)(x))∈F(Z)
部分関手の定義の「写像の包含条件」から y∈F(X) ⇒ G(t:Z→X)(y)∈F(Z) がいえるで、上記命題は成立します。これで、φA(x)が(Aにおける)ふるいであることが示せました。x∈G(A) がなんであっても、φA(x)∈Sieve(A) です。
F⊆G に対して、以上の手順で写像 φA:G(A)→Sieve(A) が決まります。Aを動かしたときに自然変換となるためには、次の図式が可換であることが要求されます。
G(B) - φB → Sieve(B) | | G(f) Sieve(f) | | v v G(A) - φA → Sieve(A)
この図式は集合圏における図式なので、要素 y∈F(B) をとって2つの経路に沿って値を追跡すれば可換性が示せます。φB(y), φA(G(f)(y)) をそれぞれT, S と置けば、次のようになります。
- T = φB(y) = {v∈C→B | G(v)(y)∈F(dom(v)) }
- S = φA(G(f)(y)) = {u∈C→A | G(u)(G(f)(y))∈F(dom(u)) }
f★(T) = S を示せば、上の図式の可換性が示せます。
u∈f★(T) // f★ の定義より ⇔ u:f∈T // Tの定義より ⇔ G(u;f)(y)∈F(dom(u)) // Gは反変関手なので ⇔ (G(f);G(u))(y)∈F(dom(u)) ⇔ G(u)(G(f)(y))∈F(dom(u)) ⇔ u∈S よって u∈f★(T) ⇔ u∈S
これで、Gの部分関手Fから決まる φ::G⇒Sieve:Cop→Set が自然変換になっていることが分かりました。ちゃんと書けば φ = χF = χGF 。
最大ふるいと部分関手の構成
S∈Sieve(A) ならば S⊆C→A でした。AにおけるふるいはC→Aの部分集合なのです。C→A自体はもちろんC→Aの部分集合ですが、Aにおけるふるいにもなっています。つまり、C→A∈Sieve(A) です。C→Aは、Aにおけるふるいのなかで最大なので、最大ふるい〈maximal sieve〉と呼びます。Aにおける最大ふるいをMaxAとも書きます。定義より、MaxA∈Sieve(A), S∈Sieve(A) ⇒ S⊆MaxA です。
f:A→B in C に対して、f★ = Sieve(f) : Sieve(B)→Sieve(A) は、f* = Over(f) : Over(A)→Over(B) の逆像により定義されました。逆像を対応させることから、次は明らかでしょう。
- f★(MaxB) = MaxA
fがなんであっても、f★は最大ふるいを最大ふるいに移します。
前層(反変関手) G:Cop→Set を選んで、前層の準同型(自然変換) ξ::G⇒Sieve:Cop→Set を考えます。この自然変換ξから、Gの部分関手Hを構成しましょう。
まず、対象Aごとに、F(A)の部分集合H(A)を定義します。
- H(A) := {x∈F(A) | ξA(x) = MaxA}
MaxA∈Sieve(A) で、その(一点の)逆像をとっているので、H(A)はすべての対象Aで決まります。
f:A→B in C に対して、H(f):H(B)→H(A) は、写像 G(f):G(B)→G(A) を部分集合H(B)に制限して定義します。H(f) := G(f)|H(B) です。ただし、G(f)による部分集合H(B)の像 G(f)(H(B)) が部分集合H(A)に入ってないとうまくありません。次の命題が必要です。
- y∈H(B) ⇒ G(f)(y)∈H(A)
H(-)の定義により言い換えれば、
- ξB(y) = MaxB ⇒ ξA(G(f)(y)) = MaxA
ξは自然変換だったので、次の図式は可換です。
G(B) - ξB → Sieve(B) | | G(f) Sieve(f) | | v v G(A) - ξA → Sieve(A)
要素に関しては、
y ------ ξB → MaxB | | G(f) Sieve(f) | | v v G(f)(y) - ξA → ξA(G(f)(y))
これと、Sieve(f)(MaxB) = f★(MaxB) = MaxA から、ξA(G(f)(y)) = MaxA がいえます。よって、HはFの部分関手としてキチンと定義されています(well-defined)。H(-) = ξ(-)*(Max(-)) と書けますが、H = ξ*(Max) と略記します。
部分関手と自然変換の1:1対応
前層(反変関手) G:Cop→Set を固定して考えます(Gは任意に選べますが)。Gの部分関手全体からなる集合はSub(G)でした。G:Cop→Set から、ふるい集合反変関手 Sieve:Cop→Set への自然変換の全体からなる集合をNat(G, Sieve:Cop→Set)と書きます。Nat(G, Sieve)とも略記します。
- ξ∈Nat(G, Sieve) ⇔ ξ::G⇒Sieve:Cop→Set
Cは小さいと仮定していたので、Sub(G)やNat(G, Sieve)は集合として確定します。
Gの部分関手F(F∈Sub(G))に対して、Fの特性自然変換 φ = χF :: G⇒Sieve が定義できました。また、自然変換 ξ::G⇒Sieve があると、Fの部分関手 H = ξ*(Max) が定義できました。これらの対応 F|→φ, ξ|→H が互いに逆であり、Sub(G)とNat(G, Sieve)のあいだの、集合としての同型を与えることをこの節で示します。
「部分関手→自然変換→部分関手」のラウンドトリップ
F∈Sub(G) に対して、φ = χF :: G⇒Sieve として、F' = φ*(Max) : Cop→Set とします。F' = F : Cop→Set を示しましょう。まず、A∈|C| に対して、集合として F'(A) = F(A) である必要があります。
x∈F'(A) // F'の定義より ⇔ x∈φA*(MaxA) // 逆像 φA* の定義より ⇔ φA(x) = MaxA // 集合に関して S = T ⇒ T⊆S だから ⇒ MaxA⊆φA(x) // MaxA = C→A だから ⇔ ∀u∈C→A.( u∈φA(x) ) // φの定義(Fからφは作られる)より ⇔ ∀u∈C→A.( G(u)(x)∈F(dom(u)) ) すぐ上の全称命題を u = idA と具体化すると、x∈F(A) したがって、 x∈F'(A) ⇒ x∈F(A) つまり、 F'(A)⊆F(A) φの定義より φA(x) = {u∈C→A | G(u)(x)∈F(dom(u))} x∈F(A) と仮定すると、G(idA)(x)∈F(A) が成立するので、 idA∈φA(x) φA(x)はふるいなので、飽和条件を満たすから、 φA(x) = C→A = MaxA よって、 x∈φA*(MaxA) F'の定義(F'はφから作られる)より x∈F'(A) したがって、 x∈F(A) ⇒ x∈F'(A) つまり、 F(A)⊆F'(A)
FはGの部分関手だったので、f:A→B in C に対する F(f):F(B)→F(A) in Set は、写像 G(f):G(B)→G(A) を部分集合F(B), F(A)に制限した写像です。一方、F' = φ*(Max) の定義でも、F'(f):F'(B)→F'(A) は、写像 G(f):G(B)→G(A) を部分集合F'(B), F'(A)に制限した写像です。F(B) = F'(B), F(A) = F'(A) は既に示したので、F(f) = F'(f) です。
任意の A, B, f:A→B in C に対して、F(A) = F'(A), F(B) = F'(B), F(f) = F'(f) なので、F = F' : Cop→Set が成立します。
補題
後で使うので、補題を示しておきます。ξ::G⇒Sieve:Cop→Set は自然変換で、A∈|C|, x∈G(A) として、
- (u:X→A)∈ξA(x) ⇔ u★(ξA(x)) = MaxX ---(補題)
命題の右辺 u★(ξA(x)) = MaxX を同値な命題に書き換えます。
u★(ξA(x))∈Sieve(X) であることから、 u★(ξA(x))⊆MaxX これを考慮すると、 u★(ξA(x)) = MaxX は、 MaxX⊆u★(ξA(x)) と同値。これは、次のように書ける。 ∀t.(t∈MaxX ⇒ t∈u★(ξA(x))) さらに、 ∀t∈MaxX.( t∈u★(ξA(x)) ) と書いても同じ。内部の t∈u★(ξA(x)) を同値書き換えする。 t∈u★(ξA(x)) ⇔ t∈u**(ξA(x)) ⇔ u*(t)∈ξA(x) ⇔ t;u∈ξA(x) よって、u★(ξA(x)) = MaxX は次の命題と同値。 ∀t∈MaxX.( t;u∈ξA(x) ) MaxX = C→X なので、次でも同じ。 ∀t∈C→X.( t;u∈ξA(x) )
今書き換えた結果を使うと、最初の「補題」は次の形になります。
- (u:X→A)∈ξA(x) ⇔ ∀t∈C→X.( t;u∈ξA(x) ) ---(補題 v.2)
'⇒'方向は、ξA(x)がふるいである条件(飽和条件)そのもの。逆方向は、右辺の全称命題を t = idX と具体化すると、左辺 u∈ξA(x) が出ます。
以上で、最初に提示した (u:X→A)∈ξA(x) ⇔ u★(ξA(x)) = MaxX が示されました。
「自然変換→部分関手→自然変換」のラウンドトリップ
では、「自然変換ξ → 部分関手H → 自然変換ξ'」のラウンドトリップを示します; ξ∈Nat(G, Sieve)に対して、H = ξ*(Max) : Cop→Set として、ξ' = χH :: G⇒Sieve とします。ξ' = ξ :: G⇒Sieve が示すべきターゲット命題です。自然変換が等しいことを示すには、成分ごとに等しければいいので、任意の A∈|C| に対して次が言えればいいわけです。
- ξ'A = ξA : G(A)→Sieve(A) ---(ターゲット命題 v.2)
さらにこれは、任意の u:X→A in C と x∈G(A) に対して次が言えることです。
- (u:X→A)∈ξ'A(x) ⇔ (u:X→A)∈ξA(x) ---(ターゲット命題 v.3)
「ターゲット命題 v.3」の左辺 (u:X→A)∈ξ'A(x) を分析します; ξ' = χH なので、
- ξ'A(x) = {u∈C→A | G(u)(x)∈H(dom(u))}
この定義から、次が言えます。
- (u:X→A)∈ξ'A(x) ⇔ G(u)(x)∈H(X)
この同値性から、「ターゲット命題 v.3」の左辺は G(u)(x)∈H(X) に置き換えられます。
- G(u)(x)∈H(X) ⇔ (u:X→A)∈ξA(x) ---(ターゲット命題 v.4)
ところで、H = ξ*(Max) だったので、y∈H(X) ⇔ y∈ξX*(MaxX) ⇔ ξX(y) = MaxX 。これを使うと、次が言えます。
- G(u)(x)∈H(X) ⇔ ξX(G(u)(x)) = MaxX
この同値性から、「ターゲット命題 v.3」の左辺は ξX(G(u)(x)) = MaxX に置き換えられます。
- ξX(G(u)(x)) = MaxX ⇔ (u:X→A)∈ξA(x) ---(ターゲット命題 v.5)
もし、ξX(G(u)(x)) = u★(ξA(x)) が成立するなら、「ターゲット命題 v.5」の左辺を u★(ξA(x)) = MaxX に置き換えられて、補題からただちに「ターゲット命題 v.5」が言えて、遡ってもとのターゲット命題 ξ' = ξ :: G⇒Sieve も言えます。
以下、ξX(G(u)(x)) = u★(ξA(x)) を示しましょう; ξ::G⇒Sieve:Cop→Set は自然変換だったので、u:X→A に対して次の図式は可換になります。
G(A) - ξA → Sieve(A) | | G(u) Sieve(u) | | v v G(X) - ξX → Sieve(X)
要素 x∈G(A) をとると:
x ------ ξA → ξA(x) | | G(u) Sieve(u) | | v v G(u)(x) - ξX → ξX(G(u)(x))
この図式を読み取れば、Sieve(u) = u★ だから、
- ξX(G(u)(x)) = u★(ξA(x))
が分かります。
前層トポス
集合圏Setの識別された単元集合〈{distinguished | selected} singleton set〉を 1 = {0} とします。関手 Cop→Set で、常に値1をとる定数関手を、同じ記号1で表します。
- 1(A) = {0} (Aがなんであっても)
- 1(f:A→B) = id{0} (fがなんであっても)
ふるい集合Sieve(A)の最大要素をMaxAと書きましたが、同じ記号で、1⇒Sieve:Cop→Set という自然変換を表します。
- Max::1⇒Sieve:Cop→Set
- MaxA:1(A)→Sieve(A) in Set where MaxA(0) = MaxX
自然変換としてのMaxは、各ふるい集合の最大ふるいをポイントする操作です。
F⊆G :Cop→Set である状況で、以下の図式は関手圏[Cop, Set]内の引き戻し図式になります。!は唯一に決まる自然変換、無名の矢印は、F→G という埋め込み自然変換です。
F - ! --→ 1 | | | | Max v v G - χF → Sieve
この図式における F←→χF の対応が、Sub(G) [Cop, Set](G, Sieve) の同型を与えます。
トポスの一般的な記述では、SieveをΩ、Maxをtrueと書くのが習慣です。true:1→Ω です。Ωは(トポスの)部分対象分類子〈subobject classifier〉と呼ばれる対象で、前層トポスではそれがふるい集合反変関手だったのです。
今まで見た通り、前層トポスを作るのは意外にめんどうですが、この作り方を実行すれば、トポスの例が出来上がります。小さい圏Cがあれば、関手圏[Cop, Set]はトポスの例になります。Cがとても簡単な圏でも、[Cop, Set]が自明でないトポスになることがあります。試してみると面白いですよ。