{-# OPTIONS --without-K #-}
-- Agda-hott library.
-- Author: Mario Román
-- Groups. Definition of the algebraic structure of a group.
open import Base
module algebra.Groups where
record GroupStructure {ℓ} (M : Type ℓ) : Type ℓ where
constructor group-structure
field
-- A group is a monoid
_*_ : M → M → M
e : M
lunit : ∀ x → (e * x) == x
runit : ∀ x → (x * e) == x
assoc : ∀ x y z → (x * (y * z)) == ((x * y) * z)
-- With inverses
ginv : M → M
glinv : ∀ g → (g * ginv g) == e
grinv : ∀ g → (ginv g * g) == e
record Group {ℓ} : Type (lsuc ℓ) where
constructor group
field
M : Type ℓ
str : GroupStructure M
open Group {{...}} public