mirror of
https://github.com/Z3Prover/z3
synced 2025-08-20 18:20:22 +00:00
Parallel solving (#7756)
* very basic setup * ensure solve_eqs is fully disabled when smt.solve_eqs=false, #7743 Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * respect smt configuration parameter in elim_unconstrained simplifier Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * indentation * add bash files for test runs * add option to selectively disable variable solving for only ground expressions Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * remove verbose output Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * fix #7745 axioms for len(substr(...)) escaped due to nested rewriting * ensure atomic constraints are processed by arithmetic solver * #7739 optimization add simplification rule for at(x, offset) = "" Introducing j just postpones some rewrites that prevent useful simplifications. Z3 already uses common sub-expressions. The example highlights some opportunities for simplification, noteworthy at(..) = "". The example is solved in both versions after adding this simplification. * fix unsound len(substr) axiom Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> * FreshConst is_sort (#7748) * #7750 add pre-processing simplification * Add parameter validation for selected API functions * updates to ac-plugin fix incrementality bugs by allowing destructive updates during saturation at the cost of redoing saturation after a pop. * enable passive, add check for bloom up-to-date * add top-k fixed-sized min-heap priority queue for top scoring literals * set up worker thread batch manager for multithreaded batch cubes paradigm, need to debug as I am getting segfault still * fix bug in parallel solving batch setup * fix bug * allow for internalize implies * disable pre-processing during cubing * debugging * process cubes as lists of individual lits --------- Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com> Co-authored-by: Nikolaj Bjorner <nbjorner@microsoft.com> Co-authored-by: humnrdble <83878671+humnrdble@users.noreply.github.com>
This commit is contained in:
parent
435ea6ea99
commit
d593bb89f3
6 changed files with 299 additions and 39 deletions
|
@ -72,9 +72,14 @@ namespace smt {
|
|||
svector<bool_var> vars;
|
||||
for (bool_var v = 0; v < static_cast<bool_var>(sz); ++v) {
|
||||
expr* b = ctx.bool_var2expr(v);
|
||||
if (b && ctx.get_assignment(v) == l_undef) {
|
||||
vars.push_back(v);
|
||||
}
|
||||
if (!b)
|
||||
continue;
|
||||
if (ctx.get_assignment(v) != l_undef)
|
||||
continue;
|
||||
if (m.is_and(b) || m.is_or(b) || m.is_not(b) || m.is_ite(b) || m.is_implies(b) || m.is_iff(b) || m.is_xor(b))
|
||||
continue; // do not choose connectives
|
||||
vars.push_back(v);
|
||||
|
||||
}
|
||||
compare comp(ctx);
|
||||
std::sort(vars.begin(), vars.end(), comp);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue