This module contains the BitVec
simplifying part of the bv_normalize
simp set.
theorem
Std.Tactic.BVDecide.Normalize.BitVec.exctractLsb'_if
{w : Nat}
{c : Bool}
{x y : BitVec w}
(s l : Nat)
:
BitVec.extractLsb' s l (bif c then x else y) = bif c then BitVec.extractLsb' s l x else BitVec.extractLsb' s l y
theorem
Std.Tactic.BVDecide.Normalize.BitVec.const_add_beq_const
{w b : Nat}
{a : BitVec w}
{c : Nat}
:
theorem
Std.Tactic.BVDecide.Normalize.BitVec.const_beq_add_const_beq
{w c : Nat}
{a : BitVec w}
{b : Nat}
:
theorem
Std.Tactic.BVDecide.Normalize.BitVec.append_const_left
{w3 w1 a w2 b : Nat}
{c : BitVec w3}
:
BitVec.ofNat w1 a ++ (BitVec.ofNat w2 b ++ c) = BitVec.cast ⋯ (BitVec.ofNat w1 a ++ BitVec.ofNat w2 b ++ c)
theorem
Std.Tactic.BVDecide.Normalize.BitVec.append_const_right
{w1 w2 b w3 c : Nat}
{a : BitVec w1}
:
a ++ BitVec.ofNat w2 b ++ BitVec.ofNat w3 c = BitVec.cast ⋯ (a ++ (BitVec.ofNat w2 b ++ BitVec.ofNat w3 c))
theorem
Std.Tactic.BVDecide.Normalize.BitVec.signExtend_elim'
{v : Nat}
{x : BitVec v}
{w : Nat}
(h : w ≤ v)
: