Cartesian products of abelian groups
module group-theory.cartesian-products-abelian-groups where
Imports
open import foundation.dependent-pair-types open import foundation.equality-cartesian-product-types open import foundation.identity-types open import foundation.sets open import foundation.universe-levels open import group-theory.abelian-groups open import group-theory.cartesian-products-groups open import group-theory.groups open import group-theory.monoids open import group-theory.semigroups
Idea
The cartesian product of two abelian groups A
and B
is an abelian group
structure on the cartesian product of the underlying sets.
Definition
module _ {l1 l2 : Level} (A : Ab l1) (B : Ab l2) where group-prod-Ab : Group (l1 ⊔ l2) group-prod-Ab = prod-Group (group-Ab A) (group-Ab B) monoid-prod-Ab : Monoid (l1 ⊔ l2) monoid-prod-Ab = monoid-Group group-prod-Ab semigroup-prod-Ab : Semigroup (l1 ⊔ l2) semigroup-prod-Ab = semigroup-Group group-prod-Ab set-prod-Ab : Set (l1 ⊔ l2) set-prod-Ab = set-Group group-prod-Ab type-prod-Ab : UU (l1 ⊔ l2) type-prod-Ab = type-Group group-prod-Ab is-set-type-prod-Ab : is-set type-prod-Ab is-set-type-prod-Ab = is-set-type-Group group-prod-Ab add-prod-Ab : (x y : type-prod-Ab) → type-prod-Ab add-prod-Ab = mul-Group group-prod-Ab zero-prod-Ab : type-prod-Ab zero-prod-Ab = unit-Group group-prod-Ab neg-prod-Ab : type-prod-Ab → type-prod-Ab neg-prod-Ab = inv-Group group-prod-Ab associative-add-prod-Ab : (x y z : type-prod-Ab) → Id (add-prod-Ab (add-prod-Ab x y) z) (add-prod-Ab x (add-prod-Ab y z)) associative-add-prod-Ab = associative-mul-Group group-prod-Ab left-unit-law-add-prod-Ab : (x : type-prod-Ab) → Id (add-prod-Ab zero-prod-Ab x) x left-unit-law-add-prod-Ab = left-unit-law-mul-Group group-prod-Ab right-unit-law-add-prod-Ab : (x : type-prod-Ab) → Id (add-prod-Ab x zero-prod-Ab) x right-unit-law-add-prod-Ab = right-unit-law-mul-Group group-prod-Ab left-inverse-law-add-prod-Ab : (x : type-prod-Ab) → Id (add-prod-Ab (neg-prod-Ab x) x) zero-prod-Ab left-inverse-law-add-prod-Ab = left-inverse-law-mul-Group group-prod-Ab right-inverse-law-add-prod-Ab : (x : type-prod-Ab) → Id (add-prod-Ab x (neg-prod-Ab x)) zero-prod-Ab right-inverse-law-add-prod-Ab = right-inverse-law-mul-Group group-prod-Ab commutative-add-prod-Ab : (x y : type-prod-Ab) → Id (add-prod-Ab x y) (add-prod-Ab y x) commutative-add-prod-Ab (pair x1 y1) (pair x2 y2) = eq-pair (commutative-add-Ab A x1 x2) (commutative-add-Ab B y1 y2) prod-Ab : Ab (l1 ⊔ l2) pr1 prod-Ab = group-prod-Ab pr2 prod-Ab = commutative-add-prod-Ab