Module Cfg.Make Parameters Signaturemodule Fixpoint (X : sig ... end ) : sig ... end is this an implementation of directed graphs?
Graph constructors and destructorsReturn an empty graph. Optionally, a size can be given, which should be on * the order of the expected number of vertices that will be in the graph (for * hash tables-based implementations). The graph grows as needed, so size is * just an initial guess.
Remove all vertices and edges from the given graph.
copy g returns a copy of g. Vertices and edges (and eventually marks, * see module Mark) are duplicated.
val add_vertex : t -> vertex -> unitadd_vertex g v adds the vertex v in graph g. Do nothing if v * is already in g.
val add_addr : t -> addr -> unitval remove_vertex : t -> vertex -> unitremove g v removes the vertex v from the graph g (and all the edges * going from v in g). Do nothing if v is not in g.
val remove_addr : t -> addr -> unitval remove_inst : t -> addr -> unitval remove_symb : t -> addr -> unitadd_edge g v1 v2 adds an edge from the vertex v1 to the vertex v2 in * the graph g. Add also v1 (resp. v2) in g if v1 (resp. v2) is not * in g. Do nothing if this edge is already in g.
val add_edge_e : t -> edge -> unitadd_edge_e g e adds the edge e in the graph g. Add also E.src e * (resp. E.dst e) in g if E.src e (resp. E.dst e) is not in g. Do * nothing if e is already in g.
remove_edge g v1 v2 removes the edge going from v1 to v2 from the * graph g. Do nothing if this edge is not in g. *
val remove_edge_a : t -> addr -> addr -> unitval remove_edge_e : t -> edge -> unitremove_edge_e g e removes the edge e from the graph g. Do nothing if * e is not in g. *
Size functionsDegree of a vertex
val out_degree : t -> vertex -> intout_degree g v returns the out-degree of v in g. *
in_degree g v returns the in-degree of v in g. *
Membership functions Successors and predecessors of a vertexsucc g v returns the successors of v in g. *
pred g v returns the predecessors of v in g. *
Labeled edges going from/to a vertex
succ_e g v returns the edges going from v in g. *
pred_e g v returns the edges going to v in g. *
Graph iteratorsiter/fold on all vertices/edges of a graph
val iter_vertex : (vertex -> unit) -> t -> unitval fold_vertex : (vertex -> 'a -> 'a ) -> t -> 'a -> 'a iter/fold on all labeled edges of a graph
val iter_edges_e : (edge -> unit) -> t -> unitval fold_edges_e : (edge -> 'a -> 'a ) -> t -> 'a -> 'a Vertex iteratorsEach iterator iterator f v g iters f to the successors/predecessors of v in the graph g and raises Invalid_argument if v is not in g.
iter/fold on all successors/predecessors of a vertex.
iter/fold on all edges going from/to a vertex.
val iter_succ_e : (edge -> unit) -> t -> vertex -> unitval fold_succ_e : (edge -> 'a -> 'a ) -> t -> vertex -> 'a -> 'a val iter_pred_e : (edge -> unit) -> t -> vertex -> unitval fold_pred_e : (edge -> 'a -> 'a ) -> t -> vertex -> 'a -> 'a