mirror of
https://github.com/Z3Prover/z3
synced 2025-04-24 09:35:32 +00:00
fast path for antecedent extraction in smt_context
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
ceb3f0c869
commit
8221a09659
11 changed files with 237 additions and 0 deletions
|
@ -48,6 +48,10 @@ struct scoped_assumption_push {
|
|||
};
|
||||
|
||||
lbool solver::get_consequences(expr_ref_vector const& asms, expr_ref_vector const& vars, expr_ref_vector& consequences) {
|
||||
return get_consequences_core(asms, vars, consequences);
|
||||
}
|
||||
|
||||
lbool solver::get_consequences_core(expr_ref_vector const& asms, expr_ref_vector const& vars, expr_ref_vector& consequences) {
|
||||
ast_manager& m = asms.get_manager();
|
||||
lbool is_sat = check_sat(asms);
|
||||
if (is_sat != l_true) {
|
||||
|
|
|
@ -171,6 +171,11 @@ public:
|
|||
~scoped_push() { if (!m_nopop) s.pop(1); }
|
||||
void disable_pop() { m_nopop = true; }
|
||||
};
|
||||
|
||||
protected:
|
||||
|
||||
virtual lbool get_consequences_core(expr_ref_vector const& asms, expr_ref_vector const& vars, expr_ref_vector& consequences);
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -65,6 +65,11 @@ lbool solver_na2as::check_sat(unsigned num_assumptions, expr * const * assumptio
|
|||
return check_sat_core(m_assumptions.size(), m_assumptions.c_ptr());
|
||||
}
|
||||
|
||||
lbool solver_na2as::get_consequences(expr_ref_vector const& asms, expr_ref_vector const& vars, expr_ref_vector& consequences) {
|
||||
append_assumptions app(m_assumptions, asms.size(), asms.c_ptr());
|
||||
return get_consequences_core(m_assumptions, vars, consequences);
|
||||
}
|
||||
|
||||
void solver_na2as::push() {
|
||||
m_scopes.push_back(m_assumptions.size());
|
||||
push_core();
|
||||
|
|
|
@ -45,6 +45,7 @@ public:
|
|||
|
||||
virtual unsigned get_num_assumptions() const { return m_assumptions.size(); }
|
||||
virtual expr * get_assumption(unsigned idx) const { return m_assumptions[idx]; }
|
||||
virtual lbool get_consequences(expr_ref_vector const& asms, expr_ref_vector const& vars, expr_ref_vector& consequences);
|
||||
protected:
|
||||
virtual lbool check_sat_core(unsigned num_assumptions, expr * const * assumptions) = 0;
|
||||
virtual void push_core() = 0;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue