Documentation

Mathlib.Topology.Sheaves.Skyscraper

Skyscraper (pre)sheaves #

A skyscraper (pre)sheaf ๐“• : (Pre)Sheaf C X is the (pre)sheaf with value A at point pโ‚€ that is supported only at open sets contain pโ‚€, i.e. ๐“•(U) = A if pโ‚€ โˆˆ U and ๐“•(U) = * if pโ‚€ โˆ‰ U where * is a terminal object of C. In terms of stalks, ๐“• is supported at all specializations of pโ‚€, i.e. if pโ‚€ โคณ x then ๐“•โ‚“ โ‰… A and if ยฌ pโ‚€ โคณ x then ๐“•โ‚“ โ‰… *.

Main definitions #

Main statements #

TODO: generalize universe level when calculating stalks, after generalizing universe level of stalk. TODO(@joelriou): refactor the definitions in this file so as to make them particular cases of general constructions for points of sites from Mathlib/CategoryTheory/Sites/Point/Skyscraper.lean.

noncomputable def skyscraperPresheaf {X : TopCat} (pโ‚€ : โ†‘X) [(U : TopologicalSpace.Opens โ†‘X) โ†’ Decidable (pโ‚€ โˆˆ U)] {C : Type v} [CategoryTheory.Category.{w, v} C] [CategoryTheory.Limits.HasTerminal C] (A : C) :

A skyscraper presheaf is a presheaf supported at a single point: if pโ‚€ โˆˆ X is a specified point, then the skyscraper presheaf ๐“• with value A is defined by U โ†ฆ A if pโ‚€ โˆˆ U and U โ†ฆ * if pโ‚€ โˆ‰ A where * is some terminal object.

Instances For
    @[simp]
    theorem skyscraperPresheaf_obj {X : TopCat} (pโ‚€ : โ†‘X) [(U : TopologicalSpace.Opens โ†‘X) โ†’ Decidable (pโ‚€ โˆˆ U)] {C : Type v} [CategoryTheory.Category.{w, v} C] [CategoryTheory.Limits.HasTerminal C] (A : C) (U : (TopologicalSpace.Opens โ†‘X)แต’แต–) :
    (skyscraperPresheaf pโ‚€ A).obj U = if pโ‚€ โˆˆ Opposite.unop U then A else โŠค_ C
    @[simp]
    theorem skyscraperPresheaf_map {X : TopCat} (pโ‚€ : โ†‘X) [(U : TopologicalSpace.Opens โ†‘X) โ†’ Decidable (pโ‚€ โˆˆ U)] {C : Type v} [CategoryTheory.Category.{w, v} C] [CategoryTheory.Limits.HasTerminal C] (A : C) {U V : (TopologicalSpace.Opens โ†‘X)แต’แต–} (i : U โŸถ V) :
    (skyscraperPresheaf pโ‚€ A).map i = if h : pโ‚€ โˆˆ Opposite.unop V then CategoryTheory.eqToHom โ‹ฏ else (โ‹ฏ โ–ธ CategoryTheory.Limits.terminalIsTerminal).from (if pโ‚€ โˆˆ Opposite.unop U then A else โŠค_ C)
    theorem skyscraperPresheaf_eq_pushforward {X : TopCat} (pโ‚€ : โ†‘X) [(U : TopologicalSpace.Opens โ†‘X) โ†’ Decidable (pโ‚€ โˆˆ U)] {C : Type v} [CategoryTheory.Category.{w, v} C] [CategoryTheory.Limits.HasTerminal C] (A : C) [hd : (U : TopologicalSpace.Opens โ†‘(TopCat.of PUnit.{u + 1})) โ†’ Decidable (PUnit.unit โˆˆ U)] :
    skyscraperPresheaf pโ‚€ A = (TopCat.Presheaf.pushforward C (TopCat.ofHom (ContinuousMap.const (โ†‘(TopCat.of PUnit.{u + 1})) pโ‚€))).obj (skyscraperPresheaf PUnit.unit A)
    noncomputable def SkyscraperPresheafFunctor.map' {X : TopCat} (pโ‚€ : โ†‘X) [(U : TopologicalSpace.Opens โ†‘X) โ†’ Decidable (pโ‚€ โˆˆ U)] {C : Type v} [CategoryTheory.Category.{w, v} C] [CategoryTheory.Limits.HasTerminal C] {a b : C} (f : a โŸถ b) :

    Taking skyscraper presheaf at a point is functorial: c โ†ฆ skyscraper pโ‚€ c defines a functor by sending every f : a โŸถ b to the natural transformation ฮฑ defined as: ฮฑ(U) = f : a โŸถ b if pโ‚€ โˆˆ U and the unique morphism to a terminal object in C if pโ‚€ โˆ‰ U.

    Instances For
      @[simp]
      theorem SkyscraperPresheafFunctor.map'_app {X : TopCat} (pโ‚€ : โ†‘X) [(U : TopologicalSpace.Opens โ†‘X) โ†’ Decidable (pโ‚€ โˆˆ U)] {C : Type v} [CategoryTheory.Category.{w, v} C] [CategoryTheory.Limits.HasTerminal C] {a b : C} (f : a โŸถ b) (U : (TopologicalSpace.Opens โ†‘X)แต’แต–) :
      theorem SkyscraperPresheafFunctor.map'_comp {X : TopCat} (pโ‚€ : โ†‘X) [(U : TopologicalSpace.Opens โ†‘X) โ†’ Decidable (pโ‚€ โˆˆ U)] {C : Type v} [CategoryTheory.Category.{w, v} C] [CategoryTheory.Limits.HasTerminal C] {a b c : C} (f : a โŸถ b) (g : b โŸถ c) :
      noncomputable def skyscraperPresheafFunctor {X : TopCat} (pโ‚€ : โ†‘X) [(U : TopologicalSpace.Opens โ†‘X) โ†’ Decidable (pโ‚€ โˆˆ U)] {C : Type v} [CategoryTheory.Category.{w, v} C] [CategoryTheory.Limits.HasTerminal C] :

      Taking skyscraper presheaf at a point is functorial: c โ†ฆ skyscraper pโ‚€ c defines a functor by sending every f : a โŸถ b to the natural transformation ฮฑ defined as: ฮฑ(U) = f : a โŸถ b if pโ‚€ โˆˆ U and the unique morphism to a terminal object in C if pโ‚€ โˆ‰ U.

      Instances For
        @[simp]
        theorem skyscraperPresheafFunctor_map {X : TopCat} (pโ‚€ : โ†‘X) [(U : TopologicalSpace.Opens โ†‘X) โ†’ Decidable (pโ‚€ โˆˆ U)] {C : Type v} [CategoryTheory.Category.{w, v} C] [CategoryTheory.Limits.HasTerminal C] {Xโœ Yโœ : C} (f : Xโœ โŸถ Yโœ) :
        @[simp]
        theorem skyscraperPresheafFunctor_obj {X : TopCat} (pโ‚€ : โ†‘X) [(U : TopologicalSpace.Opens โ†‘X) โ†’ Decidable (pโ‚€ โˆˆ U)] {C : Type v} [CategoryTheory.Category.{w, v} C] [CategoryTheory.Limits.HasTerminal C] (A : C) :
        def skyscraperPresheafCoconeOfSpecializes {X : TopCat} (pโ‚€ : โ†‘X) [(U : TopologicalSpace.Opens โ†‘X) โ†’ Decidable (pโ‚€ โˆˆ U)] {C : Type v} [CategoryTheory.Category.{u, v} C] (A : C) [CategoryTheory.Limits.HasTerminal C] {y : โ†‘X} (h : pโ‚€ โคณ y) :

        The cocone at A for the stalk functor of skyscraperPresheaf pโ‚€ A when y โˆˆ closure {pโ‚€}

        Instances For
          @[simp]
          theorem skyscraperPresheafCoconeOfSpecializes_ฮน_app {X : TopCat} (pโ‚€ : โ†‘X) [(U : TopologicalSpace.Opens โ†‘X) โ†’ Decidable (pโ‚€ โˆˆ U)] {C : Type v} [CategoryTheory.Category.{u, v} C] (A : C) [CategoryTheory.Limits.HasTerminal C] {y : โ†‘X} (h : pโ‚€ โคณ y) (U : (TopologicalSpace.OpenNhds y)แต’แต–) :
          @[simp]
          theorem skyscraperPresheafCoconeOfSpecializes_pt {X : TopCat} (pโ‚€ : โ†‘X) [(U : TopologicalSpace.Opens โ†‘X) โ†’ Decidable (pโ‚€ โˆˆ U)] {C : Type v} [CategoryTheory.Category.{u, v} C] (A : C) [CategoryTheory.Limits.HasTerminal C] {y : โ†‘X} (h : pโ‚€ โคณ y) :
          noncomputable def skyscraperPresheafCoconeIsColimitOfSpecializes {X : TopCat} (pโ‚€ : โ†‘X) [(U : TopologicalSpace.Opens โ†‘X) โ†’ Decidable (pโ‚€ โˆˆ U)] {C : Type v} [CategoryTheory.Category.{u, v} C] (A : C) [CategoryTheory.Limits.HasTerminal C] {y : โ†‘X} (h : pโ‚€ โคณ y) :

          The cocone at A for the stalk functor of skyscraperPresheaf pโ‚€ A when y โˆˆ closure {pโ‚€} is a colimit

          Instances For
            noncomputable def skyscraperPresheafStalkOfSpecializes {X : TopCat} (pโ‚€ : โ†‘X) [(U : TopologicalSpace.Opens โ†‘X) โ†’ Decidable (pโ‚€ โˆˆ U)] {C : Type v} [CategoryTheory.Category.{u, v} C] (A : C) [CategoryTheory.Limits.HasTerminal C] [CategoryTheory.Limits.HasColimits C] {y : โ†‘X} (h : pโ‚€ โคณ y) :

            If y โˆˆ closure {pโ‚€}, then the stalk of skyscraperPresheaf pโ‚€ A at y is A.

            Instances For
              @[simp]
              theorem germ_skyscraperPresheafStalkOfSpecializes_hom {X : TopCat} (pโ‚€ : โ†‘X) [(U : TopologicalSpace.Opens โ†‘X) โ†’ Decidable (pโ‚€ โˆˆ U)] {C : Type v} [CategoryTheory.Category.{u, v} C] (A : C) [CategoryTheory.Limits.HasTerminal C] [CategoryTheory.Limits.HasColimits C] {y : โ†‘X} (h : pโ‚€ โคณ y) (U : TopologicalSpace.Opens โ†‘X) (hU : y โˆˆ U) :
              @[simp]
              theorem germ_skyscraperPresheafStalkOfSpecializes_hom_assoc {X : TopCat} (pโ‚€ : โ†‘X) [(U : TopologicalSpace.Opens โ†‘X) โ†’ Decidable (pโ‚€ โˆˆ U)] {C : Type v} [CategoryTheory.Category.{u, v} C] (A : C) [CategoryTheory.Limits.HasTerminal C] [CategoryTheory.Limits.HasColimits C] {y : โ†‘X} (h : pโ‚€ โคณ y) (U : TopologicalSpace.Opens โ†‘X) (hU : y โˆˆ U) {Z : C} (hโœ : A โŸถ Z) :
              noncomputable def skyscraperPresheafCocone {X : TopCat} (pโ‚€ : โ†‘X) [(U : TopologicalSpace.Opens โ†‘X) โ†’ Decidable (pโ‚€ โˆˆ U)] {C : Type v} [CategoryTheory.Category.{u, v} C] (A : C) [CategoryTheory.Limits.HasTerminal C] (y : โ†‘X) :

              The cocone at * for the stalk functor of skyscraperPresheaf pโ‚€ A when y โˆ‰ closure {pโ‚€}

              Instances For
                @[simp]
                theorem skyscraperPresheafCocone_pt {X : TopCat} (pโ‚€ : โ†‘X) [(U : TopologicalSpace.Opens โ†‘X) โ†’ Decidable (pโ‚€ โˆˆ U)] {C : Type v} [CategoryTheory.Category.{u, v} C] (A : C) [CategoryTheory.Limits.HasTerminal C] (y : โ†‘X) :
                @[simp]
                theorem skyscraperPresheafCocone_ฮน_app {X : TopCat} (pโ‚€ : โ†‘X) [(U : TopologicalSpace.Opens โ†‘X) โ†’ Decidable (pโ‚€ โˆˆ U)] {C : Type v} [CategoryTheory.Category.{u, v} C] (A : C) [CategoryTheory.Limits.HasTerminal C] (y : โ†‘X) (xโœ : (TopologicalSpace.OpenNhds y)แต’แต–) :
                noncomputable def skyscraperPresheafCoconeIsColimitOfNotSpecializes {X : TopCat} (pโ‚€ : โ†‘X) [(U : TopologicalSpace.Opens โ†‘X) โ†’ Decidable (pโ‚€ โˆˆ U)] {C : Type v} [CategoryTheory.Category.{u, v} C] (A : C) [CategoryTheory.Limits.HasTerminal C] {y : โ†‘X} (h : ยฌpโ‚€ โคณ y) :

                The cocone at * for the stalk functor of skyscraperPresheaf pโ‚€ A when y โˆ‰ closure {pโ‚€} is a colimit

                Instances For
                  noncomputable def skyscraperPresheafStalkOfNotSpecializes {X : TopCat} (pโ‚€ : โ†‘X) [(U : TopologicalSpace.Opens โ†‘X) โ†’ Decidable (pโ‚€ โˆˆ U)] {C : Type v} [CategoryTheory.Category.{u, v} C] (A : C) [CategoryTheory.Limits.HasTerminal C] [CategoryTheory.Limits.HasColimits C] {y : โ†‘X} (h : ยฌpโ‚€ โคณ y) :

                  If y โˆ‰ closure {pโ‚€}, then the stalk of skyscraperPresheaf pโ‚€ A at y is isomorphic to a terminal object.

                  Instances For
                    noncomputable def skyscraperPresheafStalkOfNotSpecializesIsTerminal {X : TopCat} (pโ‚€ : โ†‘X) [(U : TopologicalSpace.Opens โ†‘X) โ†’ Decidable (pโ‚€ โˆˆ U)] {C : Type v} [CategoryTheory.Category.{u, v} C] (A : C) [CategoryTheory.Limits.HasTerminal C] [CategoryTheory.Limits.HasColimits C] {y : โ†‘X} (h : ยฌpโ‚€ โคณ y) :

                    If y โˆ‰ closure {pโ‚€}, then the stalk of skyscraperPresheaf pโ‚€ A at y is a terminal object

                    Instances For
                      theorem skyscraperPresheaf_isSheaf {X : TopCat} (pโ‚€ : โ†‘X) [(U : TopologicalSpace.Opens โ†‘X) โ†’ Decidable (pโ‚€ โˆˆ U)] {C : Type v} [CategoryTheory.Category.{u, v} C] (A : C) [CategoryTheory.Limits.HasTerminal C] :
                      noncomputable def skyscraperSheaf {X : TopCat} (pโ‚€ : โ†‘X) [(U : TopologicalSpace.Opens โ†‘X) โ†’ Decidable (pโ‚€ โˆˆ U)] {C : Type v} [CategoryTheory.Category.{u, v} C] (A : C) [CategoryTheory.Limits.HasTerminal C] :

                      The skyscraper presheaf supported at pโ‚€ with value A is the sheaf that assigns A to all opens U that contain pโ‚€ and assigns * otherwise.

                      Instances For
                        noncomputable def skyscraperSheafFunctor {X : TopCat} (pโ‚€ : โ†‘X) [(U : TopologicalSpace.Opens โ†‘X) โ†’ Decidable (pโ‚€ โˆˆ U)] {C : Type v} [CategoryTheory.Category.{u, v} C] [CategoryTheory.Limits.HasTerminal C] :

                        Taking skyscraper sheaf at a point is functorial: c โ†ฆ skyscraper pโ‚€ c defines a functor by sending every f : a โŸถ b to the natural transformation ฮฑ defined as: ฮฑ(U) = f : a โŸถ b if pโ‚€ โˆˆ U and the unique morphism to a terminal object in C if pโ‚€ โˆ‰ U.

                        Instances For
                          noncomputable def StalkSkyscraperPresheafAdjunctionAuxs.toSkyscraperPresheaf {X : TopCat} (pโ‚€ : โ†‘X) [(U : TopologicalSpace.Opens โ†‘X) โ†’ Decidable (pโ‚€ โˆˆ U)] {C : Type v} [CategoryTheory.Category.{u, v} C] [CategoryTheory.Limits.HasTerminal C] [CategoryTheory.Limits.HasColimits C] {๐“• : TopCat.Presheaf C X} {c : C} (f : ๐“•.stalk pโ‚€ โŸถ c) :
                          ๐“• โŸถ skyscraperPresheaf pโ‚€ c

                          If f : ๐“•.stalk pโ‚€ โŸถ c, then a natural transformation ๐“• โŸถ skyscraperPresheaf pโ‚€ c can be defined by: ๐“•.germ pโ‚€ โ‰ซ f : ๐“•(U) โŸถ c if pโ‚€ โˆˆ U and the unique morphism to a terminal object if pโ‚€ โˆ‰ U.

                          Instances For
                            @[simp]
                            theorem StalkSkyscraperPresheafAdjunctionAuxs.toSkyscraperPresheaf_app {X : TopCat} (pโ‚€ : โ†‘X) [(U : TopologicalSpace.Opens โ†‘X) โ†’ Decidable (pโ‚€ โˆˆ U)] {C : Type v} [CategoryTheory.Category.{u, v} C] [CategoryTheory.Limits.HasTerminal C] [CategoryTheory.Limits.HasColimits C] {๐“• : TopCat.Presheaf C X} {c : C} (f : ๐“•.stalk pโ‚€ โŸถ c) (U : (TopologicalSpace.Opens โ†‘X)แต’แต–) :
                            (toSkyscraperPresheaf pโ‚€ f).app U = if h : pโ‚€ โˆˆ Opposite.unop U then CategoryTheory.CategoryStruct.comp (๐“•.germ (Opposite.unop U) pโ‚€ h) (CategoryTheory.CategoryStruct.comp f (CategoryTheory.eqToHom โ‹ฏ)) else (โ‹ฏ โ–ธ CategoryTheory.Limits.terminalIsTerminal).from (๐“•.obj U)
                            noncomputable def StalkSkyscraperPresheafAdjunctionAuxs.fromStalk {X : TopCat} (pโ‚€ : โ†‘X) [(U : TopologicalSpace.Opens โ†‘X) โ†’ Decidable (pโ‚€ โˆˆ U)] {C : Type v} [CategoryTheory.Category.{u, v} C] [CategoryTheory.Limits.HasTerminal C] [CategoryTheory.Limits.HasColimits C] {๐“• : TopCat.Presheaf C X} {c : C} (f : ๐“• โŸถ skyscraperPresheaf pโ‚€ c) :
                            ๐“•.stalk pโ‚€ โŸถ c

                            If f : ๐“• โŸถ skyscraperPresheaf pโ‚€ c is a natural transformation, then there is a morphism ๐“•.stalk pโ‚€ โŸถ c defined as the morphism from colimit to cocone at c.

                            Instances For
                              @[simp]
                              theorem StalkSkyscraperPresheafAdjunctionAuxs.germ_fromStalk {X : TopCat} (pโ‚€ : โ†‘X) [(U : TopologicalSpace.Opens โ†‘X) โ†’ Decidable (pโ‚€ โˆˆ U)] {C : Type v} [CategoryTheory.Category.{u, v} C] [CategoryTheory.Limits.HasTerminal C] [CategoryTheory.Limits.HasColimits C] {๐“• : TopCat.Presheaf C X} {c : C} (f : ๐“• โŸถ skyscraperPresheaf pโ‚€ c) (U : TopologicalSpace.Opens โ†‘X) (hU : pโ‚€ โˆˆ U) :
                              @[simp]
                              theorem StalkSkyscraperPresheafAdjunctionAuxs.germ_fromStalk_assoc {X : TopCat} (pโ‚€ : โ†‘X) [(U : TopologicalSpace.Opens โ†‘X) โ†’ Decidable (pโ‚€ โˆˆ U)] {C : Type v} [CategoryTheory.Category.{u, v} C] [CategoryTheory.Limits.HasTerminal C] [CategoryTheory.Limits.HasColimits C] {๐“• : TopCat.Presheaf C X} {c : C} (f : ๐“• โŸถ skyscraperPresheaf pโ‚€ c) (U : TopologicalSpace.Opens โ†‘X) (hU : pโ‚€ โˆˆ U) {Z : C} (h : c โŸถ Z) :
                              theorem StalkSkyscraperPresheafAdjunctionAuxs.to_skyscraper_fromStalk {X : TopCat} (pโ‚€ : โ†‘X) [(U : TopologicalSpace.Opens โ†‘X) โ†’ Decidable (pโ‚€ โˆˆ U)] {C : Type v} [CategoryTheory.Category.{u, v} C] [CategoryTheory.Limits.HasTerminal C] [CategoryTheory.Limits.HasColimits C] {๐“• : TopCat.Presheaf C X} {c : C} (f : ๐“• โŸถ skyscraperPresheaf pโ‚€ c) :
                              toSkyscraperPresheaf pโ‚€ (fromStalk pโ‚€ f) = f
                              theorem StalkSkyscraperPresheafAdjunctionAuxs.fromStalk_to_skyscraper {X : TopCat} (pโ‚€ : โ†‘X) [(U : TopologicalSpace.Opens โ†‘X) โ†’ Decidable (pโ‚€ โˆˆ U)] {C : Type v} [CategoryTheory.Category.{u, v} C] [CategoryTheory.Limits.HasTerminal C] [CategoryTheory.Limits.HasColimits C] {๐“• : TopCat.Presheaf C X} {c : C} (f : ๐“•.stalk pโ‚€ โŸถ c) :
                              fromStalk pโ‚€ (toSkyscraperPresheaf pโ‚€ f) = f

                              The unit in Presheaf.stalkFunctor โŠฃ skyscraperPresheafFunctor

                              Instances For

                                The counit in Presheaf.stalkFunctor โŠฃ skyscraperPresheafFunctor

                                Instances For
                                  noncomputable def skyscraperPresheafStalkAdjunction {X : TopCat} (pโ‚€ : โ†‘X) [(U : TopologicalSpace.Opens โ†‘X) โ†’ Decidable (pโ‚€ โˆˆ U)] {C : Type v} [CategoryTheory.Category.{u, v} C] [CategoryTheory.Limits.HasTerminal C] [CategoryTheory.Limits.HasColimits C] :

                                  skyscraperPresheafFunctor is the right adjoint of Presheaf.stalkFunctor

                                  Instances For
                                    noncomputable def stalkSkyscraperSheafAdjunction {X : TopCat} (pโ‚€ : โ†‘X) [(U : TopologicalSpace.Opens โ†‘X) โ†’ Decidable (pโ‚€ โˆˆ U)] {C : Type v} [CategoryTheory.Category.{u, v} C] [CategoryTheory.Limits.HasTerminal C] [CategoryTheory.Limits.HasColimits C] :

                                    Taking stalks of a sheaf is the left adjoint functor to skyscraperSheafFunctor

                                    Instances For
                                      noncomputable def skyscraperSheafForgetAdjunction {X : TopCat} (pโ‚€ : โ†‘X) [(U : TopologicalSpace.Opens โ†‘X) โ†’ Decidable (pโ‚€ โˆˆ U)] {C : Type v} [CategoryTheory.Category.{u, v} C] [CategoryTheory.Limits.HasTerminal C] [CategoryTheory.Limits.HasColimits C] :

                                      Taking stalks is the left adjoint of skyscraperSheafFunctor โ‹™ Sheaf.forget. Useful only when the fact that skyscraperPresheafFunctor factors through Sheaf C X is relevant.

                                      Instances For