3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2026-02-18 22:54:21 +00:00

Migrate iterator-based for loops to range-based for loops (#8231)

* Initial plan

* Migrate iterator-based for loops to range-based for loops in 11 files

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

* Fix compilation error in aig_exporter.cpp - use correct iterator API

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

* Revert changes to z3++.h as requested

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-17 20:27:47 -08:00 committed by GitHub
parent 58d3c29c9c
commit eddb75b2e7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
8 changed files with 33 additions and 57 deletions

View file

@ -23,14 +23,11 @@ namespace datalog {
m_latch_vars(m), m_latch_varsp(m), m_ruleid_var_set(m), m_ruleid_varp_set(m)
{
std::set<func_decl*> predicates;
for (rule_set::decl2rules::iterator I = m_rules.begin_grouped_rules(),
E = m_rules.end_grouped_rules(); I != E; ++I) {
predicates.insert(I->m_key);
}
for (auto it = m_rules.begin_grouped_rules(), end = m_rules.end_grouped_rules(); it != end; ++it)
predicates.insert(it->m_key);
for (fact_vector::const_iterator I = facts->begin(), E = facts->end(); I != E; ++I) {
predicates.insert(I->first);
}
for (auto& [pred, _] : *facts)
predicates.insert(pred);
// reserve pred id = 0 for initialization purposes
unsigned num_preds = (unsigned)predicates.size() + 1;
@ -101,11 +98,8 @@ namespace datalog {
expr_ref_vector exprs(m);
substitution subst(m);
for (rule_set::decl2rules::iterator I = m_rules.begin_grouped_rules(),
E = m_rules.end_grouped_rules(); I != E; ++I) {
for (rule_vector::iterator II = I->get_value()->begin(),
EE = I->get_value()->end(); II != EE; ++II) {
rule *r = *II;
for (auto it = m_rules.begin_grouped_rules(), end = m_rules.end_grouped_rules(); it != end; ++it) {
for (rule* r : *it->get_value()) {
unsigned numqs = r->get_positive_tail_size();
if (numqs > 1) {
throw default_exception("non-linear clauses not supported");

View file

@ -2139,10 +2139,8 @@ class array_project_selects_util {
}
// dealloc
sel_map::iterator begin = m_sel_terms.begin(), end = m_sel_terms.end();
for (sel_map::iterator it = begin; it != end; ++it) {
dealloc(it->m_value);
}
for (auto& [key, value] : m_sel_terms)
dealloc(value);
m_sel_terms.reset();
}
};

View file

@ -580,20 +580,19 @@ namespace datalog {
scoped_ptr<rule_set> res = alloc(rule_set, m_context);
bool done_something = false;
rule_set::iterator rend = rules->end();
for (rule_set::iterator rit = rules->begin(); rit!=rend; ++rit) {
rule_ref r(*rit, m_rm);
for (rule* r : *rules) {
rule_ref rl(r, m_rm);
rule_ref replacement(m_rm);
while (r && do_eager_inlining(r, *rules, replacement)) {
r = replacement;
while (rl && do_eager_inlining(rl, *rules, replacement)) {
rl = replacement;
done_something = true;
}
if (!r) {
if (!rl) {
continue;
}
res->add_rule(r);
res->add_rule(rl);
}
if (done_something) {
rules = res.detach();

View file

@ -100,9 +100,7 @@ namespace datalog {
//(discovering a total relation might reveal other total relations)
do {
new_discovered = false;
rule_set::iterator rend = rules.end();
for(rule_set::iterator rit = rules.begin(); rit!=rend; ++rit) {
rule * r = *rit;
for (rule* r : rules) {
func_decl * head_pred = r->get_decl();
if(is_total_rule(r) && !m_total_relations.contains(head_pred)) {
on_discovered_total_relation(head_pred, r);
@ -261,9 +259,7 @@ namespace datalog {
func_decl_set const& candidate_preds = m_context.get_predicates();
func_decl_set::iterator end = candidate_preds.end();
for(func_decl_set::iterator it = candidate_preds.begin(); it!=end; ++it) {
func_decl * pred = *it;
for (func_decl* pred : candidate_preds) {
unsigned rel_sz;
if (m_total_relations.contains(pred)) { continue; } // already total
@ -306,9 +302,7 @@ namespace datalog {
void mk_subsumption_checker::collect_ground_unconditional_rule_heads(const rule_set & rules)
{
rule_set::iterator rend = rules.end();
for(rule_set::iterator rit = rules.begin(); rit!=rend; ++rit) {
rule * r = *rit;
for (rule* r : rules) {
func_decl * pred = r->get_decl();
if(r->get_tail_size()!=0) { continue; }