Module WTO

module WTO: sig .. end
Returns a weak partial order with Bourdoncle's algorithm.

type partition = 
| Nil
| Node of int * partition
| Component of partition * partition
type succ = (int -> unit) -> int -> unit 
type scc = {
   succ : (int -> unit) -> int -> unit;
   stack : int Stack.t;
   dfn : int array;
   mutable num : int;
}
type visit = {
   mutable loop : bool;
   mutable head : int;
}
val pretty : Format.formatter -> partition -> unit
val visit : scc -> int -> partition Pervasives.ref -> int
val component : scc -> int -> partition
val partition : size:int -> succ:((int -> unit) -> int -> unit) -> root:int -> partition
Returns a weak partial order with Bourdoncle's algorithm.
val fix : (level:'a -> int -> bool) -> 'a -> partition -> bool
val fixpoint : (level:int -> int -> bool) -> (int -> 'a) -> partition -> unit
Iterate over a weak partial order. The first function is suppose to update the given node and return true when stable. It must eventually apply widening to stabilize. The second function simply update the given node. It should never apply widening.
val loop : (level:int -> int -> bool) -> (int -> 'a) -> partition -> int -> unit