@[simp]
theorem
BitVec.abs_eq_add_xor
{w : ℕ}
{x : BitVec w}
:
let_fun y := BitVec.cast ⋯ (BitVec.replicate w (BitVec.ofBool x.msb));
x.abs = x + y ^^^ y
Equations
- ⋯ = ⋯
Instances For
Equations
- ⋯ = ⋯
Instances For
theorem
BitVec.toNat_neq_of_neq_ofNat
{w : ℕ}
{a : BitVec w}
{n : ℕ}
(h : a ≠ BitVec.ofNat w n)
:
a.toNat ≠ n
def
BitVec.one_sdiv
{w : ℕ}
{a : BitVec w}
(ha0 : a ≠ 0)
(ha1 : a ≠ 1)
(hao : a ≠ BitVec.allOnes w)
:
(1#w).sdiv a = 0#w
Equations
- ⋯ = ⋯
Instances For
theorem
BitVec.neg_sgt_eq_slt_neg
{w : ℕ}
{A : BitVec w}
{B : BitVec w}
(h : A ≠ BitVec.intMin w)
(h2 : B ≠ BitVec.intMin w)
:
@[simp]
theorem
BitVec.allOnes_sub_eq_xor
{w : ℕ}
(x : BitVec w)
:
BitVec.allOnes w - x = x ^^^ BitVec.allOnes w
@[simp]
theorem
BitVec.msb_signExtend_of_ge
{w : ℕ}
{i : ℕ}
(h : i ≥ w)
(x : BitVec w)
:
(BitVec.signExtend i x).msb = x.msb
theorem
BitVec.signExtend_succ
{w : ℕ}
(i : ℕ)
(x : BitVec w)
:
BitVec.signExtend (i + 1) x = BitVec.cons (if i < w then x.getLsbD i else x.msb) (BitVec.signExtend i x)
@[simp]
theorem
BitVec.allOnes_sshiftRight
{w : ℕ}
{n : ℕ}
:
(BitVec.allOnes w).sshiftRight n = BitVec.allOnes w