module GpdCont.Group.DirProd where
open import GpdCont.Prelude
open import Cubical.Data.Sigma
open import Cubical.Algebra.Group.Base
open import Cubical.Algebra.Group.Morphisms using (GroupHom ; IsGroupHom)
open import Cubical.Algebra.Group.DirProd using (DirProd) public
module DirProd {ℓ} (G H : Group ℓ) where
open IsGroupHom
fstHom : GroupHom (DirProd G H) G
fstHom .fst = fst
fstHom .snd .pres· _ _ = refl
fstHom .snd .pres1 = refl
fstHom .snd .presinv _ = refl
sndHom : GroupHom (DirProd G H) H
sndHom .fst = snd
sndHom .snd .pres· _ _ = refl
sndHom .snd .pres1 = refl
sndHom .snd .presinv _ = refl
pairingHom : {K : Group ℓ} (φ : GroupHom K G) (ψ : GroupHom K H) → GroupHom K (DirProd G H)
pairingHom φ ψ .fst = λ k → φ .fst k , ψ .fst k
pairingHom φ ψ .snd .pres· k₁ k₂ = ≡-× (φ .snd .pres· k₁ k₂) (ψ .snd .pres· k₁ k₂)
pairingHom φ ψ .snd .pres1 = ≡-× (φ .snd .pres1) (ψ .snd .pres1)
pairingHom φ ψ .snd .presinv k = ≡-× (φ .snd .presinv k) (ψ .snd .presinv k)