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