Conversation
Owner
|
For documentation: I did an svcomp run (1 min timeout) for profiling incremental vs non-incremental (using both z3 and yices2) and the differences were almost inexistent. While there were some differences on individual benchmarks (mostly variants of fib and triangular), on the accumulated performance both times were pretty much identical. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
I added the option
--eager.incremental=true/false(default true) to change the solving approach of theAssumeSolver(I would rename the class toEagerSolvermaybe).With
--eager.incremental=false, a second prover instance is used to check for bounds (btw. we could run this check in parallel!). Since we use two queries now, we cannot dump the generated SMT formulas into a single file, so for now the second query is not dumped (we could use two files though).This PR is mostly for testing and I don't mind not merging it (though it is not much code).
The interesting use case is if we use
--encoding.integers=falseand--encoding.wmm.idl2sat=falseto generate a pure BV encoding which can be solved by SAT solvers. For example, in this case Z3 will only use its SAT solver to solve the query (if non-incremental, otherwise Z3 still uses the SMT solver).@hernanponcedeleon, maybe you want to play around with this on some complex benchmarks.
TODO: In case we merge, we might have to register
AssumeSolverfor native code generation.