@@ -493,6 +493,7 @@ static abstract_object_sett compact_values(const abstract_object_sett &values)
493
493
static exprt eval_expr (const exprt &e);
494
494
static bool is_eq (const exprt &lhs, const exprt &rhs);
495
495
static bool is_le (const exprt &lhs, const exprt &rhs);
496
+ static bool is_lt (const exprt &lhs, const exprt &rhs);
496
497
static abstract_object_sett collapse_values_in_intervals (
497
498
const abstract_object_sett &values,
498
499
const std::vector<constant_interval_exprt> &intervals);
@@ -525,8 +526,8 @@ void collapse_overlapping_intervals(
525
526
intervals.end (),
526
527
[](constant_interval_exprt const &lhs, constant_interval_exprt const &rhs) {
527
528
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 ());
530
531
});
531
532
532
533
size_t index = 1 ;
@@ -646,6 +647,11 @@ static bool is_le(const exprt &lhs, const exprt &rhs)
646
647
return constant_interval_exprt::less_than_or_equal (lhs, rhs);
647
648
}
648
649
650
+ static bool is_lt (const exprt &lhs, const exprt &rhs)
651
+ {
652
+ return constant_interval_exprt::less_than (lhs, rhs);
653
+ }
654
+
649
655
static abstract_object_sett widen_value_set (
650
656
const abstract_object_sett &values,
651
657
const constant_interval_exprt &lhs,
0 commit comments