{-# OPTIONS --type-in-type #-}

-- Equational reasoning about relations over one specific set can be found in PreOrder.agda

open import NeilPrelude
open import Properties

module Equational

  (_≈_ : {A : Set} → Rel A)
  (reflexivity : {A : Set} → Reflexive {A} _≈_)
  (transitive : {A : Set} → Transitive {A} _≈_)

where

infixr 1 _⟨_⟩_
infix  2 _QED

_⟨_⟩_ : {A : Set} → {b c : A} → (a : A) → a ≈ b → b ≈ c → a ≈ c
_⟨_⟩_ _ = transitive

_QED : {A : Set} → (a : A) → a ≈ a
_ QED = reflexivity