sig
  type node = Cil2cfg.CFG.V.t
  type graph = Cil2cfg.t
  type tenv = {
    graph : Cil2cfg.CFG.t;
    dfsp : (Cil2cfg.LoopInfo.node, int) Hashtbl.t;
    iloop_header : (Cil2cfg.LoopInfo.node, Cil2cfg.LoopInfo.node) Hashtbl.t;
    loop_headers : Cil2cfg.LoopInfo.node list;
    irreducible : Cil2cfg.LoopInfo.node list;
    unstruct_coef : int;
  }
  val init : Cil2cfg.t -> Cil2cfg.LoopInfo.tenv * Cil2cfg.CFG.V.t
  val eq_nodes : Cil2cfg.CFG.V.t -> Cil2cfg.CFG.V.t -> bool
  val set_pos :
    Cil2cfg.LoopInfo.tenv ->
    Cil2cfg.LoopInfo.node -> int -> Cil2cfg.LoopInfo.tenv
  val reset_pos :
    Cil2cfg.LoopInfo.tenv -> Cil2cfg.LoopInfo.node -> Cil2cfg.LoopInfo.tenv
  val get_pos : Cil2cfg.LoopInfo.tenv -> Cil2cfg.LoopInfo.node -> int
  val get_pos_if_traversed :
    Cil2cfg.LoopInfo.tenv -> Cil2cfg.LoopInfo.node -> int option
  val set_iloop_header :
    Cil2cfg.LoopInfo.tenv ->
    Cil2cfg.LoopInfo.node -> Cil2cfg.LoopInfo.node -> Cil2cfg.LoopInfo.tenv
  val get_iloop_header :
    Cil2cfg.LoopInfo.tenv ->
    Cil2cfg.LoopInfo.node -> Cil2cfg.LoopInfo.node option
  val add_loop_header :
    Cil2cfg.LoopInfo.tenv -> Cil2cfg.LoopInfo.node -> Cil2cfg.LoopInfo.tenv
  val add_irreducible :
    Cil2cfg.LoopInfo.tenv -> Cil2cfg.LoopInfo.node -> Cil2cfg.LoopInfo.tenv
  val add_reentry_edge : '-> '-> '-> 'a
  val is_irreducible : Cil2cfg.LoopInfo.tenv -> Cil2cfg.CFG.V.t -> bool
  val fold_succ :
    (Cil2cfg.LoopInfo.tenv -> Cil2cfg.CFG.vertex -> Cil2cfg.LoopInfo.tenv) ->
    Cil2cfg.LoopInfo.tenv -> Cil2cfg.CFG.vertex -> Cil2cfg.LoopInfo.tenv
  val incr : Cil2cfg.LoopInfo.tenv -> Cil2cfg.LoopInfo.tenv
  val incr_xi : Cil2cfg.LoopInfo.tenv -> Cil2cfg.LoopInfo.tenv
  val incr_yi : Cil2cfg.LoopInfo.tenv -> Cil2cfg.LoopInfo.tenv
  val unstructuredness : Cil2cfg.LoopInfo.tenv -> float
  val pretty_node :
    Format.formatter -> Cil2cfg.node_type Pervasives.ref -> unit
end