3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2026-07-02 21:36:09 +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

@ -227,10 +227,10 @@ namespace datalog {
for (unsigned j = 0; j < args1.size(); ++j) {
eqs.push_back(m.mk_eq(args1[j], args2[j]));
}
conjs.push_back(m.mk_implies(m.mk_and(eqs.size(), eqs.data()), m.mk_eq(v1, v2)));
conjs.push_back(m.mk_implies(m.mk_and(eqs), m.mk_eq(v1, v2)));
}
}
body = m.mk_and(conjs.size(), conjs.data());
body = m.mk_and(conjs);
m_rewriter(body);
return true;
}
@ -278,7 +278,7 @@ namespace datalog {
return false;
}
expr_ref fml1(m), fml2(m), body(m), head(m);
body = m.mk_and(new_conjs.size(), new_conjs.data());
body = m.mk_and(new_conjs);
head = r.get_head();
sub(body);
m_rewriter(body);

View file

@ -99,7 +99,7 @@ namespace datalog {
res_conjs.push_back(tmp);
}
proof_ref pr(m);
m_src_manager->mk_rule(m.mk_implies(m.mk_and(res_conjs.size(), res_conjs.data()), r.get_head()), pr, dest, r.name());
m_src_manager->mk_rule(m.mk_implies(m.mk_and(res_conjs), r.get_head()), pr, dest, r.name());
}
// NSB Code review: use substitution facility, such as expr_safe_replace or expr_replacer.

View file

@ -100,7 +100,7 @@ namespace datalog {
new_tail.push_back(m.mk_eq(kv.m_value, tmp));
}
proof_ref pr(m);
src_manager->mk_rule(m.mk_implies(m.mk_and(new_tail.size(), new_tail.data()), new_head), pr, dest, r.name());
src_manager->mk_rule(m.mk_implies(m.mk_and(new_tail), new_head), pr, dest, r.name());
}
expr_ref mk_array_instantiation::create_head(app* old_head) {

View file

@ -347,11 +347,11 @@ namespace datalog {
}
else {
if (m.is_and(f)) {
result = m.mk_and(m_app_args.size(), m_app_args.data());
result = m.mk_and(m_app_args);
}
else {
SASSERT(m.is_or(f));
result = m.mk_or(m_app_args.size(), m_app_args.data());
result = m.mk_or(m_app_args);
}
}
@ -529,7 +529,7 @@ namespace datalog {
m_itail_members.push_back(r->get_tail(i));
SASSERT(!r->is_neg_tail(i));
}
itail = m.mk_and(m_itail_members.size(), m_itail_members.data());
itail = m.mk_and(m_itail_members);
modified = true;
}

View file

@ -340,7 +340,7 @@ namespace datalog {
tail.push_back(r.get_tail(j));
}
head = mk_head(source, *result, r.get_head(), cnt);
fml = m.mk_implies(m.mk_and(tail.size(), tail.data()), head);
fml = m.mk_implies(m.mk_and(tail), head);
proof_ref pr(m);
rm.mk_rule(fml, pr, *result, r.name());
TRACE(dl, result->last()->display(m_ctx, tout););

View file

@ -202,7 +202,7 @@ namespace datalog {
m_terms.reset();
m_var2cnst.reset();
m_cnst2var.reset();
fml = m.mk_and(conjs.size(), conjs.data());
fml = m.mk_and(conjs);
for (unsigned i = 0; i < sorts.size(); ++i) {
var = m.mk_var(i, sorts[i]);
@ -211,7 +211,7 @@ namespace datalog {
m_cnst2var.insert(cnst, var);
}
fml = m.mk_and(conjs.size(), conjs.data());
fml = m.mk_and(conjs);
m_var2cnst(fml);
collect_egraph(fml);
@ -221,7 +221,7 @@ namespace datalog {
for (auto & kv : m_funs) dealloc(kv.m_value);
m_funs.reset();
fml = m.mk_and(conjs.size(), conjs.data());
fml = m.mk_and(conjs);
fml = m.mk_implies(fml, r.get_head());
TRACE(dl, r.display(m_ctx, tout); tout << mk_pp(fml, m) << "\n";);