mirror of
https://github.com/Z3Prover/z3
synced 2025-04-10 19:27:06 +00:00
fixes for #6388
This commit is contained in:
parent
2449ba93c5
commit
9bf5e3f5fc
src
|
@ -1020,12 +1020,7 @@ namespace mbp {
|
|||
vector<expr_ref_vector> result;
|
||||
expr_ref_vector pinned(m);
|
||||
obj_map<expr, unsigned> pid;
|
||||
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);
|
||||
auto insert_val = [&](expr* a, expr* val) {
|
||||
unsigned p = 0;
|
||||
// NB. works for simple domains Integers, Rationals,
|
||||
// but not for algebraic numerals.
|
||||
|
@ -1036,7 +1031,18 @@ namespace mbp {
|
|||
result.push_back(expr_ref_vector(m));
|
||||
}
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -1238,7 +1244,13 @@ namespace mbp {
|
|||
for (expr* e : vec) term2pid.insert(e, 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) {
|
||||
return diseqs.contains(pair_t(a, b));
|
||||
};
|
||||
|
|
|
@ -74,10 +74,13 @@ class propagate_values_tactic : public tactic {
|
|||
|
||||
void push_result(expr * new_curr, proof * new_pr) {
|
||||
if (m_goal->proofs_enabled()) {
|
||||
proof * pr = m_goal->pr(m_idx);
|
||||
new_pr = m.mk_modus_ponens(pr, new_pr);
|
||||
proof* pr = m_goal->pr(m_idx);
|
||||
new_pr = m.mk_modus_ponens(pr, new_pr);
|
||||
}
|
||||
|
||||
else
|
||||
new_pr = nullptr;
|
||||
|
||||
|
||||
expr_dependency_ref new_d(m);
|
||||
if (m_goal->unsat_core_enabled()) {
|
||||
new_d = m_goal->dep(m_idx);
|
||||
|
|
Loading…
Reference in a new issue