mirror of
https://github.com/Z3Prover/z3
synced 2025-04-24 09:35:32 +00:00
add accessors for implied values to API
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
4628cb8e79
commit
59d8895d15
23 changed files with 347 additions and 2 deletions
|
@ -184,6 +184,28 @@ public:
|
|||
return m_solver1->get_scope_level();
|
||||
}
|
||||
|
||||
expr_ref get_implied_value(expr* e) override {
|
||||
if (m_use_solver1_results)
|
||||
return m_solver1->get_implied_value(e);
|
||||
else
|
||||
return m_solver2->get_implied_value(e);
|
||||
}
|
||||
|
||||
expr_ref get_implied_lower_bound(expr* e) override {
|
||||
if (m_use_solver1_results)
|
||||
return m_solver1->get_implied_lower_bound(e);
|
||||
else
|
||||
return m_solver2->get_implied_lower_bound(e);
|
||||
}
|
||||
|
||||
expr_ref get_implied_upper_bound(expr* e) override {
|
||||
if (m_use_solver1_results)
|
||||
return m_solver1->get_implied_upper_bound(e);
|
||||
else
|
||||
return m_solver2->get_implied_upper_bound(e);
|
||||
}
|
||||
|
||||
|
||||
lbool get_consequences(expr_ref_vector const& asms, expr_ref_vector const& vars, expr_ref_vector& consequences) override {
|
||||
switch_inc_mode();
|
||||
m_use_solver1_results = false;
|
||||
|
|
|
@ -226,6 +226,19 @@ public:
|
|||
|
||||
virtual expr_ref_vector cube(expr_ref_vector& vars, unsigned backtrack_level) = 0;
|
||||
|
||||
/**
|
||||
\brief retrieve fixed value assignment in current solver state, if it is implied.
|
||||
*/
|
||||
virtual expr_ref get_implied_value(expr* e) = 0;
|
||||
|
||||
/**
|
||||
\brief retrieve upper/lower bound for arithmetic term, if it is implied.
|
||||
*/
|
||||
virtual expr_ref get_implied_lower_bound(expr* e) = 0;
|
||||
|
||||
virtual expr_ref get_implied_upper_bound(expr* e) = 0;
|
||||
|
||||
|
||||
/**
|
||||
\brief Display the content of this solver.
|
||||
*/
|
||||
|
|
|
@ -127,6 +127,18 @@ public:
|
|||
return m_base->get_trail();
|
||||
}
|
||||
|
||||
expr_ref get_implied_value(expr* e) override {
|
||||
return expr_ref(e, m);
|
||||
}
|
||||
|
||||
expr_ref get_implied_lower_bound(expr* e) override {
|
||||
return expr_ref(e, m);
|
||||
}
|
||||
|
||||
expr_ref get_implied_upper_bound(expr* e) override {
|
||||
return expr_ref(e, m);
|
||||
}
|
||||
|
||||
lbool check_sat_core2(unsigned num_assumptions, expr * const * assumptions) override {
|
||||
SASSERT(!m_pushed || get_scope_level() > 0);
|
||||
m_proof.reset();
|
||||
|
|
|
@ -97,6 +97,17 @@ public:
|
|||
throw default_exception("cannot retrieve trail from solvers created using tactcis");
|
||||
}
|
||||
|
||||
expr_ref get_implied_value(expr* e) override {
|
||||
return expr_ref(e, m);
|
||||
}
|
||||
|
||||
expr_ref get_implied_lower_bound(expr* e) override {
|
||||
return expr_ref(e, m);
|
||||
}
|
||||
|
||||
expr_ref get_implied_upper_bound(expr* e) override {
|
||||
return expr_ref(e, m);
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue