Sheafification #
We construct the sheafification of a presheaf over a site C
with values in D
whenever
D
is a concrete category for which the forgetful functor preserves the appropriate (co)limits
and reflects isomorphisms.
We generally follow the approach of https://stacks.math.columbia.edu/tag/00W1
A concrete version of the multiequalizer, to be used below.
Equations
- CategoryTheory.Meq P S = { x : (I : S.Arrow) → (CategoryTheory.forget D).obj (P.obj (Opposite.op I.Y)) // ∀ (I : S.Relation), (P.map I.r.g₁.op) (x I.fst) = (P.map I.r.g₂.op) (x I.snd) }
Instances For
Equations
- CategoryTheory.Meq.instCoeFunForallObjForgetOppositeOpY P S = { coe := fun (x : CategoryTheory.Meq P S) => ↑x }
Refine a term of Meq P T
with respect to a refinement S ⟶ T
of covers.
Equations
- x.refine e = ⟨fun (I : S.Arrow) => ↑x { Y := I.Y, f := I.f, hf := ⋯ }, ⋯⟩
Instances For
Pull back a term of Meq P S
with respect to a morphism f : Y ⟶ X
in C
.
Equations
- x.pullback f = ⟨fun (I : ((J.pullback f).obj S).Arrow) => ↑x { Y := I.Y, f := CategoryTheory.CategoryStruct.comp I.f f, hf := ⋯ }, ⋯⟩
Instances For
Make a term of Meq P S
.
Equations
- CategoryTheory.Meq.mk S x = ⟨fun (I : S.Arrow) => (P.map I.f.op) x, ⋯⟩
Instances For
The equivalence between the type associated to multiequalizer (S.index P)
and Meq P S
.
Equations
Instances For
Make a term of (J.plusObj P).obj (op X)
from x : Meq P S
.
Equations
- CategoryTheory.GrothendieckTopology.Plus.mk x = (CategoryTheory.Limits.colimit.ι (J.diagram P X) (Opposite.op S)) ((CategoryTheory.Meq.equiv P S).symm x)
Instances For
P⁺
is always separated.
An auxiliary definition to be used in the proof of exists_of_sep
below.
Given a compatible family of local sections for P⁺
, and representatives of said sections,
construct a compatible family of local sections of P
over the combination of the covers
associated to the representatives.
The separatedness condition is used to prove compatibility among these local sections of P
.
Equations
- CategoryTheory.GrothendieckTopology.Plus.meqOfSep P hsep X S s T t ht = ⟨fun (I : (S.bind T).Arrow) => ↑(t I.fromMiddle) I.toMiddle, ⋯⟩
Instances For
If P
is separated, then P⁺
is a sheaf.
P⁺⁺
is always a sheaf.
The sheafification of a presheaf P
.
NOTE: Additional hypotheses are needed to obtain a proof that this is a sheaf!
Equations
- J.sheafify P = J.plusObj (J.plusObj P)
Instances For
The canonical map from P
to its sheafification.
Equations
- J.toSheafify P = CategoryTheory.CategoryStruct.comp (J.toPlus P) (J.plusMap (J.toPlus P))
Instances For
The canonical map on sheafifications induced by a morphism.
Equations
- J.sheafifyMap η = J.plusMap (J.plusMap η)
Instances For
The sheafification of a presheaf P
, as a functor.
NOTE: Additional hypotheses are needed to obtain a proof that this is a sheaf!
Equations
- J.sheafification D = (J.plusFunctor D).comp (J.plusFunctor D)
Instances For
The canonical map from P
to its sheafification, as a natural transformation.
Note: We only show this is a sheaf under additional hypotheses on D
.
Equations
- J.toSheafification D = CategoryTheory.CategoryStruct.comp (J.toPlusNatTrans D) (CategoryTheory.whiskerRight (J.toPlusNatTrans D) (J.plusFunctor D))
Instances For
If P
is a sheaf, then P
is isomorphic to J.sheafify P
.
Equations
- J.isoSheafify hP = CategoryTheory.asIso (J.toSheafify P)
Instances For
Given a sheaf Q
and a morphism P ⟶ Q
, construct a morphism from J.sheafify P
to Q
.
Equations
- J.sheafifyLift η hQ = J.plusLift (J.plusLift η hQ) hQ
Instances For
The sheafification functor, as a functor taking values in Sheaf
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- ⋯ = ⋯
The sheafification functor is left adjoint to the forgetful functor.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- J.sheafificationIsoPresheafToSheafCompSheafToPreasheaf D = CategoryTheory.NatIso.ofComponents (fun (P : CategoryTheory.Functor Cᵒᵖ D) => CategoryTheory.Iso.refl ((J.sheafification D).obj P)) ⋯