3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-08-14 06:45:25 +00:00
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2020-04-03 16:37:59 -07:00
parent 0b856638e9
commit 426e4cc75c
65 changed files with 135 additions and 146 deletions

View file

@ -497,7 +497,7 @@ namespace datalog {
// -----------------------------------
bool canceled() {
return m.canceled() && (m_last_status = CANCELED, true);
return !m.inc() && (m_last_status = CANCELED, true);
}
void cleanup();

View file

@ -172,7 +172,7 @@ public:
}
bool checkpoint() {
return !m.canceled();
return m.inc();
}
void set_name(symbol const& n) {

View file

@ -26,6 +26,7 @@ Revision History:
#include "ast/scoped_proof.h"
#include "smt/smt_solver.h"
#include "tactic/fd_solver/fd_solver.h"
#include "tactic/tactic.h"
#include "muz/base/dl_context.h"
#include "muz/base/dl_rule_transformer.h"
#include "muz/bmc/dl_bmc_engine.h"
@ -35,6 +36,7 @@ Revision History:
#include "muz/transforms/dl_mk_rule_inliner.h"
#include "muz/base/fp_params.hpp"
namespace datalog {
// ---------------------------------------------------------------------------
@ -485,7 +487,7 @@ namespace datalog {
}
proof_ref get_proof(model_ref& md, func_decl* pred, app* prop, unsigned level) {
if (m.canceled()) {
if (!m.inc()) {
return proof_ref(nullptr, m);
}
TRACE("bmc", tout << "Predicate: " << pred->get_name() << "\n";);
@ -1173,7 +1175,7 @@ namespace datalog {
private:
void get_model(unsigned level) {
if (m.canceled()) {
if (!m.inc()) {
return;
}
rule_manager& rm = b.m_ctx.get_rule_manager();
@ -1520,9 +1522,7 @@ namespace datalog {
}
void bmc::checkpoint() {
if (m.canceled()) {
throw default_exception(Z3_CANCELED_MSG);
}
tactic::checkpoint(m);
}
void bmc::display_certificate(std::ostream& out) const {

View file

@ -2759,11 +2759,8 @@ lbool context::solve(unsigned from_lvl)
}
void context::checkpoint()
{
if (m.canceled ()) {
throw default_exception("spacer canceled");
}
void context::checkpoint() {
tactic::checkpoint(m);
}
unsigned context::get_cex_depth()

View file

@ -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.canceled() && i < m_index.size(); ++i) {
for (unsigned i = 0; m.inc() && 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.canceled() && i < m_preds.size(); ++i) {
for (unsigned i = 0; m.inc() && 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.canceled() && i < fmls.size(); ++i) {
for (unsigned i = 0; m.inc() && 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.canceled()) {
if (!m.inc()) {
return false;
}
if (m.is_false(postcond)) {
@ -1493,7 +1493,7 @@ namespace datalog {
m_status = l_undef;
while (true) {
IF_VERBOSE(2, verbose_stream() << m_instruction << "\n";);
if (m.canceled()) {
if (!m.inc()) {
cleanup();
return l_undef;
}

View file

@ -214,7 +214,7 @@ namespace datalog {
get_invariants(*src_loop);
if (m.canceled()) {
if (!m.inc()) {
return nullptr;
}