We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
BitVec.getElem_truncate
1 parent 1b09952 commit e10fa86Copy full SHA for e10fa86
src/Init/Data/BitVec/Lemmas.lean
@@ -523,6 +523,14 @@ theorem getElem?_zeroExtend (m : Nat) (x : BitVec n) (i : Nat) :
523
all_goals (first | apply getLsbD_ge | apply Eq.symm; apply getLsbD_ge)
524
<;> omega
525
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
534
theorem getLsbD_truncate (m : Nat) (x : BitVec n) (i : Nat) :
535
getLsbD (truncate m x) i = (decide (i < m) && getLsbD x i) :=
536
getLsbD_zeroExtend m x i
0 commit comments