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

added support for named assertions

This commit is contained in:
Leonardo de Moura 2012-11-02 14:00:15 -07:00
parent e1eb3ee8ee
commit e2f6a65aa2
12 changed files with 62 additions and 319 deletions

View file

@ -20,6 +20,7 @@ Notes:
--*/
#include"solver_na2as.h"
#include"ast_smt2_pp.h"
solver_na2as::solver_na2as() {
m_manager = 0;
@ -31,6 +32,9 @@ solver_na2as::~solver_na2as() {
void solver_na2as::assert_expr(expr * t, expr * a) {
SASSERT(m_manager != 0);
SASSERT(is_uninterp_const(a));
SASSERT(m_manager->is_bool(a));
TRACE("solver_na2as", tout << "asserting\n" << mk_ismt2_pp(t, *m_manager) << "\n" << mk_ismt2_pp(a, *m_manager) << "\n";);
m_manager->inc_ref(a);
m_assumptions.push_back(a);
expr_ref new_t(*m_manager);

View file

@ -268,10 +268,15 @@ lbool strategic_solver_core::check_sat_with_assumptions(unsigned num_assumptions
}
init_inc_solver();
m_use_inc_solver_results = true;
TRACE("solver_na2as", tout << "invoking inc_solver with " << num_assumptions << " assumptions\n";);
return m_inc_solver->check_sat(num_assumptions, assumptions);
}
lbool strategic_solver_core::check_sat_core(unsigned num_assumptions, expr * const * assumptions) {
TRACE("solver_na2as", tout << "assumptions at strategic_solver_core:\n";
for (unsigned i = 0; i < num_assumptions; i++) {
tout << mk_ismt2_pp(assumptions[i], m()) << "\n";
});
reset_results();
m_check_sat_executed = true;
if (num_assumptions > 0 || // assumptions were provided
@ -355,6 +360,7 @@ void strategic_solver_core::set_cancel(bool f) {
}
void strategic_solver_core::get_unsat_core(ptr_vector<expr> & r) {
TRACE("solver_na2as", tout << "get_unsat_core, m_use_inc_solver_results: " << m_use_inc_solver_results << "\n";);
if (m_use_inc_solver_results) {
SASSERT(m_inc_solver);
m_inc_solver->get_unsat_core(r);