Skip to content

Commit 9846bde

Browse files
committed
chore: wip
1 parent 4bf3136 commit 9846bde

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
@@ -2955,14 +2955,53 @@ theorem sumPackedVec_setWidth {x : BitVec ((k + 1) * w)} :
29552955
rw [BitVec.add_comm]
29562956
rw [BitVec.add_sub_cancel]
29572957

2958-
theorem sumPackedVec_eq_add_head {x : BitVec ((k + 1) * w)} :
2959-
x.sumPackedVec = extractLsb' 0 w x + (extractLsb' w (k * w) x).sumPackedVec := by
2960-
simp [sumPackedVec]
2961-
sorry
2958+
theorem append_extractAndExtendPopulate_eq (x : BitVec w) :
2959+
(0#1 ++ x).extractAndExtendPopulate w =
2960+
(0#w ++ (x.extractAndExtendPopulate w)).cast (by simp [Nat.add_mul]) := by
2961+
conv =>
2962+
lhs
2963+
unfold extractAndExtendPopulate extractAndExtendPopulateAux
2964+
split
2965+
· omega
2966+
· case _ n heq =>
2967+
simp
2968+
unfold extractAndExtendPopulate
2969+
simp
2970+
2971+
2972+
sorry
2973+
2974+
theorem append_sumPackedVec (x : BitVec w) :
2975+
((0#w ++ extractAndExtendPopulate w x).cast (by simp [Nat.add_mul, Nat.add_comm])).sumPackedVec (n := (1 + w)) (w := w) =
2976+
0#w + (x.extractAndExtendPopulate w).sumPackedVec := by sorry
29622977

2963-
theorem extractAndExtendPopulate_sumPackedVec_extractLsb' (x : BitVec (w + 1)):
2964-
((extractLsb' 1 w x).extractAndExtendPopulate w).sumPackedVec =
2965-
(((extractLsb' 1 w x).zeroExtend (w + 1)).extractAndExtendPopulate w).sumPackedVec := by sorry
2978+
-- ((y.zeroExtend (w + 1)).extractAndExtendPopulate w).sumPackedVec
2979+
-- = ((0#1 ++ y).extractAndExtendPopulate w).sumPackedVec
2980+
theorem append_extractAndExtendPopulate_sumPackedVec (x : BitVec w) :
2981+
((0#1 ++ x).extractAndExtendPopulate w).sumPackedVec =
2982+
0#w + (x.extractAndExtendPopulate w).sumPackedVec := by
2983+
rcases w with _|w
2984+
· simp [of_length_zero]
2985+
· simp
2986+
rw [append_extractAndExtendPopulate_eq]
2987+
rw [append_sumPackedVec (x := x) (w := w + 1)]
2988+
simp
2989+
2990+
-- = (0#w ++ y.extractAndExtendPopulate w).sumPackedVec
2991+
--
2992+
-- = (0#w + (y.extractAndExtendPopulate w).sumPackedVec
2993+
-- = (y.extractAndExtendPopulate w).sumPackedVec
2994+
2995+
theorem extractAndExtendPopulate_sumPackedVec_extractLsb' (y : BitVec w):
2996+
(y.extractAndExtendPopulate w).sumPackedVec =
2997+
((y.zeroExtend (w + 1)).extractAndExtendPopulate w).sumPackedVec := by
2998+
induction w
2999+
· case zero =>
3000+
simp [extractAndExtendPopulate, extractAndExtendPopulateAux]
3001+
simp [of_length_zero]
3002+
· case _ w' ihw' =>
3003+
3004+
sorry
29663005

29673006

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

0 commit comments

Comments
 (0)