# Module Interval_intf

`module Interval_intf: `sig` .. `end``
Module for simple closed intervals over arbitrary types that are ordered correctly using polymorphic compare.

`val __pa_ounit_275876e34cf609db118f3d84b799a790 : `string``
`module type Gen = `sig` .. `end``
`module type Gen_set = `sig` .. `end``
`module type S = `sig` .. `end``
`module type S1 = `sig` .. `end``

Module for simple closed intervals over arbitrary types that are ordered correctly using polymorphic compare.

`create l u` returns the interval with lower bound `l` and upper bound `u`, unless `l > u`, in which case `create` returns the empty interval.

`bound t x` returns `None` iff `is_empty t`. If `bounds t = Some (a, b)`, then `bound` returns `Some y` where `y` is the element of `t` closest to `x`. I.e.:

| y = a if x < a | y = x if a <= x <= b | y = b if x > b

`is_superset i1 of_:i2` is whether i1 contains i2. The empty interval is contained in every interval.

`map t ~f` returns `create (f l) (f u)` if `bounds t = Some (l, u)`, and `empty` if `t` is empty. Note that if `f l > f u`, the result of `map` is `empty`, by the definition of `create`.

Returns true iff a given set of intervals are disjoint

Returns true iff a given set of intervals would be disjoint if considered as open intervals. i.e., (3,4) and (4,5) would count as disjoint.

Assuming that `ilist1` and `ilist2` are lists of (disjoint) intervals, `list_intersect ilist1 ilist2` returns the list of disjoint intervals that correspond to the intersection of `ilist1` with `ilist2`.