Objects which cover the terminal object
In this file, given a site (C, J)
, we introduce the notion of a family
of objects Y : I → C
which "cover the final object": this means
that for all X : C
, the sieve Sieve.ofObjects Y X
is covering for J
.
When there is a terminal object X : C
, then J.CoversTop Y
holds iff Sieve.ofObjects Y X
is covering for J
.
We introduce a notion of compatible family of elements on objects Y
and obtain Presheaf.FamilyOfElementsOnObjects.IsCompatible.exists_unique_section
which asserts that if a presheaf of types is a sheaf, then any compatible
family of elements on objects Y
which cover the final object extends as
a section of this presheaf.
A family of objects Y : I → C
"covers the final object"
if for all X : C
, the sieve ofObjects Y X
is a covering sieve.
Equations
- CategoryTheory.GrothendieckTopology.CoversTop J Y = ∀ (X : C), CategoryTheory.Sieve.ofObjects Y X ∈ J.sieves X
Instances For
The cover of any object W : C
attached to a family of objects Y
that satisfy
J.CoversTop Y
Equations
- CategoryTheory.GrothendieckTopology.CoversTop.cover hY W = { val := CategoryTheory.Sieve.ofObjects Y W, property := (_ : CategoryTheory.Sieve.ofObjects Y W ∈ J.sieves W) }
Instances For
A family of elements of a presheaf of types F
indexed by a family of objects
Y : I → C
consists of the data of an element in F.obj (Opposite.op (Y i))
for all i
.
Equations
- CategoryTheory.Presheaf.FamilyOfElementsOnObjects F Y = ((i : I) → F.toPrefunctor.obj (Opposite.op (Y i)))
Instances For
x : FamilyOfElementsOnObjects F Y
is compatible if for any object Z
such that
there exists a morphism f : Z → Y i
, then the pullback of x i
by f
is independent
of f
and i
.
Equations
- CategoryTheory.Presheaf.FamilyOfElementsOnObjects.IsCompatible x = ∀ (Z : C) (i j : I) (f : Z ⟶ Y i) (g : Z ⟶ Y j), F.toPrefunctor.map f.op (x i) = F.toPrefunctor.map g.op (x j)
Instances For
A family of elements indexed by Sieve.ofObjects Y X
that is induced by
x : FamilyOfElementsOnObjects F Y
. See the equational lemma
IsCompatible.familyOfElements_apply
which holds under the assumption x.IsCompatible
.
Equations
- CategoryTheory.Presheaf.FamilyOfElementsOnObjects.familyOfElements x✝¹ X x hf = F.toPrefunctor.map (Nonempty.some (_ : Nonempty (x✝ ⟶ Y (Exists.choose hf)))).op (x✝¹ (Exists.choose hf))
Instances For
The section of a sheaf of types which lifts a compatible family of elements indexed by objects which cover the terminal object.
Equations
- CategoryTheory.Presheaf.FamilyOfElementsOnObjects.IsCompatible.section_ hx hY hF = Exists.choose (_ : ∃! (s : ↑(CategoryTheory.Functor.sections F)), ∀ (i : I), ↑s (Opposite.op (Y i)) = x i)