sig
  type node = Cil2cfg.CFG.V.t
  type graph = Cil2cfg.t
  type tenv = {
    graph : Cil2cfg.t;
    dfsp : int Cil2cfg.Ntbl.t;
    iloop_header : Cil2cfg.LoopInfo.node Cil2cfg.Ntbl.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.Ntbl.key -> int -> Cil2cfg.LoopInfo.tenv
  val reset_pos :
    Cil2cfg.LoopInfo.tenv -> Cil2cfg.Ntbl.key -> Cil2cfg.LoopInfo.tenv
  val get_pos : Cil2cfg.LoopInfo.tenv -> Cil2cfg.Ntbl.key -> int
  val get_pos_if_traversed :
    Cil2cfg.LoopInfo.tenv -> Cil2cfg.Ntbl.key -> int option
  val set_iloop_header :
    Cil2cfg.LoopInfo.tenv ->
    Cil2cfg.Ntbl.key -> Cil2cfg.LoopInfo.node -> Cil2cfg.LoopInfo.tenv
  val get_iloop_header :
    Cil2cfg.LoopInfo.tenv -> Cil2cfg.Ntbl.key -> 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.E.vertex -> Cil2cfg.LoopInfo.tenv) ->
    Cil2cfg.LoopInfo.tenv -> Cil2cfg.CFG.vertex -> Cil2cfg.LoopInfo.tenv
  val unstructuredness : Cil2cfg.LoopInfo.tenv -> float
end