Documentation

Mathlib.CategoryTheory.Sites.Sheaf

Sheaves taking values in a category #

If C is a category with a Grothendieck topology, we define the notion of a sheaf taking values in an arbitrary category A. We follow the definition in https://stacks.math.columbia.edu/tag/00VR, noting that the presheaf of sets "defined above" can be seen in the comments between tags 00VQ and 00VR on the page . The advantage of this definition is that we need no assumptions whatsoever on A other than the assumption that the morphisms in C and A live in the same universe.

Implementation notes #

Occasionally we need to take a limit in A of a collection of morphisms of C indexed by a collection of objects in C. This turns out to force the morphisms of A to be in a sufficiently large universe. Rather than use UnivLE we prove some results for a category A' instead, whose morphism universe of A' is defined to be max u₁ v₁, where u₁, v₁ are the universes for C. Perhaps after we get better at handling universe inequalities this can be changed.

A sheaf of A is a presheaf P : Cᵒᵖ => A such that for every E : A, the presheaf of types given by sending U : C to Hom_{A}(E, P U) is a sheaf of types.

https://stacks.math.columbia.edu/tag/00VR

Equations
Instances For

    Given a sieve S on X : C, a presheaf P : Cᵒᵖ ⥤ A, and an object E of A, the cones over the natural diagram S.arrows.diagram.op ⋙ P associated to S and P with cone point E are in 1-1 correspondence with sieve_compatible family of elements for the sieve S and the presheaf of types Hom (E, P -).

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For

      The cone corresponding to a sieve_compatible family of elements, dot notation enabled.

      Equations
      Instances For

        Cone morphisms from the cone corresponding to a sieve_compatible family to the natural cone associated to a sieve S and a presheaf P are in 1-1 correspondence with amalgamations of the family.

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For

          Given sieve S and presheaf P : Cᵒᵖ ⥤ A, their natural associated cone is a limit cone iff Hom (E, P -) is a sheaf of types for the sieve S and all E : A.

          Given sieve S and presheaf P : Cᵒᵖ ⥤ A, their natural associated cone admits at most one morphism from every cone in the same category (i.e. over the same diagram), iff Hom (E, P -)is separated for the sieve S and all E : A.

          A presheaf P is a sheaf for the Grothendieck topology J iff for every covering sieve S of J, the natural cone associated to P and S is a limit cone.

          A presheaf P is separated for the Grothendieck topology J iff for every covering sieve S of J, the natural cone associated to P and S admits at most one morphism from every cone in the same category.

          Given presieve R and presheaf P : Cᵒᵖ ⥤ A, the natural cone associated to P and the sieve Sieve.generate R generated by R is a limit cone iff Hom (E, P -) is a sheaf of types for the presieve R and all E : A.

          A presheaf P is a sheaf for the Grothendieck topology generated by a pretopology K iff for every covering presieve R of K, the natural cone associated to P and Sieve.generate R is a limit cone.

          This is a wrapper around Presieve.IsSheafFor.amalgamate to be used below. If Ps a sheaf, S is a cover of X, and x is a collection of morphisms from E to P evaluated at terms in the cover which are compatible, then we can amalgamate the xs to obtain a single morphism E ⟶ P.obj (op X).

          Equations
          • One or more equations did not get rendered due to their size.
          Instances For
            theorem CategoryTheory.Presheaf.IsSheaf.hom_ext {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {J : CategoryTheory.GrothendieckTopology C} {A : Type u₂} [CategoryTheory.Category.{v₂, u₂} A] {E : A} {X : C} {P : CategoryTheory.Functor Cᵒᵖ A} (hP : CategoryTheory.Presheaf.IsSheaf J P) (S : CategoryTheory.GrothendieckTopology.Cover J X) (e₁ : E P.toPrefunctor.obj (Opposite.op X)) (e₂ : E P.toPrefunctor.obj (Opposite.op X)) (h : ∀ (I : CategoryTheory.GrothendieckTopology.Cover.Arrow S), CategoryTheory.CategoryStruct.comp e₁ (P.toPrefunctor.map I.f.op) = CategoryTheory.CategoryStruct.comp e₂ (P.toPrefunctor.map I.f.op)) :
            e₁ = e₂
            structure CategoryTheory.Sheaf {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] (J : CategoryTheory.GrothendieckTopology C) (A : Type u₂) [CategoryTheory.Category.{v₂, u₂} A] :
            Type (max (max (max u₁ u₂) v₁) v₂)

            The category of sheaves taking values in A on a grothendieck topology.

            Instances For

              Morphisms between sheaves are just morphisms of presheaves.

              • val : X.val Y.val

                a morphism between the underlying presheaves

              Instances For

                The inclusion functor from sheaves to presheaves.

                Equations
                Instances For

                  This is stated as a lemma to prevent class search from forming a loop since a sheaf morphism is monic if and only if it is monic as a presheaf morphism (under suitable assumption).

                  The sheaf of sections guaranteed by the sheaf condition.

                  Equations
                  • One or more equations did not get rendered due to their size.
                  Instances For
                    @[simp]
                    theorem CategoryTheory.sheafEquivSheafOfTypes_counitIso {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] (J : CategoryTheory.GrothendieckTopology C) :
                    (CategoryTheory.sheafEquivSheafOfTypes J).counitIso = CategoryTheory.NatIso.ofComponents fun (X : CategoryTheory.SheafOfTypes J) => CategoryTheory.Iso.refl ((CategoryTheory.Functor.comp (CategoryTheory.Functor.mk { obj := fun (S : CategoryTheory.SheafOfTypes J) => { val := S.val, cond := (_ : CategoryTheory.Presheaf.IsSheaf J S.val) }, map := fun {X Y : CategoryTheory.SheafOfTypes J} (f : X Y) => { val := f.val } }) (CategoryTheory.Functor.mk { obj := fun (S : CategoryTheory.Sheaf J (Type w)) => { val := S.val, cond := (_ : CategoryTheory.Presieve.IsSheaf J S.val) }, map := fun {X Y : CategoryTheory.Sheaf J (Type w)} (f : X Y) => { val := f.val } })).toPrefunctor.obj X)

                    The category of sheaves taking values in Type is the same as the category of set-valued sheaves.

                    Equations
                    • One or more equations did not get rendered due to their size.
                    Instances For

                      If the empty sieve is a cover of X, then F(X) is terminal.

                      Equations
                      Instances For
                        Equations
                        Equations
                        • CategoryTheory.instSubHomSheafToQuiverToCategoryStructInstCategorySheaf = { sub := fun (f g : P Q) => { val := f.val - g.val } }
                        Equations
                        • CategoryTheory.instNegHomSheafToQuiverToCategoryStructInstCategorySheaf = { neg := fun (f : P Q) => { val := -f.val } }
                        Equations
                        Equations
                        • CategoryTheory.instZeroHomSheafToQuiverToCategoryStructInstCategorySheaf = { zero := { val := 0 } }
                        Equations
                        • CategoryTheory.instAddHomSheafToQuiverToCategoryStructInstCategorySheaf = { add := fun (f g : P Q) => { val := f.val + g.val } }
                        @[simp]
                        theorem CategoryTheory.Sheaf.Hom.add_app {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {J : CategoryTheory.GrothendieckTopology C} {A : Type u₂} [CategoryTheory.Category.{v₂, u₂} A] [CategoryTheory.Preadditive A] {P : CategoryTheory.Sheaf J A} {Q : CategoryTheory.Sheaf J A} (f : P Q) (g : P Q) (U : Cᵒᵖ) :
                        (f + g).val.app U = f.val.app U + g.val.app U

                        When P is a sheaf and S is a cover, the associated multifork is a limit.

                        Equations
                        • One or more equations did not get rendered due to their size.
                        Instances For

                          The middle object of the fork diagram given in Equation (3) of [MM92], as well as the fork diagram of .

                          Equations
                          Instances For

                            The left morphism of the fork diagram given in Equation (3) of [MM92], as well as the fork diagram of .

                            Equations
                            Instances For

                              The rightmost object of the fork diagram of https://stacks.math.columbia.edu/tag/00VM, which contains the data used to check a family of elements for a presieve is compatible.

                              Equations
                              • One or more equations did not get rendered due to their size.
                              Instances For

                                An alternative definition of the sheaf condition in terms of equalizers. This is shown to be equivalent in CategoryTheory.Presheaf.isSheaf_iff_isSheaf'.

                                Equations
                                • One or more equations did not get rendered due to their size.
                                Instances For

                                  (Implementation). An auxiliary lemma to convert between sheaf conditions.

                                  Equations
                                  • One or more equations did not get rendered due to their size.
                                  Instances For

                                    For a concrete category (A, s) where the forgetful functor s : A ⥤ Type v preserves limits and reflects isomorphisms, and A has limits, an A-valued presheaf P : Cᵒᵖ ⥤ A is a sheaf iff its underlying Type-valued presheaf P ⋙ s : Cᵒᵖ ⥤ Type is a sheaf.

                                    Note this lemma applies for "algebraic" categories, eg groups, abelian groups and rings, but not for the category of topological spaces, topological rings, etc since reflecting isomorphisms doesn't hold.