# mathlibdocumentation

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.

@[class]
structure category_theory.functor.additive {C : Type u_1} {D : Type u_2} (F : C D) :
Prop
• map_add' : (∀ {X Y : C} {f g : X Y}, F.map (f + g) = F.map f + F.map g) . "obviously"

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

Instances of this typeclass
@[simp]
theorem category_theory.functor.map_add {C : Type u_1} {D : Type u_2} (F : C D) [F.additive] {X Y : C} {f g : X Y} :
F.map (f + g) = F.map f + F.map g
@[simp]
theorem category_theory.functor.map_add_hom_apply {C : Type u_1} {D : Type u_2} (F : C D) [F.additive] {X Y : C} :
def category_theory.functor.map_add_hom {C : Type u_1} {D : Type u_2} (F : C D) [F.additive] {X Y : C} :
(X Y) →+ (F.obj X F.obj Y)

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

Equations
theorem category_theory.functor.coe_map_add_hom {C : Type u_1} {D : Type u_2} (F : C D) [F.additive] {X Y : C} :
@[protected, instance]
def category_theory.functor.preserves_zero_morphisms_of_additive {C : Type u_1} {D : Type u_2} (F : C D) [F.additive] :
@[protected, instance]
@[protected, instance]
def category_theory.functor.comp.additive {C : Type u_1} {D : Type u_2} (F : C D) [F.additive] {E : Type u_5} (G : D E) [G.additive] :
@[simp]
theorem category_theory.functor.map_neg {C : Type u_1} {D : Type u_2} (F : C D) [F.additive] {X Y : C} {f : X Y} :
F.map (-f) = -F.map f
@[simp]
theorem category_theory.functor.map_sub {C : Type u_1} {D : Type u_2} (F : C D) [F.additive] {X Y : C} {f g : X Y} :
F.map (f - g) = F.map f - F.map g
theorem category_theory.functor.map_nsmul {C : Type u_1} {D : Type u_2} (F : C D) [F.additive] {X Y : C} {f : X Y} {n : } :
F.map (n f) = n F.map f
theorem category_theory.functor.map_zsmul {C : Type u_1} {D : Type u_2} (F : C D) [F.additive] {X Y : C} {f : X Y} {r : } :
F.map (r f) = r F.map f
@[simp]
theorem category_theory.functor.map_sum {C : Type u_1} {D : Type u_2} (F : C D) [F.additive] {X Y : C} {α : Type u_5} (f : α → (X Y)) (s : finset α) :
F.map (s.sum (λ (a : α), f a)) = s.sum (λ (a : α), F.map (f a))
@[protected, instance]
def category_theory.functor.induced_functor_additive {C : Type u_1} {D : Type u_2} (F : C → D) :
@[protected, instance]
def category_theory.functor.preserves_finite_biproducts_of_additive {C : Type u₁} {D : Type u₂} (F : C D) [F.additive] :
Equations
theorem category_theory.functor.additive_of_preserves_binary_biproducts {C : Type u₁} {D : Type u₂} (F : C D)  :
@[protected, instance]
def category_theory.equivalence.inverse_additive {C : Type u_1} {D : Type u_2} (e : C D) [e.functor.additive] :
@[protected, instance]
def category_theory.AdditiveFunctor.category (C : Type u_1) (D : Type u_2)  :
@[nolint]
def category_theory.AdditiveFunctor (C : Type u_1) (D : Type u_2)  :
Type (max u_3 u_4 u_1 u_2)

Equations
Instances for category_theory.AdditiveFunctor
@[protected, instance]
Equations
@[protected, instance]
def category_theory.AdditiveFunctor.forget.faithful (C : Type u_1) (D : Type u_2)  :
def category_theory.AdditiveFunctor.forget (C : Type u_1) (D : Type u_2)  :
(C ⥤+ D) C D

An additive functor is in particular a functor.

Equations
Instances for category_theory.AdditiveFunctor.forget
@[protected, instance]
def category_theory.AdditiveFunctor.forget.full (C : Type u_1) (D : Type u_2)  :
def category_theory.AdditiveFunctor.of {C : Type u_1} {D : Type u_2} (F : C D) [F.additive] :
C ⥤+ D

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

Equations
@[simp]
theorem category_theory.AdditiveFunctor.of_fst {C : Type u_1} {D : Type u_2} (F : C D) [F.additive] :
@[simp]
theorem category_theory.AdditiveFunctor.forget_obj {C : Type u_1} {D : Type u_2} (F : C ⥤+ D) :
theorem category_theory.AdditiveFunctor.forget_obj_of {C : Type u_1} {D : Type u_2} (F : C D) [F.additive] :
@[simp]
theorem category_theory.AdditiveFunctor.forget_map {C : Type u_1} {D : Type u_2} (F G : C ⥤+ D) (α : F G) :
@[protected, instance]
@[protected, instance]
def category_theory.AdditiveFunctor.field_1.functor.additive {C : Type u_1} {D : Type u_2} (F : C ⥤+ D) :
@[protected, instance]
@[protected, instance]
def category_theory.AdditiveFunctor.of_left_exact (C : Type u₁) (D : Type u₂)  :
(C ⥤ₗ D) C ⥤+ D

Turn a left exact functor into an additive functor.

Equations
Instances for category_theory.AdditiveFunctor.of_left_exact
def category_theory.AdditiveFunctor.of_right_exact (C : Type u₁) (D : Type u₂)  :
(C ⥤ᵣ D) C ⥤+ D

Turn a right exact functor into an additive functor.

Equations
Instances for category_theory.AdditiveFunctor.of_right_exact
@[protected, instance]
@[protected, instance]
@[protected, instance]
@[protected, instance]
def category_theory.AdditiveFunctor.of_exact (C : Type u₁) (D : Type u₂)  :
(C ⥤ₑ D) C ⥤+ D

Turn an exact functor into an additive functor.

Equations
Instances for category_theory.AdditiveFunctor.of_exact
@[simp]
theorem category_theory.AdditiveFunctor.of_left_exact_obj_fst {C : Type u₁} {D : Type u₂} (F : C ⥤ₗ D) :
= F.obj
@[simp]
theorem category_theory.AdditiveFunctor.of_right_exact_obj_fst {C : Type u₁} {D : Type u₂} (F : C ⥤ᵣ D) :
= F.obj
@[simp]
theorem category_theory.AdditiveFunctor.of_exact_obj_fst {C : Type u₁} {D : Type u₂} (F : C ⥤ₑ D) :
.obj = F.obj
@[simp]
theorem category_theory.Additive_Functor.of_left_exact_map {C : Type u₁} {D : Type u₂} {F G : C ⥤ₗ D} (α : F G) :
@[simp]
theorem category_theory.Additive_Functor.of_right_exact_map {C : Type u₁} {D : Type u₂} {F G : C ⥤ᵣ D} (α : F G) :
@[simp]
theorem category_theory.Additive_Functor.of_exact_map {C : Type u₁} {D : Type u₂} {F G : C ⥤ₑ D} (α : F G) :