feat: add Bitvec.ofInt_ofNat (#5081)
We use `no_index` to work around special-handling of `OfNat.ofNat` in `DiscrTree`, which has been reported as an issue in https://github.com/leanprover/lean4/issues/2867 and is currently in the process of being fixed in https://github.com/leanprover/lean4/pull/3684. As the potential fix seems non-trivial and might need some time to arrive in-tree, we meanwhile add the `no_index` keyword to the problematic subterm. --------- Co-authored-by: Eric Wieser <wieser.eric@gmail.com>
This commit is contained in:
parent
b54a9ec9b9
commit
c6feffa2bd
1 changed files with 3 additions and 0 deletions
|
|
@ -303,6 +303,9 @@ theorem toInt_ofNat {n : Nat} (x : Nat) :
|
|||
@[simp] theorem ofInt_natCast (w n : Nat) :
|
||||
BitVec.ofInt w (n : Int) = BitVec.ofNat w n := rfl
|
||||
|
||||
@[simp] theorem ofInt_ofNat (w n : Nat) :
|
||||
BitVec.ofInt w (no_index (OfNat.ofNat n)) = BitVec.ofNat w (OfNat.ofNat n) := rfl
|
||||
|
||||
theorem toInt_neg_iff {w : Nat} {x : BitVec w} :
|
||||
BitVec.toInt x < 0 ↔ 2 ^ w ≤ 2 * x.toNat := by
|
||||
simp [toInt_eq_toNat_cond]; omega
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue