module Equivalence where open import Data.Product using (_×_; Σ; _,_; proj₁; proj₂) open import Relation.Binary.Definitions open import Relation.Binary.PropositionalEquality as Eq using (_≡_; refl; sym; trans) module _ {a} (A : Set a) (_≈_ : A → A → Set a) where IsReflexive : Set a IsReflexive = ∀ {a : A} → a ≈ a IsSymmetric : Set a IsSymmetric = ∀ {a b : A} → a ≈ b → b ≈ a IsTransitive : Set a IsTransitive = ∀ {a b c : A} → a ≈ b → b ≈ c → a ≈ c record IsEquivalence : Set a where field ≈-refl : IsReflexive ≈-sym : IsSymmetric ≈-trans : IsTransitive isEquivalence-≡ : ∀ {a} {A : Set a} → IsEquivalence A _≡_ isEquivalence-≡ = record { ≈-refl = refl ; ≈-sym = sym ; ≈-trans = trans }