File: Mathlib/Algebra/Category/ModuleCat/Presheaf/Sheafification.lean

full_name: PresheafOfModules.sheafification
code: /-- Given a locally bijective morphism `α : R₀ ⟶ R.val` where `R₀` is a presheaf of rings
and `R` a sheaf of rings (i.e. `R` identifies to the sheafification of `R₀`), this is
the associated sheaf of modules functor `PresheafOfModules.{v} R₀ ⥤ SheafOfModules.{v} R`. -/
@[simps! (config := .lemmasOnly) map]
noncomputable def sheafification : PresheafOfModules.{v} R₀ ⥤ SheafOfModules.{v} R 
goal: PresheafOfModules R₀ ⥤ SheafOfModules R

full_name: PresheafOfModules.sheafification_map
code: /-- Given a locally bijective morphism `α : R₀ ⟶ R.val` where `R₀` is a presheaf of rings
and `R` a sheaf of rings (i.e. `R` identifies to the sheafification of `R₀`), this is
the associated sheaf of modules functor `PresheafOfModules.{v} R₀ ⥤ SheafOfModules.{v} R`. -/
@[simps! (config := .lemmasOnly) map]
noncomputable def sheafification : PresheafOfModules.{v} R₀ ⥤ SheafOfModules.{v} R 
goal: ∀ {X Y : PresheafOfModules R₀} (f : X ⟶ Y),
  (PresheafOfModules.sheafification α).map f =
    PresheafOfModules.sheafifyMap α (CategoryTheory.toSheafify J X.presheaf) (CategoryTheory.toSheafify J Y.presheaf) f
      ((CategoryTheory.presheafToSheaf J AddCommGrp).map f.hom) ⋯

full_name: PresheafOfModules.sheafificationCompToSheaf
code: /-- The sheafification of presheaves of modules commutes with the functor which
forgets the module structures. -/
noncomputable def sheafificationCompToSheaf :
    sheafification.{v} α ⋙ SheafOfModules.toSheaf _ ≅
      toPresheaf _ ⋙ presheafToSheaf J AddCommGrp 
goal: PresheafOfModules.sheafification α ⋙ SheafOfModules.toSheaf R ≅
  PresheafOfModules.toPresheaf R₀ ⋙ CategoryTheory.presheafToSheaf J AddCommGrp

full_name: PresheafOfModules.sheafificationCompForgetCompToPresheaf
code: /-- The sheafification of presheaves of modules commutes with the functor which
forgets the module structures. -/
noncomputable def sheafificationCompForgetCompToPresheaf :
    sheafification.{v} α ⋙ SheafOfModules.forget _ ⋙ toPresheaf _ ≅
      toPresheaf _ ⋙ presheafToSheaf J AddCommGrp ⋙ sheafToPresheaf J AddCommGrp 
goal: PresheafOfModules.sheafification α ⋙ SheafOfModules.forget R ⋙ PresheafOfModules.toPresheaf R.val ≅
  PresheafOfModules.toPresheaf R₀ ⋙
    CategoryTheory.presheafToSheaf J AddCommGrp ⋙ CategoryTheory.sheafToPresheaf J AddCommGrp

full_name: PresheafOfModules.sheafificationHomEquiv
code: /-- The bijection between types of morphisms which is part of the adjunction
`sheafificationAdjunction`. -/
noncomputable def sheafificationHomEquiv
    {P : PresheafOfModules.{v} R₀} {F : SheafOfModules.{v} R} :
    ((sheafification α).obj P ⟶ F) ≃
      (P ⟶ (restrictScalars α).obj ((SheafOfModules.forget _).obj F)) 
goal: ((PresheafOfModules.sheafification α).obj P ⟶ F) ≃
  (P ⟶ (PresheafOfModules.restrictScalars α).obj ((SheafOfModules.forget R).obj F))

full_name: PresheafOfModules.sheafificationHomEquiv_hom'
code: lemma sheafificationHomEquiv_hom'
    {P : PresheafOfModules.{v} R₀} {F : SheafOfModules.{v} R}
    (f : (sheafification α).obj P ⟶ F) :
    (sheafificationHomEquiv α f).hom =
      CategoryTheory.toSheafify J P.presheaf ≫ f.val.hom 
goal: ((PresheafOfModules.sheafificationHomEquiv α) f).hom = CategoryTheory.toSheafify J P.presheaf ≫ f.val.hom

full_name: PresheafOfModules.sheafificationHomEquiv_hom
code: lemma sheafificationHomEquiv_hom
    {P : PresheafOfModules.{v} R₀} {F : SheafOfModules.{v} R}
    (f : (sheafification α).obj P ⟶ F) :
    (sheafificationHomEquiv α f).hom =
      (sheafificationAdjunction J AddCommGrp).homEquiv P.presheaf
        ((SheafOfModules.toSheaf _).obj F) ((SheafOfModules.toSheaf _).map f) 
goal: ((PresheafOfModules.sheafificationHomEquiv α) f).hom =
  ((CategoryTheory.sheafificationAdjunction J AddCommGrp).homEquiv P.presheaf ((SheafOfModules.toSheaf R).obj F))
    ((SheafOfModules.toSheaf R).map f)

full_name: PresheafOfModules.toSheaf_map_sheafificationHomEquiv_symm
code: lemma toSheaf_map_sheafificationHomEquiv_symm
    {P : PresheafOfModules.{v} R₀} {F : SheafOfModules.{v} R}
    (g : P ⟶ (restrictScalars α).obj ((SheafOfModules.forget _).obj F)) :
    (SheafOfModules.toSheaf _).map ((sheafificationHomEquiv α).symm g) =
      (((sheafificationAdjunction J AddCommGrp).homEquiv
        P.presheaf ((SheafOfModules.toSheaf R).obj F)).symm g.hom) 
goal: (SheafOfModules.toSheaf R).map ((PresheafOfModules.sheafificationHomEquiv α).symm g) =
  ((CategoryTheory.sheafificationAdjunction J AddCommGrp).homEquiv P.presheaf ((SheafOfModules.toSheaf R).obj F)).symm
    g.hom

full_name: PresheafOfModules.sheafificationAdjunction_homEquiv_apply
code: /-- Given a locally bijective morphism `α : R₀ ⟶ R.val` where `R₀` is a presheaf of rings
and `R` a sheaf of rings, this is the adjunction
`sheafification.{v} α ⊣ SheafOfModules.forget R ⋙ restrictScalars α`. -/
@[simps! (config := .lemmasOnly) homEquiv_apply]
noncomputable def sheafificationAdjunction :
    sheafification.{v} α ⊣ SheafOfModules.forget R ⋙ restrictScalars α 
goal: ∀ (a : PresheafOfModules.sheafify α (CategoryTheory.toSheafify J X.presheaf) ⟶ Y),
  ((PresheafOfModules.sheafificationAdjunction α).homEquiv X Y) a =
    (PresheafOfModules.sheafifyHomEquiv' α (CategoryTheory.toSheafify J X.presheaf) ⋯)
      ((SheafOfModules.fullyFaithfulForget R).homEquiv a)

full_name: PresheafOfModules.sheafificationAdjunction
code: /-- Given a locally bijective morphism `α : R₀ ⟶ R.val` where `R₀` is a presheaf of rings
and `R` a sheaf of rings, this is the adjunction
`sheafification.{v} α ⊣ SheafOfModules.forget R ⋙ restrictScalars α`. -/
@[simps! (config := .lemmasOnly) homEquiv_apply]
noncomputable def sheafificationAdjunction :
    sheafification.{v} α ⊣ SheafOfModules.forget R ⋙ restrictScalars α 
goal: PresheafOfModules.sheafification α ⊣ SheafOfModules.forget R ⋙ PresheafOfModules.restrictScalars α

full_name: PresheafOfModules.sheafificationAdjunction_unit_app_hom
code: @[simp]
lemma sheafificationAdjunction_unit_app_hom (M₀ : PresheafOfModules.{v} R₀) :
    ((sheafificationAdjunction α).unit.app M₀).hom = CategoryTheory.toSheafify J M₀.presheaf 
goal: ((PresheafOfModules.sheafificationAdjunction α).unit.app M₀).hom = CategoryTheory.toSheafify J M₀.presheaf

full_name: PresheafOfModules.instIsLeftAdjointSheafOfModulesSheafification
code: instance : (sheafification.{v} α).IsLeftAdjoint 
goal: (PresheafOfModules.sheafification α).IsLeftAdjoint

full_name: PresheafOfModules.instPreservesFiniteLimitsSheafAddCommGrpCompSheafOfModulesSheafificationToSheaf
code: noncomputable instance :
    PreservesFiniteLimits (sheafification.{v} α ⋙ SheafOfModules.toSheaf.{v} R) 
goal: CategoryTheory.Limits.PreservesFiniteLimits (PresheafOfModules.sheafification α ⋙ SheafOfModules.toSheaf R)

full_name: PresheafOfModules.instReflectsIsomorphismsSheafOfModulesFunctorOppositeAddCommGrpCompSheafToSheafSheafToPresheaf
code: instance : (SheafOfModules.toSheaf.{v} R ⋙ sheafToPresheaf _ _).ReflectsIsomorphisms 
goal: (SheafOfModules.toSheaf R ⋙ CategoryTheory.sheafToPresheaf J AddCommGrp).ReflectsIsomorphisms

full_name: PresheafOfModules.instReflectsIsomorphismsSheafOfModulesSheafAddCommGrpToSheaf
code: instance : (SheafOfModules.toSheaf.{v} R).ReflectsIsomorphisms 
goal: (SheafOfModules.toSheaf R).ReflectsIsomorphisms

full_name: PresheafOfModules.instReflectsFiniteLimitsSheafOfModulesSheafAddCommGrpToSheaf
code: noncomputable instance : ReflectsFiniteLimits (SheafOfModules.toSheaf.{v} R) 
goal: CategoryTheory.Limits.ReflectsFiniteLimits (SheafOfModules.toSheaf R)

full_name: PresheafOfModules.instPreservesFiniteLimitsSheafOfModulesSheafification
code: noncomputable instance : PreservesFiniteLimits (sheafification.{v} α) 
goal: CategoryTheory.Limits.PreservesFiniteLimits (PresheafOfModules.sheafification α)