module Cat.Site.Grothendieck where
Grothendieck sitesπ
A Grothendieck topology on a category is function assigning to each a predicate on the sieves on satisfying the closure properties of sites. Every topology generates a coverage (where the space of sieves that cover is the total space of and, conversely, every site can be saturated to give a topology.
record Topology {o β} (C : Precategory o β) βs : Type (o β β β lsuc βs) where
open Precategory C
field
: (U : β C β) (R : Sieve C U) β Type βs
covering
_β_ : (U : β C β) (R : Sieve C U) β Type βs
_β_ = covering
field
: β {U} {R : Sieve C U} β is-prop (U β R)
has-is-prop
stable: β {U V} (h : Hom V U) {R : Sieve C U} (hr : U β R)
β V β (pullback h R)
maximal: β {U} {R : Sieve C U} β id β R β U β R
:
local β {U} {R : Sieve C U} (hr : U β R) {S : Sieve C U}
β (β {V} (f : Hom V U) (hf : f β R) β V β pullback f S)
β U β S
The main interest in defining this notion is that if we start with a topology demote it to a coverage and then saturate this coverage, we obtain a topology identical to the one we started with. Since many notions in sheaf theory speak of sieves belonging to the saturation of a coverage, if we know that we started with a topology, then we know that we truly havenβt added any βnewβ coverings.
: Coverage C _
from-topology .covers U = β«β (U β_)
from-topology .cover = fst
from-topology .Site.stable (R , P) f = inc ((pullback f R , stable f P) , Ξ» h x β x)
from-topology
: β {U} {R : Sieve C U} β from-topology β R β U β R
unsaturate = go where
unsaturate : β {U} {R : Sieve C U} β from-topology β R β U β R
go (Cl.inc (_ , Ξ±)) = Ξ±
go (Cl.max x) = maximal x
go (Cl.local s p) = local (go s) Ξ» f h β go (p f h)
go (Cl.pull h x) = stable h (go x)
go (Cl.squash x y i) = has-is-prop (go x) (go y) i go
open Topology using (covering ; has-is-prop ; stable ; maximal ; local) public
module _ {o h βs} {C : Precategory o h} where instance
: β {U} β Membership (Sieve C U) (Topology C βs) βs
Membership-Topology = record { _β_ = Ξ» S T β T .covering _ S }
Membership-Topology
: Funlike (Topology C βs) β C β Ξ» U β Sieve C U β Type βs
Funlike-Topology .Funlike._#_ T = T .covering
Funlike-Topology
: β {o h βs} {C : Precategory o h} β Coverage C βs β Topology C (o β h β βs)
Closure-topology .covering _ R = J β R
Closure-topology J .has-is-prop = hlevel 1
Closure-topology J .stable = Cl.pull
Closure-topology J .maximal = Cl.max
Closure-topology J .local = Cl.local Closure-topology J