module EquationalReasoning where
open import Equality
open import Level
infix 1 proof:_
proof:_ :
{ℓ : Level}
{A : Set ℓ}
{x y : A}
→ ---------------------
x ≡ y → x ≡ y
proof: refl = refl
-- infixr 2 _≡[_]_
-- _≡[_]_ :
-- {ℓ : Level}
-- {A : Set ℓ}
-- (x : A)
-- {y z : A}
-- → -------------------
-- x ≡ y → y ≡ z → x ≡ z
-- _ ≡[ refl ] q = q
-- optimization from
-- <https://lists.chalmers.se/pipermail/agda/2016/009090.html>
infixr 2 step≡
step≡ :
{ℓ : Level}
{A : Set ℓ}
(x : A)
{y z : A}
→ -------------------
y ≡ z → x ≡ y → x ≡ z
step≡ _ refl p = p
syntax step≡ x p q = x ≡[ q ] p
infix 3 _qed
_qed :
{ℓ : Level}
{A : Set ℓ}
(x : A)
→ ---------
x ≡ x
_ qed = refl