sig
  module Id : Identifiable.S
  type directed_graph = Id.Set.t Id.Map.t
  type component = Has_loop of Id.t list | No_loop of Id.t
  val connected_components_sorted_from_roots_to_leaf :
    Strongly_connected_components.S.directed_graph ->
    Strongly_connected_components.S.component array
  val component_graph :
    Strongly_connected_components.S.directed_graph ->
    (Strongly_connected_components.S.component * int list) array
end