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

pull unstable

Signed-off-by: Nikolaj Bjorner <nbjorner@hotmail.com>
This commit is contained in:
Nikolaj Bjorner 2015-04-01 14:57:11 -07:00
commit 52619b9dbb
337 changed files with 24943 additions and 30606 deletions

View file

@ -178,8 +178,9 @@ public:
virtual lbool check_sat(unsigned num_assumptions, expr * const * assumptions) {
m_check_sat_executed = true;
if (num_assumptions > 0 || // assumptions were provided
if (get_num_assumptions() != 0 ||
num_assumptions > 0 || // assumptions were provided
m_ignore_solver1) {
// must use incremental solver
switch_inc_mode();
@ -241,6 +242,16 @@ public:
return m_solver1->get_assertion(idx);
}
virtual unsigned get_num_assumptions() const {
return m_solver1->get_num_assumptions() + m_solver2->get_num_assumptions();
}
virtual expr * get_assumption(unsigned idx) const {
unsigned c1 = m_solver1->get_num_assumptions();
if (idx < c1) return m_solver1->get_assumption(idx);
return m_solver2->get_assumption(idx - c1);
}
virtual void display(std::ostream & out) const {
m_solver1->display(out);
}

View file

@ -72,7 +72,7 @@ public:
/**
\brief Add a new formula \c t to the assertion stack, and "tag" it with \c a.
The propositional varialbe \c a is used to track the use of \c t in a proof
The propositional variable \c a is used to track the use of \c t in a proof
of unsatisfiability.
*/
virtual void assert_expr(expr * t, expr * a) = 0;
@ -125,6 +125,16 @@ public:
*/
virtual expr * get_assertion(unsigned idx) const;
/**
\brief The number of tracked assumptions (see assert_expr(t, a)).
*/
virtual unsigned get_num_assumptions() const = 0;
/**
\brief Retrieves the idx'th tracked assumption (see assert_expr(t, a)).
*/
virtual expr * get_assumption(unsigned idx) const = 0;
/**
\brief Display the content of this solver.
*/

View file

@ -41,6 +41,9 @@ public:
virtual void push();
virtual void pop(unsigned n);
virtual unsigned get_scope_level() const;
virtual unsigned get_num_assumptions() const { return m_assumptions.size(); }
virtual expr * get_assumption(unsigned idx) const { return m_assumptions[idx]; }
protected:
virtual lbool check_sat_core(unsigned num_assumptions, expr * const * assumptions) = 0;
virtual void push_core() = 0;