sig
  type 'a p_graph = ('a * 'a) list
  type 'a s_graph = ('a * 'a list) list
  val p_to_s_graph : 'Graph.p_graph -> 'Graph.s_graph
  val s_to_p_graph : 'Graph.s_graph -> 'Graph.p_graph
  val p_transpose : 'Graph.p_graph -> 'Graph.p_graph
  val warshall : 'Graph.s_graph -> 'Graph.s_graph
  val top_sort : 'Graph.s_graph -> 'a list
end