{-# OPTIONS --cubical --safe #-} module Data.Bits.Equatable where open import Data.Bits open import Prelude _≡ᴮ_ : Bits → Bits → Bool [] ≡ᴮ [] = true (0∷ xs) ≡ᴮ (0∷ ys) = xs ≡ᴮ ys (1∷ xs) ≡ᴮ (1∷ ys) = xs ≡ᴮ ys _ ≡ᴮ _ = false open import Relation.Nullary.Discrete.FromBoolean module EqBits where sound : ∀ n m → T (n ≡ᴮ m) → n ≡ m sound [] [] p = refl sound (0∷ n) (0∷ m) p = cong 0∷_ (sound n m p) sound (1∷ n) (1∷ m) p = cong 1∷_ (sound n m p) complete : ∀ n → T (n ≡ᴮ n) complete [] = tt complete (0∷ n) = complete n complete (1∷ n) = complete n _≟_ : Discrete Bits _≟_ = from-bool-eq record { EqBits }