Sheaves of types on a Grothendieck topology #
Defines the notion of a sheaf of types (usually called a sheaf of sets by mathematicians) on a category equipped with a Grothendieck topology, as well as a range of equivalent conditions useful in different situations.
In Mathlib/CategoryTheory/Sites/IsSheafFor.lean
it is defined what it means for a presheaf to be a
sheaf for a particular sieve. Given a Grothendieck topology J
, P
is a sheaf if it is a sheaf
for every sieve in the topology. See IsSheaf
.
In the case where the topology is generated by a basis, it suffices to check P
is a sheaf for
every presieve in the pretopology. See isSheaf_pretopology
.
We also provide equivalent conditions to satisfy alternate definitions given in the literature.
Stacks: In
Equalizer.Presieve.sheaf_condition
, the sheaf condition at a presieve is shown to be equivalent to that of https://stacks.math.columbia.edu/tag/00VM (and combined withisSheaf_pretopology
, this shows the notions ofIsSheaf
are exactly equivalent.)The condition of https://stacks.math.columbia.edu/tag/00Z8 is virtually identical to the statement of
isSheafFor_iff_yonedaSheafCondition
(since the bijection described there carries the same information as the unique existence.)Maclane-Moerdijk [MLM92]: Using
compatible_iff_sieveCompatible
, the definitions ofIsSheaf
are equivalent. There are also alternate definitions given:- Sheaf for a pretopology (Prop 1):
isSheaf_pretopology
combined withpullbackCompatible_iff
. - Sheaf for a pretopology as equalizer (Prop 1, bis):
Equalizer.Presieve.sheaf_condition
combined with the previous.
- Sheaf for a pretopology (Prop 1):
References #
- [MLM92]: Sheaves in geometry and logic, Saunders MacLane, and Ieke Moerdijk: Chapter III, Section 4.
- [Joh02]: Sketches of an Elephant, P. T. Johnstone: C2.1.
- https://stacks.math.columbia.edu/tag/00VL (sheaves on a pretopology or site)
- https://stacks.math.columbia.edu/tag/00ZB (sheaves on a topology)
A presheaf is separated for a topology if it is separated for every sieve in the topology.
Equations
- CategoryTheory.Presieve.IsSeparated J P = ∀ {X : C}, ∀ S ∈ J X, CategoryTheory.Presieve.IsSeparatedFor P S.arrows
Instances For
A presheaf is a sheaf for a topology if it is a sheaf for every sieve in the topology.
If the given topology is given by a pretopology, isSheaf_pretopology
shows it suffices to
check the sheaf condition at presieves in the pretopology.
Equations
- CategoryTheory.Presieve.IsSheaf J P = ∀ ⦃X : C⦄, ∀ S ∈ J X, CategoryTheory.Presieve.IsSheafFor P S.arrows
Instances For
The property of being a sheaf is preserved by isomorphism.
For a topology generated by a basis, it suffices to check the sheaf condition on the basis presieves only.
Any presheaf is a sheaf for the bottom (trivial) grothendieck topology.
For a presheaf of the form yoneda.obj W
, a compatible family of elements on a sieve
is the same as a co-cone over the sieve. Constructing a co-cone from a compatible family works for
any presieve, as does constructing a family of elements from a co-cone. Showing compatibility of the
family needs the sieve condition.
Note: This is related to CategoryTheory.Presheaf.conesEquivSieveCompatibleFamily
Equations
- R.compatibleYonedaFamily_toCocone W x hx = { pt := W, ι := { app := fun (f : R.category) => x f.obj.hom ⋯, naturality := ⋯ } }
Instances For
Equations
- R.yonedaFamilyOfElements_fromCocone s f hf = s.ι.app { obj := CategoryTheory.Over.mk f, property := hf }
Instances For
The base of a sieve S
is a colimit of S
iff all Yoneda-presheaves satisfy
the sheaf condition for S
.
The category of sheaves on a grothendieck topology.
- val : CategoryTheory.Functor Cᵒᵖ (Type w)
the underlying presheaf
- cond : CategoryTheory.Presieve.IsSheaf J self.val
the condition that the presheaf is a sheaf
Instances For
the condition that the presheaf is a sheaf
Morphisms between sheaves of types are just morphisms between the underlying presheaves.
- val : X.val ⟶ Y.val
a morphism between the underlying presheaves
Instances For
Equations
- CategoryTheory.SheafOfTypes.instCategory = CategoryTheory.Category.mk ⋯ ⋯ ⋯
Equations
- X.instInhabitedHom = { default := CategoryTheory.CategoryStruct.id X }
The inclusion functor from sheaves to presheaves.
Equations
- CategoryTheory.sheafOfTypesToPresheaf J = { obj := CategoryTheory.SheafOfTypes.val, map := fun {X Y : CategoryTheory.SheafOfTypes J} (f : X ⟶ Y) => f.val, map_id := ⋯, map_comp := ⋯ }
Instances For
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
The category of sheaves on the bottom (trivial) grothendieck topology is equivalent to the category of presheaves.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.