5 let compare = String.compare
8 let n = String.length s in
12 int_of_string (String.sub s p (n-p))
24 include Graph.Imperative.Digraph.ConcreteBidirectional(Label)
26 let graph_attributes _ = []
28 let default_vertex_attributes _ = []
30 let vertex_name v = V.label v
32 let vertex_attributes _ = []
34 let get_subgraph _ = None
36 let default_edge_attributes _ = []
38 let edge_attributes _ = []
40 let add_thm dep thm = add_vertex dep (V.create thm)
42 let add_dep dep thm1 thm2 =
43 let v1 = V.create thm1 in
44 let v2 = V.create thm2 in
45 if ((mem_vertex dep v1) && (mem_vertex dep v2)) then
48 let min_max_moy_in_deg dep =
50 let lab_max = ref "" in
51 let min = ref 1073741823 in
52 let lab_min = ref "" in
56 let deg = in_degree dep v in
68 let moy = (float_of_int !sum) /. (float_of_int !nb) in
69 (!min, !lab_min, !max, !lab_max, moy)
71 let min_max_moy_out_deg dep =
73 let lab_max = ref "" in
74 let min = ref 1073741823 in
75 let lab_min = ref "" in
79 let deg = out_degree dep v in
91 let moy = (float_of_int !sum) /. (float_of_int !nb) in
92 (!min, !lab_min, !max, !lab_max, moy)
97 module Dep_top = struct
99 include Graph.Topological.Make(Dep)
101 let iter_top f dep = iter (fun v -> f (Dep.V.label v)) dep
106 module Dep_dot = struct
108 include Graph.Graphviz.Dot(Dep)
110 let output_dot name dep =
111 let file = open_out name in
112 output_graph file dep;