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