Documentation

Mathlib.Topology.Sheaves.Sheaf

Sheaves #

We define sheaves on a topological space, with values in an arbitrary category.

A presheaf on a topological space X is a sheaf precisely when it is a sheaf under the grothendieck topology on opens X, which expands out to say: For each open cover { Uᵢ } of U, and a family of compatible functions A ⟶ F(Uᵢ) for an A : X, there exists a unique gluing A ⟶ F(U) compatible with the restriction.

See the docstring of TopCat.Presheaf.IsSheaf for an explanation on the design decisions and a list of equivalent conditions.

We provide the instance CategoryTheory.Category (TopCat.Sheaf C X) as the full subcategory of presheaves, and the fully faithful functor Sheaf.forget : TopCat.Sheaf C X ⥤ TopCat.Presheaf C X.

The sheaf condition has several different equivalent formulations. The official definition chosen here is in terms of grothendieck topologies so that the results on sites could be applied here easily, and this condition does not require additional constraints on the value category. The equivalent formulations of the sheaf condition on presheaf C X are as follows :

  1. TopCat.Presheaf.IsSheaf: (the official definition) It is a sheaf with respect to the grothendieck topology on opens X, which is to say: For each open cover { Uᵢ } of U, and a family of compatible functions A ⟶ F(Uᵢ) for an A : X, there exists a unique gluing A ⟶ F(U) compatible with the restriction.

  2. TopCat.Presheaf.IsSheafEqualizerProducts: (requires C to have all products) For each open cover { Uᵢ } of U, F(U) ⟶ ∏ᶜ F(Uᵢ) is the equalizer of the two morphisms ∏ᶜ F(Uᵢ) ⟶ ∏ᶜ F(Uᵢ ∩ Uⱼ). See TopCat.Presheaf.isSheaf_iff_isSheafEqualizerProducts.

  3. TopCat.Presheaf.IsSheafOpensLeCover: For each open cover { Uᵢ } of U, F(U) is the limit of the diagram consisting of arrows F(V₁) ⟶ F(V₂) for every pair of open sets V₁ ⊇ V₂ that are contained in some Uᵢ. See TopCat.Presheaf.isSheaf_iff_isSheafOpensLeCover.

  4. TopCat.Presheaf.IsSheafPairwiseIntersections: For each open cover { Uᵢ } of U, F(U) is the limit of the diagram consisting of arrows from F(Uᵢ) and F(Uⱼ) to F(Uᵢ ∩ Uⱼ) for each pair (i, j). See TopCat.Presheaf.isSheaf_iff_isSheafPairwiseIntersections.

The following requires C to be concrete and complete, and forget C to reflect isomorphisms and preserve limits. This applies to most "algebraic" categories, e.g. groups, abelian groups and rings.

  1. TopCat.Presheaf.IsSheafUniqueGluing: (requires C to be concrete and complete; forget C to reflect isomorphisms and preserve limits) For each open cover { Uᵢ } of U, and a compatible family of elements x : F(Uᵢ), there exists a unique gluing x : F(U) that restricts to the given elements. See TopCat.Presheaf.isSheaf_iff_isSheafUniqueGluing.

  2. The underlying sheaf of types is a sheaf. See TopCat.Presheaf.isSheaf_iff_isSheaf_comp and CategoryTheory.Presheaf.isSheaf_iff_isSheaf_forget.

Equations
Instances For

    The presheaf valued in Unit over any topological space is a sheaf.

    theorem TopCat.Presheaf.isSheaf_iso_iff {C : Type u} [CategoryTheory.Category.{v, u} C] {X : TopCat} {F G : TopCat.Presheaf C X} (α : F G) :
    F.IsSheaf G.IsSheaf
    theorem TopCat.Presheaf.isSheaf_of_iso {C : Type u} [CategoryTheory.Category.{v, u} C] {X : TopCat} {F G : TopCat.Presheaf C X} (α : F G) (h : F.IsSheaf) :
    G.IsSheaf

    Transfer the sheaf condition across an isomorphism of presheaves.

    def TopCat.Sheaf (C : Type u) [CategoryTheory.Category.{v, u} C] (X : TopCat) :
    Type (max u v w)

    A TopCat.Sheaf C X is a presheaf of objects from C over a (bundled) topological space X, satisfying the sheaf condition.

    Equations
    Instances For
      @[reducible, inline]

      The underlying presheaf of a sheaf

      Equations
      • F.presheaf = F.val
      Instances For
        Equations

        The forgetful functor from sheaves to presheaves.

        Equations
        Instances For
          theorem TopCat.Sheaf.comp_app (C : Type u) [CategoryTheory.Category.{v, u} C] (X : TopCat) {F G H : TopCat.Sheaf C X} (f : F G) (g : G H) (t : (TopologicalSpace.Opens X)ᵒᵖ) :
          (CategoryTheory.CategoryStruct.comp f g).val.app t = CategoryTheory.CategoryStruct.comp (f.val.app t) (g.val.app t)