@@ -484,7 +484,9 @@ namespace lp {
484
484
std::unordered_map<unsigned , std_vector<unsigned >> m_row2fresh_defs;
485
485
486
486
indexed_uint_set m_changed_rows;
487
- indexed_uint_set m_new_fixed_columns;
487
+ // m_changed_columns are the columns that just became fixed, or those that just stopped being fixed.
488
+ // If such a column appears in an entry it has to be recalculated.
489
+ indexed_uint_set m_changed_columns;
488
490
indexed_uint_set m_changed_terms; // a term is defined by its column j, as in lar_solver.get_term(j)
489
491
indexed_uint_set m_tightened_columns; // the column that got tightened by the tigthening phase,
490
492
// m_column_to_terms[j] is the set of all k such lra.get_term(k) depends on j
@@ -721,7 +723,7 @@ namespace lp {
721
723
722
724
void add_changed_column (unsigned j) {
723
725
TRACE (" dio" , lra.print_column_info (j, tout););
724
- m_new_fixed_columns .insert (j);
726
+ m_changed_columns .insert (j);
725
727
}
726
728
std_vector<const lar_term*> m_added_terms;
727
729
std::unordered_set<const lar_term*> m_active_terms;
@@ -751,7 +753,7 @@ namespace lp {
751
753
void update_column_bound_callback (unsigned j) {
752
754
if (!lra.column_is_int (j) || !lra.column_is_fixed (j))
753
755
return ;
754
- m_new_fixed_columns .insert (j);
756
+ m_changed_columns .insert (j);
755
757
auto undo = undo_fixed_column (*this , j);
756
758
lra.trail ().push (undo);
757
759
}
@@ -932,7 +934,7 @@ namespace lp {
932
934
}
933
935
934
936
void find_changed_terms_and_more_changed_rows () {
935
- for (unsigned j : m_new_fixed_columns ) {
937
+ for (unsigned j : m_changed_columns ) {
936
938
const auto it = m_columns_to_terms.find (j);
937
939
if (it != m_columns_to_terms.end ())
938
940
for (unsigned k : it->second ) {
@@ -1025,8 +1027,8 @@ namespace lp {
1025
1027
remove_irrelevant_fresh_defs ();
1026
1028
1027
1029
eliminate_substituted_in_changed_rows ();
1028
- m_new_fixed_columns .reset ();
1029
- SASSERT (m_new_fixed_columns .size () == 0 );
1030
+ m_changed_columns .reset ();
1031
+ SASSERT (m_changed_columns .size () == 0 );
1030
1032
m_changed_rows.reset ();
1031
1033
SASSERT (entries_are_ok ());
1032
1034
}
@@ -1500,7 +1502,7 @@ namespace lp {
1500
1502
if (tighten_bounds_for_non_trivial_gcd (g, j, false ) != lia_move::undef) {
1501
1503
return lia_move::conflict;
1502
1504
}
1503
- if (m_new_fixed_columns .contains (j)) {
1505
+ if (m_changed_columns .contains (j)) {
1504
1506
return lia_move::continue_with_check;
1505
1507
}
1506
1508
return lia_move::undef;
@@ -1743,7 +1745,7 @@ namespace lp {
1743
1745
if (r == lia_move::conflict || r == lia_move::undef) {
1744
1746
break ;
1745
1747
}
1746
- SASSERT (m_new_fixed_columns .size () == 0 );
1748
+ SASSERT (m_changed_columns .size () == 0 );
1747
1749
} while (f_vector.size ());
1748
1750
1749
1751
if (r == lia_move::conflict) {
0 commit comments