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:
parent
e22c657811
commit
8d20310758
21 changed files with 199 additions and 7 deletions
|
@ -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();
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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(); }
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue