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