3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-11-02 12:37:52 +00:00

Implement iuc_solver::check_sat_cc

This commit is contained in:
Arie Gurfinkel 2018-05-29 13:17:42 -07:00
parent 26339119e4
commit 1343b272e7
2 changed files with 23 additions and 0 deletions

View file

@ -127,6 +127,28 @@ lbool iuc_solver::check_sat (unsigned num_assumptions, expr * const *assumptions
return res;
}
lbool iuc_solver::check_sat_cc(const expr_ref_vector &cube,
const expr_ref_vector &clause) {
if (clause.empty()) {return check_sat(cube.size(), cube.c_ptr());}
// -- remove any old assumptions
if (m_assumptions.size() > m_first_assumption)
{ m_assumptions.shrink(m_first_assumption); }
// -- replace theory literals in background assumptions with proxies
mk_proxies(m_assumptions);
// -- in case mk_proxies added new literals, they are all background
m_first_assumption = m_assumptions.size();
m_assumptions.append(cube);
m_is_proxied = mk_proxies(m_assumptions, m_first_assumption);
lbool res;
res = m_solver.check_sat_cc(m_assumptions, clause);
set_status (res);
return res;
}
app* iuc_solver::def_manager::mk_proxy (expr *v)
{