{-# 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