3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2026-04-26 22:03:34 +00:00

more consistent use of parallel mode when enabled, takes care of example test from #1898 that didn't trigger parallel mode

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2018-11-02 18:44:53 -05:00
parent d9e77ba443
commit cf4bf7b591
20 changed files with 73 additions and 65 deletions

View file

@ -58,21 +58,21 @@ probe * mk_is_quasi_pb_probe() {
}
// Create SMT solver that does not use cuts
static tactic * mk_no_cut_smt_tactic(unsigned rs) {
static tactic * mk_no_cut_smt_tactic(ast_manager& m, unsigned rs) {
params_ref solver_p;
solver_p.set_sym(symbol("smt.logic"), symbol("QF_LIA")); // force smt_setup to use the new solver
solver_p.set_uint("arith.branch_cut_ratio", 10000000);
solver_p.set_uint("random_seed", rs);
return annotate_tactic("no-cut-smt-tactic", using_params(mk_smt_tactic_using(false), solver_p));
return annotate_tactic("no-cut-smt-tactic", using_params(mk_smt_tactic_using(m, false), solver_p));
}
// Create SMT solver that does not use cuts
static tactic * mk_no_cut_no_relevancy_smt_tactic(unsigned rs) {
static tactic * mk_no_cut_no_relevancy_smt_tactic(ast_manager& m, unsigned rs) {
params_ref solver_p;
solver_p.set_uint("arith.branch_cut_ratio", 10000000);
solver_p.set_uint("random_seed", rs);
solver_p.set_uint("relevancy", 0);
return annotate_tactic("no-cut-relevancy-tactic", using_params(mk_smt_tactic_using(false), solver_p));
return annotate_tactic("no-cut-relevancy-tactic", using_params(mk_smt_tactic_using(m, false), solver_p));
}
static tactic * mk_bv2sat_tactic(ast_manager & m) {
@ -155,10 +155,10 @@ static tactic * mk_ilp_model_finder_tactic(ast_manager & m) {
fail_if(mk_produce_unsat_cores_probe()),
mk_propagate_ineqs_tactic(m),
or_else(// try_for(mk_mip_tactic(m), 5000),
try_for(mk_no_cut_smt_tactic(100), 2000),
try_for(mk_no_cut_smt_tactic(m, 100), 2000),
and_then(using_params(mk_add_bounds_tactic(m), add_bounds_p1),
try_for(mk_lia2sat_tactic(m), 5000)),
try_for(mk_no_cut_smt_tactic(200), 5000),
try_for(mk_no_cut_smt_tactic(m, 200), 5000),
and_then(using_params(mk_add_bounds_tactic(m), add_bounds_p2),
try_for(mk_lia2sat_tactic(m), 10000))
// , mk_mip_tactic(m)
@ -170,9 +170,9 @@ static tactic * mk_bounded_tactic(ast_manager & m) {
return annotate_tactic(
"bounded-tactic",
and_then(fail_if(mk_is_unbounded_probe()),
or_else(try_for(mk_no_cut_smt_tactic(100), 5000),
try_for(mk_no_cut_no_relevancy_smt_tactic(200), 5000),
try_for(mk_no_cut_smt_tactic(300), 15000)
or_else(try_for(mk_no_cut_smt_tactic(m, 100), 5000),
try_for(mk_no_cut_no_relevancy_smt_tactic(m, 200), 5000),
try_for(mk_no_cut_smt_tactic(m, 300), 15000)
),
mk_fail_if_undecided_tactic()));
}
@ -218,7 +218,7 @@ tactic * mk_qflia_tactic(ast_manager & m, params_ref const & p) {
using_params(mk_lia2sat_tactic(m), quasi_pb_p),
mk_fail_if_undecided_tactic()),
mk_bounded_tactic(m),
mk_smt_tactic())),
mk_smt_tactic(m))),
main_p);