Skip to content

Commit bfc566b

Browse files
committed
chore: wip
1 parent 93d7159 commit bfc566b

File tree

1 file changed

+46
-7
lines changed

1 file changed

+46
-7
lines changed

src/Init/Data/BitVec/Bitblast.lean

Lines changed: 46 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2726,14 +2726,53 @@ theorem sumPackedVec_setWidth {x : BitVec ((k + 1) * w)} :
27262726
rw [BitVec.add_comm]
27272727
rw [BitVec.add_sub_cancel]
27282728

2729-
theorem sumPackedVec_eq_add_head {x : BitVec ((k + 1) * w)} :
2730-
x.sumPackedVec = extractLsb' 0 w x + (extractLsb' w (k * w) x).sumPackedVec := by
2731-
simp [sumPackedVec]
2732-
sorry
2729+
theorem append_extractAndExtendPopulate_eq (x : BitVec w) :
2730+
(0#1 ++ x).extractAndExtendPopulate w =
2731+
(0#w ++ (x.extractAndExtendPopulate w)).cast (by simp [Nat.add_mul]) := by
2732+
conv =>
2733+
lhs
2734+
unfold extractAndExtendPopulate extractAndExtendPopulateAux
2735+
split
2736+
· omega
2737+
· case _ n heq =>
2738+
simp
2739+
unfold extractAndExtendPopulate
2740+
simp
2741+
2742+
2743+
sorry
2744+
2745+
theorem append_sumPackedVec (x : BitVec w) :
2746+
((0#w ++ extractAndExtendPopulate w x).cast (by simp [Nat.add_mul, Nat.add_comm])).sumPackedVec (n := (1 + w)) (w := w) =
2747+
0#w + (x.extractAndExtendPopulate w).sumPackedVec := by sorry
27332748

2734-
theorem extractAndExtendPopulate_sumPackedVec_extractLsb' (x : BitVec (w + 1)):
2735-
((extractLsb' 1 w x).extractAndExtendPopulate w).sumPackedVec =
2736-
(((extractLsb' 1 w x).zeroExtend (w + 1)).extractAndExtendPopulate w).sumPackedVec := by sorry
2749+
-- ((y.zeroExtend (w + 1)).extractAndExtendPopulate w).sumPackedVec
2750+
-- = ((0#1 ++ y).extractAndExtendPopulate w).sumPackedVec
2751+
theorem append_extractAndExtendPopulate_sumPackedVec (x : BitVec w) :
2752+
((0#1 ++ x).extractAndExtendPopulate w).sumPackedVec =
2753+
0#w + (x.extractAndExtendPopulate w).sumPackedVec := by
2754+
rcases w with _|w
2755+
· simp [of_length_zero]
2756+
· simp
2757+
rw [append_extractAndExtendPopulate_eq]
2758+
rw [append_sumPackedVec (x := x) (w := w + 1)]
2759+
simp
2760+
2761+
-- = (0#w ++ y.extractAndExtendPopulate w).sumPackedVec
2762+
--
2763+
-- = (0#w + (y.extractAndExtendPopulate w).sumPackedVec
2764+
-- = (y.extractAndExtendPopulate w).sumPackedVec
2765+
2766+
theorem extractAndExtendPopulate_sumPackedVec_extractLsb' (y : BitVec w):
2767+
(y.extractAndExtendPopulate w).sumPackedVec =
2768+
((y.zeroExtend (w + 1)).extractAndExtendPopulate w).sumPackedVec := by
2769+
induction w
2770+
· case zero =>
2771+
simp [extractAndExtendPopulate, extractAndExtendPopulateAux]
2772+
simp [of_length_zero]
2773+
· case _ w' ihw' =>
2774+
2775+
sorry
27372776

27382777

27392778
theorem extractAndExtendPopulate_sumPackedVec_eq_add (x : BitVec (w + 1)):

0 commit comments

Comments
 (0)