{-# OPTIONS --without-K #-} module equality.groupoid where open import equality.core _⁻¹ : ∀ {i}{X : Set i}{x y : X} → x ≡ y → y ≡ x _⁻¹ = sym _⊚_ : ∀ {i}{X : Set i}{x y z : X} → x ≡ y → y ≡ z → x ≡ z _⊚_ = trans infixl 9 _⊚_ left-unit : ∀ {i}{X : Set i}{x y : X} → (p : x ≡ y) → p ⊚ refl ≡ p left-unit refl = refl right-unit : ∀ {i}{X : Set i}{x y : X} → (p : x ≡ y) → refl ⊚ p ≡ p right-unit refl = refl associativity : ∀ {i}{X : Set i}{x y z w : X} → (p : x ≡ y)(q : y ≡ z)(r : z ≡ w) → p ⊚ q ⊚ r ≡ p ⊚ (q ⊚ r) associativity refl _ _ = refl left-inverse : ∀ {i}{X : Set i}{x y : X} → (p : x ≡ y) → p ⊚ p ⁻¹ ≡ refl left-inverse refl = refl right-inverse : ∀ {i}{X : Set i}{x y : X} → (p : x ≡ y) → p ⁻¹ ⊚ p ≡ refl right-inverse refl = refl