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:
parent
26339119e4
commit
1343b272e7
2 changed files with 23 additions and 0 deletions
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue