[package]
[Java implementation]
[Execution output]
Interval
class Interval<T>: interval(T: a, T: b);interval(a, b).contains(x) = (a <= x and x <= b);
stream << interval(a, b) = stream << "[" << a << " .. " << b << "]";
interval(a, b) == interval(c, d) = (a == c and b == d);
interval(a, b) + interval(c, d) = interval(a + c, b + d);
-interval(a, b) = interval(-b, -a);
interval(a, b) * interval(c, d) = interval(min(min(a * c, a * d), min(b * c, b * d)),
max(max(a * c, a * d), max(b * c, b * d)));
/interval(a, b) = if interval(a, b).contains(additive_identity)
then interval(min_value, max_value)
else interval(/b, /a);
additive_identity = interval(additive_identity, additive_identity);
multiplicative_identity = interval(multiplicative_identity, multiplicative_identity);