`type interval =`

1. `| Bet of int * int`
   (*

   [|a,b|]

   *)
2. `| Bef of int`
   (*

   ]|-oo,a|]

   *)
3. `| Aft of int`
   (*

   [|a,+oo|[

   *)
4. `| Nev`
   (*

   emptyset

   *)
5. `| Alw`
   (*

   N

   *)

This type describes an interval of discrete points of time

`val in_interval : int -> interval -> bool`

test if an integer is in an interval

`val min_interval : int -> interval -> int`

The minimum between the integer argument and the beginning of the interval; returns the integer argument in the cases `Nev` and `Alw`

`val max_interval : int -> interval -> int`

The dual of `min_interval`

`val min_tree : ('a -> interval) -> 'a t -> int`

The first moment of the tree to appear, not considering `Nev` and `Alw`

`val max_tree : ('a -> interval) -> 'a t -> int`

The last moment of the tree to appear, not considering `Nev` and `Alw`

`type 'a spec = (interval * 'a) list`

A spec is a list of objects associated with a visibility interval

`val assoq : int -> 'a spec -> 'a`

returns the first element which is visible in the specification; raises `Not_found` if no element is visible

`val max : ('a -> Num.t) -> ('b * 'a) list -> Num.t`

given a function to compute a numeric from an `'a`, and a list of objects `('b,'a)`, return the maximal numeric from that list; intended to be used with width and height functions for objects and with a `'a spec list`

`val set_pos : (Point.t -> 'a -> 'b) -> Point.t -> 'a spec -> 'b spec`

Given a function to move objects of type `'a`, return a function to move functions of type `'a spec`