3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2026-06-12 11:55:37 +00:00

Refactor mk_and/mk_or call sites to use vector overloads (#8286)

* Initial plan

* Refactor mk_and and mk_or call sites to use overloaded methods

Changed 130 call sites across 64 files to use vector overloads directly instead of manually passing .size() and .data()/.c_ptr()

Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>

* Revert mk_or changes for ptr_buffer/ptr_vector (no overload exists in ast_util.h)

* Fix compilation errors from mk_and/mk_or refactoring

Fixed type mismatches by:
- Removing m parameter for expr_ref_vector (ast_util.h has mk_and/mk_or(expr_ref_vector) overloads)
- Reverting changes for ref_buffer types (no overload exists in ast_util.h, only in ast.h for m.mk_and)
- Verified build succeeds and Z3 works correctly

Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>

* Fix test files to use correct mk_and/mk_or overloads

Changed test/doc.cpp and test/udoc_relation.cpp to use mk_and(expr_ref_vector) and mk_or(expr_ref_vector) without m parameter

Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: NikolajBjorner <3085284+NikolajBjorner@users.noreply.github.com>
This commit is contained in:
Copilot 2026-01-22 13:21:22 -08:00 committed by GitHub
parent d2e0354ce4
commit ebc0688470
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
61 changed files with 118 additions and 118 deletions

View file

@ -125,7 +125,7 @@ namespace datalog {
exprs.push_back(e);
}
transition_function.push_back(m.mk_and(exprs.size(), exprs.data()));
transition_function.push_back(m.mk_and(exprs));
}
}
@ -140,11 +140,11 @@ namespace datalog {
exprs.push_back(m.mk_eq(get_latch_var(i, m_latch_varsp), I->second[i]));
}
transition_function.push_back(m.mk_and(exprs.size(), exprs.data()));
transition_function.push_back(m.mk_and(exprs));
}
}
expr *tr = m.mk_or(transition_function.size(), transition_function.data());
expr *tr = m.mk_or(transition_function);
aig_ref aig = m_aigm.mk_aig(tr);
expr_ref aig_expr(m);
m_aigm.to_formula(aig, aig_expr);
@ -186,10 +186,10 @@ namespace datalog {
for (func_decl* pred : preds) {
exprs.reset();
assert_pred_id(pred, m_ruleid_var_set, exprs);
output.push_back(m.mk_and(exprs.size(), exprs.data()));
output.push_back(m.mk_and(exprs));
}
expr *out = m.mk_or(output.size(), output.data());
expr *out = m.mk_or(output);
aig = m_aigm.mk_aig(out);
m_aigm.to_formula(aig, aig_expr);
output_id = expr_to_aig(aig_expr);

View file

@ -39,7 +39,7 @@ namespace datalog {
for (unsigned i = 0; i < sig.size(); ++i) {
conjs.push_back(m.mk_eq(m.mk_var(i, sig[i]), f[i]));
}
return expr_ref(mk_and(m, conjs.size(), conjs.data()), m);
return expr_ref(mk_and(conjs), m);
}
expr_ref check_relation::ground(expr* fml) const {
@ -535,7 +535,7 @@ namespace datalog {
unsigned c2 = m_cols[i];
conds.push_back(m.mk_eq(m.mk_var(c1, sig[c1]), m.mk_var(c2, sig[c2])));
}
cond = mk_and(m, conds.size(), conds.data());
cond = mk_and(conds);
r.consistent_formula();
(*m_filter)(r.rb());
p.verify_filter(r.m_fml, r.rb(), cond);
@ -720,7 +720,7 @@ namespace datalog {
v2 = m.mk_var(c2, sig2[c2]);
eqs.push_back(m.mk_eq(v1, v2));
}
negf = mk_and(m, eqs.size(), eqs.data());
negf = mk_and(eqs);
ptr_vector<sort> rev_sig2(sig2.size(), sig2.data());
rev_sig2.reverse();
svector<symbol> names;

View file

@ -677,7 +677,7 @@ namespace datalog {
// enforce interpreted tail predicates
if (!tail.empty()) {
app_ref filter_cond(tail.size() == 1 ? to_app(tail.back()) : m.mk_and(tail.size(), tail.data()), m);
app_ref filter_cond(tail.size() == 1 ? to_app(tail.back()) : m.mk_and(tail), m);
// check if there are any columns to remove
unsigned_vector remove_columns;

View file

@ -2367,7 +2367,7 @@ namespace datalog {
}
sh(tmp, fact_sz-1, tmp);
conjs.push_back(tmp);
disjs.push_back(m.mk_and(conjs.size(), conjs.data()));
disjs.push_back(m.mk_and(conjs));
}
bool_rewriter(m).mk_or(disjs.size(), disjs.data(), fml);
}

View file

@ -711,7 +711,7 @@ expr_ref doc_manager::to_formula(ast_manager & m, tbv const& src) {
break;
}
}
result = mk_and(m, conj.size(), conj.data());
result = mk_and(conj);
return result;
}
@ -726,7 +726,7 @@ expr_ref doc_manager::to_formula(ast_manager& m, doc const& src) {
for (unsigned i = 0; i < src.neg().size(); ++i) {
conj.push_back(m.mk_not(to_formula(m, src.neg()[i])));
}
result = mk_and(m, conj.size(), conj.data());
result = mk_and(conj);
return result;
}

View file

@ -261,7 +261,7 @@ namespace datalog {
}
SASSERT(!m_last_result_relation);
if (some_non_empty) {
m_answer = mk_and(m, ans.size(), ans.data());
m_answer = mk_and(ans);
if (is_approx) {
TRACE(dl, tout << "approx\n";);
res = l_undef;

View file

@ -109,7 +109,7 @@ namespace datalog {
for (unsigned i = 0; i < m_elems.size(); ++i) {
disj.push_back(to_formula(m_elems[i]));
}
fml = mk_or(m, disj.size(), disj.data());
fml = mk_or(disj);
}
expr_ref udoc_relation::to_formula(doc const& d) const {
ast_manager& m = get_plugin().get_ast_manager();
@ -119,7 +119,7 @@ namespace datalog {
for (unsigned i = 0; i < d.neg().size(); ++i) {
conjs.push_back(m.mk_not(to_formula(d.neg()[i])));
}
result = mk_and(m, conjs.size(), conjs.data());
result = mk_and(conjs);
return result;
}
expr_ref udoc_relation::to_formula(tbv const& t) const {
@ -168,7 +168,7 @@ namespace datalog {
}
}
}
result = mk_and(m, conjs.size(), conjs.data());
result = mk_and(conjs);
return result;
}
@ -664,8 +664,8 @@ namespace datalog {
rests.push_back(g);
}
}
guard = mk_and(m, guards.size(), guards.data());
rest = mk_and(m, rests.size(), rests.data());
guard = mk_and(guards);
rest = mk_and(rests);
}
void udoc_relation::extract_equalities(expr* g, expr_ref& rest, subset_ints& equalities,
unsigned_vector& roots) const {
@ -683,7 +683,7 @@ namespace datalog {
conds.pop_back();
}
}
rest = mk_and(m, conds.size(), conds.data());
rest = mk_and(conds);
}
void udoc_relation::extract_equalities(