3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-08-08 04:01:22 +00:00

don't reinit assumptions when the solver is unsat. fixes #1502

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2018-02-24 16:30:08 +09:00
parent 41e0a12678
commit 9279cbfbac
2 changed files with 9 additions and 15 deletions

View file

@ -209,7 +209,6 @@ namespace datalog {
rel->collect_non_empty_predicates(m_preds_with_facts); rel->collect_non_empty_predicates(m_preds_with_facts);
} }
rule_set::iterator rend = orig.end();
for (rule * r : orig) { for (rule * r : orig) {
func_decl * head_pred = r->get_decl(); func_decl * head_pred = r->get_decl();
m_head_pred_ctr.inc(head_pred); m_head_pred_ctr.inc(head_pred);
@ -257,9 +256,7 @@ namespace datalog {
rule_set * mk_rule_inliner::create_allowed_rule_set(rule_set const & orig) rule_set * mk_rule_inliner::create_allowed_rule_set(rule_set const & orig)
{ {
rule_set * res = alloc(rule_set, m_context); rule_set * res = alloc(rule_set, m_context);
unsigned rcnt = orig.get_num_rules(); for (rule * r : orig) {
for (unsigned i=0; i<rcnt; i++) {
rule * r = orig.get_rule(i);
if (inlining_allowed(orig, r->get_decl())) { if (inlining_allowed(orig, r->get_decl())) {
res->add_rule(r); res->add_rule(r);
} }
@ -411,8 +408,7 @@ namespace datalog {
TRACE("dl", tout << "inlined rules after mutual inlining:\n" << m_inlined_rules; ); TRACE("dl", tout << "inlined rules after mutual inlining:\n" << m_inlined_rules; );
for (unsigned i = 0; i < m_inlined_rules.get_num_rules(); ++i) { for (rule * r : m_inlined_rules) {
rule* r = m_inlined_rules.get_rule(i);
datalog::del_rule(m_mc, *r, false); datalog::del_rule(m_mc, *r, false);
} }
} }
@ -426,9 +422,7 @@ namespace datalog {
rule_ref r(todo.back(), m_rm); rule_ref r(todo.back(), m_rm);
todo.pop_back(); todo.pop_back();
unsigned pt_len = r->get_positive_tail_size(); unsigned pt_len = r->get_positive_tail_size();
unsigned i = 0; unsigned i = 0;
for (; i < pt_len && !inlining_allowed(orig, r->get_decl(i)); ++i) {}; for (; i < pt_len && !inlining_allowed(orig, r->get_decl(i)); ++i) {};
SASSERT(!has_quantifier(*r.get())); SASSERT(!has_quantifier(*r.get()));

View file

@ -1139,7 +1139,7 @@ namespace sat {
} }
void solver::reinit_assumptions() { void solver::reinit_assumptions() {
if (tracking_assumptions() && scope_lvl() == 0) { if (tracking_assumptions() && scope_lvl() == 0 && !inconsistent()) {
TRACE("sat", tout << m_assumptions << "\n";); TRACE("sat", tout << m_assumptions << "\n";);
push(); push();
for (unsigned i = 0; !inconsistent() && i < m_user_scope_literals.size(); ++i) { for (unsigned i = 0; !inconsistent() && i < m_user_scope_literals.size(); ++i) {