@@ -1661,13 +1661,11 @@ namespace smt {
1661
1661
sum.reset ();
1662
1662
unsigned r_id = get_var_row (v);
1663
1663
row const & r = m_rows[r_id];
1664
- typename vector<row_entry>::const_iterator it = r.begin_entries ();
1665
- typename vector<row_entry>::const_iterator end = r.end_entries ();
1666
- for (; it != end; ++it) {
1667
- if (!it->is_dead () && it->m_var != v) {
1668
- SASSERT (!is_quasi_base (it->m_var ));
1669
- SASSERT (get_value (it->m_var ) == m_value[it->m_var ]);
1670
- sum += it->m_coeff * get_value (it->m_var );
1664
+ for (row_entry const & re : r) {
1665
+ if (!re.is_dead () && re.m_var != v) {
1666
+ SASSERT (!is_quasi_base (re.m_var ));
1667
+ SASSERT (get_value (re.m_var ) == m_value[re.m_var ]);
1668
+ sum += re.m_coeff * get_value (re.m_var );
1671
1669
}
1672
1670
}
1673
1671
sum.neg ();
@@ -1689,19 +1687,17 @@ namespace smt {
1689
1687
result.reset ();
1690
1688
unsigned r_id = get_var_row (v);
1691
1689
row const & r = m_rows[r_id];
1692
- typename vector<row_entry>::const_iterator it = r.begin_entries ();
1693
- typename vector<row_entry>::const_iterator end = r.end_entries ();
1694
- for (; it != end; ++it) {
1695
- if (!it->is_dead () && it->m_var != v) {
1696
- theory_var v2 = it->m_var ;
1690
+ for (row_entry const & re : r) {
1691
+ if (!re.is_dead () && re.m_var != v) {
1692
+ theory_var v2 = re.m_var ;
1697
1693
SASSERT (!is_quasi_base (v2));
1698
1694
SASSERT (get_value (v2) == m_value[v2]);
1699
1695
if (m_in_update_trail_stack.contains (v2)) {
1700
- result += it-> m_coeff * m_old_value[v2];
1696
+ result += re. m_coeff * m_old_value[v2];
1701
1697
is_diff = true ;
1702
1698
}
1703
1699
else {
1704
- result += it-> m_coeff * m_value[v2];
1700
+ result += re. m_coeff * m_value[v2];
1705
1701
}
1706
1702
}
1707
1703
}
@@ -1925,15 +1921,13 @@ namespace smt {
1925
1921
c.compress_if_needed (m_rows);
1926
1922
1927
1923
inf_numeral delta2;
1928
- typename svector<col_entry>::const_iterator it = c.begin_entries ();
1929
- typename svector<col_entry>::const_iterator end = c.end_entries ();
1930
- for (; it != end; ++it) {
1931
- if (!it->is_dead ()) {
1932
- row & r = m_rows[it->m_row_id ];
1924
+ for (auto & ce : c) {
1925
+ if (!ce.is_dead ()) {
1926
+ row & r = m_rows[ce.m_row_id ];
1933
1927
theory_var s = r.get_base_var ();
1934
1928
if (s != null_theory_var && !is_quasi_base (s)) {
1935
1929
delta2 = delta;
1936
- delta2 *= r[it-> m_row_idx ].m_coeff ;
1930
+ delta2 *= r[ce. m_row_idx ].m_coeff ;
1937
1931
delta2.neg ();
1938
1932
update_value_core (s, delta2);
1939
1933
}
@@ -2284,16 +2278,7 @@ namespace smt {
2284
2278
<< " , best_error: " << best_error << " , curr_error: " << curr_error << " \n " ;);
2285
2279
best = v;
2286
2280
best_error = curr_error;
2287
- // n = 2;
2288
2281
}
2289
- #if 0
2290
- else if (false && n > 0 && curr_error == best_error) {
2291
- n++;
2292
- if (m_random()%n == 0) {
2293
- best = v;
2294
- }
2295
- }
2296
- #endif
2297
2282
}
2298
2283
if (best == null_theory_var)
2299
2284
m_to_patch.clear (); // all variables are satisfied
@@ -2321,6 +2306,22 @@ namespace smt {
2321
2306
}
2322
2307
}
2323
2308
2309
+ #if 0
2310
+ /**
2311
+ \brief Return true if it was possible to patch all variables in m_to_patch.
2312
+ */
2313
+ template<typename Ext>
2314
+ bool theory_arith<Ext>::reduce_feasible() {
2315
+ for (theory_vars v : sort_by_coefficients()) {
2316
+
2317
+ }
2318
+ m_value[v] += delta;
2319
+ if (is_base(v) && !m_to_patch.contains(v) && (below_lower(v) || above_upper(v))) {
2320
+ m_value[v] -= delta;
2321
+ }
2322
+ }
2323
+ #endif
2324
+
2324
2325
/* *
2325
2326
\brief Return true if it was possible to patch all variables in m_to_patch.
2326
2327
*/
@@ -2593,12 +2594,9 @@ namespace smt {
2593
2594
*/
2594
2595
template <typename Ext>
2595
2596
void theory_arith<Ext>::mark_rows_for_bound_prop(theory_var v) {
2596
- column const & c = m_columns[v];
2597
- typename svector<col_entry>::const_iterator it = c.begin_entries ();
2598
- typename svector<col_entry>::const_iterator end = c.end_entries ();
2599
- for (; it != end; ++it) {
2600
- if (!it->is_dead ())
2601
- mark_row_for_bound_prop (it->m_row_id );
2597
+ for (col_entry const & ce : m_columns[v]) {
2598
+ if (!ce.is_dead ())
2599
+ mark_row_for_bound_prop (ce.m_row_id );
2602
2600
}
2603
2601
}
2604
2602
@@ -2736,18 +2734,17 @@ namespace smt {
2736
2734
// bb = (Sum_{a_i < 0} -a_i*lower(x_i)) + (Sum_{a_j > 0} -a_j * upper(x_j)) If is_lower = true
2737
2735
// bb = (Sum_{a_i > 0} -a_i*lower(x_i)) + (Sum_{a_j < 0} -a_j * upper(x_j)) If is_lower = false
2738
2736
inf_numeral bb;
2739
- typename vector<row_entry>::const_iterator it = r.begin_entries ();
2740
- typename vector<row_entry>::const_iterator end = r.end_entries ();
2741
- for (; it != end; ++it) {
2742
- if (!it->is_dead ()) {
2743
- inf_numeral const & b = get_bound (it->m_var , is_lower ? it->m_coeff .is_pos () : it->m_coeff .is_neg ())->get_value ();
2744
- // bb -= it->m_coeff * b;
2745
- bb.submul (it->m_coeff , b);
2737
+ for (row_entry const & re : r) {
2738
+ if (!re.is_dead ()) {
2739
+ inf_numeral const & b = get_bound (re.m_var , is_lower ? re.m_coeff .is_pos () : re.m_coeff .is_neg ())->get_value ();
2740
+ // bb -= re.m_coeff * b;
2741
+ bb.submul (re.m_coeff , b);
2746
2742
}
2747
2743
}
2748
2744
2749
2745
inf_numeral implied_k;
2750
- it = r.begin_entries ();
2746
+ typename vector<row_entry>::const_iterator it = r.begin ();
2747
+ typename vector<row_entry>::const_iterator end = r.end ();
2751
2748
for (int idx = 0 ; it != end; ++it, ++idx) {
2752
2749
if (!it->is_dead () && m_unassigned_atoms[it->m_var ] > 0 ) {
2753
2750
inf_numeral const & b = get_bound (it->m_var , is_lower ? it->m_coeff .is_pos () : it->m_coeff .is_neg ())->get_value ();
@@ -3140,12 +3137,10 @@ namespace smt {
3140
3137
*/
3141
3138
template <typename Ext>
3142
3139
void theory_arith<Ext>::collect_fixed_var_justifications(row const & r, antecedents& antecedents) const {
3143
- typename vector<row_entry>::const_iterator it = r.begin_entries ();
3144
- typename vector<row_entry>::const_iterator end = r.end_entries ();
3145
- for (; it != end; ++it) {
3146
- if (!it->is_dead () && is_fixed (it->m_var )) {
3147
- lower (it->m_var )->push_justification (antecedents, it->m_coeff , coeffs_enabled ());
3148
- upper (it->m_var )->push_justification (antecedents, it->m_coeff , coeffs_enabled ());
3140
+ for (row_entry const & re : r) {
3141
+ if (!re.is_dead () && is_fixed (re.m_var )) {
3142
+ lower (re.m_var )->push_justification (antecedents, re.m_coeff , coeffs_enabled ());
3143
+ upper (re.m_var )->push_justification (antecedents, re.m_coeff , coeffs_enabled ());
3149
3144
}
3150
3145
}
3151
3146
}
@@ -3555,13 +3550,10 @@ namespace smt {
3555
3550
template <typename Ext>
3556
3551
void theory_arith<Ext>::del_row(unsigned r_id) {
3557
3552
row & r = m_rows[r_id];
3558
- typename vector<row_entry>::const_iterator it = r.begin_entries ();
3559
- typename vector<row_entry>::const_iterator end = r.end_entries ();
3560
- for (; it != end; ++it) {
3561
- if (!it->is_dead ()) {
3562
- theory_var v = it->m_var ;
3563
- column & c = m_columns[v];
3564
- c.del_col_entry (it->m_col_idx );
3553
+ for (row_entry const & re : r) {
3554
+ if (!re.is_dead ()) {
3555
+ column & c = m_columns[re.m_var ];
3556
+ c.del_col_entry (re.m_col_idx );
3565
3557
}
3566
3558
}
3567
3559
r.m_base_var = null_theory_var;
0 commit comments