Documentation

Mathlib.CategoryTheory.Sites.CoversTop

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.existsUnique_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
Instances For
    theorem CategoryTheory.GrothendieckTopology.coversTop_iff_of_isTerminal {C : Type u} [Category.{v, u} C] (J : GrothendieckTopology C) (X : C) (hX : Limits.IsTerminal X) {I : Type u_1} (Y : IC) :
    J.CoversTop Y Sieve.ofObjects Y X J X
    @[reducible, inline]
    abbrev CategoryTheory.GrothendieckTopology.CoversTop.cover {C : Type u} [Category.{v, u} C] {J : GrothendieckTopology C} {I : Type u_1} {Y : IC} (hY : J.CoversTop Y) (W : C) :
    J.Cover W

    The cover of any object W : C attached to a family of objects Y that satisfy J.CoversTop Y

    Equations
    Instances For
      theorem CategoryTheory.GrothendieckTopology.CoversTop.ext {C : Type u} [Category.{v, u} C] {J : GrothendieckTopology C} {A : Type u'} [Category.{v', u'} A] {I : Type u_1} {Y : IC} (hY : J.CoversTop Y) (F : Sheaf J A) {c : Limits.Cone F.val} (hc : Limits.IsLimit c) {X : A} {f g : X c.pt} (h : ∀ (i : I), CategoryStruct.comp f (c.app (Opposite.op (Y i))) = CategoryStruct.comp g (c.app (Opposite.op (Y i)))) :
      f = g
      theorem CategoryTheory.GrothendieckTopology.CoversTop.sections_ext {C : Type u} [Category.{v, u} C] {J : GrothendieckTopology C} {I : Type u_1} {Y : IC} (hY : J.CoversTop Y) (F : Sheaf J (Type u_2)) {x y : F.val.sections} (h : ∀ (i : I), x (Opposite.op (Y i)) = y (Opposite.op (Y i))) :
      x = y
      def CategoryTheory.Presheaf.FamilyOfElementsOnObjects {C : Type u} [Category.{v, u} C] (F : Functor Cᵒᵖ (Type w)) {I : Type u_1} (Y : IC) :
      Type (max u_1 w)

      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
      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
        • x.IsCompatible = ∀ (Z : C) (i j : I) (f : Z Y i) (g : Z Y j), F.map f.op (x i) = F.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
          • x.familyOfElements X x✝ hf = F.map .some.op (x (Exists.choose hf))
          Instances For
            theorem CategoryTheory.Presheaf.FamilyOfElementsOnObjects.IsCompatible.familyOfElements_apply {C : Type u} [Category.{v, u} C] {F : Functor Cᵒᵖ (Type w)} {I : Type u_1} {Y : IC} {x : FamilyOfElementsOnObjects F Y} (hx : x.IsCompatible) {X Z : C} (f : Z X) (i : I) (φ : Z Y i) :
            x.familyOfElements X f = F.map φ.op (x i)
            theorem CategoryTheory.Presheaf.FamilyOfElementsOnObjects.IsCompatible.familyOfElements_isCompatible {C : Type u} [Category.{v, u} C] {F : Functor Cᵒᵖ (Type w)} {I : Type u_1} {Y : IC} {x : FamilyOfElementsOnObjects F Y} (hx : x.IsCompatible) (X : C) :
            (x.familyOfElements X).Compatible
            theorem CategoryTheory.Presheaf.FamilyOfElementsOnObjects.IsCompatible.existsUnique_section {C : Type u} [Category.{v, u} C] {J : GrothendieckTopology C} {F : Functor Cᵒᵖ (Type w)} {I : Type u_1} {Y : IC} {x : FamilyOfElementsOnObjects F Y} (hx : x.IsCompatible) (hY : J.CoversTop Y) (hF : IsSheaf J F) :
            ∃! s : F.sections, ∀ (i : I), s (Opposite.op (Y i)) = x i
            @[deprecated CategoryTheory.Presheaf.FamilyOfElementsOnObjects.IsCompatible.existsUnique_section (since := "2024-12-17")]
            theorem CategoryTheory.Presheaf.FamilyOfElementsOnObjects.IsCompatible.exists_unique_section {C : Type u} [Category.{v, u} C] {J : GrothendieckTopology C} {F : Functor Cᵒᵖ (Type w)} {I : Type u_1} {Y : IC} {x : FamilyOfElementsOnObjects F Y} (hx : x.IsCompatible) (hY : J.CoversTop Y) (hF : IsSheaf J F) :
            ∃! s : F.sections, ∀ (i : I), s (Opposite.op (Y i)) = x i

            Alias of CategoryTheory.Presheaf.FamilyOfElementsOnObjects.IsCompatible.existsUnique_section.

            noncomputable def CategoryTheory.Presheaf.FamilyOfElementsOnObjects.IsCompatible.section_ {C : Type u} [Category.{v, u} C] {J : GrothendieckTopology C} {F : Functor Cᵒᵖ (Type w)} {I : Type u_1} {Y : IC} {x : FamilyOfElementsOnObjects F Y} (hx : x.IsCompatible) (hY : J.CoversTop Y) (hF : IsSheaf J F) :
            F.sections

            The section of a sheaf of types which lifts a compatible family of elements indexed by objects which cover the terminal object.

            Equations
            Instances For
              @[simp]
              theorem CategoryTheory.Presheaf.FamilyOfElementsOnObjects.IsCompatible.section_apply {C : Type u} [Category.{v, u} C] {J : GrothendieckTopology C} {F : Functor Cᵒᵖ (Type w)} {I : Type u_1} {Y : IC} {x : FamilyOfElementsOnObjects F Y} (hx : x.IsCompatible) (hY : J.CoversTop Y) (hF : IsSheaf J F) (i : I) :
              (hx.section_ hY hF) (Opposite.op (Y i)) = x i