mirror of
https://github.com/Z3Prover/z3
synced 2025-07-26 14:07:54 +00:00
fixes for #6388
This commit is contained in:
parent
2449ba93c5
commit
9bf5e3f5fc
2 changed files with 25 additions and 10 deletions
|
@ -1020,12 +1020,7 @@ namespace mbp {
|
||||||
vector<expr_ref_vector> result;
|
vector<expr_ref_vector> result;
|
||||||
expr_ref_vector pinned(m);
|
expr_ref_vector pinned(m);
|
||||||
obj_map<expr, unsigned> pid;
|
obj_map<expr, unsigned> pid;
|
||||||
model::scoped_model_completion _smc(mdl, true);
|
auto insert_val = [&](expr* a, expr* val) {
|
||||||
for (term *t : m_tg.m_terms) {
|
|
||||||
expr* a = t->get_expr();
|
|
||||||
if (!is_app(a)) continue;
|
|
||||||
if (m.is_bool(a) && !include_bool) continue;
|
|
||||||
expr_ref val = mdl(a);
|
|
||||||
unsigned p = 0;
|
unsigned p = 0;
|
||||||
// NB. works for simple domains Integers, Rationals,
|
// NB. works for simple domains Integers, Rationals,
|
||||||
// but not for algebraic numerals.
|
// but not for algebraic numerals.
|
||||||
|
@ -1036,7 +1031,18 @@ namespace mbp {
|
||||||
result.push_back(expr_ref_vector(m));
|
result.push_back(expr_ref_vector(m));
|
||||||
}
|
}
|
||||||
result[p].push_back(a);
|
result[p].push_back(a);
|
||||||
|
};
|
||||||
|
model::scoped_model_completion _smc(mdl, true);
|
||||||
|
for (term *t : m_tg.m_terms) {
|
||||||
|
expr* a = t->get_expr();
|
||||||
|
if (!is_app(a))
|
||||||
|
continue;
|
||||||
|
if (m.is_bool(a) && !include_bool)
|
||||||
|
continue;
|
||||||
|
expr_ref val = mdl(a);
|
||||||
|
insert_val(a, val);
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1238,7 +1244,13 @@ namespace mbp {
|
||||||
for (expr* e : vec) term2pid.insert(e, id);
|
for (expr* e : vec) term2pid.insert(e, id);
|
||||||
++id;
|
++id;
|
||||||
}
|
}
|
||||||
auto partition_of = [&](expr* e) { return partitions[term2pid[e]]; };
|
expr_ref_vector empty(m);
|
||||||
|
auto partition_of = [&](expr* e) {
|
||||||
|
unsigned pid;
|
||||||
|
if (!term2pid.find(e, pid))
|
||||||
|
return empty;
|
||||||
|
return partitions[pid];
|
||||||
|
};
|
||||||
auto in_table = [&](expr* a, expr* b) {
|
auto in_table = [&](expr* a, expr* b) {
|
||||||
return diseqs.contains(pair_t(a, b));
|
return diseqs.contains(pair_t(a, b));
|
||||||
};
|
};
|
||||||
|
|
|
@ -74,9 +74,12 @@ class propagate_values_tactic : public tactic {
|
||||||
|
|
||||||
void push_result(expr * new_curr, proof * new_pr) {
|
void push_result(expr * new_curr, proof * new_pr) {
|
||||||
if (m_goal->proofs_enabled()) {
|
if (m_goal->proofs_enabled()) {
|
||||||
proof * pr = m_goal->pr(m_idx);
|
proof* pr = m_goal->pr(m_idx);
|
||||||
new_pr = m.mk_modus_ponens(pr, new_pr);
|
new_pr = m.mk_modus_ponens(pr, new_pr);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
new_pr = nullptr;
|
||||||
|
|
||||||
|
|
||||||
expr_dependency_ref new_d(m);
|
expr_dependency_ref new_d(m);
|
||||||
if (m_goal->unsat_core_enabled()) {
|
if (m_goal->unsat_core_enabled()) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue