------------------------------------------------------------------------
-- Equational resoning for equivalences
------------------------------------------------------------------------

open import Tools.Relation

-- Reasoning for equivalence relations using preorder relation syntax

module Tools.Reasoning.Equivalence {a } (S : Setoid a ) where

open Setoid S

-- ≈ is a preorder

≈-isPreorder : IsPreorder _≈_ _≈_
≈-isPreorder = record
  { isEquivalence = isEquivalence
  ; reflexive = λ x  x
  ; trans = trans
  }

≈-preorder : Preorder _ _ _
≈-preorder = record
  { Carrier = Carrier
  ; _≈_ = _≈_
  ; _∼_ = _≈_
  ; isPreorder = ≈-isPreorder
  }

open import Tools.Reasoning.Preorder ≈-preorder public