{-# OPTIONS --without-K #-}
module equality.reasoning where
open import equality.core
module ≡-Reasoning {i} {X : Set i} where
infix 4 _IsRelatedTo_
infix 2 _∎
infixr 2 _≡⟨_⟩_
infix 1 begin_
-- This seemingly unnecessary type is used to make it possible to
-- infer arguments even if the underlying equality evaluates.
data _IsRelatedTo_ (x y : X) : Set i where
relTo : x ≡ y → x IsRelatedTo y
begin_ : ∀ {x y} → x IsRelatedTo y → x ≡ y
begin relTo p = p
_≡⟨_⟩_ : ∀ x {y z} → x ≡ y → y IsRelatedTo z → x IsRelatedTo z
_ ≡⟨ p ⟩ relTo q = relTo (trans p q)
_∎ : ∀ x → x IsRelatedTo x
_∎ _ = relTo refl