3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-22 16:45:31 +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)
{

View file

@ -123,6 +123,7 @@ public:
{return m_solver.get_scope_level();}
lbool check_sat(unsigned num_assumptions, expr * const *assumptions) override;
lbool check_sat_cc(const expr_ref_vector &cube, const expr_ref_vector &clause) override;
void set_progress_callback(progress_callback *callback) override
{m_solver.set_progress_callback(callback);}
unsigned get_num_assertions() const override