module type S = sig .. end
module Id: Identifiable.S;
type directed_graph = Id.Map.t(Id.Set.t);
If (a -> set) belongs to the map, it means that there are edges
from a
to every element of set
. It is assumed that no edge
points to a vertex not represented in the map.
type component =
| |
Has_loop of Id.t list |
| |
No_loop of Id.t |
let connected_components_sorted_from_roots_to_leaf:
directed_graph => array(component);
let component_graph: directed_graph => array((component, list(int)));