3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-08-04 18:30:24 +00:00
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2020-03-16 20:09:28 -07:00
parent 019acdb1ef
commit d002423133

View file

@ -89,6 +89,7 @@ br_status bool_rewriter::mk_nflat_and_core(unsigned num_args, expr * const * arg
ptr_buffer<expr> buffer; ptr_buffer<expr> buffer;
expr_fast_mark1 neg_lits; expr_fast_mark1 neg_lits;
expr_fast_mark2 pos_lits; expr_fast_mark2 pos_lits;
expr* atom = nullptr;
for (unsigned i = 0; i < num_args; i++) { for (unsigned i = 0; i < num_args; i++) {
expr * arg = args[i]; expr * arg = args[i];
@ -100,8 +101,7 @@ br_status bool_rewriter::mk_nflat_and_core(unsigned num_args, expr * const * arg
result = m().mk_false(); result = m().mk_false();
return BR_DONE; return BR_DONE;
} }
if (m().is_not(arg)) { if (m().is_not(arg, atom)) {
expr * atom = to_app(arg)->get_arg(0);
if (neg_lits.is_marked(atom)) { if (neg_lits.is_marked(atom)) {
s = true; s = true;
continue; continue;
@ -125,6 +125,8 @@ br_status bool_rewriter::mk_nflat_and_core(unsigned num_args, expr * const * arg
} }
buffer.push_back(arg); buffer.push_back(arg);
} }
neg_lits.reset();
pos_lits.reset();
unsigned sz = buffer.size(); unsigned sz = buffer.size();
@ -217,6 +219,9 @@ br_status bool_rewriter::mk_nflat_or_core(unsigned num_args, expr * const * args
prev = arg; prev = arg;
} }
neg_lits.reset();
pos_lits.reset();
unsigned sz = buffer.size(); unsigned sz = buffer.size();
switch(sz) { switch(sz) {
@ -228,8 +233,6 @@ br_status bool_rewriter::mk_nflat_or_core(unsigned num_args, expr * const * args
return BR_DONE; return BR_DONE;
default: default:
if (m_local_ctx && m_local_ctx_cost <= m_local_ctx_limit) { if (m_local_ctx && m_local_ctx_cost <= m_local_ctx_limit) {
neg_lits.reset();
pos_lits.reset();
if (local_ctx_simp(sz, buffer.c_ptr(), result)) if (local_ctx_simp(sz, buffer.c_ptr(), result))
return BR_DONE; return BR_DONE;
} }