module Cat.Abelian.Functor whereAb-enriched functorsπ
Since -categories are additionally equipped with the structure of abelian groups on their -sets, itβs natural that we ask that functors between -categories preserve this structure. In particular, since every functor has an action which is a map of sets, when and are considered to be abelian groups, we should require that the action be a group homomorphism.
  record Ab-functor : Type (o β o' β β β β') where
    field
      functor : Functor C D
    open Functor functor public
    field
      F-+ : β {a b} (f g : A.Hom a b) β Fβ (f A.+ g) β‘ Fβ f B.+ Fβ gIn passing we note that, since the -abelian-groups are groups, preservation of addition automatically implies preservation of the zero morphism, preservation of inverses, and thus preservation of subtraction.
    F-hom : β {a b} β is-group-hom
      (AbelianβGroup-on (A.Abelian-group-on-hom a b))
      (AbelianβGroup-on (B.Abelian-group-on-hom _ _))
      Fβ
    F-hom .is-group-hom.pres-β = F-+
    F-0m : β {a b} β Fβ {a} {b} A.0m β‘ B.0m
    F-0m = is-group-hom.pres-id F-hom
    F-diff : β {a b} (f g : A.Hom a b) β Fβ (f A.- g) β‘ Fβ f B.- Fβ g
    F-diff _ _ = is-group-hom.pres-diff F-hom
    F-inv : β {a b} (f : A.Hom a b) β Fβ (A.Hom.inverse f) β‘ B.Hom.inverse (Fβ f)
    F-inv _ = is-group-hom.pres-inv F-homSince the zero object in an -category is characterised as the unique object having , and -functors preserve both and , every -functor preserves zero objects. We say that the zero object, considered as a colimit, is absolute, i.e., preserved by every (relevant) functor.
Ab-functor-pres-β
  : β {o β o' β'} {C : Precategory o β} {D : Precategory o' β'}
    {A : Ab-category C} {B : Ab-category D}
  β (F : Ab-functor A B) (β
A : Zero C)
  β is-zero D (Ab-functor.Fβ F (Zero.β
 β
A))
Ab-functor-pres-β
 {A = A} {B = B} F β
A =
  id-zeroβzero B $
    B.id     β‘Λβ¨ F.F-id β©
    F.β A.id β‘β¨ ap F.β (is-contrβis-prop (Zero.hasβ€ β
A (Zero.β
 β
A)) _ _) β©
    F.β A.0m β‘β¨ F.F-0m β©
    B.0m     β
  where
    module A = Ab-category A
    module B = Ab-category B
    module F = Ab-functor F