@@ -1289,6 +1289,11 @@ namespace lp {
1289
1289
#endif
1290
1290
return true ;
1291
1291
}
1292
+ lpvar lar_solver::add_named_var (unsigned ext_j, bool is_int, const std::string& name) {
1293
+ lpvar j = add_var (ext_j, is_int);
1294
+ m_imp->m_var_register .set_name (j, name);
1295
+ return j;
1296
+ }
1292
1297
1293
1298
bool lar_solver::inf_explanation_is_correct () const {
1294
1299
#ifdef Z3DEBUG
@@ -1415,33 +1420,25 @@ namespace lp {
1415
1420
1416
1421
#if 1
1417
1422
if (is_upper) {
1418
- unsigned current_update_index = ul.previous_upper ();
1419
- while (current_update_index != UINT_MAX) {
1420
- auto const & [_is_upper, _j, _bound, _column] = m_imp->m_column_updates [current_update_index];
1423
+ if (ul.previous_upper () != UINT_MAX) {
1424
+ auto const & [_is_upper, _j, _bound, _column] = m_imp->m_column_updates [ul.previous_upper ()];
1421
1425
auto new_slack = slack + coeff * (_bound - get_upper_bound (j));
1422
1426
if (sign == get_sign (new_slack)) {
1423
1427
// verbose_stream() << "can weaken upper j" << j << " " << coeff << " " << get_upper_bound(j) << " " << _bound << "\n";
1424
1428
slack = new_slack;
1425
1429
bound_constr_i = _column.upper_bound_witness ();
1426
- current_update_index = _column.previous_upper (); // Move to the next previous bound in the list
1427
- } else
1428
- break ; // Stop if weakening is not possible with this previous bound
1429
-
1430
+ }
1430
1431
}
1431
1432
}
1432
1433
else {
1433
- unsigned prev_l = ul.previous_lower ();
1434
- while (prev_l != UINT_MAX) {
1435
- auto const & [_is_upper, _j, _bound, _column] = m_imp->m_column_updates [prev_l];
1434
+ if (ul.previous_lower () != UINT_MAX) {
1435
+ auto const & [_is_upper, _j, _bound, _column] = m_imp->m_column_updates [ul.previous_lower ()];
1436
1436
auto new_slack = slack + coeff * (_bound - get_lower_bound (j));
1437
1437
if (sign == get_sign (new_slack)) {
1438
1438
// verbose_stream() << "can weaken lower j" << j << " " << coeff << " " << get_lower_bound(j) << " " << _bound << "\n";
1439
1439
slack = new_slack;
1440
1440
bound_constr_i = _column.lower_bound_witness ();
1441
- prev_l = _column.previous_lower ();
1442
1441
}
1443
- else
1444
- break ;
1445
1442
}
1446
1443
}
1447
1444
#endif
0 commit comments