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 covering : (U : β C β) (R : Sieve C U) β Type βs _β_ : (U : β C β) (R : Sieve C U) β Type βs _β_ = covering field has-is-prop : β {U} {R : Sieve C U} β is-prop (U β R) 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.
from-topology : 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) unsaturate : β {U} {R : Sieve C U} β from-topology β R β U β R unsaturate = go where go : β {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
open Topology using (covering ; has-is-prop ; stable ; maximal ; local) public module _ {o h βs} {C : Precategory o h} where instance Membership-Topology : β {U} β Membership (Sieve C U) (Topology C βs) βs Membership-Topology = record { _β_ = Ξ» S T β T .covering _ S } Funlike-Topology : Funlike (Topology C βs) β C β Ξ» U β Sieve C U β Type βs Funlike-Topology .Funlike._#_ T = T .covering Closure-topology : β {o h βs} {C : Precategory o h} β Coverage C βs β Topology C (o β h β βs) Closure-topology J .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