Module AcyclicGraph.Make
Parameters
Signature
val add : ?rank:int -> Point.t -> t -> tAll points must be pre-declared through this function before they can be mentioned in the others. NB: use a large
rankto keep the node canonical
exceptionUndeclared of Point.t
val check_declared : t -> Point.Set.t -> unit- raises Undeclared
if one of the points is not present in the graph.
type 'a check_function= t -> 'a -> 'a -> bool
val check_eq : Point.t check_functionval check_leq : Point.t check_functionval check_lt : Point.t check_functionval enforce_eq : Point.t -> Point.t -> t -> tval enforce_leq : Point.t -> Point.t -> t -> tval enforce_lt : Point.t -> Point.t -> t -> tval constraints_of : t -> Point.Constraints.t * Point.Set.t listval constraints_for : kept:Point.Set.t -> t -> Point.Constraints.tval domain : t -> Point.Set.tval choose : (Point.t -> bool) -> t -> Point.t -> Point.t option
High-level representation
type node=|Alias of Point.t|Node of bool Point.Map.tNodes v s.t. u < v (true) or u <= v (false)
type repr= node Point.Map.t