Documentation

Mathlib.CategoryTheory.Sites.DenseSubsite

Dense subsites #

We define CoverDense functors into sites as functors such that there exists a covering sieve that factors through images of the functor for each object in D.

We will primarily consider cover-dense functors that are also full, since this notion is in general not well-behaved otherwise. Note that https://ncatlab.org/nlab/show/dense+sub-site indeed has a weaker notion of cover-dense that loosens this requirement, but it would not have all the properties we would need, and some sheafification would be needed for here and there.

Main results #

References #

An auxiliary structure that witnesses the fact that f factors through an image object of G.

Instances For

    For a functor G : C ⥤ D, and an object U : D, Presieve.coverByImage G U is the presieve of U consisting of those arrows that factor through images of G.

    Instances For

      For a functor G : C ⥤ D, and an object U : D, Sieve.coverByImage G U is the sieve of U consisting of those arrows that factor through images of G.

      Instances For

        A functor G : (C, J) ⥤ (D, K) is called CoverDense if for each object in D, there exists a covering sieve in D that factors through images of G.

        This definition can be found in https://ncatlab.org/nlab/show/dense+sub-site Definition 2.2.

        Instances For
          theorem CategoryTheory.CoverDense.ext {C : Type u_1} [CategoryTheory.Category.{u_5, u_1} C] {D : Type u_2} [CategoryTheory.Category.{u_6, u_2} D] {K : CategoryTheory.GrothendieckTopology D} {G : CategoryTheory.Functor C D} (H : CategoryTheory.CoverDense K G) (ℱ : CategoryTheory.SheafOfTypes K) (X : D) {s : .val.obj (Opposite.op X)} {t : .val.obj (Opposite.op X)} (h : ∀ ⦃Y : C⦄ (f : G.obj Y X), Dᵒᵖ.map CategoryTheory.CategoryStruct.toQuiver (Type u_7) CategoryTheory.CategoryStruct.toQuiver .val.toPrefunctor (Opposite.op X) (Opposite.op (G.obj Y)) f.op s = Dᵒᵖ.map CategoryTheory.CategoryStruct.toQuiver (Type u_7) CategoryTheory.CategoryStruct.toQuiver .val.toPrefunctor (Opposite.op X) (Opposite.op (G.obj Y)) f.op t) :
          s = t

          (Implementation). Given a hom between the pullbacks of two sheaves, we can whisker it with coyoneda to obtain a hom between the pullbacks of the sheaves of maps from X.

          Instances For
            @[simp]
            theorem CategoryTheory.CoverDense.isoOver_inv_app {C : Type u_1} [CategoryTheory.Category.{u_5, u_1} C] {D : Type u_2} [CategoryTheory.Category.{u_6, u_2} D] {K : CategoryTheory.GrothendieckTopology D} {A : Type u_4} [CategoryTheory.Category.{u_7, u_4} A] {G : CategoryTheory.Functor C D} {ℱ : CategoryTheory.Sheaf K A} {ℱ' : CategoryTheory.Sheaf K A} (α : CategoryTheory.Functor.comp G.op .val CategoryTheory.Functor.comp G.op ℱ'.val) (X : A) (X : Cᵒᵖ) :
            ∀ (a : (CategoryTheory.coyoneda.obj (Opposite.op X)).obj ((CategoryTheory.Functor.comp G.op ℱ'.val).obj X)), Cᵒᵖ.app CategoryTheory.Category.opposite (Type u_7) CategoryTheory.types (((CategoryTheory.whiskeringRight Cᵒᵖ A (Type u_7)).obj (CategoryTheory.coyoneda.obj (Opposite.op X))).obj (CategoryTheory.Functor.comp G.op ℱ'.val)) (((CategoryTheory.whiskeringRight Cᵒᵖ A (Type u_7)).obj (CategoryTheory.coyoneda.obj (Opposite.op X))).obj (CategoryTheory.Functor.comp G.op .val)) (CategoryTheory.CoverDense.isoOver α X).inv X a = CategoryTheory.CategoryStruct.comp a (α.inv.app X)
            @[simp]
            theorem CategoryTheory.CoverDense.isoOver_hom_app {C : Type u_1} [CategoryTheory.Category.{u_5, u_1} C] {D : Type u_2} [CategoryTheory.Category.{u_6, u_2} D] {K : CategoryTheory.GrothendieckTopology D} {A : Type u_4} [CategoryTheory.Category.{u_7, u_4} A] {G : CategoryTheory.Functor C D} {ℱ : CategoryTheory.Sheaf K A} {ℱ' : CategoryTheory.Sheaf K A} (α : CategoryTheory.Functor.comp G.op .val CategoryTheory.Functor.comp G.op ℱ'.val) (X : A) (X : Cᵒᵖ) :
            ∀ (a : (CategoryTheory.coyoneda.obj (Opposite.op X)).obj ((CategoryTheory.Functor.comp G.op .val).obj X)), Cᵒᵖ.app CategoryTheory.Category.opposite (Type u_7) CategoryTheory.types (((CategoryTheory.whiskeringRight Cᵒᵖ A (Type u_7)).obj (CategoryTheory.coyoneda.obj (Opposite.op X))).obj (CategoryTheory.Functor.comp G.op .val)) (((CategoryTheory.whiskeringRight Cᵒᵖ A (Type u_7)).obj (CategoryTheory.coyoneda.obj (Opposite.op X))).obj (CategoryTheory.Functor.comp G.op ℱ'.val)) (CategoryTheory.CoverDense.isoOver α X).hom X a = CategoryTheory.CategoryStruct.comp a (α.hom.app X)

            (Implementation). Given an iso between the pullbacks of two sheaves, we can whisker it with coyoneda to obtain an iso between the pullbacks of the sheaves of maps from X.

            Instances For

              (Implementation). Given a section of on X, we can obtain a family of elements valued in ℱ' that is defined on a cover generated by the images of G.

              Instances For
                @[simp]
                theorem CategoryTheory.CoverDense.Types.pushforwardFamily_def {C : Type u_1} [CategoryTheory.Category.{u_6, u_1} C] {D : Type u_2} [CategoryTheory.Category.{u_5, u_2} D] {K : CategoryTheory.GrothendieckTopology D} {G : CategoryTheory.Functor C D} {ℱ : CategoryTheory.Functor Dᵒᵖ (Type v)} {ℱ' : CategoryTheory.SheafOfTypes K} (α : CategoryTheory.Functor.comp G.op CategoryTheory.Functor.comp G.op ℱ'.val) {X : D} (x : .obj (Opposite.op X)) :
                CategoryTheory.CoverDense.Types.pushforwardFamily α x = fun x x_1 hf => Dᵒᵖ.map CategoryTheory.CategoryStruct.toQuiver (Type v) CategoryTheory.CategoryStruct.toQuiver ℱ'.val.toPrefunctor (G.op.obj (Opposite.op (Nonempty.some hf).1)) (Opposite.op x) (Nonempty.some hf).lift.op (Cᵒᵖ.app CategoryTheory.Category.opposite (Type v) CategoryTheory.types (CategoryTheory.Functor.comp G.op ) (CategoryTheory.Functor.comp G.op ℱ'.val) α (Opposite.op (Nonempty.some hf).1) (Dᵒᵖ.map CategoryTheory.CategoryStruct.toQuiver (Type v) CategoryTheory.CategoryStruct.toQuiver .toPrefunctor (Opposite.op X) (G.op.obj (Opposite.op (Nonempty.some hf).1)) (Nonempty.some hf).map.op x))

                (Implementation). The morphism ℱ(X) ⟶ ℱ'(X) given by gluing the pushforwardFamily.

                Instances For
                  @[simp]
                  theorem CategoryTheory.CoverDense.Types.pushforwardFamily_apply {C : Type u_1} [CategoryTheory.Category.{u_6, u_1} C] {D : Type u_2} [CategoryTheory.Category.{u_5, u_2} D] {K : CategoryTheory.GrothendieckTopology D} {G : CategoryTheory.Functor C D} [CategoryTheory.Full G] {ℱ : CategoryTheory.Functor Dᵒᵖ (Type v)} {ℱ' : CategoryTheory.SheafOfTypes K} (α : CategoryTheory.Functor.comp G.op CategoryTheory.Functor.comp G.op ℱ'.val) {X : D} (x : .obj (Opposite.op X)) {Y : C} (f : G.obj Y X) :
                  CategoryTheory.CoverDense.Types.pushforwardFamily α x f (_ : CategoryTheory.Presieve.coverByImage G X f) = Cᵒᵖ.app CategoryTheory.Category.opposite (Type v) CategoryTheory.types (CategoryTheory.Functor.comp G.op ) (CategoryTheory.Functor.comp G.op ℱ'.val) α (Opposite.op Y) (Dᵒᵖ.map CategoryTheory.CategoryStruct.toQuiver (Type v) CategoryTheory.CategoryStruct.toQuiver .toPrefunctor (Opposite.op X) (Opposite.op (G.obj Y)) f.op x)
                  @[simp]
                  theorem CategoryTheory.CoverDense.Types.appHom_restrict {C : Type u_1} [CategoryTheory.Category.{u_6, u_1} C] {D : Type u_2} [CategoryTheory.Category.{u_5, u_2} D] {K : CategoryTheory.GrothendieckTopology D} {G : CategoryTheory.Functor C D} (H : CategoryTheory.CoverDense K G) [CategoryTheory.Full G] {ℱ : CategoryTheory.Functor Dᵒᵖ (Type v)} {ℱ' : CategoryTheory.SheafOfTypes K} (α : CategoryTheory.Functor.comp G.op CategoryTheory.Functor.comp G.op ℱ'.val) {X : D} {Y : C} (f : Opposite.op X Opposite.op (G.obj Y)) (x : .obj (Opposite.op X)) :
                  Dᵒᵖ.map CategoryTheory.CategoryStruct.toQuiver (Type v) CategoryTheory.CategoryStruct.toQuiver ℱ'.val.toPrefunctor (Opposite.op X) (Opposite.op (G.obj Y)) f (CategoryTheory.CoverDense.Types.appHom H α X x) = Cᵒᵖ.app CategoryTheory.Category.opposite (Type v) CategoryTheory.types (CategoryTheory.Functor.comp G.op ) (CategoryTheory.Functor.comp G.op ℱ'.val) α (Opposite.op Y) (Dᵒᵖ.map CategoryTheory.CategoryStruct.toQuiver (Type v) CategoryTheory.CategoryStruct.toQuiver .toPrefunctor (Opposite.op X) (Opposite.op (G.obj Y)) f x)

                  (Implementation). The maps given in appIso is inverse to each other and gives a ℱ(X) ≅ ℱ'(X).

                  Instances For

                    Given a natural transformation G ⋙ ℱ ⟶ G ⋙ ℱ' between presheaves of types, where G is full and cover-dense, and ℱ' is a sheaf, we may obtain a natural transformation between sheaves.

                    Instances For

                      Given a natural isomorphism G ⋙ ℱ ≅ G ⋙ ℱ' between presheaves of types, where G is full and cover-dense, and ℱ, ℱ' are sheaves, we may obtain a natural isomorphism between presheaves.

                      Instances For

                        Given a natural isomorphism G ⋙ ℱ ≅ G ⋙ ℱ' between presheaves of types, where G is full and cover-dense, and ℱ, ℱ' are sheaves, we may obtain a natural isomorphism between sheaves.

                        Instances For

                          (Implementation). The sheaf map given in types.sheaf_hom is natural in terms of X.

                          Instances For

                            (Implementation). sheafCoyonedaHom but the order of the arguments of the functor are swapped.

                            Instances For

                              Given a natural transformation G ⋙ ℱ ⟶ G ⋙ ℱ' between presheaves of arbitrary category, where G is full and cover-dense, and ℱ' is a sheaf, we may obtain a natural transformation between presheaves.

                              Instances For

                                Given a natural isomorphism G ⋙ ℱ ≅ G ⋙ ℱ' between presheaves of arbitrary category, where G is full and cover-dense, and ℱ', ℱ are sheaves, we may obtain a natural isomorphism between presheaves.

                                Instances For

                                  Given a natural isomorphism G ⋙ ℱ ≅ G ⋙ ℱ' between presheaves of arbitrary category, where G is full and cover-dense, and ℱ', ℱ are sheaves, we may obtain a natural isomorphism between presheaves.

                                  Instances For

                                    If the pullback map is obtained via whiskering, then the result sheaf_hom (whisker_left G.op α) is equal to α.

                                    A full and cover-dense functor G induces an equivalence between morphisms into a sheaf and morphisms over the restrictions via G.

                                    Instances For

                                      Given a full and cover-dense functor G and a natural transformation of sheaves α : ℱ ⟶ ℱ', if the pullback of α along G is iso, then α is also iso.

                                      Given a functor between small sites that is cover-dense, cover-preserving, and cover-lifting, it induces an equivalence of category of sheaves valued in a complete category.

                                      Instances For
                                        @[inline, reducible]
                                        noncomputable abbrev CategoryTheory.CoverDense.sheafEquivOfCoverPreservingCoverLiftingSheafificationCompatibility {C : Type u} {D : Type u} [CategoryTheory.Category.{v, u} C] [CategoryTheory.Category.{v, u} D] {G : CategoryTheory.Functor C D} [CategoryTheory.Full G] [CategoryTheory.Faithful G] {J : CategoryTheory.GrothendieckTopology C} {K : CategoryTheory.GrothendieckTopology D} {A : Type w} [CategoryTheory.Category.{max u v, w} A] [CategoryTheory.Limits.HasLimits A] (Hd : CategoryTheory.CoverDense K G) (Hp : CategoryTheory.CoverPreserving J K G) (Hl : CategoryTheory.CoverLifting J K G) [CategoryTheory.ConcreteCategory A] [CategoryTheory.Limits.PreservesLimits (CategoryTheory.forget A)] [CategoryTheory.ReflectsIsomorphisms (CategoryTheory.forget A)] [(X : C) → CategoryTheory.Limits.PreservesColimitsOfShape (CategoryTheory.GrothendieckTopology.Cover J X)ᵒᵖ (CategoryTheory.forget A)] [∀ (X : C), CategoryTheory.Limits.HasColimitsOfShape (CategoryTheory.GrothendieckTopology.Cover J X)ᵒᵖ A] [(X : D) → CategoryTheory.Limits.PreservesColimitsOfShape (CategoryTheory.GrothendieckTopology.Cover K X)ᵒᵖ (CategoryTheory.forget A)] [∀ (X : D), CategoryTheory.Limits.HasColimitsOfShape (CategoryTheory.GrothendieckTopology.Cover K X)ᵒᵖ A] :

                                        The natural isomorphism exhibiting the compatibility of sheafEquivOfCoverPreservingCoverLifting with sheafification.

                                        Instances For