3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-22 16:45:31 +00:00

simplify diff rewriting

This commit is contained in:
Nikolaj Bjorner 2019-12-20 23:20:19 -08:00
parent 4a94abe7d7
commit efbcdcbffd

View file

@ -741,7 +741,7 @@ br_status bool_rewriter::mk_distinct_core(unsigned num_args, expr * const * args
}
expr_fast_mark1 visited;
bool all_value = true;
bool all_value = true, all_diff = true;
for (unsigned i = 0; i < num_args; i++) {
expr * arg = args[i];
if (visited.is_marked(arg)) {
@ -751,8 +751,13 @@ br_status bool_rewriter::mk_distinct_core(unsigned num_args, expr * const * args
visited.mark(arg);
if (!m().is_unique_value(arg))
all_value = false;
if (!all_value && all_diff) {
for (unsigned j = 0; all_diff && j + 1 < i; ++j) {
all_diff = m().are_distinct(arg, args[j]);
}
}
}
if (all_value) {
if (all_diff) {
result = m().mk_true();
return BR_DONE;
}
@ -763,22 +768,6 @@ br_status bool_rewriter::mk_distinct_core(unsigned num_args, expr * const * args
return BR_DONE;
}
bool all_diff = true, some_eq = false;
for (unsigned i = 0; all_diff && !some_eq && i < num_args; i++) {
for (unsigned j = i + 1; all_diff && !some_eq && j < num_args; j++) {
all_diff = m().are_distinct(args[i], args[j]);
some_eq = m().are_equal(args[i], args[j]);
}
}
if (all_diff) {
result = m().mk_true();
return BR_DONE;
}
if (some_eq) {
result = m().mk_false();
return BR_DONE;
}
if (m_blast_distinct && num_args < m_blast_distinct_threshold) {
ptr_buffer<expr> new_diseqs;
for (unsigned i = 0; i < num_args; i++) {