File: Mathlib/CategoryTheory/Sites/CoversTop.lean

full_name: CategoryTheory.GrothendieckTopology.CoversTop
code: /-- 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. -/
def CoversTop {I : Type*} (Y : I → C) : Prop 
goal: Prop

full_name: CategoryTheory.GrothendieckTopology.coversTop_iff_of_isTerminal
code: lemma coversTop_iff_of_isTerminal (X : C) (hX : IsTerminal X)
    {I : Type*} (Y : I → C) :
    J.CoversTop Y ↔ Sieve.ofObjects Y X ∈ J X 
goal: J.CoversTop Y ↔ CategoryTheory.Sieve.ofObjects Y X ∈ J.sieves X

full_name: CategoryTheory.GrothendieckTopology.CoversTop.cover
code: /-- The cover of any object `W : C` attached to a family of objects `Y` that satisfy
`J.CoversTop Y` -/
abbrev cover (W : C) : Cover J W 
goal: J.Cover W

full_name: CategoryTheory.GrothendieckTopology.CoversTop.ext
code: lemma ext (F : Sheaf J A) {c : Cone F.1} (hc : IsLimit c) {X : A} {f g : X ⟶ c.pt}
    (h : ∀ (i : I), f ≫ c.π.app (Opposite.op (Y i)) =
      g ≫ c.π.app (Opposite.op (Y i))) :
    f = g 
goal: f = g

full_name: CategoryTheory.GrothendieckTopology.CoversTop.sections_ext
code: lemma sections_ext (F : Sheaf J (Type _)) {x y : F.1.sections}
    (h : ∀ (i : I), x.1 (Opposite.op (Y i)) = y.1 (Opposite.op (Y i))) :
    x = y 
goal: x = y

full_name: CategoryTheory.Presheaf.FamilyOfElementsOnObjects
code: /-- 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`. -/
def FamilyOfElementsOnObjects 
goal: Type (max u_1 w)

full_name: CategoryTheory.Presheaf.FamilyOfElementsOnObjects.IsCompatible
code: /-- `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`. -/
def IsCompatible (x : FamilyOfElementsOnObjects F Y) : Prop 
goal: Prop

full_name: CategoryTheory.Presheaf.FamilyOfElementsOnObjects.familyOfElements
code: /-- 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`. -/
noncomputable def familyOfElements (X : C) :
    Presieve.FamilyOfElements F (Sieve.ofObjects Y X).arrows 
goal: CategoryTheory.Presieve.FamilyOfElements F (CategoryTheory.Sieve.ofObjects Y X).arrows

full_name: CategoryTheory.Presheaf.FamilyOfElementsOnObjects.IsCompatible.familyOfElements_apply
code: lemma familyOfElements_apply (hx : x.IsCompatible) {X Z : C} (f : Z ⟶ X) (i : I) (φ : Z ⟶ Y i) :
    familyOfElements x X f ⟨i, ⟨φ⟩⟩ = F.map φ.op (x i) 
goal: x.familyOfElements X f ⋯ = F.map φ.op (x i)

full_name: CategoryTheory.Presheaf.FamilyOfElementsOnObjects.IsCompatible.familyOfElements_isCompatible
code: lemma familyOfElements_isCompatible (hx : x.IsCompatible) (X : C) :
    (familyOfElements x X).Compatible 
goal: (x.familyOfElements X).Compatible

full_name: CategoryTheory.Presheaf.FamilyOfElementsOnObjects.IsCompatible.exists_unique_section
code: lemma exists_unique_section (hx : x.IsCompatible) (hY : J.CoversTop Y) (hF : IsSheaf J F) :
    ∃! (s : F.sections), ∀ (i : I), s.1 (Opposite.op (Y i)) = x i 
goal: ∃! s, ∀ (i : I), ↑s (Opposite.op (Y i)) = x i

full_name: CategoryTheory.Presheaf.FamilyOfElementsOnObjects.IsCompatible.section_
code: /-- The section of a sheaf of types which lifts a compatible family of elements indexed
by objects which cover the terminal object. -/
noncomputable def section_ : F.sections 
goal: ↑F.sections

full_name: CategoryTheory.Presheaf.FamilyOfElementsOnObjects.IsCompatible.section_apply
code: @[simp]
lemma section_apply (i : I) : (hx.section_ hY hF).1 (Opposite.op (Y i)) = x i 
goal: ↑(hx.section_ hY hF) (Opposite.op (Y i)) = x i