@@ -493,6 +493,7 @@ static abstract_object_sett compact_values(const abstract_object_sett &values)
493493static exprt eval_expr (const exprt &e);
494494static bool is_eq (const exprt &lhs, const exprt &rhs);
495495static bool is_le (const exprt &lhs, const exprt &rhs);
496+ static bool is_lt (const exprt &lhs, const exprt &rhs);
496497static abstract_object_sett collapse_values_in_intervals (
497498 const abstract_object_sett &values,
498499 const std::vector<constant_interval_exprt> &intervals);
@@ -525,8 +526,8 @@ void collapse_overlapping_intervals(
525526 intervals.end (),
526527 [](constant_interval_exprt const &lhs, constant_interval_exprt const &rhs) {
527528 if (is_eq (lhs.get_lower (), rhs.get_lower ()))
528- return is_le (lhs.get_upper (), rhs.get_upper ());
529- return is_le (lhs.get_lower (), rhs.get_lower ());
529+ return is_lt (lhs.get_upper (), rhs.get_upper ());
530+ return is_lt (lhs.get_lower (), rhs.get_lower ());
530531 });
531532
532533 size_t index = 1 ;
@@ -646,6 +647,11 @@ static bool is_le(const exprt &lhs, const exprt &rhs)
646647 return constant_interval_exprt::less_than_or_equal (lhs, rhs);
647648}
648649
650+ static bool is_lt (const exprt &lhs, const exprt &rhs)
651+ {
652+ return constant_interval_exprt::less_than (lhs, rhs);
653+ }
654+
649655static abstract_object_sett widen_value_set (
650656 const abstract_object_sett &values,
651657 const constant_interval_exprt &lhs,
0 commit comments