Documentation

Mathlib.CategoryTheory.Preadditive.AdditiveFunctor

Additive Functors #

A functor between two preadditive categories is called additive provided that the induced map on hom types is a morphism of abelian groups.

An additive functor between preadditive categories creates and preserves biproducts. Conversely, if F : C ⥤ D is a functor between preadditive categories, where C has binary biproducts, and if F preserves binary biproducts, then F is additive.

We also define the category of bundled additive functors.

Implementation details #

Functor.Additive is a Prop-valued class, defined by saying that for every two objects X and Y, the map F.map : (X ⟶ Y) → (F.obj X ⟶ F.obj Y) is a morphism of abelian groups.

A functor F is additive provided F.map is an additive homomorphism.

  • map_add {X Y : C} {f g : X Y} : F.map (f + g) = F.map f + F.map g

    the addition of two morphisms is mapped to the sum of their images

Instances
    @[simp]
    theorem CategoryTheory.Functor.map_add {C : Type u_1} {D : Type u_2} [Category.{u_4, u_1} C] [Category.{u_5, u_2} D] [Preadditive C] [Preadditive D] (F : Functor C D) [F.Additive] {X Y : C} {f g : X Y} :
    F.map (f + g) = F.map f + F.map g
    def CategoryTheory.Functor.mapAddHom {C : Type u_1} {D : Type u_2} [Category.{u_4, u_1} C] [Category.{u_5, u_2} D] [Preadditive C] [Preadditive D] (F : Functor C D) [F.Additive] {X Y : C} :
    (X Y) →+ (F.obj X F.obj Y)

    F.mapAddHom is an additive homomorphism whose underlying function is F.map.

    Equations
    Instances For
      @[simp]
      theorem CategoryTheory.Functor.mapAddHom_apply {C : Type u_1} {D : Type u_2} [Category.{u_4, u_1} C] [Category.{u_5, u_2} D] [Preadditive C] [Preadditive D] (F : Functor C D) [F.Additive] {X Y : C} (f : X Y) :
      F.mapAddHom f = F.map f
      theorem CategoryTheory.Functor.coe_mapAddHom {C : Type u_1} {D : Type u_2} [Category.{u_4, u_1} C] [Category.{u_5, u_2} D] [Preadditive C] [Preadditive D] (F : Functor C D) [F.Additive] {X Y : C} :
      F.mapAddHom = F.map
      @[instance 100]
      instance CategoryTheory.Functor.preservesZeroMorphisms_of_additive {C : Type u_1} {D : Type u_2} [Category.{u_4, u_1} C] [Category.{u_5, u_2} D] [Preadditive C] [Preadditive D] (F : Functor C D) [F.Additive] :
      F.PreservesZeroMorphisms
      instance CategoryTheory.Functor.instAdditiveComp {C : Type u_1} {D : Type u_2} [Category.{u_7, u_1} C] [Category.{u_6, u_2} D] [Preadditive C] [Preadditive D] (F : Functor C D) [F.Additive] {E : Type u_4} [Category.{u_5, u_4} E] [Preadditive E] (G : Functor D E) [G.Additive] :
      (F.comp G).Additive
      @[simp]
      theorem CategoryTheory.Functor.map_neg {C : Type u_1} {D : Type u_2} [Category.{u_4, u_1} C] [Category.{u_5, u_2} D] [Preadditive C] [Preadditive D] (F : Functor C D) [F.Additive] {X Y : C} {f : X Y} :
      F.map (-f) = -F.map f
      @[simp]
      theorem CategoryTheory.Functor.map_sub {C : Type u_1} {D : Type u_2} [Category.{u_4, u_1} C] [Category.{u_5, u_2} D] [Preadditive C] [Preadditive D] (F : Functor C D) [F.Additive] {X Y : C} {f g : X Y} :
      F.map (f - g) = F.map f - F.map g
      theorem CategoryTheory.Functor.map_nsmul {C : Type u_1} {D : Type u_2} [Category.{u_4, u_1} C] [Category.{u_5, u_2} D] [Preadditive C] [Preadditive D] (F : Functor C D) [F.Additive] {X Y : C} {f : X Y} {n : } :
      F.map (n f) = n F.map f
      theorem CategoryTheory.Functor.map_zsmul {C : Type u_1} {D : Type u_2} [Category.{u_4, u_1} C] [Category.{u_5, u_2} D] [Preadditive C] [Preadditive D] (F : Functor C D) [F.Additive] {X Y : C} {f : X Y} {r : } :
      F.map (r f) = r F.map f
      @[simp]
      theorem CategoryTheory.Functor.map_sum {C : Type u_1} {D : Type u_2} [Category.{u_5, u_1} C] [Category.{u_6, u_2} D] [Preadditive C] [Preadditive D] (F : Functor C D) [F.Additive] {X Y : C} {α : Type u_4} (f : α(X Y)) (s : Finset α) :
      F.map (∑ as, f a) = as, F.map (f a)
      theorem CategoryTheory.Functor.additive_of_iso {C : Type u_1} {D : Type u_2} [Category.{u_4, u_1} C] [Category.{u_5, u_2} D] [Preadditive C] [Preadditive D] {F : Functor C D} [F.Additive] {G : Functor C D} (e : F G) :
      G.Additive
      theorem CategoryTheory.Functor.additive_of_full_essSurj_comp {C : Type u_1} {D : Type u_2} {E : Type u_3} [Category.{u_4, u_1} C] [Category.{u_5, u_2} D] [Category.{u_6, u_3} E] [Preadditive C] [Preadditive D] [Preadditive E] (F : Functor C D) [F.Additive] [F.Full] [F.EssSurj] (G : Functor D E) [(F.comp G).Additive] :
      G.Additive
      theorem CategoryTheory.Functor.additive_of_comp_faithful {C : Type u_1} {D : Type u_2} {E : Type u_3} [Category.{u_4, u_1} C] [Category.{u_5, u_2} D] [Category.{u_6, u_3} E] [Preadditive C] [Preadditive D] [Preadditive E] (F : Functor C D) (G : Functor D E) [G.Additive] [(F.comp G).Additive] [G.Faithful] :
      F.Additive
      instance CategoryTheory.Functor.inducedFunctor_additive {C : Type u_1} {D : Type u_2} [Category.{u_3, u_2} D] [Preadditive D] (F : CD) :
      (inducedFunctor F).Additive
      instance CategoryTheory.Equivalence.inverse_additive {C : Type u_1} {D : Type u_2} [Category.{u_3, u_1} C] [Category.{u_4, u_2} D] [Preadditive C] [Preadditive D] (e : C D) [e.functor.Additive] :
      e.inverse.Additive
      def CategoryTheory.AdditiveFunctor (C : Type u_1) (D : Type u_2) [Category.{u_3, u_1} C] [Category.{u_4, u_2} D] [Preadditive C] [Preadditive D] :
      Type (max (max (max u_1 u_2) u_3) u_4)

      Bundled additive functors.

      Equations
      Instances For

        the category of additive functors is denoted C ⥤+ D

        Equations
        Instances For

          An additive functor is in particular a functor.

          Equations
          Instances For
            def CategoryTheory.AdditiveFunctor.of {C : Type u_1} {D : Type u_2} [Category.{u_3, u_1} C] [Category.{u_4, u_2} D] [Preadditive C] [Preadditive D] (F : Functor C D) [F.Additive] :
            C ⥤+ D

            Turn an additive functor into an object of the category AdditiveFunctor C D.

            Equations
            Instances For
              @[simp]
              theorem CategoryTheory.AdditiveFunctor.of_fst {C : Type u_1} {D : Type u_2} [Category.{u_3, u_1} C] [Category.{u_4, u_2} D] [Preadditive C] [Preadditive D] (F : Functor C D) [F.Additive] :
              (of F).obj = F
              @[simp]
              theorem CategoryTheory.AdditiveFunctor.forget_obj {C : Type u_1} {D : Type u_2} [Category.{u_3, u_1} C] [Category.{u_4, u_2} D] [Preadditive C] [Preadditive D] (F : C ⥤+ D) :
              (forget C D).obj F = F.obj
              theorem CategoryTheory.AdditiveFunctor.forget_obj_of {C : Type u_1} {D : Type u_2} [Category.{u_3, u_1} C] [Category.{u_4, u_2} D] [Preadditive C] [Preadditive D] (F : Functor C D) [F.Additive] :
              (forget C D).obj (of F) = F
              @[simp]
              theorem CategoryTheory.AdditiveFunctor.forget_map {C : Type u_1} {D : Type u_2} [Category.{u_3, u_1} C] [Category.{u_4, u_2} D] [Preadditive C] [Preadditive D] (F G : C ⥤+ D) (α : F G) :
              (forget C D).map α = α
              instance CategoryTheory.instAdditiveObjFunctor {C : Type u_1} {D : Type u_2} [Category.{u_3, u_1} C] [Category.{u_4, u_2} D] [Preadditive C] [Preadditive D] (F : C ⥤+ D) :
              F.obj.Additive