Skip to content

Commit e10fa86

Browse files
luisacicolinitobiasgrosser
authored andcommitted
feat: add BitVec.getElem_truncate
1 parent 1b09952 commit e10fa86

File tree

1 file changed

+8
-0
lines changed

1 file changed

+8
-0
lines changed

src/Init/Data/BitVec/Lemmas.lean

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -523,6 +523,14 @@ theorem getElem?_zeroExtend (m : Nat) (x : BitVec n) (i : Nat) :
523523
all_goals (first | apply getLsbD_ge | apply Eq.symm; apply getLsbD_ge)
524524
<;> omega
525525

526+
theorem getElem_truncate (m : Nat) (x : BitVec n) (i : Nat) (hi : i < m) :
527+
(truncate m x)[i] = x.getLsbD i := by
528+
simp [getElem?_eq, getElem_zeroExtend]
529+
530+
theorem getElem?_truncate (m : Nat) (x : BitVec n) (i : Nat) :
531+
(truncate m x)[i]? = if i < m then some (x.getLsbD i) else none :=
532+
getElem?_zeroExtend m x i
533+
526534
theorem getLsbD_truncate (m : Nat) (x : BitVec n) (i : Nat) :
527535
getLsbD (truncate m x) i = (decide (i < m) && getLsbD x i) :=
528536
getLsbD_zeroExtend m x i

0 commit comments

Comments
 (0)