spire.math.interval
Intervals are nonEmpty and don't intersect lower.upperBound is strictly less than upper.lowerBound.
Intervals are equal
Non empty intervals, for which holds: upper ∋ lower.upperBound && upper ∌ lower.lowerBound For example: (-2, 10] and [5, 13)
inner is a subset of outer.