32 lines
649 B
OCaml
32 lines
649 B
OCaml
module type C = sig
|
|
type elt
|
|
type internal
|
|
|
|
type internal_node = {
|
|
internal_in: internal list;
|
|
internal_out: internal list;
|
|
internal_between: (internal list * internal list) list;
|
|
}
|
|
|
|
type cfgt = elt Cfg.cfginternal
|
|
|
|
type t = {
|
|
t: cfgt;
|
|
internal_var: internal_node Cfg.NodeMap.t;
|
|
}
|
|
|
|
val from_cfg : cfgt -> t
|
|
val to_cfg : t -> cfgt
|
|
|
|
val fixed_point :
|
|
?init : (elt list -> internal_node) ->
|
|
?update : (t -> Cfg.Node.t -> internal_node) -> t -> t
|
|
|
|
val pp : out_channel -> t -> unit
|
|
end
|
|
|
|
module Make
|
|
(M: Cfg.PrintableType)
|
|
(I: Cfg.PrintableType)
|
|
: C with type elt = M.t and type internal = I.t
|