Documentation

Mathlib.Algebra.Category.ModuleCat.Presheaf

Presheaves of modules over a presheaf of rings. #

Given a presheaf of rings R : Cᵒᵖ ⥤ RingCat, we define the category PresheafOfModules R. An object M : PresheafOfModules R consists of a family of modules M.obj X : ModuleCat (R.obj X) for all X : Cᵒᵖ, together with the data, for all f : X ⟶ Y, of a functorial linear map M.map f from M.obj X to the restriction of scalars of M.obj Y via R.map f.

Future work #

structure PresheafOfModules {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] (R : CategoryTheory.Functor Cᵒᵖ RingCat) :
Type (max (max (max u u₁) (v + 1)) v₁)

A presheaf of modules over R : Cᵒᵖ ⥤ RingCat consists of family of objects obj X : ModuleCat (R.obj X) for all X : Cᵒᵖ together with functorial maps obj X ⟶ (ModuleCat.restrictScalars (R.map f)).obj (obj Y) for all f : X ⟶ Y in Cᵒᵖ.

Instances For

    A morphism of presheaves of modules consists of a family of linear maps which satisfy the naturality condition.

    Instances For
      theorem PresheafOfModules.Hom.ext_iff {C : Type u₁} {inst✝ : CategoryTheory.Category.{v₁, u₁} C} {R : CategoryTheory.Functor Cᵒᵖ RingCat} {M₁ M₂ : PresheafOfModules R} {x y : M₁.Hom M₂} :
      x = y x.app = y.app
      theorem PresheafOfModules.Hom.ext {C : Type u₁} {inst✝ : CategoryTheory.Category.{v₁, u₁} C} {R : CategoryTheory.Functor Cᵒᵖ RingCat} {M₁ M₂ : PresheafOfModules R} {x y : M₁.Hom M₂} (app : x.app = y.app) :
      x = y
      theorem PresheafOfModules.hom_ext {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {R : CategoryTheory.Functor Cᵒᵖ RingCat} {M₁ M₂ : PresheafOfModules R} {f g : M₁ M₂} (h : ∀ (X : Cᵒᵖ), f.app X = g.app X) :
      f = g
      theorem PresheafOfModules.hom_ext_iff {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {R : CategoryTheory.Functor Cᵒᵖ RingCat} {M₁ M₂ : PresheafOfModules R} {f g : M₁ M₂} :
      f = g ∀ (X : Cᵒᵖ), f.app X = g.app X
      def PresheafOfModules.isoMk {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {R : CategoryTheory.Functor Cᵒᵖ RingCat} {M₁ M₂ : PresheafOfModules R} (app : (X : Cᵒᵖ) → M₁.obj X M₂.obj X) (naturality : ∀ ⦃X Y : Cᵒᵖ⦄ (f : X Y), CategoryTheory.CategoryStruct.comp (M₁.map f) ((ModuleCat.restrictScalars (RingCat.Hom.hom (R.map f))).map (app Y).hom) = CategoryTheory.CategoryStruct.comp (app X).hom (M₂.map f) := by cat_disch) :
      M₁ M₂

      Constructor for isomorphisms in the category of presheaves of modules.

      Equations
        Instances For
          @[simp]
          theorem PresheafOfModules.isoMk_hom_app {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {R : CategoryTheory.Functor Cᵒᵖ RingCat} {M₁ M₂ : PresheafOfModules R} (app : (X : Cᵒᵖ) → M₁.obj X M₂.obj X) (naturality : ∀ ⦃X Y : Cᵒᵖ⦄ (f : X Y), CategoryTheory.CategoryStruct.comp (M₁.map f) ((ModuleCat.restrictScalars (RingCat.Hom.hom (R.map f))).map (app Y).hom) = CategoryTheory.CategoryStruct.comp (app X).hom (M₂.map f) := by cat_disch) (X : Cᵒᵖ) :
          (isoMk app naturality).hom.app X = (app X).hom
          @[simp]
          theorem PresheafOfModules.isoMk_inv_app {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {R : CategoryTheory.Functor Cᵒᵖ RingCat} {M₁ M₂ : PresheafOfModules R} (app : (X : Cᵒᵖ) → M₁.obj X M₂.obj X) (naturality : ∀ ⦃X Y : Cᵒᵖ⦄ (f : X Y), CategoryTheory.CategoryStruct.comp (M₁.map f) ((ModuleCat.restrictScalars (RingCat.Hom.hom (R.map f))).map (app Y).hom) = CategoryTheory.CategoryStruct.comp (app X).hom (M₂.map f) := by cat_disch) (X : Cᵒᵖ) :
          (isoMk app naturality).inv.app X = (app X).inv

          The underlying presheaf of abelian groups of a presheaf of modules.

          Equations
            Instances For
              noncomputable def PresheafOfModules.ofPresheaf {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {R : CategoryTheory.Functor Cᵒᵖ RingCat} (M : CategoryTheory.Functor Cᵒᵖ Ab) [(X : Cᵒᵖ) → Module (R.obj X) (M.obj X)] (map_smul : ∀ ⦃X Y : Cᵒᵖ⦄ (f : X Y) (r : (R.obj X)) (m : (M.obj X)), (CategoryTheory.ConcreteCategory.hom (M.map f)) (r m) = (CategoryTheory.ConcreteCategory.hom (R.map f)) r (CategoryTheory.ConcreteCategory.hom (M.map f)) m) :

              The object in PresheafOfModules R that is obtained from M : Cᵒᵖ ⥤ Ab.{v} such that for all X : Cᵒᵖ, M.obj X is a R.obj X module, in such a way that the restriction maps are semilinear. (This constructor should be used only in cases when the preferred constructor PresheafOfModules.mk is not as convenient as this one.)

              Equations
                Instances For
                  @[simp]
                  theorem PresheafOfModules.ofPresheaf_obj_carrier {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {R : CategoryTheory.Functor Cᵒᵖ RingCat} (M : CategoryTheory.Functor Cᵒᵖ Ab) [(X : Cᵒᵖ) → Module (R.obj X) (M.obj X)] (map_smul : ∀ ⦃X Y : Cᵒᵖ⦄ (f : X Y) (r : (R.obj X)) (m : (M.obj X)), (CategoryTheory.ConcreteCategory.hom (M.map f)) (r m) = (CategoryTheory.ConcreteCategory.hom (R.map f)) r (CategoryTheory.ConcreteCategory.hom (M.map f)) m) (X : Cᵒᵖ) :
                  ((ofPresheaf M map_smul).obj X) = (M.obj X)
                  @[simp]
                  theorem PresheafOfModules.ofPresheaf_obj_isModule {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {R : CategoryTheory.Functor Cᵒᵖ RingCat} (M : CategoryTheory.Functor Cᵒᵖ Ab) [(X : Cᵒᵖ) → Module (R.obj X) (M.obj X)] (map_smul : ∀ ⦃X Y : Cᵒᵖ⦄ (f : X Y) (r : (R.obj X)) (m : (M.obj X)), (CategoryTheory.ConcreteCategory.hom (M.map f)) (r m) = (CategoryTheory.ConcreteCategory.hom (R.map f)) r (CategoryTheory.ConcreteCategory.hom (M.map f)) m) (X : Cᵒᵖ) :
                  ((ofPresheaf M map_smul).obj X).isModule = inst✝ X
                  @[simp]
                  theorem PresheafOfModules.ofPresheaf_obj_isAddCommGroup {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {R : CategoryTheory.Functor Cᵒᵖ RingCat} (M : CategoryTheory.Functor Cᵒᵖ Ab) [(X : Cᵒᵖ) → Module (R.obj X) (M.obj X)] (map_smul : ∀ ⦃X Y : Cᵒᵖ⦄ (f : X Y) (r : (R.obj X)) (m : (M.obj X)), (CategoryTheory.ConcreteCategory.hom (M.map f)) (r m) = (CategoryTheory.ConcreteCategory.hom (R.map f)) r (CategoryTheory.ConcreteCategory.hom (M.map f)) m) (X : Cᵒᵖ) :
                  ((ofPresheaf M map_smul).obj X).isAddCommGroup = (M.obj X).str
                  @[simp]
                  theorem PresheafOfModules.ofPresheaf_map {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {R : CategoryTheory.Functor Cᵒᵖ RingCat} (M : CategoryTheory.Functor Cᵒᵖ Ab) [(X : Cᵒᵖ) → Module (R.obj X) (M.obj X)] (map_smul : ∀ ⦃X Y : Cᵒᵖ⦄ (f : X Y) (r : (R.obj X)) (m : (M.obj X)), (CategoryTheory.ConcreteCategory.hom (M.map f)) (r m) = (CategoryTheory.ConcreteCategory.hom (R.map f)) r (CategoryTheory.ConcreteCategory.hom (M.map f)) m) {X Y : Cᵒᵖ} (f : X Y) :
                  (ofPresheaf M map_smul).map f = ModuleCat.ofHom { toFun := fun (x : (M.obj X)) => (CategoryTheory.ConcreteCategory.hom (M.map f)) x, map_add' := , map_smul' := }
                  @[simp]
                  theorem PresheafOfModules.ofPresheaf_presheaf {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {R : CategoryTheory.Functor Cᵒᵖ RingCat} (M : CategoryTheory.Functor Cᵒᵖ Ab) [(X : Cᵒᵖ) → Module (R.obj X) (M.obj X)] (map_smul : ∀ ⦃X Y : Cᵒᵖ⦄ (f : X Y) (r : (R.obj X)) (m : (M.obj X)), (CategoryTheory.ConcreteCategory.hom (M.map f)) (r m) = (CategoryTheory.ConcreteCategory.hom (R.map f)) r (CategoryTheory.ConcreteCategory.hom (M.map f)) m) :
                  (ofPresheaf M map_smul).presheaf = M
                  noncomputable def PresheafOfModules.homMk {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {R : CategoryTheory.Functor Cᵒᵖ RingCat} {M₁ M₂ : PresheafOfModules R} (φ : M₁.presheaf M₂.presheaf) ( : ∀ (X : Cᵒᵖ) (r : (R.obj X)) (m : (M₁.obj X)), (CategoryTheory.ConcreteCategory.hom (φ.app X)) (r m) = r (CategoryTheory.ConcreteCategory.hom (φ.app X)) m) :
                  M₁ M₂

                  The morphism of presheaves of modules M₁ ⟶ M₂ given by a morphism of abelian presheaves M₁.presheaf ⟶ M₂.presheaf which satisfy a suitable linearity condition.

                  Equations
                    Instances For
                      @[simp]
                      theorem PresheafOfModules.homMk_app {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {R : CategoryTheory.Functor Cᵒᵖ RingCat} {M₁ M₂ : PresheafOfModules R} (φ : M₁.presheaf M₂.presheaf) ( : ∀ (X : Cᵒᵖ) (r : (R.obj X)) (m : (M₁.obj X)), (CategoryTheory.ConcreteCategory.hom (φ.app X)) (r m) = r (CategoryTheory.ConcreteCategory.hom (φ.app X)) m) (X : Cᵒᵖ) :
                      (homMk φ ).app X = ModuleCat.ofHom { toFun := (CategoryTheory.ConcreteCategory.hom (φ.app X)), map_add' := , map_smul' := }
                      @[simp]
                      theorem PresheafOfModules.neg_app {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {R : CategoryTheory.Functor Cᵒᵖ RingCat} {M₁ M₂ : PresheafOfModules R} (f : M₁ M₂) (X : Cᵒᵖ) :
                      (-f).app X = -f.app X
                      @[simp]
                      theorem PresheafOfModules.add_app {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {R : CategoryTheory.Functor Cᵒᵖ RingCat} {M₁ M₂ : PresheafOfModules R} (f g : M₁ M₂) (X : Cᵒᵖ) :
                      (f + g).app X = f.app X + g.app X
                      @[simp]
                      theorem PresheafOfModules.sub_app {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {R : CategoryTheory.Functor Cᵒᵖ RingCat} {M₁ M₂ : PresheafOfModules R} (f g : M₁ M₂) (X : Cᵒᵖ) :
                      (f - g).app X = f.app X - g.app X
                      theorem PresheafOfModules.zsmul_app {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {R : CategoryTheory.Functor Cᵒᵖ RingCat} {M₁ M₂ : PresheafOfModules R} (n : ) (f : M₁ M₂) (X : Cᵒᵖ) :
                      (n f).app X = n f.app X

                      Evaluation on an object X gives a functor PresheafOfModules R ⥤ ModuleCat (R.obj X).

                      Equations
                        Instances For

                          The restriction natural transformation on presheaves of modules, considered as linear maps to restriction of scalars.

                          Equations
                            Instances For

                              The obvious free presheaf of modules of rank 1.

                              Equations
                                Instances For

                                  The type of sections of a presheaf of modules.

                                  Equations
                                    Instances For
                                      @[reducible, inline]

                                      Given a presheaf of modules M, s : M.sections and X : Cᵒᵖ, this is the induced element in M.obj X.

                                      Equations
                                        Instances For
                                          def PresheafOfModules.sectionsMk {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {R : CategoryTheory.Functor Cᵒᵖ RingCat} {M : PresheafOfModules R} (s : (X : Cᵒᵖ) → (M.obj X)) (hs : ∀ ⦃X Y : Cᵒᵖ⦄ (f : X Y), (CategoryTheory.ConcreteCategory.hom (M.map f)) (s X) = s Y) :

                                          Constructor for sections of a presheaf of modules.

                                          Equations
                                            Instances For
                                              @[simp]
                                              theorem PresheafOfModules.sectionsMk_coe {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] {R : CategoryTheory.Functor Cᵒᵖ RingCat} {M : PresheafOfModules R} (s : (X : Cᵒᵖ) → (M.obj X)) (hs : ∀ ⦃X Y : Cᵒᵖ⦄ (f : X Y), (CategoryTheory.ConcreteCategory.hom (M.map f)) (s X) = s Y) (X : Cᵒᵖ) :
                                              (sectionsMk s hs) X = s X

                                              The map M.sections → N.sections induced by a morphisms M ⟶ N of presheaves of modules.

                                              Equations
                                                Instances For

                                                  The bijection (unit R ⟶ M) ≃ M.sections for M : PresheafOfModules R.

                                                  Equations
                                                    Instances For

                                                      PresheafOfModules R ⥤ Cᵒᵖ ⥤ ModuleCat (R.obj X) when X is initial #

                                                      When X is initial, we have Module (R.obj X) (M.obj c) for any c : Cᵒᵖ.

                                                      @[reducible, inline]

                                                      Auxiliary definition for forgetToPresheafModuleCatObj.

                                                      Equations
                                                        Instances For

                                                          Implementation of the functor PresheafOfModules R ⥤ Cᵒᵖ ⥤ ModuleCat (R.obj X) when X is initial.

                                                          The functor is implemented as, on object level M ↦ (c ↦ M(c)) where the R(X)-module structure on M(c) is given by restriction of scalars along the unique morphism R(c) ⟶ R(X); and on morphism level (f : M ⟶ N) ↦ (c ↦ f(c)).

                                                          Equations
                                                            Instances For

                                                              Implementation of the functor PresheafOfModules R ⥤ Cᵒᵖ ⥤ ModuleCat (R.obj X) when X is initial.

                                                              The functor is implemented as, on object level M ↦ (c ↦ M(c)) where the R(X)-module structure on M(c) is given by restriction of scalars along the unique morphism R(c) ⟶ R(X); and on morphism level (f : M ⟶ N) ↦ (c ↦ f(c)).

                                                              Equations
                                                                Instances For

                                                                  The forgetful functor from presheaves of modules over a presheaf of rings R to presheaves of R(X)-modules where X is an initial object.

                                                                  The functor is implemented as, on object level M ↦ (c ↦ M(c)) where the R(X)-module structure on M(c) is given by restriction of scalars along the unique morphism R(c) ⟶ R(X); and on morphism level (f : M ⟶ N) ↦ (c ↦ f(c)).

                                                                  Equations
                                                                    Instances For