3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-28 11:25:51 +00:00

Enhancement for Valentin #332

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2015-11-19 10:26:01 -08:00
parent 2122fdee45
commit 0592e76574
4 changed files with 31 additions and 6 deletions

View file

@ -241,27 +241,37 @@ namespace opt {
TRACE("opt", model_smt2_pp(tout, m, *m_model, 0););
m_optsmt.setup(*m_opt_solver.get());
update_lower();
switch (m_objectives.size()) {
case 0:
return is_sat;
break;
case 1:
return execute(m_objectives[0], true, false);
is_sat = execute(m_objectives[0], true, false);
break;
default: {
opt_params optp(m_params);
symbol pri = optp.priority();
if (pri == symbol("pareto")) {
return execute_pareto();
is_sat = execute_pareto();
}
else if (pri == symbol("box")) {
return execute_box();
is_sat = execute_box();
}
else {
return execute_lex();
is_sat = execute_lex();
}
break;
}
}
return adjust_unknown(is_sat);
}
lbool context::adjust_unknown(lbool r) {
if (r == l_true && m_opt_solver.get() && m_opt_solver->was_unknown()) {
r = l_undef;
}
return r;
}
bool context::print_model() const {
opt_params optp(m_params);