3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-08 10:25:18 +00:00
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2020-10-30 13:14:48 -07:00
parent d64bc795f0
commit a764d528a1
5 changed files with 17 additions and 4 deletions

View file

@ -192,7 +192,7 @@ namespace sat {
m_drat_check_unsat = p.drat_check_unsat();
m_drat_check_sat = p.drat_check_sat();
m_drat_file = p.drat_file();
m_drat = (m_drat_check_unsat || m_drat_file != symbol("") || m_drat_check_sat) && p.threads() == 1;
m_drat = (m_drat_check_unsat || m_drat_file.is_non_empty_string() || m_drat_check_sat) && p.threads() == 1;
m_drat_binary = p.drat_binary();
m_drat_activity = p.drat_activity();
m_dyn_sub_res = p.dyn_sub_res();

View file

@ -392,6 +392,8 @@ namespace sat {
}
void solver::drat_log_unit(literal lit, justification j) {
if (!m_ext)
return;
extension::scoped_drating _sd(*m_ext.get());
if (j.get_kind() == justification::EXT_JUSTIFICATION)
fill_ext_antecedents(lit, j, false);

View file

@ -127,6 +127,7 @@ namespace q {
proj = solver_project(*mdl1, *qb);
if (!proj)
break;
TRACE("q", tout << "project: " << proj << "\n";);
m_qs.add_clause(~qlit, ~ctx.mk_literal(proj));
m_solver->assert_expr(m.mk_not(proj));
}
@ -136,6 +137,7 @@ namespace q {
proj = solver_project(*mdl0, *qb);
if (!proj)
return l_undef;
TRACE("q", tout << "project-base: " << proj << "\n";);
m_qs.add_clause(~qlit, ~ctx.mk_literal(proj));
}
// TODO: add as top-level clause for relevancy
@ -251,7 +253,6 @@ namespace q {
if (!m_model->eval_expr(bounds, mbounds, true))
return;
mbounds = subst(mbounds, qb.vars);
std::cout << "restrict with bounds " << mbounds << " " << vbounds << "\n";
m_solver->assert_expr(mbounds);
qb.domain_eqs.push_back(vbounds);
}

View file

@ -18,9 +18,15 @@ Author:
namespace sat {
dual_solver::no_drat_params::no_drat_params() {
set_sym("drat.file", symbol());
}
dual_solver::dual_solver(reslimit& l):
m_solver(params_ref(), l)
{}
m_solver(m_params, l)
{
SASSERT(!m_solver.get_config().m_drat);
}
void dual_solver::push() {
m_solver.user_push();

View file

@ -23,6 +23,10 @@ Author:
namespace sat {
class dual_solver {
struct no_drat_params : public params_ref {
no_drat_params();
};
no_drat_params m_params;
solver m_solver;
lim_svector<literal> m_units, m_roots;
lim_svector<bool_var> m_tracked_vars;