3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2026-05-21 01:19:34 +00:00

fix vector<le, false> to vector<le> we need the copy and destructor semantics for expr_ref

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2026-04-21 18:37:09 +02:00
parent 03c990e0e1
commit b2fa00ecf4
3 changed files with 7 additions and 8 deletions

View file

@ -44,7 +44,7 @@ NSB review:
namespace seq { namespace seq {
void deps_to_lits(dep_tracker deps, svector<enode_pair> &eqs, svector<sat::literal> &lits, vector<le, false>& les) { void deps_to_lits(dep_tracker deps, svector<enode_pair> &eqs, svector<sat::literal> &lits, vector<le>& les) {
vector<dep_source, false> vs; vector<dep_source, false> vs;
dep_manager::s_linearize(deps, vs); dep_manager::s_linearize(deps, vs);
for (dep_source const &d : vs) { for (dep_source const &d : vs) {

View file

@ -362,7 +362,7 @@ namespace seq {
void deps_to_lits(dep_tracker deps, void deps_to_lits(dep_tracker deps,
svector<enode_pair>& eqs, svector<enode_pair>& eqs,
svector<sat::literal>& lits, svector<sat::literal>& lits,
vector<le, false>& les); vector<le>& les);
// string equality constraint: lhs = rhs // string equality constraint: lhs = rhs
// mirrors ZIPT's StrEq (both sides are regex-free snode trees) // mirrors ZIPT's StrEq (both sides are regex-free snode trees)

View file

@ -1262,7 +1262,7 @@ namespace smt {
// conditional constraints: propagate with justification from dep_tracker // conditional constraints: propagate with justification from dep_tracker
enode_pair_vector eqs; enode_pair_vector eqs;
literal_vector lits; literal_vector lits;
vector<seq::le, false> les; vector<seq::le> les;
seq::deps_to_lits(lc.m_dep, eqs, lits, les); seq::deps_to_lits(lc.m_dep, eqs, lits, les);
for (auto const& d : les) for (auto const& d : les)
lits.push_back(mk_le_literal(d)); lits.push_back(mk_le_literal(d));
@ -1553,11 +1553,10 @@ namespace smt {
enode_pair_vector eqs; enode_pair_vector eqs;
literal_vector dep_lits; literal_vector dep_lits;
vector<seq::le, false> dep_les; vector<seq::le> dep_les;
for (unsigned idx : mem_indices) { for (unsigned idx : mem_indices)
if (mems[idx].m_dep) seq::deps_to_lits(mems[idx].m_dep, eqs, dep_lits, dep_les);
seq::deps_to_lits(mems[idx].m_dep, eqs, dep_lits, dep_les);
}
for (auto const &d : dep_les) for (auto const &d : dep_les)
dep_lits.push_back(mk_le_literal(d)); dep_lits.push_back(mk_le_literal(d));