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

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

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

参照用 記事

前層トポスの部分対象分類子

Cが圏のとき、CopSet という関手を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のふるいだとは:

  1. S⊆C→A (Aの上側に閉じ込められている。)
  2. 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 = f\circu と定義して共変関手 CSet に拡張できる。拡張により作られた関手をOverCとすると、OverC:CSet, OverC(A) = C→A, OverC(f) = f*
  • PowをSet上の自己反変関手 Pow:SetopSet とみなす(像ではなくて逆像対応を使う)。すぐ上の共変関手 OverC:CSet に反変関手 Pow:SetopSet を結合すると、反変関手 OverC*Pow:CopSet になる('*'は関手の図式順結合)。

対応 A|→Sieve(A) は、反変関手 OverC*Pow:CopSet の部分反変関手(部分関手は次節で述べる)に拡張できます。対象に対する対応 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→AC→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(-)は CopSet という反変関手になります。

以上により、Cの対象ごとにそのふるい全体の集合を対応させる対応は、Cから集合圏Setへの反変関手となりました。これをふるい集合反変関手〈sieve-set contrafunctor〉と呼びましょう。切れ目を入れるなら、「ふるい集合-反変関手」です。

部分関手、部分対象

C上の前層は集合圏への(反変)関手なので、集合圏特有の性質を使えます。集合圏には、集合の包含関係があるので、それを使って部分関手*4という概念が定義できます。F, G:CopSet のとき、FがGの部分関手〈subfunctor〉であるとは:

  1. 任意の A∈|C| に対して、F(A)⊆G(A) ---(集合の包含条件)
  2. 任意の 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:CopSet の部分関手の全体を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(つまり、関手 CopSet)を固定します。前層Gの部分前層Fに対して、自然変換(前層のあいだの準同型)χF::G⇒Sieve:CopSet を構成しましょう。これから構成する自然変換χFを、部分前層Fの特性自然変換〈{characteristic | indicator} natural transformation〉と呼びます。χFは、Gにも依存するので、χGFのように書くべきですが、Gは省略しています。なお、'χ'はギリシャ文字カイで、部分集合の特性関数の意味でよく使われる文字です。

記号を簡単にするために、φ = χF = χGF と置きます。φ::G⇒Sieve:CopSet です。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:CopSet が自然変換になっていることが分かりました。ちゃんと書けば φ = χ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:CopSet を選んで、前層の準同型(自然変換) ξ::G⇒Sieve:CopSet を考えます。この自然変換ξから、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:CopSet を固定して考えます(Gは任意に選べますが)。Gの部分関手全体からなる集合はSub(G)でした。G:CopSet から、ふるい集合反変関手 Sieve:CopSet への自然変換の全体からなる集合をNat(G, Sieve:CopSet)と書きます。Nat(G, Sieve)とも略記します。

  • ξ∈Nat(G, Sieve) ⇔ ξ::G⇒Sieve:CopSet

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) : CopSet とします。F' = F : CopSet を示しましょう。まず、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' : CopSet が成立します。

補題

後で使うので、補題を示しておきます。ξ::G⇒Sieve:CopSet は自然変換で、A∈|C|, x∈G(A) として、

  • (u:X→A)∈ξA(x) ⇔ uA(x)) = MaxX ---(補題)

命題の右辺 uA(x)) = MaxX を同値な命題に書き換えます。

uA(x))∈Sieve(X) であることから、
 uA(x))⊆MaxX
これを考慮すると、
 uA(x)) = MaxX
は、
 MaxX⊆uA(x))
と同値。これは、次のように書ける。
 ∀t.(t∈MaxX ⇒ t∈uA(x)))
さらに、
 ∀t∈MaxX.( t∈uA(x)) )
と書いても同じ。内部の t∈uA(x)) を同値書き換えする。
    t∈uA(x))
 ⇔ t∈u**A(x))
 ⇔ u*(t)∈ξA(x)
 ⇔ t;u∈ξA(x)
よって、uA(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) ⇔ uA(x)) = MaxX が示されました。

「自然変換→部分関手→自然変換」のラウンドトリップ

では、「自然変換ξ → 部分関手H → 自然変換ξ'」のラウンドトリップを示します; ξ∈Nat(G, Sieve)に対して、H = ξ*(Max) : CopSet として、ξ' = χ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)) = uA(x)) が成立するなら、「ターゲット命題 v.5」の左辺を uA(x)) = MaxX に置き換えられて、補題からただちに「ターゲット命題 v.5」が言えて、遡ってもとのターゲット命題 ξ' = ξ :: G⇒Sieve も言えます。

以下、ξX(G(u)(x)) = uA(x)) を示しましょう; ξ::G⇒Sieve:CopSet は自然変換だったので、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)) = uA(x))

が分かります。

前層トポス

集合圏Setの識別された単元集合〈{distinguished | selected} singleton set〉を 1 = {0} とします。関手 CopSet で、常に値1をとる定数関手を、同じ記号1で表します。

  • 1(A) = {0} (Aがなんであっても)
  • 1(f:A→B) = id{0} (fがなんであっても)

ふるい集合Sieve(A)の最大要素をMaxAと書きましたが、同じ記号で、1⇒Sieve:CopSet という自然変換を表します。

  • Max::1⇒Sieve:CopSet
  • MaxA:1(A)→Sieve(A) in Set where MaxA(0) = MaxX

自然変換としてのMaxは、各ふるい集合の最大ふるいをポイントする操作です。

F⊆G :CopSet である状況で、以下の図式は関手圏[Cop, Set]内の引き戻し図式になります。!は唯一に決まる自然変換、無名の矢印は、F→G という埋め込み自然変換です。

  F - ! --→ 1
  |          |
  |          | Max
  v          v
  G - χF → Sieve

この図式における F←→χF の対応が、Sub(G) \stackrel{\sim}{=} [Cop, Set](G, Sieve) の同型を与えます。

トポスの一般的な記述では、SieveをΩ、Maxをtrueと書くのが習慣です。true:1→Ω です。Ωは(トポスの)部分対象分類子〈subobject classifier〉と呼ばれる対象で、前層トポスではそれがふるい集合反変関手だったのです。

今まで見た通り、前層トポスを作るのは意外にめんどうですが、この作り方を実行すれば、トポスの例が出来上がります。小さい圏Cがあれば、関手圏[Cop, Set]はトポスの例になります。Cがとても簡単な圏でも、[Cop, Set]が自明でないトポスになることがあります。試してみると面白いですよ。

*1:層トポスを定義する際のグロタンディーク位相に関して、当該の性質を飽和条件と呼びます。

*2:「圏のイデアル」と言ってもよさそうですが、アーベル群により豊饒化された圏の各ホムセットごとに飽和部分集合が与えられている構造を、圏のイデアルと呼ぶので、「イデアル」は避けました。

*3:射の集まりを {ui:Xi→A| i∈I} のような添字族〈indexed family〉で表すことがあります。余域が同じ射の集まりは、余錐とかマルチコスパンとか呼ばれます。

*4:「部分関手」という用語は、若干問題があります。「関手を順序付ける:subfunctor と partial functor」参照。