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