3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-22 16:45:31 +00:00
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2020-03-13 10:49:39 -07:00
parent a6fcdecfd7
commit 825fbf1832
5 changed files with 31 additions and 8 deletions

View file

@ -678,9 +678,14 @@ void rewriter_tpl<Config>::update_binding_at(unsigned i, expr* binding) {
template<typename Config>
template<bool ProofGen>
void rewriter_tpl<Config>::main_loop(expr * t, expr_ref & result, proof_ref & result_pr) {
if (m_cancel_check && m().canceled()) {
reset();
throw rewriter_exception(m().limit().get_cancel_msg());
if (m().canceled()) {
if (m_cancel_check) {
reset();
throw rewriter_exception(m().limit().get_cancel_msg());
}
result = t;
result_pr = nullptr;
return;
}
SASSERT(!ProofGen || result_stack().size() == result_pr_stack().size());
SASSERT(not_rewriting());
@ -713,9 +718,11 @@ template<bool ProofGen>
void rewriter_tpl<Config>::resume_core(expr_ref & result, proof_ref & result_pr) {
SASSERT(!frame_stack().empty());
while (!frame_stack().empty()) {
if (m_cancel_check && m().canceled()) {
reset();
throw rewriter_exception(m().limit().get_cancel_msg());
if (m().canceled()) {
if (m_cancel_check) {
reset();
throw rewriter_exception(m().limit().get_cancel_msg());
}
}
SASSERT(!ProofGen || result_stack().size() == result_pr_stack().size());
frame & fr = frame_stack().back();

View file

@ -196,9 +196,10 @@ lbool tactic2solver::check_sat_core2(unsigned num_assumptions, expr * const * as
}
TRACE("tactic",
if (m_mc) m_mc->display(tout << "mc:\n");
if (g->mc()) g->mc()->display(tout << "\ng\n:");
if (g->mc()) g->mc()->display(tout << "\ng:\n");
if (md) tout << "\nmodel:\n" << *md.get() << "\n";
);
//m_mc = concat(m_mc.get(), g->mc());
m_mc = concat(g->mc(), m_mc.get());
}

View file

@ -393,6 +393,20 @@ void goal::display_with_dependencies(std::ostream & out) const {
out << "\n :precision " << prec() << " :depth " << depth() << ")" << std::endl;
}
void goal::display_with_proofs(std::ostream& out) const {
out << "(goal";
unsigned sz = size();
for (unsigned i = 0; i < sz; i++) {
out << "\n |-";
if (pr(i)) {
out << mk_ismt2_pp(pr(i), m(), 4);
}
out << "\n " << mk_ismt2_pp(form(i), m(), 2);
}
out << "\n :precision " << prec() << " :depth " << depth() << ")" << std::endl;
}
void goal::display(ast_printer_context & ctx) const {
display(ctx, ctx.regular_stream());
}

View file

@ -141,6 +141,7 @@ public:
void display_with_dependencies(ast_printer & prn, std::ostream & out) const;
void display_with_dependencies(ast_printer_context & ctx) const;
void display_with_dependencies(std::ostream & out) const;
void display_with_proofs(std::ostream& out) const;
bool sat_preserved() const;
bool unsat_preserved() const;

View file

@ -34,7 +34,7 @@ struct tactic_report::imp {
m_goal(g),
m_start_memory(static_cast<double>(memory::get_allocation_size())/static_cast<double>(1024*1024)) {
m_watch.start();
TRACE("tactic", g.display(tout << id << "\n"););
TRACE("tactic", g.display_with_proofs(tout << id << "\n"););
}
~imp() {