3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-10-10 09:48:05 +00:00

first eufi example running

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2018-06-11 23:28:50 -07:00 committed by Arie Gurfinkel
parent 2288931b46
commit 74621e0b7d
26 changed files with 80 additions and 105 deletions

View file

@ -215,10 +215,11 @@ void iuc_solver::reset_statistics ()
m_learn_core_sw.reset();
}
void iuc_solver::get_unsat_core (ptr_vector<expr> &core)
void iuc_solver::get_unsat_core (expr_ref_vector &core)
{
m_solver.get_unsat_core (core);
undo_proxies_in_core (core);
ptr_vector<expr> _core(core.size(), core.c_ptr());
undo_proxies_in_core (_core);
}
void iuc_solver::undo_proxies_in_core (ptr_vector<expr> &r)
{
@ -258,13 +259,6 @@ void iuc_solver::undo_proxies (expr_ref_vector &r)
}
}
void iuc_solver::get_unsat_core (expr_ref_vector &_core)
{
ptr_vector<expr> core;
get_unsat_core (core);
_core.append (core.size (), core.c_ptr ());
}
void iuc_solver::elim_proxies (expr_ref_vector &v)
{
expr_ref f = mk_and (v);

View file

@ -92,7 +92,6 @@ public:
~iuc_solver() override {}
/* iuc solver specific */
void get_unsat_core(expr_ref_vector &core) override;
virtual void get_iuc(expr_ref_vector &core);
void set_split_literals(bool v) { m_split_literals = v; }
bool mk_proxies(expr_ref_vector &v, unsigned from = 0);
@ -102,7 +101,11 @@ public:
void pop_bg(unsigned n);
unsigned get_num_bg();
void get_full_unsat_core(ptr_vector<expr> &core) { m_solver.get_unsat_core(core); }
void get_full_unsat_core(ptr_vector<expr> &core) {
expr_ref_vector _core(m);
m_solver.get_unsat_core(_core);
core.append(_core.size(), _core.c_ptr());
}
/* solver interface */
@ -142,7 +145,7 @@ public:
void collect_statistics(statistics &st) const override ;
virtual void reset_statistics();
void get_unsat_core(ptr_vector<expr> &r) override;
void get_unsat_core(expr_ref_vector &r) override;
void get_model_core(model_ref &m) override {m_solver.get_model(m);}
proof *get_proof() override {return m_solver.get_proof();}
std::string reason_unknown() const override { return m_solver.reason_unknown(); }

View file

@ -245,7 +245,7 @@ lbool prop_solver::maxsmt(expr_ref_vector &hard, expr_ref_vector &soft,
soft.reset();
expr_ref saved(m);
ptr_vector<expr> core;
expr_ref_vector core(m);
m_ctx->get_unsat_core(core);
// while there are soft constraints