{-

This file contains:

- An implementation of the free group of a type of generators as a HIT

-}
{-# OPTIONS --safe #-}

module Cubical.HITs.FreeGroup.Base where

open import Cubical.Foundations.Prelude

private
  variable
     : Level

data FreeGroup (A : Type ) : Type  where
  η     : A  FreeGroup A
  _·_   : FreeGroup A  FreeGroup A  FreeGroup A
  ε     : FreeGroup A
  inv   : FreeGroup A  FreeGroup A
  assoc :  x y z  x · (y · z)  (x · y) · z
  idr   :  x  x  x · ε
  idl   :  x  x  ε · x
  invr  :  x  x · (inv x)  ε
  invl  :  x  (inv x) · x  ε
  trunc : isSet (FreeGroup A)