Documentation

Mathlib.CategoryTheory.Sites.ConcreteSheafification

Sheafification #

We construct the sheafification of a presheaf over a site C with values in D whenever D is a concrete category for which the forgetful functor preserves the appropriate (co)limits and reflects isomorphisms.

We generally follow the approach of https://stacks.math.columbia.edu/tag/00W1

def CategoryTheory.Meq {C : Type u} [Category.{v, u} C] {J : GrothendieckTopology C} {D : Type w} [Category.{w', w} D] {FD : D โ†’ D โ†’ Type u_1} {CD : D โ†’ Type t} [(X Y : D) โ†’ FunLike (FD X Y) (CD X) (CD Y)] [ConcreteCategory D FD] {X : C} (P : Functor Cแต’แต– D) (S : J.Cover X) :
Type (max 0 (max t u) v)

A concrete version of the multiequalizer, to be used below.

Instances For
    @[implicit_reducible]
    instance CategoryTheory.Meq.instCoeFunForallToTypeObjOppositeOpY {C : Type u} [Category.{v, u} C] {J : GrothendieckTopology C} {D : Type w} [Category.{w', w} D] {FD : D โ†’ D โ†’ Type u_1} {CD : D โ†’ Type t} [(X Y : D) โ†’ FunLike (FD X Y) (CD X) (CD Y)] [ConcreteCategory D FD] {X : C} (P : Functor Cแต’แต– D) (S : J.Cover X) :
    CoeFun (Meq P S) fun (x : Meq P S) => (I : S.Arrow) โ†’ ToType (P.obj (Opposite.op I.Y))
    theorem CategoryTheory.Meq.congr_apply {C : Type u} [Category.{v, u} C] {J : GrothendieckTopology C} {D : Type w} [Category.{w', w} D] {FD : D โ†’ D โ†’ Type u_1} {CD : D โ†’ Type t} [(X Y : D) โ†’ FunLike (FD X Y) (CD X) (CD Y)] [ConcreteCategory D FD] {X : C} {P : Functor Cแต’แต– D} {S : J.Cover X} (x : Meq P S) {Y : C} {f g : Y โŸถ X} (h : f = g) (hf : (โ†‘S).arrows f) :
    โ†‘x { Y := Y, f := f, hf := hf } = โ†‘x { Y := Y, f := g, hf := โ‹ฏ }
    theorem CategoryTheory.Meq.ext {C : Type u} [Category.{v, u} C] {J : GrothendieckTopology C} {D : Type w} [Category.{w', w} D] {FD : D โ†’ D โ†’ Type u_1} {CD : D โ†’ Type t} [(X Y : D) โ†’ FunLike (FD X Y) (CD X) (CD Y)] [ConcreteCategory D FD] {X : C} {P : Functor Cแต’แต– D} {S : J.Cover X} (x y : Meq P S) (h : โˆ€ (I : S.Arrow), โ†‘x I = โ†‘y I) :
    x = y
    theorem CategoryTheory.Meq.ext_iff {C : Type u} [Category.{v, u} C] {J : GrothendieckTopology C} {D : Type w} [Category.{w', w} D] {FD : D โ†’ D โ†’ Type u_1} {CD : D โ†’ Type t} [(X Y : D) โ†’ FunLike (FD X Y) (CD X) (CD Y)] [ConcreteCategory D FD] {X : C} {P : Functor Cแต’แต– D} {S : J.Cover X} {x y : Meq P S} :
    x = y โ†” โˆ€ (I : S.Arrow), โ†‘x I = โ†‘y I
    theorem CategoryTheory.Meq.condition {C : Type u} [Category.{v, u} C] {J : GrothendieckTopology C} {D : Type w} [Category.{w', w} D] {FD : D โ†’ D โ†’ Type u_1} {CD : D โ†’ Type t} [(X Y : D) โ†’ FunLike (FD X Y) (CD X) (CD Y)] [ConcreteCategory D FD] {X : C} {P : Functor Cแต’แต– D} {S : J.Cover X} (x : Meq P S) (I : S.Relation) :
    (ConcreteCategory.hom (P.map I.r.gโ‚.op)) (โ†‘x (S.shape.fst I)) = (ConcreteCategory.hom (P.map I.r.gโ‚‚.op)) (โ†‘x (S.shape.snd I))
    def CategoryTheory.Meq.refine {C : Type u} [Category.{v, u} C] {J : GrothendieckTopology C} {D : Type w} [Category.{w', w} D] {FD : D โ†’ D โ†’ Type u_1} {CD : D โ†’ Type t} [(X Y : D) โ†’ FunLike (FD X Y) (CD X) (CD Y)] [ConcreteCategory D FD] {X : C} {P : Functor Cแต’แต– D} {S T : J.Cover X} (x : Meq P T) (e : S โŸถ T) :
    Meq P S

    Refine a term of Meq P T with respect to a refinement S โŸถ T of covers.

    Instances For
      @[simp]
      theorem CategoryTheory.Meq.refine_apply {C : Type u} [Category.{v, u} C] {J : GrothendieckTopology C} {D : Type w} [Category.{w', w} D] {FD : D โ†’ D โ†’ Type u_1} {CD : D โ†’ Type t} [(X Y : D) โ†’ FunLike (FD X Y) (CD X) (CD Y)] [ConcreteCategory D FD] {X : C} {P : Functor Cแต’แต– D} {S T : J.Cover X} (x : Meq P T) (e : S โŸถ T) (I : S.Arrow) :
      โ†‘(x.refine e) I = โ†‘x { Y := I.Y, f := I.f, hf := โ‹ฏ }
      def CategoryTheory.Meq.pullback {C : Type u} [Category.{v, u} C] {J : GrothendieckTopology C} {D : Type w} [Category.{w', w} D] {FD : D โ†’ D โ†’ Type u_1} {CD : D โ†’ Type t} [(X Y : D) โ†’ FunLike (FD X Y) (CD X) (CD Y)] [ConcreteCategory D FD] {Y X : C} {P : Functor Cแต’แต– D} {S : J.Cover X} (x : Meq P S) (f : Y โŸถ X) :
      Meq P ((J.pullback f).obj S)

      Pull back a term of Meq P S with respect to a morphism f : Y โŸถ X in C.

      Instances For
        @[simp]
        theorem CategoryTheory.Meq.pullback_apply {C : Type u} [Category.{v, u} C] {J : GrothendieckTopology C} {D : Type w} [Category.{w', w} D] {FD : D โ†’ D โ†’ Type u_1} {CD : D โ†’ Type t} [(X Y : D) โ†’ FunLike (FD X Y) (CD X) (CD Y)] [ConcreteCategory D FD] {Y X : C} {P : Functor Cแต’แต– D} {S : J.Cover X} (x : Meq P S) (f : Y โŸถ X) (I : ((J.pullback f).obj S).Arrow) :
        โ†‘(x.pullback f) I = โ†‘x { Y := I.Y, f := CategoryStruct.comp I.f f, hf := โ‹ฏ }
        @[simp]
        theorem CategoryTheory.Meq.pullback_refine {C : Type u} [Category.{v, u} C] {J : GrothendieckTopology C} {D : Type w} [Category.{w', w} D] {FD : D โ†’ D โ†’ Type u_1} {CD : D โ†’ Type t} [(X Y : D) โ†’ FunLike (FD X Y) (CD X) (CD Y)] [ConcreteCategory D FD] {Y X : C} {P : Functor Cแต’แต– D} {S T : J.Cover X} (h : S โŸถ T) (f : Y โŸถ X) (x : Meq P T) :
        (x.pullback f).refine ((J.pullback f).map h) = (x.refine h).pullback f
        def CategoryTheory.Meq.mk {C : Type u} [Category.{v, u} C] {J : GrothendieckTopology C} {D : Type w} [Category.{w', w} D] {FD : D โ†’ D โ†’ Type u_1} {CD : D โ†’ Type t} [(X Y : D) โ†’ FunLike (FD X Y) (CD X) (CD Y)] [ConcreteCategory D FD] {X : C} {P : Functor Cแต’แต– D} (S : J.Cover X) (x : ToType (P.obj (Opposite.op X))) :
        Meq P S

        Make a term of Meq P S.

        Instances For
          theorem CategoryTheory.Meq.mk_apply {C : Type u} [Category.{v, u} C] {J : GrothendieckTopology C} {D : Type w} [Category.{w', w} D] {FD : D โ†’ D โ†’ Type u_1} {CD : D โ†’ Type t} [(X Y : D) โ†’ FunLike (FD X Y) (CD X) (CD Y)] [ConcreteCategory D FD] {X : C} {P : Functor Cแต’แต– D} (S : J.Cover X) (x : ToType (P.obj (Opposite.op X))) (I : S.Arrow) :
          โ†‘(mk S x) I = (ConcreteCategory.hom (P.map I.f.op)) x
          noncomputable def CategoryTheory.Meq.equiv {C : Type u} [Category.{v, u} C] {J : GrothendieckTopology C} {D : Type w} [Category.{w', w} D] {FD : D โ†’ D โ†’ Type u_1} {CD : D โ†’ Type t} [(X Y : D) โ†’ FunLike (FD X Y) (CD X) (CD Y)] [ConcreteCategory D FD] [โˆ€ {X : C} (S : J.Cover X), Limits.PreservesLimitsOfShape (Limits.WalkingMulticospan S.shape) (forget D)] {X : C} (P : Functor Cแต’แต– D) (S : J.Cover X) [Limits.HasMultiequalizer (S.index P)] :

          The equivalence between the type associated to multiequalizer (S.index P) and Meq P S.

          Instances For
            @[simp]
            theorem CategoryTheory.Meq.equiv_apply {C : Type u} [Category.{v, u} C] {J : GrothendieckTopology C} {D : Type w} [Category.{w', w} D] {FD : D โ†’ D โ†’ Type u_1} {CD : D โ†’ Type t} [(X Y : D) โ†’ FunLike (FD X Y) (CD X) (CD Y)] [ConcreteCategory D FD] [โˆ€ {X : C} (S : J.Cover X), Limits.PreservesLimitsOfShape (Limits.WalkingMulticospan S.shape) (forget D)] {X : C} {P : Functor Cแต’แต– D} {S : J.Cover X} [Limits.HasMultiequalizer (S.index P)] (x : ToType (Limits.multiequalizer (S.index P))) (I : S.Arrow) :
            theorem CategoryTheory.Meq.equiv_symm_eq_apply {C : Type u} [Category.{v, u} C] {J : GrothendieckTopology C} {D : Type w} [Category.{w', w} D] {FD : D โ†’ D โ†’ Type u_1} {CD : D โ†’ Type t} [(X Y : D) โ†’ FunLike (FD X Y) (CD X) (CD Y)] [ConcreteCategory D FD] [โˆ€ {X : C} (S : J.Cover X), Limits.PreservesLimitsOfShape (Limits.WalkingMulticospan S.shape) (forget D)] {X : C} {P : Functor Cแต’แต– D} {S : J.Cover X} [Limits.HasMultiequalizer (S.index P)] (x : Meq P S) (I : S.Arrow) :
            noncomputable def CategoryTheory.GrothendieckTopology.Plus.mk {C : Type u} [Category.{v, u} C] {J : GrothendieckTopology C} {D : Type w} [Category.{w', w} D] {FD : D โ†’ D โ†’ Type u_1} {CD : D โ†’ Type t} [(X Y : D) โ†’ FunLike (FD X Y) (CD X) (CD Y)] [instCC : ConcreteCategory D FD] [โˆ€ {X : C} (S : J.Cover X), Limits.PreservesLimitsOfShape (Limits.WalkingMulticospan S.shape) (forget D)] [โˆ€ (X : C), Limits.HasColimitsOfShape (J.Cover X)แต’แต– D] [โˆ€ (P : Functor Cแต’แต– D) (X : C) (S : J.Cover X), Limits.HasMultiequalizer (S.index P)] {X : C} {P : Functor Cแต’แต– D} {S : J.Cover X} (x : Meq P S) :

            Make a term of (J.plusObj P).obj (op X) from x : Meq P S.

            Instances For
              theorem CategoryTheory.GrothendieckTopology.Plus.res_mk_eq_mk_pullback {C : Type u} [Category.{v, u} C] {J : GrothendieckTopology C} {D : Type w} [Category.{w', w} D] {FD : D โ†’ D โ†’ Type u_1} {CD : D โ†’ Type t} [(X Y : D) โ†’ FunLike (FD X Y) (CD X) (CD Y)] [instCC : ConcreteCategory D FD] [โˆ€ {X : C} (S : J.Cover X), Limits.PreservesLimitsOfShape (Limits.WalkingMulticospan S.shape) (forget D)] [โˆ€ (X : C), Limits.HasColimitsOfShape (J.Cover X)แต’แต– D] [โˆ€ (P : Functor Cแต’แต– D) (X : C) (S : J.Cover X), Limits.HasMultiequalizer (S.index P)] {Y X : C} {P : Functor Cแต’แต– D} {S : J.Cover X} (x : Meq P S) (f : Y โŸถ X) :
              (ConcreteCategory.hom ((J.plusObj P).map f.op)) (mk x) = mk (x.pullback f)
              theorem CategoryTheory.GrothendieckTopology.Plus.toPlus_mk {C : Type u} [Category.{v, u} C] {J : GrothendieckTopology C} {D : Type w} [Category.{w', w} D] {FD : D โ†’ D โ†’ Type u_1} {CD : D โ†’ Type t} [(X Y : D) โ†’ FunLike (FD X Y) (CD X) (CD Y)] [instCC : ConcreteCategory D FD] [โˆ€ {X : C} (S : J.Cover X), Limits.PreservesLimitsOfShape (Limits.WalkingMulticospan S.shape) (forget D)] [โˆ€ (X : C), Limits.HasColimitsOfShape (J.Cover X)แต’แต– D] [โˆ€ (P : Functor Cแต’แต– D) (X : C) (S : J.Cover X), Limits.HasMultiequalizer (S.index P)] {X : C} {P : Functor Cแต’แต– D} (S : J.Cover X) (x : ToType (P.obj (Opposite.op X))) :
              theorem CategoryTheory.GrothendieckTopology.Plus.toPlus_apply {C : Type u} [Category.{v, u} C] {J : GrothendieckTopology C} {D : Type w} [Category.{w', w} D] {FD : D โ†’ D โ†’ Type u_1} {CD : D โ†’ Type t} [(X Y : D) โ†’ FunLike (FD X Y) (CD X) (CD Y)] [instCC : ConcreteCategory D FD] [โˆ€ {X : C} (S : J.Cover X), Limits.PreservesLimitsOfShape (Limits.WalkingMulticospan S.shape) (forget D)] [โˆ€ (X : C), Limits.HasColimitsOfShape (J.Cover X)แต’แต– D] [โˆ€ (P : Functor Cแต’แต– D) (X : C) (S : J.Cover X), Limits.HasMultiequalizer (S.index P)] {X : C} {P : Functor Cแต’แต– D} (S : J.Cover X) (x : Meq P S) (I : S.Arrow) :
              (ConcreteCategory.hom ((J.toPlus P).app (Opposite.op I.Y))) (โ†‘x I) = (ConcreteCategory.hom ((J.plusObj P).map I.f.op)) (mk x)
              theorem CategoryTheory.GrothendieckTopology.Plus.toPlus_eq_mk {C : Type u} [Category.{v, u} C] {J : GrothendieckTopology C} {D : Type w} [Category.{w', w} D] {FD : D โ†’ D โ†’ Type u_1} {CD : D โ†’ Type t} [(X Y : D) โ†’ FunLike (FD X Y) (CD X) (CD Y)] [instCC : ConcreteCategory D FD] [โˆ€ {X : C} (S : J.Cover X), Limits.PreservesLimitsOfShape (Limits.WalkingMulticospan S.shape) (forget D)] [โˆ€ (X : C), Limits.HasColimitsOfShape (J.Cover X)แต’แต– D] [โˆ€ (P : Functor Cแต’แต– D) (X : C) (S : J.Cover X), Limits.HasMultiequalizer (S.index P)] {X : C} {P : Functor Cแต’แต– D} (x : ToType (P.obj (Opposite.op X))) :
              theorem CategoryTheory.GrothendieckTopology.Plus.exists_rep {C : Type u} [Category.{v, u} C] {J : GrothendieckTopology C} {D : Type w} [Category.{w', w} D] {FD : D โ†’ D โ†’ Type u_1} {CD : D โ†’ Type t} [(X Y : D) โ†’ FunLike (FD X Y) (CD X) (CD Y)] [instCC : ConcreteCategory D FD] [โˆ€ {X : C} (S : J.Cover X), Limits.PreservesLimitsOfShape (Limits.WalkingMulticospan S.shape) (forget D)] [โˆ€ (X : C), Limits.HasColimitsOfShape (J.Cover X)แต’แต– D] [โˆ€ (P : Functor Cแต’แต– D) (X : C) (S : J.Cover X), Limits.HasMultiequalizer (S.index P)] [โˆ€ (X : C), Limits.PreservesColimitsOfShape (J.Cover X)แต’แต– (forget D)] {X : C} {P : Functor Cแต’แต– D} (x : ToType ((J.plusObj P).obj (Opposite.op X))) :
              โˆƒ (S : J.Cover X) (y : Meq P S), x = mk y
              theorem CategoryTheory.GrothendieckTopology.Plus.eq_mk_iff_exists {C : Type u} [Category.{v, u} C] {J : GrothendieckTopology C} {D : Type w} [Category.{w', w} D] {FD : D โ†’ D โ†’ Type u_1} {CD : D โ†’ Type t} [(X Y : D) โ†’ FunLike (FD X Y) (CD X) (CD Y)] [instCC : ConcreteCategory D FD] [โˆ€ {X : C} (S : J.Cover X), Limits.PreservesLimitsOfShape (Limits.WalkingMulticospan S.shape) (forget D)] [โˆ€ (X : C), Limits.HasColimitsOfShape (J.Cover X)แต’แต– D] [โˆ€ (P : Functor Cแต’แต– D) (X : C) (S : J.Cover X), Limits.HasMultiequalizer (S.index P)] [โˆ€ (X : C), Limits.PreservesColimitsOfShape (J.Cover X)แต’แต– (forget D)] {X : C} {P : Functor Cแต’แต– D} {S T : J.Cover X} (x : Meq P S) (y : Meq P T) :
              mk x = mk y โ†” โˆƒ (W : J.Cover X) (h1 : W โŸถ S) (h2 : W โŸถ T), x.refine h1 = y.refine h2
              theorem CategoryTheory.GrothendieckTopology.Plus.sep {C : Type u} [Category.{v, u} C] {J : GrothendieckTopology C} {D : Type w} [Category.{w', w} D] {FD : D โ†’ D โ†’ Type u_1} {CD : D โ†’ Type t} [(X Y : D) โ†’ FunLike (FD X Y) (CD X) (CD Y)] [instCC : ConcreteCategory D FD] [โˆ€ {X : C} (S : J.Cover X), Limits.PreservesLimitsOfShape (Limits.WalkingMulticospan S.shape) (forget D)] [โˆ€ (X : C), Limits.HasColimitsOfShape (J.Cover X)แต’แต– D] [โˆ€ (P : Functor Cแต’แต– D) (X : C) (S : J.Cover X), Limits.HasMultiequalizer (S.index P)] [โˆ€ (X : C), Limits.PreservesColimitsOfShape (J.Cover X)แต’แต– (forget D)] {X : C} (P : Functor Cแต’แต– D) (S : J.Cover X) (x y : ToType ((J.plusObj P).obj (Opposite.op X))) (h : โˆ€ (I : S.Arrow), (ConcreteCategory.hom ((J.plusObj P).map I.f.op)) x = (ConcreteCategory.hom ((J.plusObj P).map I.f.op)) y) :
              x = y

              Pโบ is always separated.

              theorem CategoryTheory.GrothendieckTopology.Plus.inj_of_sep {C : Type u} [Category.{v, u} C] {J : GrothendieckTopology C} {D : Type w} [Category.{w', w} D] {FD : D โ†’ D โ†’ Type u_1} {CD : D โ†’ Type t} [(X Y : D) โ†’ FunLike (FD X Y) (CD X) (CD Y)] [instCC : ConcreteCategory D FD] [โˆ€ {X : C} (S : J.Cover X), Limits.PreservesLimitsOfShape (Limits.WalkingMulticospan S.shape) (forget D)] [โˆ€ (X : C), Limits.HasColimitsOfShape (J.Cover X)แต’แต– D] [โˆ€ (P : Functor Cแต’แต– D) (X : C) (S : J.Cover X), Limits.HasMultiequalizer (S.index P)] [โˆ€ (X : C), Limits.PreservesColimitsOfShape (J.Cover X)แต’แต– (forget D)] (P : Functor Cแต’แต– D) (hsep : โˆ€ (X : C) (S : J.Cover X) (x y : ToType (P.obj (Opposite.op X))), (โˆ€ (I : S.Arrow), (ConcreteCategory.hom (P.map I.f.op)) x = (ConcreteCategory.hom (P.map I.f.op)) y) โ†’ x = y) (X : C) :
              Function.Injective โ‡‘(ConcreteCategory.hom ((J.toPlus P).app (Opposite.op X)))
              noncomputable def CategoryTheory.GrothendieckTopology.Plus.meqOfSep {C : Type u} [Category.{v, u} C] {J : GrothendieckTopology C} {D : Type w} [Category.{w', w} D] {FD : D โ†’ D โ†’ Type u_1} {CD : D โ†’ Type t} [(X Y : D) โ†’ FunLike (FD X Y) (CD X) (CD Y)] [instCC : ConcreteCategory D FD] [โˆ€ {X : C} (S : J.Cover X), Limits.PreservesLimitsOfShape (Limits.WalkingMulticospan S.shape) (forget D)] [โˆ€ (X : C), Limits.HasColimitsOfShape (J.Cover X)แต’แต– D] [โˆ€ (P : Functor Cแต’แต– D) (X : C) (S : J.Cover X), Limits.HasMultiequalizer (S.index P)] [โˆ€ (X : C), Limits.PreservesColimitsOfShape (J.Cover X)แต’แต– (forget D)] (P : Functor Cแต’แต– D) (hsep : โˆ€ (X : C) (S : J.Cover X) (x y : ToType (P.obj (Opposite.op X))), (โˆ€ (I : S.Arrow), (ConcreteCategory.hom (P.map I.f.op)) x = (ConcreteCategory.hom (P.map I.f.op)) y) โ†’ x = y) (X : C) (S : J.Cover X) (s : Meq (J.plusObj P) S) (T : (I : S.Arrow) โ†’ J.Cover I.Y) (t : (I : S.Arrow) โ†’ Meq P (T I)) (ht : โˆ€ (I : S.Arrow), โ†‘s I = mk (t I)) :
              Meq P (S.bind T)

              An auxiliary definition to be used in the proof of exists_of_sep below. Given a compatible family of local sections for Pโบ, and representatives of said sections, construct a compatible family of local sections of P over the combination of the covers associated to the representatives. The separatedness condition is used to prove compatibility among these local sections of P.

              Instances For
                theorem CategoryTheory.GrothendieckTopology.Plus.exists_of_sep {C : Type u} [Category.{v, u} C] {J : GrothendieckTopology C} {D : Type w} [Category.{w', w} D] {FD : D โ†’ D โ†’ Type u_1} {CD : D โ†’ Type t} [(X Y : D) โ†’ FunLike (FD X Y) (CD X) (CD Y)] [instCC : ConcreteCategory D FD] [โˆ€ {X : C} (S : J.Cover X), Limits.PreservesLimitsOfShape (Limits.WalkingMulticospan S.shape) (forget D)] [โˆ€ (X : C), Limits.HasColimitsOfShape (J.Cover X)แต’แต– D] [โˆ€ (P : Functor Cแต’แต– D) (X : C) (S : J.Cover X), Limits.HasMultiequalizer (S.index P)] [โˆ€ (X : C), Limits.PreservesColimitsOfShape (J.Cover X)แต’แต– (forget D)] (P : Functor Cแต’แต– D) (hsep : โˆ€ (X : C) (S : J.Cover X) (x y : ToType (P.obj (Opposite.op X))), (โˆ€ (I : S.Arrow), (ConcreteCategory.hom (P.map I.f.op)) x = (ConcreteCategory.hom (P.map I.f.op)) y) โ†’ x = y) (X : C) (S : J.Cover X) (s : Meq (J.plusObj P) S) :
                โˆƒ (t : ToType ((J.plusObj P).obj (Opposite.op X))), Meq.mk S t = s
                theorem CategoryTheory.GrothendieckTopology.Plus.isSheaf_of_sep {C : Type u} [Category.{v, u} C] {J : GrothendieckTopology C} {D : Type w} [Category.{w', w} D] {FD : D โ†’ D โ†’ Type u_1} {CD : D โ†’ Type t} [(X Y : D) โ†’ FunLike (FD X Y) (CD X) (CD Y)] [instCC : ConcreteCategory D FD] [โˆ€ {X : C} (S : J.Cover X), Limits.PreservesLimitsOfShape (Limits.WalkingMulticospan S.shape) (forget D)] [โˆ€ (X : C), Limits.HasColimitsOfShape (J.Cover X)แต’แต– D] [โˆ€ (P : Functor Cแต’แต– D) (X : C) (S : J.Cover X), Limits.HasMultiequalizer (S.index P)] [โˆ€ (X : C), Limits.PreservesColimitsOfShape (J.Cover X)แต’แต– (forget D)] [(forget D).ReflectsIsomorphisms] (P : Functor Cแต’แต– D) (hsep : โˆ€ (X : C) (S : J.Cover X) (x y : ToType (P.obj (Opposite.op X))), (โˆ€ (I : S.Arrow), (ConcreteCategory.hom (P.map I.f.op)) x = (ConcreteCategory.hom (P.map I.f.op)) y) โ†’ x = y) :

                If P is separated, then Pโบ is a sheaf.

                theorem CategoryTheory.GrothendieckTopology.Plus.isSheaf_plus_plus {C : Type u} [Category.{v, u} C] (J : GrothendieckTopology C) {D : Type w} [Category.{w', w} D] {FD : D โ†’ D โ†’ Type u_1} {CD : D โ†’ Type t} [(X Y : D) โ†’ FunLike (FD X Y) (CD X) (CD Y)] [instCC : ConcreteCategory D FD] [โˆ€ {X : C} (S : J.Cover X), Limits.PreservesLimitsOfShape (Limits.WalkingMulticospan S.shape) (forget D)] [โˆ€ (X : C), Limits.HasColimitsOfShape (J.Cover X)แต’แต– D] [โˆ€ (P : Functor Cแต’แต– D) (X : C) (S : J.Cover X), Limits.HasMultiequalizer (S.index P)] [โˆ€ (X : C), Limits.PreservesColimitsOfShape (J.Cover X)แต’แต– (forget D)] [(forget D).ReflectsIsomorphisms] (P : Functor Cแต’แต– D) :

                Pโบโบ is always a sheaf.

                The sheafification of a presheaf P. NOTE: Additional hypotheses are needed to obtain a proof that this is a sheaf!

                Instances For

                  The canonical map from P to its sheafification.

                  Instances For

                    The canonical map on sheafifications induced by a morphism.

                    Instances For

                      The sheafification of a presheaf P, as a functor. NOTE: Additional hypotheses are needed to obtain a proof that this is a sheaf!

                      Instances For

                        The canonical map from P to its sheafification, as a natural transformation. Note: We only show this is a sheaf under additional hypotheses on D.

                        Instances For

                          If P is a sheaf, then P is isomorphic to J.sheafify P.

                          Instances For
                            noncomputable def CategoryTheory.GrothendieckTopology.sheafifyLift {C : Type u} [Category.{v, u} C] (J : GrothendieckTopology C) {D : Type w} [Category.{w', w} D] [โˆ€ (P : Functor Cแต’แต– D) (X : C) (S : J.Cover X), Limits.HasMultiequalizer (S.index P)] [โˆ€ (X : C), Limits.HasColimitsOfShape (J.Cover X)แต’แต– D] {P Q : Functor Cแต’แต– D} (ฮท : P โŸถ Q) (hQ : Presheaf.IsSheaf J Q) :

                            Given a sheaf Q and a morphism P โŸถ Q, construct a morphism from J.sheafify P to Q.

                            Instances For
                              theorem CategoryTheory.GrothendieckTopology.sheafifyLift_unique {C : Type u} [Category.{v, u} C] (J : GrothendieckTopology C) {D : Type w} [Category.{w', w} D] [โˆ€ (P : Functor Cแต’แต– D) (X : C) (S : J.Cover X), Limits.HasMultiequalizer (S.index P)] [โˆ€ (X : C), Limits.HasColimitsOfShape (J.Cover X)แต’แต– D] {P Q : Functor Cแต’แต– D} (ฮท : P โŸถ Q) (hQ : Presheaf.IsSheaf J Q) (ฮณ : J.sheafify P โŸถ Q) :
                              CategoryStruct.comp (J.toSheafify P) ฮณ = ฮท โ†’ ฮณ = J.sheafifyLift ฮท hQ
                              theorem CategoryTheory.GrothendieckTopology.sheafify_hom_ext {C : Type u} [Category.{v, u} C] (J : GrothendieckTopology C) {D : Type w} [Category.{w', w} D] [โˆ€ (P : Functor Cแต’แต– D) (X : C) (S : J.Cover X), Limits.HasMultiequalizer (S.index P)] [โˆ€ (X : C), Limits.HasColimitsOfShape (J.Cover X)แต’แต– D] {P Q : Functor Cแต’แต– D} (ฮท ฮณ : J.sheafify P โŸถ Q) (hQ : Presheaf.IsSheaf J Q) (h : CategoryStruct.comp (J.toSheafify P) ฮท = CategoryStruct.comp (J.toSheafify P) ฮณ) :
                              ฮท = ฮณ
                              theorem CategoryTheory.GrothendieckTopology.sheafify_isSheaf {C : Type u} [Category.{v, u} C] (J : GrothendieckTopology C) {D : Type w} [Category.{w', w} D] {FD : D โ†’ D โ†’ Type u_1} {CD : D โ†’ Type t} [(X Y : D) โ†’ FunLike (FD X Y) (CD X) (CD Y)] [instCC : ConcreteCategory D FD] [โˆ€ {X : C} (S : J.Cover X), Limits.PreservesLimitsOfShape (Limits.WalkingMulticospan S.shape) (forget D)] [โˆ€ (P : Functor Cแต’แต– D) (X : C) (S : J.Cover X), Limits.HasMultiequalizer (S.index P)] [โˆ€ (X : C), Limits.HasColimitsOfShape (J.Cover X)แต’แต– D] [โˆ€ (X : C), Limits.PreservesColimitsOfShape (J.Cover X)แต’แต– (forget D)] [(forget D).ReflectsIsomorphisms] (P : Functor Cแต’แต– D) :
                              noncomputable def CategoryTheory.plusPlusSheaf {C : Type u} [Category.{v, u} C] (J : GrothendieckTopology C) (D : Type w) [Category.{w', w} D] {FD : D โ†’ D โ†’ Type u_1} {CD : D โ†’ Type t} [(X Y : D) โ†’ FunLike (FD X Y) (CD X) (CD Y)] [instCC : ConcreteCategory D FD] [โˆ€ {X : C} (S : J.Cover X), Limits.PreservesLimitsOfShape (Limits.WalkingMulticospan S.shape) (forget D)] [โˆ€ (P : Functor Cแต’แต– D) (X : C) (S : J.Cover X), Limits.HasMultiequalizer (S.index P)] [โˆ€ (X : C), Limits.HasColimitsOfShape (J.Cover X)แต’แต– D] [โˆ€ (X : C), Limits.PreservesColimitsOfShape (J.Cover X)แต’แต– (forget D)] [(forget D).ReflectsIsomorphisms] :

                              The sheafification functor, as a functor taking values in Sheaf.

                              Instances For
                                @[simp]
                                theorem CategoryTheory.plusPlusSheaf_obj_obj {C : Type u} [Category.{v, u} C] (J : GrothendieckTopology C) (D : Type w) [Category.{w', w} D] {FD : D โ†’ D โ†’ Type u_1} {CD : D โ†’ Type t} [(X Y : D) โ†’ FunLike (FD X Y) (CD X) (CD Y)] [instCC : ConcreteCategory D FD] [โˆ€ {X : C} (S : J.Cover X), Limits.PreservesLimitsOfShape (Limits.WalkingMulticospan S.shape) (forget D)] [โˆ€ (P : Functor Cแต’แต– D) (X : C) (S : J.Cover X), Limits.HasMultiequalizer (S.index P)] [โˆ€ (X : C), Limits.HasColimitsOfShape (J.Cover X)แต’แต– D] [โˆ€ (X : C), Limits.PreservesColimitsOfShape (J.Cover X)แต’แต– (forget D)] [(forget D).ReflectsIsomorphisms] (P : Functor Cแต’แต– D) :
                                ((plusPlusSheaf J D).obj P).obj = J.sheafify P
                                @[simp]
                                theorem CategoryTheory.plusPlusSheaf_map_hom {C : Type u} [Category.{v, u} C] (J : GrothendieckTopology C) (D : Type w) [Category.{w', w} D] {FD : D โ†’ D โ†’ Type u_1} {CD : D โ†’ Type t} [(X Y : D) โ†’ FunLike (FD X Y) (CD X) (CD Y)] [instCC : ConcreteCategory D FD] [โˆ€ {X : C} (S : J.Cover X), Limits.PreservesLimitsOfShape (Limits.WalkingMulticospan S.shape) (forget D)] [โˆ€ (P : Functor Cแต’แต– D) (X : C) (S : J.Cover X), Limits.HasMultiequalizer (S.index P)] [โˆ€ (X : C), Limits.HasColimitsOfShape (J.Cover X)แต’แต– D] [โˆ€ (X : C), Limits.PreservesColimitsOfShape (J.Cover X)แต’แต– (forget D)] [(forget D).ReflectsIsomorphisms] {Xโœ Yโœ : Functor Cแต’แต– D} (ฮท : Xโœ โŸถ Yโœ) :
                                ((plusPlusSheaf J D).map ฮท).hom = J.sheafifyMap ฮท
                                instance CategoryTheory.plusPlusSheaf_preservesZeroMorphisms {C : Type u} [Category.{v, u} C] (J : GrothendieckTopology C) (D : Type w) [Category.{w', w} D] {FD : D โ†’ D โ†’ Type u_1} {CD : D โ†’ Type t} [(X Y : D) โ†’ FunLike (FD X Y) (CD X) (CD Y)] [instCC : ConcreteCategory D FD] [โˆ€ {X : C} (S : J.Cover X), Limits.PreservesLimitsOfShape (Limits.WalkingMulticospan S.shape) (forget D)] [โˆ€ (P : Functor Cแต’แต– D) (X : C) (S : J.Cover X), Limits.HasMultiequalizer (S.index P)] [โˆ€ (X : C), Limits.HasColimitsOfShape (J.Cover X)แต’แต– D] [โˆ€ (X : C), Limits.PreservesColimitsOfShape (J.Cover X)แต’แต– (forget D)] [(forget D).ReflectsIsomorphisms] [Preadditive D] :
                                noncomputable def CategoryTheory.plusPlusAdjunction {C : Type u} [Category.{v, u} C] (J : GrothendieckTopology C) (D : Type w) [Category.{w', w} D] {FD : D โ†’ D โ†’ Type u_1} {CD : D โ†’ Type t} [(X Y : D) โ†’ FunLike (FD X Y) (CD X) (CD Y)] [instCC : ConcreteCategory D FD] [โˆ€ {X : C} (S : J.Cover X), Limits.PreservesLimitsOfShape (Limits.WalkingMulticospan S.shape) (forget D)] [โˆ€ (P : Functor Cแต’แต– D) (X : C) (S : J.Cover X), Limits.HasMultiequalizer (S.index P)] [โˆ€ (X : C), Limits.HasColimitsOfShape (J.Cover X)แต’แต– D] [โˆ€ (X : C), Limits.PreservesColimitsOfShape (J.Cover X)แต’แต– (forget D)] [(forget D).ReflectsIsomorphisms] :

                                The sheafification functor is left adjoint to the forgetful functor.

                                Instances For
                                  instance CategoryTheory.sheafToPresheaf_isRightAdjoint {C : Type u} [Category.{v, u} C] (J : GrothendieckTopology C) (D : Type w) [Category.{w', w} D] {FD : D โ†’ D โ†’ Type u_1} {CD : D โ†’ Type t} [(X Y : D) โ†’ FunLike (FD X Y) (CD X) (CD Y)] [instCC : ConcreteCategory D FD] [โˆ€ {X : C} (S : J.Cover X), Limits.PreservesLimitsOfShape (Limits.WalkingMulticospan S.shape) (forget D)] [โˆ€ (P : Functor Cแต’แต– D) (X : C) (S : J.Cover X), Limits.HasMultiequalizer (S.index P)] [โˆ€ (X : C), Limits.HasColimitsOfShape (J.Cover X)แต’แต– D] [โˆ€ (X : C), Limits.PreservesColimitsOfShape (J.Cover X)แต’แต– (forget D)] [(forget D).ReflectsIsomorphisms] :
                                  instance CategoryTheory.presheaf_mono_of_mono {C : Type u} [Category.{v, u} C] (J : GrothendieckTopology C) (D : Type w) [Category.{w', w} D] {FD : D โ†’ D โ†’ Type u_1} {CD : D โ†’ Type t} [(X Y : D) โ†’ FunLike (FD X Y) (CD X) (CD Y)] [instCC : ConcreteCategory D FD] [โˆ€ {X : C} (S : J.Cover X), Limits.PreservesLimitsOfShape (Limits.WalkingMulticospan S.shape) (forget D)] [โˆ€ (P : Functor Cแต’แต– D) (X : C) (S : J.Cover X), Limits.HasMultiequalizer (S.index P)] [โˆ€ (X : C), Limits.HasColimitsOfShape (J.Cover X)แต’แต– D] [โˆ€ (X : C), Limits.PreservesColimitsOfShape (J.Cover X)แต’แต– (forget D)] [(forget D).ReflectsIsomorphisms] {F G : Sheaf J D} (f : F โŸถ G) [Mono f] :
                                  theorem CategoryTheory.Sheaf.Hom.mono_iff_presheaf_mono {C : Type u} [Category.{v, u} C] (J : GrothendieckTopology C) (D : Type w) [Category.{w', w} D] {FD : D โ†’ D โ†’ Type u_1} {CD : D โ†’ Type t} [(X Y : D) โ†’ FunLike (FD X Y) (CD X) (CD Y)] [instCC : ConcreteCategory D FD] [โˆ€ {X : C} (S : J.Cover X), Limits.PreservesLimitsOfShape (Limits.WalkingMulticospan S.shape) (forget D)] [โˆ€ (P : Functor Cแต’แต– D) (X : C) (S : J.Cover X), Limits.HasMultiequalizer (S.index P)] [โˆ€ (X : C), Limits.HasColimitsOfShape (J.Cover X)แต’แต– D] [โˆ€ (X : C), Limits.PreservesColimitsOfShape (J.Cover X)แต’แต– (forget D)] [(forget D).ReflectsIsomorphisms] {F G : Sheaf J D} (f : F โŸถ G) :
                                  Mono f โ†” Mono f.hom