module Prelude.DecEq where open import Prelude.Init record DecEq (A : Type) : Type where field _≟_ : DecidableEquality A _==_ : A → A → Bool _==_ = ⌊_⌋ ∘₂ _≟_ ≟-refl : ∀ (x : A) → (x ≟ x) ≡ yes refl ≟-refl x with refl , p ← dec-yes (x ≟ x) refl = p open DecEq ⦃...⦄ public private variable n : ℕ A : Type instance DecEq-⊤ : DecEq ⊤ DecEq-⊤ ._≟_ _ _ = yes refl DecEq-ℕ : DecEq ℕ DecEq-ℕ = record {Nat} DecEq-Fin : DecEq (Fin n) DecEq-Fin = record {Fi} DecEq-List : ⦃ DecEq A ⦄ → DecEq (List A) DecEq-List ._≟_ = L.≡-dec _≟_ DecEq-Bin : DecEq Bitstring DecEq-Bin = record {Bin}