Compare commits

...

1 Commits

Author SHA1 Message Date
Leonardo de Moura
b773bf75bb fix: missing simproc for BitVec equality 2024-06-11 14:47:12 -07:00
2 changed files with 7 additions and 0 deletions

View File

@@ -227,6 +227,9 @@ builtin_dsimproc [simp, seval] reduceOfNat (BitVec.ofNat _ _) := fun e => do
if bv.toNat == v then return .continue -- already normalized
return .done <| toExpr (BitVec.ofNat n v)
builtin_simproc [simp, seval] reduceEq (( _ : BitVec _) = _) := reduceBinPred ``Eq 3 (. = .)
builtin_simproc [simp, seval] reduceNe (( _ : BitVec _) _) := reduceBinPred ``Ne 3 (. .)
/-- Simplification procedure for `<` on `BitVec`s. -/
builtin_simproc [simp, seval] reduceLT (( _ : BitVec _) < _) := reduceBinPred ``LT.lt 4 (· < ·)
/-- Simplification procedure for `≤` on `BitVec`s. -/

View File

@@ -137,3 +137,7 @@ example (a : BitVec 32) (h : a >>> 3 = b) : (a >>> 1) >>> 2 = b := by
simp; guard_target = a >>> 3 = b; assumption
example (a : BitVec 32) (h : a >>> 3 = b) : (a >>> 1#32) >>> 2 = b := by
simp; guard_target = a >>> 3 = b; assumption
example (h : False) : 1#2 = 2#2 := by
simp; guard_target = False; exact h
example : 1#2 2#2 := by
simp