3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-24 09:35:32 +00:00

adding trail/levels

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2019-01-29 14:45:51 -08:00
parent e22c657811
commit 8d20310758
21 changed files with 199 additions and 7 deletions

View file

@ -314,6 +314,20 @@ public:
m_solver2->get_model(m);
}
void get_levels(ptr_vector<expr> const& vars, unsigned_vector& depth) override {
if (m_use_solver1_results)
m_solver1->get_levels(vars, depth);
else
m_solver2->get_levels(vars, depth);
}
expr_ref_vector get_trail() override {
if (m_use_solver1_results)
return m_solver1->get_trail();
else
return m_solver2->get_trail();
}
proof * get_proof() override {
if (m_use_solver1_results)
return m_solver1->get_proof();

View file

@ -251,7 +251,8 @@ void solver::updt_params(params_ref const & p) {
}
expr_ref_vector solver::get_units(ast_manager& m) {
expr_ref_vector solver::get_units() {
ast_manager& m = get_manager();
expr_ref_vector fmls(m), result(m), tmp(m);
get_assertions(fmls);
obj_map<expr, bool> units;
@ -284,7 +285,8 @@ expr_ref_vector solver::get_units(ast_manager& m) {
}
expr_ref_vector solver::get_non_units(ast_manager& m) {
expr_ref_vector solver::get_non_units() {
ast_manager& m = get_manager();
expr_ref_vector result(m), fmls(m);
get_assertions(fmls);
family_id bfid = m.get_basic_family_id();
@ -320,6 +322,7 @@ expr_ref_vector solver::get_non_units(ast_manager& m) {
return result;
}
lbool solver::check_sat(unsigned num_assumptions, expr * const * assumptions) {
lbool r = l_undef;
try {

View file

@ -243,9 +243,13 @@ public:
/**
\brief extract units from solver.
*/
expr_ref_vector get_units(ast_manager& m);
expr_ref_vector get_units();
expr_ref_vector get_non_units(ast_manager& m);
expr_ref_vector get_non_units();
virtual expr_ref_vector get_trail() = 0; // { return expr_ref_vector(get_manager()); }
virtual void get_levels(ptr_vector<expr> const& vars, unsigned_vector& depth) = 0;
class scoped_push {
solver& s;

View file

@ -119,6 +119,14 @@ public:
}
}
void get_levels(ptr_vector<expr> const& vars, unsigned_vector& depth) override {
m_base->get_levels(vars, depth);
}
expr_ref_vector get_trail() override {
return m_base->get_trail();
}
lbool check_sat_core2(unsigned num_assumptions, expr * const * assumptions) override {
SASSERT(!m_pushed || get_scope_level() > 0);
m_proof.reset();

View file

@ -85,6 +85,14 @@ public:
model_converter_ref get_model_converter() const override { return m_mc; }
void get_levels(ptr_vector<expr> const& vars, unsigned_vector& depth) override {
throw default_exception("cannot retrieve depth from solvers created using tactics");
}
expr_ref_vector get_trail() override {
throw default_exception("cannot retrieve trail from solvers created using tactcis");
}
};
ast_manager& tactic2solver::get_manager() const { return m_assertions.get_manager(); }