The category of abelian groups has finite biproducts #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
@[protected, instance]
@[protected, instance]
@[simp]
theorem
AddCommGroup.binary_product_limit_cone_cone_X
(G H : AddCommGroup) :
(G.binary_product_limit_cone H).cone.X = AddCommGroup.of (↥G × ↥H)
Construct limit data for a binary product in AddCommGroup
, using AddCommGroup.of (G × H)
.
Equations
- G.binary_product_limit_cone H = {cone := {X := AddCommGroup.of (↥G × ↥H) prod.add_comm_group, π := {app := λ (j : category_theory.discrete category_theory.limits.walking_pair), j.cases_on (λ (j : category_theory.limits.walking_pair), j.cases_on (add_monoid_hom.fst ↥G ↥H) (add_monoid_hom.snd ↥G ↥H)), naturality' := _}}, is_limit := {lift := λ (s : category_theory.limits.cone (category_theory.limits.pair G H)), add_monoid_hom.prod (s.π.app {as := category_theory.limits.walking_pair.left}) (s.π.app {as := category_theory.limits.walking_pair.right}), fac' := _, uniq' := _}}
@[simp]
theorem
AddCommGroup.binary_product_limit_cone_is_limit_lift
(G H : AddCommGroup)
(s : category_theory.limits.cone (category_theory.limits.pair G H)) :
@[simp]
@[simp]
We verify that the biproduct in AddCommGroup is isomorphic to the cartesian product of the underlying types:
Equations
@[simp]
theorem
AddCommGroup.biprod_iso_prod_hom_apply
(G H : AddCommGroup)
(i : ↥((category_theory.limits.binary_biproduct.bicone G H).to_cone.X)) :
@[simp]
theorem
AddCommGroup.biprod_iso_prod_inv_comp_fst_apply
(G H : AddCommGroup)
(x : ↥(AddCommGroup.of (↥G × ↥H))) :
⇑category_theory.limits.biprod.fst (⇑((G.biprod_iso_prod H).inv) x) = ⇑(add_monoid_hom.fst ↥G ↥H) x
@[simp]
@[simp]
theorem
AddCommGroup.biprod_iso_prod_inv_comp_snd_apply
(G H : AddCommGroup)
(x : ↥(AddCommGroup.of (↥G × ↥H))) :
⇑category_theory.limits.biprod.snd (⇑((G.biprod_iso_prod H).inv) x) = ⇑(add_monoid_hom.snd ↥G ↥H) x
@[simp]
@[simp]
theorem
AddCommGroup.has_limit.lift_apply
{J : Type w}
(f : J → AddCommGroup)
(s : category_theory.limits.fan f)
(x : ↥(s.X))
(j : J) :
def
AddCommGroup.has_limit.lift
{J : Type w}
(f : J → AddCommGroup)
(s : category_theory.limits.fan f) :
s.X ⟶ AddCommGroup.of (Π (j : J), ↥(f j))
The map from an arbitrary cone over a indexed family of abelian groups to the cartesian product of those groups.
Construct limit data for a product in AddCommGroup
, using AddCommGroup.of (Π j, F.obj j)
.
Equations
- AddCommGroup.has_limit.product_limit_cone f = {cone := {X := AddCommGroup.of (Π (j : J), ↥(f j)) pi.add_comm_group, π := category_theory.discrete.nat_trans (λ (j : category_theory.discrete J), pi.eval_add_monoid_hom (λ (j : J), ↥(f j)) j.as)}, is_limit := {lift := AddCommGroup.has_limit.lift f, fac' := _, uniq' := _}}
@[simp]
theorem
AddCommGroup.has_limit.product_limit_cone_cone_π
{J : Type w}
(f : J → AddCommGroup) :
(AddCommGroup.has_limit.product_limit_cone f).cone.π = category_theory.discrete.nat_trans (λ (j : category_theory.discrete J), pi.eval_add_monoid_hom (λ (j : J), ↥(f j)) j.as)
@[simp]
theorem
AddCommGroup.has_limit.product_limit_cone_cone_X
{J : Type w}
(f : J → AddCommGroup) :
(AddCommGroup.has_limit.product_limit_cone f).cone.X = AddCommGroup.of (Π (j : J), ↥(f j))
@[simp]
theorem
AddCommGroup.has_limit.product_limit_cone_is_limit_lift
{J : Type w}
(f : J → AddCommGroup)
(s : category_theory.limits.fan f) :
@[simp]
theorem
AddCommGroup.biproduct_iso_pi_hom_apply
{J : Type}
[fintype J]
(f : J → AddCommGroup)
(x : ↥((category_theory.limits.biproduct.bicone f).to_cone.X))
(j : J) :
⇑((AddCommGroup.biproduct_iso_pi f).hom) x j = ⇑(category_theory.limits.biproduct.π f j) x
noncomputable
def
AddCommGroup.biproduct_iso_pi
{J : Type}
[fintype J]
(f : J → AddCommGroup) :
⨁ f ≅ AddCommGroup.of (Π (j : J), ↥(f j))
We verify that the biproduct we've just defined is isomorphic to the AddCommGroup structure on the dependent function type
@[simp]
theorem
AddCommGroup.biproduct_iso_pi_inv_comp_π_apply
{J : Type}
[fintype J]
(f : J → AddCommGroup)
(j : J)
(x : ↥(AddCommGroup.of (Π (j : J), ↥(f j)))) :
⇑(category_theory.limits.biproduct.π f j) (⇑((AddCommGroup.biproduct_iso_pi f).inv) x) = ⇑(pi.eval_add_monoid_hom (λ (j : J), ↥(f j)) j) x
@[simp]
theorem
AddCommGroup.biproduct_iso_pi_inv_comp_π
{J : Type}
[fintype J]
(f : J → AddCommGroup)
(j : J) :
(AddCommGroup.biproduct_iso_pi f).inv ≫ category_theory.limits.biproduct.π f j = pi.eval_add_monoid_hom (λ (j : J), ↥(f j)) j