Symbolic implementation of update
needlessly bit-blasts index argument
#579
Labels
exponential slowdown
Extreme performance problems
This proof command takes about 5 seconds with Z3 before returning a counterexample. (Much of this time is actually spent in Cryptol preparing to send the proof to z3, not in the prover itself).
On the other hand, the same proof command with this alternative definition is about 10 times faster:
Using
:set prover=offline
shows that the first version produces a much larger smt output, and makes big mux-trees based on the bits of the index. The second version is much simpler, and only does equality comparisons on the index value.We should reimplement the
update
primitive in the symbolic backend so that it avoids bit-blasting the index value.The text was updated successfully, but these errors were encountered: