module Algebra.Group.Ab.Sum where

Direct sum of abelian groups🔗

Let be two abelian groups; We construct their coproduct in the category of abelian groups by equipping the set with the “pointwise” group structure. While this might seem like an odd way of constructing a coproduct — after all, is literally a product — remember that in (like itself, in this case), finite products and coproducts coincide.

So, despite the name “direct sum”, and despite the preceding paragraph, the structure we build is actually the product in of and However, we do not refer to this limit as a product — opting to use “direct sum” instead — because the more important notion of product in is the tensor product of abelian groups.

  _⊕_ : Abelian-group 
  _⊕_ = from-commutative-group
    (Direct-product (Ab↪Grp .Functor.F₀ G) (Ab↪Grp .Functor.F₀ H))
    λ x y  Σ-pathp G.commutes H.commutes

The construction of the projection homomorphisms and the “limiting” homomorphism is as in The existence of a left adjoint free abelian group functor implies that limits in are computed as in (namely, because the forgetful functor is a right adjoint, and right adjoints preserve limits).

  ⊕-proj₁ : Ab.Hom (G  H) G
  ⊕-proj₁ .hom = fst
  ⊕-proj₁ .preserves .pres-⋆ x y = refl

  ⊕-proj₂ : Ab.Hom (G  H) H
  ⊕-proj₂ .hom = snd
  ⊕-proj₂ .preserves .pres-⋆ x y = refl

  open is-product
  Direct-sum-is-product : is-product (Ab ) {A = G} {H} {G  H} ⊕-proj₁ ⊕-proj₂
  Direct-sum-is-product .⟨_,_⟩ f g .hom x = f # x , g # x
  Direct-sum-is-product .⟨_,_⟩ f g .preserves .pres-⋆ x y =
    Σ-pathp (f .preserves .pres-⋆ x y) (g .preserves .pres-⋆ x y)

  Direct-sum-is-product .π₁∘⟨⟩ = trivial!
  Direct-sum-is-product .π₂∘⟨⟩ = trivial!
  Direct-sum-is-product .unique p q = ext λ x  p #ₚ x ,ₚ q #ₚ x