diff --git a/src/Init/Data/BitVec/Lemmas.lean b/src/Init/Data/BitVec/Lemmas.lean index fbfc6cedbf62..bee324d8ec25 100644 --- a/src/Init/Data/BitVec/Lemmas.lean +++ b/src/Init/Data/BitVec/Lemmas.lean @@ -461,6 +461,11 @@ protected theorem extractLsb_ofNat (x n : Nat) (hi lo : Nat) : ext simp +theorem or_assoc (x y z : BitVec w) : + x ||| y ||| z = x ||| (y ||| z) := by + ext i + simp [Bool.or_assoc] + /-! ### and -/ @[simp] theorem toNat_and (x y : BitVec v) : @@ -487,6 +492,11 @@ protected theorem extractLsb_ofNat (x n : Nat) (hi lo : Nat) : ext simp +theorem and_assoc (x y z : BitVec w) : + x &&& y &&& z = x &&& (y &&& z) := by + ext i + simp [Bool.and_assoc] + /-! ### xor -/ @[simp] theorem toNat_xor (x y : BitVec v) : @@ -507,6 +517,11 @@ protected theorem extractLsb_ofNat (x n : Nat) (hi lo : Nat) : ext simp +theorem xor_assoc (x y z : BitVec w) : + x ^^^ y ^^^ z = x ^^^ (y ^^^ z) := by + ext i + simp [Bool.xor_assoc] + /-! ### not -/ theorem not_def {x : BitVec v} : ~~~x = allOnes v ^^^ x := rfl