@@ -155,19 +155,18 @@ namespace lp {
155155 }
156156 private:
157157 // the row comes from lar_solver
158- void create_eprime_entry_from_row (const row_strip<mpq>& row, unsigned row_index) {
158+ void fill_eprime_entry (const row_strip<mpq>& row, unsigned row_index) {
159159 m_f.push_back (row_index);
160160 eprime_entry& e = m_eprime[row_index];
161+ e.m_row_index = row_index;
161162 const auto lcm = get_denominators_lcm (row);
162- u_dependency*& dep = e.m_l ;
163- SASSERT (dep == nullptr );
164163 mpq & c = e.m_c ;
165164 SASSERT (c.is_zero ());
166165
167166 for (const auto & p: row) {
168167 if (lia.is_fixed (p.var ())) {
169168 c += p.coeff ()*lia.lower_bound (p.var ()).x ;
170- dep = lra.get_bound_constraint_witnesses_for_column (p.var ());
169+ e. m_l = lra.mk_join (lra. get_bound_constraint_witnesses_for_column (p.var ()), e. m_l );
171170 }
172171 else {
173172 m_e_matrix.add_new_element (row_index, p.var (), lcm * p.coeff ());
@@ -201,13 +200,16 @@ namespace lp {
201200 m_eprime.resize (n_of_rows);
202201 for (unsigned i = 0 ; i < n_of_rows; i++) {
203202 auto & row = lra.get_row (i);
204- TRACE (" dioph_eq" , tout << " row " << i <<" :" ; lia.display_row_info (tout, i) << " \n " ;);
203+ TRACE (" dioph_eq" , tout << " row " << i <<" :" ; lra.print_row (row, tout) << " \n " ;
204+ for (auto & p: row) {
205+ lra.print_column_info (p.var (), tout);
206+ });
205207 if (!all_vars_are_int_and_small (row)) {
206208 TRACE (" dioph_eq" , tout << " not all vars are int and small\n " ;);
207209 m_eprime[i].m_entry_status = entry_status::NO_S_NO_F;
208210 continue ;
209211 }
210- create_eprime_entry_from_row (row, i);
212+ fill_eprime_entry (row, i);
211213 TRACE (" dioph_eq" , print_eprime_entry (static_cast <unsigned >(i), tout););
212214 }
213215
@@ -302,6 +304,7 @@ namespace lp {
302304 bool normalize_by_gcd () {
303305 for (unsigned l: m_f) {
304306 if (!normalize_e_by_gcd (l)) {
307+ std::cout << " dioconflict\n " ;
305308 m_conflict_index = l;
306309 return false ;
307310 }
@@ -666,7 +669,8 @@ namespace lp {
666669 TRACE (" dioph_eq" , tout << " c_row:" << c.var (); print_e_row (c.var (), tout) << std::endl;);
667670 m_e_matrix.pivot_row_to_row_given_cell_with_sign (piv_row_index, c, j, j_sign);
668671 m_eprime[c.var ()].m_c -= j_sign* coeff*m_eprime[piv_row_index].m_c ;
669- TRACE (" dioph_eq" , tout << " after pivoting c_row:" ; print_e_row (c.var (), tout) << std::endl;);
672+ m_eprime[c.var ()].m_l = lra.mk_join (m_eprime[c.var ()].m_l , m_eprime[piv_row_index].m_l );
673+ TRACE (" dioph_eq" , tout << " after pivoting c_row:" ; print_eprime_entry (c.var (), tout););
670674 cell_to_process--;
671675 }
672676 }
@@ -727,17 +731,18 @@ namespace lp {
727731 eliminate_var_in_f (m_eprime.back (), k, 1 );
728732 }
729733
730- std::ostream& print_eprime_entry (unsigned i, std::ostream& out) {
734+ std::ostream& print_eprime_entry (unsigned i, std::ostream& out, bool print_dep = true ) {
731735 out << " m_eprime[" << i << " ]:" ;
732- return print_eprime_entry (m_eprime[i], out);
736+ return print_eprime_entry (m_eprime[i], out, print_dep );
733737 }
734738
735- std::ostream& print_eprime_entry (const eprime_entry& e, std::ostream& out) {
739+ std::ostream& print_eprime_entry (const eprime_entry& e, std::ostream& out, bool print_dep = true ) {
736740 out << " {\n " ;
737741 print_term_o (get_term_from_e_matrix (e.m_row_index ), out << " \t row:" ) << " \n " ;
738742 out << " \t status:" << (int )e.m_entry_status ;
739- // print_dep(out<< "\tm_l:", e.m_l) << "\n";
740- out << " \n }\n " ;
743+ if (print_dep)
744+ this ->print_dep (out<< " \n\t dep:" , e.m_l );
745+ out << " \n }" ;
741746 return out;
742747 }
743748
@@ -779,7 +784,7 @@ namespace lp {
779784 return ;
780785 }
781786 SASSERT (ex.empty ());
782- TRACE (" dioph_eq" , tout << " conflict:" ; print_eprime_entry (m_conflict_index, tout) << std::endl;);
787+ TRACE (" dioph_eq" , tout << " conflict:" ; print_eprime_entry (m_conflict_index, tout, true ) << std::endl;);
783788 auto & ep = m_eprime[m_conflict_index];
784789 /*
785790 for (const auto & pl : ep.m_l) {
0 commit comments