Astral_internal.SL_graphinclude module type of struct include SL_graph0 endmodule SL_edge = SL_graph0.SL_edgemodule G = SL_graph0.Gval get_fields : G.t -> MemoryModel.Field.t listmodule S = SL_graph0.Sinclude sig ... endval show : S.t -> stringval pp : Stdlib.Format.formatter -> S.t -> unitval print : ?prefix:string -> S.t -> unitval show_option : S.t option -> stringval print_option : ?prefix:string -> S.t option -> unitval dump : string -> S.t -> unitval show_list : ?separator:string -> S.t list -> stringval pp_list : Stdlib.Format.formatter -> S.t list -> unitval print_list : ?separator:string -> ?prefix:string -> S.t list -> unitinclude sig ... endmodule Set = SL_graph0.Setmodule MonoList = SL_graph0.MonoListmodule Map = SL_graph0.Mapmodule MonoMap = SL_graph0.MonoMapProjections
val projection_sort : Astral_internal.SL.Term.Sort.t -> G.t -> G.tval projection_field : MemoryModel.Field.t -> G.t -> G.tval projection_path_field : MemoryModel.Field.t -> G.t -> G.tval must_disjoint_with :
G.t ->
SL.Term.t ->
MemoryModel.Field.t ->
SL.Term.t ->
SL.Term.t listval must_disjoint :
G.t ->
MemoryModel.Field.t ->
SL.Term.t ->
SL.Term.t ->
G.V.t ->
boolval must_pointer : G.t -> MemoryModel.Field.t -> G.vertex -> G.vertex -> boolval must_path : G.t -> MemoryModel.Field.t -> SL.Term.t -> SL.Term.t -> boolval nb_must_pointers : G.t -> Astral_internal.SL.Term.Sort.t -> intval nb_allocated : ?distinct:bool -> G.t -> intval nb_roots : G.t -> intval must_successor_ptr :
G.t ->
MemoryModel.Field.t ->
G.vertex ->
G.vertex optionTODO: SL-graph normalisation
val must_successor_any : G.t -> MemoryModel.Field.t -> G.vertex -> G.vertexval must_successor_edge : G.t -> MemoryModel.Field.t -> G.vertex -> G.edgeval nb_joins : G.t -> MemoryModel.Field.t -> intinclude module type of struct include G endmodule Self = Astral_internal.SL_graph0.Selfinclude module type of struct include Self endtype t =
Graph__Persistent.Digraph.ConcreteBidirectionalLabeled(Astral_internal.SL.Term)(Astral_internal.SL_graph0.SL_edge).tmodule V = Astral_internal.SL_graph0.Vtype vertex = V.tmodule E = Astral_internal.SL_graph0.Etype edge = E.tval is_empty : t -> boolval nb_vertex : t -> intval nb_edges : t -> intval empty : tinclude sig ... endtype g = Self.tval add_edge_e : t -> (SL.Term.t * SL_graph0.SL_edge.t * SL.Term.t) -> tinclude sig ... endval fprint_graph :
Stdlib.Format.formatter ->
Graph__Persistent.Digraph.ConcreteBidirectionalLabeled(Astral_internal.SL.Term)(Astral_internal.SL_graph0.SL_edge).t ->
unitval output_graph :
Stdlib.out_channel ->
Graph__Persistent.Digraph.ConcreteBidirectionalLabeled(Astral_internal.SL.Term)(Astral_internal.SL_graph0.SL_edge).t ->
unitval output_file :
string ->
Graph__Persistent.Digraph.ConcreteBidirectionalLabeled(Astral_internal.SL.Term)(Astral_internal.SL_graph0.SL_edge).t ->
unitval must_pred_field :
G.t ->
G.vertex ->
(G.E.vertex * MemoryModel.Field.t) optionmodule CC = SL_graph0.CCval is_connected : G.t -> boolval are_skeleton_fields : G.t -> MemoryModel.Field.t list -> bool==== Evaluation ====
val eval_predicate : G.t -> SL.t -> ThreeValuedLogic.t==== Edge contraction ====
Reimplementation of the algorithm from Ocamlgraph which does not allow to provide vertex selection function.
TODO: tests
==== Reachability ====
module Reachability : sig ... endval find_reachable : G.t -> SL.Term.t -> SL.Term.MonoList.t -> G.vertex option==== Paths ====
module W : sig ... endmodule Dijkstra : sig ... endval find_path : G.t -> G.V.t -> G.V.t -> MemoryModel.Field.t list==== Vertex substitution ====
module GM : sig ... end==== SL-graph construction ====
val unpack : ('a * SL_edge.t * 'b) -> 'a * MemoryModel.Field.t * 'bval of_pointer : SL.Term.t -> MemoryModel.StructDef.t -> SL.Term.t list -> G.tConstruct node with all *location*-fields.
val has_contradiction : G.t -> bool