mirror of
https://github.com/Z3Prover/z3
synced 2025-04-22 16:45:31 +00:00
fix #3538, turn on proof checking assertions in goal.cpp for earlier coverage
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
907d310600
commit
1a995da0ae
4 changed files with 15 additions and 8 deletions
|
@ -936,6 +936,9 @@ struct pb2bv_rewriter::imp {
|
|||
bool flat_assoc(func_decl * f) const { return false; }
|
||||
br_status reduce_app(func_decl * f, unsigned num, expr * const * args, expr_ref & result, proof_ref & result_pr) {
|
||||
result_pr = nullptr;
|
||||
if (m_r.m.proofs_enabled()) {
|
||||
return BR_FAILED;
|
||||
}
|
||||
return m_r.mk_app_core(f, num, args, result);
|
||||
}
|
||||
card2bv_rewriter_cfg(imp& i, ast_manager & m):m_r(i, m) {}
|
||||
|
@ -958,9 +961,13 @@ struct pb2bv_rewriter::imp {
|
|||
void set_min_arity(unsigned ma) { m_cfg.set_min_arity(ma); }
|
||||
void rewrite(bool full, expr* e, expr_ref& r, proof_ref& p) {
|
||||
expr_ref ee(e, m());
|
||||
if (m().proofs_enabled()) {
|
||||
r = e;
|
||||
return;
|
||||
}
|
||||
proof_ref rp(m());
|
||||
if (m_cfg.m_r.mk_app(full, e, r)) {
|
||||
ee = r;
|
||||
// mp proof?
|
||||
}
|
||||
(*this)(ee, r, p);
|
||||
}
|
||||
|
|
|
@ -65,8 +65,8 @@ public:
|
|||
}
|
||||
|
||||
expr_ref new_f1(m), new_f2(m);
|
||||
proof_ref new_pr1(m), new_pr2(m);
|
||||
for (unsigned idx = 0; !g->inconsistent() && idx < g->size(); idx++) {
|
||||
proof_ref new_pr1(m), new_pr2(m);
|
||||
rw1(g->form(idx), new_f1, new_pr1);
|
||||
TRACE("card2bv", tout << "Rewriting " << new_f1 << "\n" << new_pr1 << std::endl;);
|
||||
rw2(false, new_f1, new_f2, new_pr2);
|
||||
|
|
|
@ -204,11 +204,11 @@ public:
|
|||
if (g->form(i) != tmp && m.proofs_enabled()) {
|
||||
pr1 = m.mk_rewrite(g->form(i), tmp);
|
||||
}
|
||||
m_rw(tmp, new_curr, new_pr);
|
||||
if (m.proofs_enabled() && tmp != new_curr) {
|
||||
m_rw(tmp, new_curr, pr2);
|
||||
if (m.proofs_enabled() && tmp != new_curr && !pr2) {
|
||||
pr2 = m.mk_rewrite(tmp, new_curr);
|
||||
}
|
||||
if (m.proofs_enabled()) {
|
||||
if (m.proofs_enabled() && g->pr(i)) {
|
||||
new_pr = m.mk_transitivity(pr1, pr2);
|
||||
new_pr = m.mk_modus_ponens(g->pr(i), new_pr);
|
||||
}
|
||||
|
|
|
@ -133,7 +133,7 @@ void goal::push_back(expr * f, proof * pr, expr_dependency * d) {
|
|||
m().push_back(m_dependencies, saved_d);
|
||||
}
|
||||
else {
|
||||
// SASSERT(!pr || m().get_fact(pr) == f);
|
||||
SASSERT(!pr || m().get_fact(pr) == f);
|
||||
SASSERT(!m_inconsistent);
|
||||
m().push_back(m_forms, f);
|
||||
m().push_back(m_proofs, pr);
|
||||
|
@ -253,7 +253,7 @@ void goal::assert_expr(expr * f, proof * pr, expr_dependency * d) {
|
|||
return;
|
||||
}
|
||||
if (pr) {
|
||||
// SASSERT(f == m().get_fact(pr));
|
||||
SASSERT(f == m().get_fact(pr));
|
||||
slow_process(f, pr, d);
|
||||
}
|
||||
else {
|
||||
|
@ -284,7 +284,7 @@ void goal::update(unsigned i, expr * f, proof * pr, expr_dependency * d) {
|
|||
if (m_inconsistent)
|
||||
return;
|
||||
if (pr) {
|
||||
// SASSERT(f == m().get_fact(pr));
|
||||
SASSERT(f == m().get_fact(pr));
|
||||
expr_ref out_f(m());
|
||||
proof_ref out_pr(m());
|
||||
slow_process(true, f, pr, d, out_f, out_pr);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue