Classical.Bundles.AbelianGroup¶
Bundle bridge for abelian groups¶
This is the Classical.Bundles.AbelianGroup module of the Agda Universal Algebra Library.
Mirror of the Group bridge with the added comm field; over Sig-Group.
⟨_⟩ᵃᵍ : AbelianGroup α ρ → stdlib-AbelianGroup α ρ ⟨ 𝑨𝑩 ⟩ᵃᵍ = record { Carrier = 𝕌[ proj₁ 𝑨𝑩 ] ; _≈_ = _≈_ ; _∙_ = _∙_ ; ε = ε ; _⁻¹ = _⁻¹ ; isAbelianGroup = record { isGroup = record { isMonoid = record { isSemigroup = record { isMagma = record { isEquivalence = isEquivalence ; ∙-cong = ∙-cong } ; assoc = assoc-law } ; identity = idˡ-law , idʳ-law } ; inverse = invˡ-law , invʳ-law ; ⁻¹-cong = ⁻¹-cong } ; comm = comm-law } } where open AbelianGroup-Op 𝑨𝑩 open Setoid 𝔻[ proj₁ 𝑨𝑩 ] ⟪_⟫ᵃᵍ : stdlib-AbelianGroup α ρ → AbelianGroup α ρ ⟪ G ⟫ᵃᵍ = 𝑨 , λ { assoc ρ → G-assoc (ρ 0F) (ρ 1F) (ρ 2F) ; idˡ ρ → G-idˡ (ρ 0F) ; idʳ ρ → G-idʳ (ρ 0F) ; invˡ ρ → G-invˡ (ρ 0F) ; invʳ ρ → G-invʳ (ρ 0F) ; comm ρ → G-comm (ρ 0F) (ρ 1F) } where open stdlib-AbelianGroup G using ( setoid ; ∙-cong ; ⁻¹-cong ) renaming ( _∙_ to _·_ ; ε to e ; _⁻¹ to _⁻¹' ; assoc to G-assoc ; identityˡ to G-idˡ ; identityʳ to G-idʳ ; inverseˡ to G-invˡ ; inverseʳ to G-invʳ ; comm to G-comm ) 𝑨 : Algebra _ _ 𝑨 = record { Domain = setoid ; Interp = interp } where interp : Func (⟨ Sig-Group ⟩ setoid) setoid interp ⟨$⟩ (∙-Op , args) = args 0F · args 1F interp ⟨$⟩ (ε-Op , _) = e interp ⟨$⟩ (⁻¹-Op , args) = (args 0F) ⁻¹' cong interp {∙-Op , _} {.∙-Op , _} (refl , args≈) = ∙-cong (args≈ 0F) (args≈ 1F) cong interp {ε-Op , _} {.ε-Op , _} (refl , _) = Setoid.refl setoid cong interp {⁻¹-Op , _} {.⁻¹-Op , _} (refl , args≈) = ⁻¹-cong (args≈ 0F) module _ {𝑨𝑩 : AbelianGroup α ρ} where open AbelianGroup-Op 𝑨𝑩 open Setoid 𝔻[ proj₁ 𝑨𝑩 ] using (_≈_) renaming (refl to refl≈ ) open AbelianGroup-Op ⟪ ⟨ 𝑨𝑩 ⟩ᵃᵍ ⟫ᵃᵍ renaming ( _∙_ to _∙'_ ; ε to ε' ; _⁻¹ to _⁻¹' ) roundtrip-cbc-∙-ag : (a b : 𝕌[ proj₁ 𝑨𝑩 ]) → (a ∙' b) ≈ (a ∙ b) roundtrip-cbc-∙-ag a b = refl≈ roundtrip-cbc-ε-ag : ε' ≈ ε roundtrip-cbc-ε-ag = refl≈ roundtrip-cbc-⁻¹-ag : (a : 𝕌[ proj₁ 𝑨𝑩 ]) → (a ⁻¹') ≈ (a ⁻¹) roundtrip-cbc-⁻¹-ag a = refl≈ module _ {G : stdlib-AbelianGroup α ρ} where open stdlib-AbelianGroup G using ( _≈_ ; _∙_ ; ε ; _⁻¹ ) renaming ( Carrier to A ; refl to refl≈ ) open stdlib-AbelianGroup ⟨ ⟪ G ⟫ᵃᵍ ⟩ᵃᵍ using () renaming ( _∙_ to _∙'_ ; ε to ε' ; _⁻¹ to _⁻¹' ) roundtrip-bcb-∙-ag : (a b : A) → (a ∙ b) ≈ (a ∙' b) roundtrip-bcb-∙-ag a b = refl≈ roundtrip-bcb-ε-ag : ε ≈ ε' roundtrip-bcb-ε-ag = refl≈ roundtrip-bcb-⁻¹-ag : (a : A) → (a ⁻¹) ≈ (a ⁻¹') roundtrip-bcb-⁻¹-ag a = refl≈