Skip to content

Commit 5ae0995

Browse files
committed
chore: make progress
1 parent 910ce3b commit 5ae0995

File tree

1 file changed

+11
-8
lines changed

1 file changed

+11
-8
lines changed

src/Init/Data/BitVec/Lemmas.lean

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1252,21 +1252,24 @@ theorem mulRec_eq_mul_signExtend_truncate (l r : BitVec w) (s : Nat) :
12521252
rw [heq, ← BitVec.mul_add]
12531253
rw [← zeroExtend_truncate_succ_eq_zeroExtend_truncate_add_pot]
12541254

1255-
theorem zeroExtend_zeroExtend_of_lt (x : BitVec w)
1256-
(u v : Nat) (hi : i ≤ j) :
1257-
(x.zeroExtend i |>.zeroExtend j) = x.zeroExtend j := by
1255+
/-- Zero extending by number of bits larger than the bitwidth has no effect. -/
1256+
theorem zeroExtend_of_ge {x : BitVec w} {i j : Nat} (hi : i ≥ w) :
1257+
(x.zeroExtend i).zeroExtend j = x.zeroExtend j := by
12581258
ext k
12591259
simp
12601260
intros hx;
1261-
have hk : k < j := by omega
1262-
sorry
1263-
-- omega
1261+
have hi' : k < w := BitVec.lt_of_getLsb _ _ hx
1262+
omega
1263+
1264+
/-- Zero extending by the bitwidth has no effect. -/
1265+
theorem zeroExtend_eq_self {x : BitVec w} : x.zeroExtend w = x := by
1266+
ext i
1267+
simp [getLsb_zeroExtend]
12641268

12651269
theorem getLsb_mul (x y : BitVec w) (i : Nat) :
12661270
(x * y).getLsb i = (mulRec x y w).getLsb i := by
12671271
simp [mulRec_eq_mul_signExtend_truncate]
1268-
rw [truncate]
1269-
sorry
1272+
rw [truncate, zeroExtend_of_ge (by omega), zeroExtend_eq_self]
12701273

12711274
/-! ### le and lt -/
12721275

0 commit comments

Comments
 (0)