úÎ#ü!"      !GHC only experimentalekmett@gmail.com2"#$HThe rule of thumb is you should only use this to construct using values H that you took out of the interval. Otherwise, use I, to force rounding The whole real number line An empty interval negation handles NaN properly A singleton point +The infinumum (lower bound) of an interval *The supremum (upper bound) of an interval $Is the interval a singleton point? < N.B. This is fairly fragile and likely will not hold after 4 even a few operations that only involve singletons $Calculate the width of an interval.  magnitude  mignitude $Bisect an interval at its midpoint. %/Nearest point to the midpoint of the interval. &'()*;lift a monotone increasing function over a given interval +;lift a monotone increasing function over a given interval -Calculate the intersection of two intervals. +Calculate the convex hull of two intervals For all x in X, y in Y. x , y For all x in X, y in Y. x - y For all x in X, y in Y. x . y /For all x in X, y in Y. x 0 y For all x in X, y in Y. x 1 y For all x in X, y in Y. x 2 y For all x in X, y in Y. x op y 34Does there exist an x in X, y in Y such that x , y? Does there exist an x in X, y in Y such that x - y? Does there exist an x in X, y in Y such that x . y? 5Does there exist an x in X, y in Y such that x 0 y? Does there exist an x in X, y in Y such that x 1 y? Does there exist an x in X, y in Y such that x 2 y? Does there exist an x in X, y in Y such that x op y? !6FWe have to play some semantic games to make these methods make sense. 1 Most compute with the midpoint of the interval. 71This means that realToFrac will use the midpoint 4What moron put an Ord instance requirement on Real! "  !"   !"  !8      !"#$%&'()*+,-./0./1./23./4./5./6789:;<intervals-0.2.0.1Numeric.IntervalIntervalI...wholeemptynull singletoninfsupsingularwidth magnitude mignitude bisectionelemnotElem intersectionhull!>=! certainlycontains isSubsetOf?>=?possiblyidoubleifloat negInfinity posInfinitynanmidpoint divNonZero divPositive divNegativedivZero increasing decreasingbase GHC.Classes<<===/=!/=>>= maxInterval minInterval/=?$fRealFloatInterval$fRealInterval