@@ -208,6 +208,32 @@ SCENARIO("comparison interval domain", "[core][analyses][interval][comparison]")
208208 .greater_than_or_equal (constant_interval_exprt (CEV (30 ), CEV (40 ))) ==
209209 tvt::unknown ());
210210 }
211+ THEN (" Intervals for truthyness" )
212+ {
213+ constant_interval_exprt spans_zero (CEV (-1 ), CEV (1 ));
214+ REQUIRE (spans_zero.is_definitely_true ().is_unknown ());
215+ REQUIRE (spans_zero.is_definitely_false ().is_unknown ());
216+
217+ constant_interval_exprt includes_zero_positive (CEV (0 ), CEV (1 ));
218+ REQUIRE (includes_zero_positive.is_definitely_true ().is_unknown ());
219+ REQUIRE (includes_zero_positive.is_definitely_false ().is_unknown ());
220+
221+ constant_interval_exprt includes_zero_negative (CEV (-1 ), CEV (9 ));
222+ REQUIRE (includes_zero_negative.is_definitely_true ().is_unknown ());
223+ REQUIRE (includes_zero_negative.is_definitely_false ().is_unknown ());
224+
225+ constant_interval_exprt zero (CEV (0 ));
226+ REQUIRE (zero.is_definitely_false ().is_true ());
227+ REQUIRE (zero.is_definitely_true ().is_false ());
228+
229+ constant_interval_exprt positive_interval (CEV (1 ), CEV (5 ));
230+ REQUIRE (positive_interval.is_definitely_true ().is_true ());
231+ REQUIRE (positive_interval.is_definitely_false ().is_false ());
232+
233+ constant_interval_exprt negative_interval (CEV (-5 ), CEV (-1 ));
234+ REQUIRE (negative_interval.is_definitely_true ().is_true ());
235+ REQUIRE (negative_interval.is_definitely_false ().is_false ());
236+ }
211237 }
212238 }
213239}
0 commit comments