diff --git a/src/api/api_polynomial.cpp b/src/api/api_polynomial.cpp index cecb63a7c..c68427960 100644 --- a/src/api/api_polynomial.cpp +++ b/src/api/api_polynomial.cpp @@ -61,6 +61,7 @@ extern "C" { polynomial_ref_vector rs(pm); polynomial_ref r(pm); expr_ref _r(mk_c(c)->m()); + { cancel_eh eh(mk_c(c)->poly_limit()); api::context::set_interruptable si(*(mk_c(c)), eh); diff --git a/src/ast/rewriter/rewriter_def.h b/src/ast/rewriter/rewriter_def.h index 44b5d192e..05eebead2 100644 --- a/src/ast/rewriter/rewriter_def.h +++ b/src/ast/rewriter/rewriter_def.h @@ -575,7 +575,7 @@ template void rewriter_tpl::resume_core(expr_ref & result, proof_ref & result_pr) { SASSERT(!frame_stack().empty()); while (!frame_stack().empty()) { - if (!m().canceled()) { + if (m().canceled()) { if (m().limit().cancel_flag_set()) { throw rewriter_exception(Z3_CANCELED_MSG); } diff --git a/src/muz/base/hnf.cpp b/src/muz/base/hnf.cpp index 2355e32fd..6c1e917c3 100644 --- a/src/muz/base/hnf.cpp +++ b/src/muz/base/hnf.cpp @@ -173,7 +173,7 @@ public: } bool checkpoint() { - return m.limit().inc(); + return !m.canceled(); } void set_name(symbol const& n) { diff --git a/src/muz/bmc/dl_bmc_engine.cpp b/src/muz/bmc/dl_bmc_engine.cpp index 0ca54fcd2..bad1f2b4f 100644 --- a/src/muz/bmc/dl_bmc_engine.cpp +++ b/src/muz/bmc/dl_bmc_engine.cpp @@ -483,7 +483,7 @@ namespace datalog { } proof_ref get_proof(model_ref& md, func_decl* pred, app* prop, unsigned level) { - if (!m.limit().inc()) { + if (m.canceled()) { return proof_ref(0, m); } TRACE("bmc", tout << "Predicate: " << pred->get_name() << "\n";); @@ -1172,7 +1172,7 @@ namespace datalog { private: void get_model(unsigned level) { - if (!m.limit().inc()) { + if (m.canceled()) { return; } rule_manager& rm = b.m_ctx.get_rule_manager(); @@ -1509,7 +1509,7 @@ namespace datalog { } void bmc::checkpoint() { - if (!m.limit().inc()) { + if (m.canceled()) { throw default_exception("bmc canceled"); } } diff --git a/src/muz/pdr/pdr_context.cpp b/src/muz/pdr/pdr_context.cpp index 0d5d8de7d..e3b880c92 100644 --- a/src/muz/pdr/pdr_context.cpp +++ b/src/muz/pdr/pdr_context.cpp @@ -1911,7 +1911,7 @@ namespace pdr { } void context::checkpoint() { - if (!m.limit().inc()) { + if (m.canceled()) { throw default_exception("pdr canceled"); } } diff --git a/src/muz/tab/tab_context.cpp b/src/muz/tab/tab_context.cpp index 72171d227..0a6c4c294 100644 --- a/src/muz/tab/tab_context.cpp +++ b/src/muz/tab/tab_context.cpp @@ -581,7 +581,7 @@ namespace tb { // extract pre_cond => post_cond validation obligation from match. bool find_match(unsigned& subsumer) { - for (unsigned i = 0; m.limit().inc() && i < m_index.size(); ++i) { + for (unsigned i = 0; !m.canceled() && i < m_index.size(); ++i) { if (match_rule(i)) { subsumer = m_index[i]->get_seqno(); return true; @@ -618,7 +618,7 @@ namespace tb { app* q = g.get_predicate(predicate_index); - for (unsigned i = 0; m.limit().inc() && i < m_preds.size(); ++i) { + for (unsigned i = 0; !m.canceled() && i < m_preds.size(); ++i) { app* p = m_preds[i].get(); m_subst.push_scope(); unsigned limit = m_sideconds.size(); @@ -647,7 +647,7 @@ namespace tb { expr_ref_vector fmls(m_sideconds); m_subst.reset_cache(); - for (unsigned i = 0; m.limit().inc() && i < fmls.size(); ++i) { + for (unsigned i = 0; !m.canceled() && i < fmls.size(); ++i) { m_subst.apply(2, deltas, expr_offset(fmls[i].get(), 0), q); fmls[i] = q; } @@ -664,7 +664,7 @@ namespace tb { } } m_rw.mk_and(fmls.size(), fmls.c_ptr(), postcond); - if (!m.limit().inc()) { + if (m.canceled()) { return false; } if (m.is_false(postcond)) { @@ -1495,7 +1495,7 @@ namespace datalog { m_status = l_undef; while (true) { IF_VERBOSE(2, verbose_stream() << m_instruction << "\n";); - if (!m.limit().inc()) { + if (m.canceled()) { cleanup(); return l_undef; } diff --git a/src/muz/transforms/dl_mk_karr_invariants.cpp b/src/muz/transforms/dl_mk_karr_invariants.cpp index 3c4d04aeb..99b1c0aea 100644 --- a/src/muz/transforms/dl_mk_karr_invariants.cpp +++ b/src/muz/transforms/dl_mk_karr_invariants.cpp @@ -208,7 +208,7 @@ namespace datalog { get_invariants(*src_loop); - if (!m.limit().inc()) { + if (m.canceled()) { return 0; }