module Data.Word.Base where

Machine words🔗

postulate Word64 : Type

{-# BUILTIN WORD64 Word64 #-}

private module P where primitive
  primWord64ToNat          : Word64 → Nat
  primWord64FromNat        : Nat → Word64
  primWord64ToNatInjective : ∀ a b → primWord64ToNat a ≡ᵢ primWord64ToNat b → a ≡ᵢ b

open P public renaming
  ( primWord64FromNat to nat→word64
  ; primWord64ToNat   to word64→nat
  )
  using ()

instance
  Discrete-Word64 : Discrete Word64
  Discrete-Word64 = Discrete-inj' _ (P.primWord64ToNatInjective _ _)