Module docstring
{"This module exists to provide the very basic BitVec definitions required for
Init.Data.UInt.BasicAux.
"}
{"This module exists to provide the very basic BitVec definitions required for
Init.Data.UInt.BasicAux.
"}
BitVec.ofNat
      definition
     (n : Nat) (i : Nat) : BitVec n
        /--
The bitvector with value `i mod 2^n`.
-/
@[match_pattern]
protected def ofNat (n : Nat) (i : Nat) : BitVec n where
  toFin := Fin.ofNat' (2^n) i
        BitVec.instOfNat
      instance
     : OfNat (BitVec n) i
        
      BitVec.isLt
      theorem
     (x : BitVec w) : x.toNat < 2 ^ w
        
      BitVec.add
      definition
     (x y : BitVec n) : BitVec n
        
      BitVec.instAdd
      instance
     : Add (BitVec n)
        instance : Add (BitVec n) := ⟨BitVec.add⟩
        BitVec.sub
      definition
     (x y : BitVec n) : BitVec n
        
      BitVec.instSub
      instance
     : Sub (BitVec n)
        instance : Sub (BitVec n) := ⟨BitVec.sub⟩