{-
This file contains:
- An implementation of the free groupoid (a free group that has no limitiations
over the high dimensional path structure). An intermediate construction used
to calculate the fundamental group of a Bouquet.
-}
{-# OPTIONS --safe #-}
module Cubical.HITs.FreeGroupoid.Base where
open import Cubical.Foundations.Prelude
private
variable
ℓ : Level
data FreeGroupoid (A : Type ℓ) : Type ℓ where
η : A → FreeGroupoid A
_·_ : FreeGroupoid A → FreeGroupoid A → FreeGroupoid A
ε : FreeGroupoid A
inv : FreeGroupoid A → FreeGroupoid 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 ≡ ε