3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2026-06-25 18:10:35 +00:00

We should not bypass checking primitive constraints being empty

This commit is contained in:
CEisenhofer 2026-05-28 15:29:43 +02:00
parent 54782e68e0
commit 2bbd75a186
3 changed files with 23 additions and 30 deletions

View file

@ -1392,7 +1392,7 @@ namespace smt {
// conditional constraints: propagate with justification from dep_tracker
enode_pair_vector eqs;
literal_vector lits;
seq::deps_to_lits(lc.m_dep, eqs, lits);
seq::deps_to_lits(m_nielsen.dep_mgr(), lc.m_dep, eqs, lits);
set_propagate(eqs, lits, lit);
@ -1692,14 +1692,12 @@ namespace smt {
for (unsigned i = 0; i < mems.size(); ++i) {
auto const &mem = mems[i];
SASSERT(mem.well_formed());
if (mem.is_primitive()) {
auto &vec = var_to_mems.insert_if_not_there(mem.m_str->id(), unsigned_vector());
vec.push_back(i);
}
SASSERT(mem.is_primitive());
auto &vec = var_to_mems.insert_if_not_there(mem.m_str->id(), unsigned_vector());
vec.push_back(i);
}
if (var_to_mems.empty())
return true;
SASSERT(!var_to_mems.empty());
for (expr *len_expr : m_relevant_lengths) {
expr *s = nullptr;
@ -1787,8 +1785,10 @@ namespace smt {
enode_pair_vector eqs;
literal_vector dep_lits;
for (unsigned idx : mem_indices)
seq::deps_to_lits(mems[idx].m_dep, eqs, dep_lits);
for (unsigned idx : mem_indices) {
std::cout << seq::mem_pp(mems[idx], m) << std::endl;
seq::deps_to_lits(m_nielsen.dep_mgr(), mems[idx].m_dep, eqs, dep_lits);
}
set_propagate(eqs, dep_lits, lit_prop);