functor (W : Toprop.T_for_Cfg->
  sig
    module HE :
      sig
        type ti = W.t_prop
        type t
        val create : int -> t
        val find : t -> Cil2cfg.CFG.E.t -> ti
        val replace : t -> Cil2cfg.CFG.E.t -> ti -> unit
      end
    val get_wp_edge :
      Calculus.Cfg.HE.t -> Cil2cfg.CFG.E.t -> Calculus.Cfg.HE.ti
    val do_labels : W.t_env -> Calculus.CFG.E.t -> W.t_prop -> W.t_prop
    val set_wp_edge :
      Db_types.kernel_function ->
      WpAnnot.t ->
      W.t_env ->
      Calculus.Cfg.HE.t -> Calculus.CFG.E.t -> W.t_prop -> W.t_prop
    val wp_call :
      WpAnnot.t ->
      Cil_types.lval option ->
      Cil_types.exp -> Cil_types.exp list -> W.t_prop -> W.t_prop
    val wp_stmt :
      Db_types.kernel_function ->
      WpAnnot.t -> Cil_types.stmt -> W.t_prop -> W.t_prop
    val get_loop_assigns :
      WpAnnot.t ->
      Cil2cfg.CFG.E.t -> Cil_types.identified_term Cil_types.assigns list
    val get_only_succ :
      Db_types.kernel_function * Calculus.CFG.t * WpAnnot.t *
      Calculus.Cfg.HE.t * W.t_env ->
      Calculus.CFG.t -> Calculus.CFG.vertex -> Calculus.Cfg.HE.ti
    val compute_edge :
      Db_types.kernel_function * Calculus.CFG.t * WpAnnot.t *
      Calculus.Cfg.HE.t * W.t_env -> Calculus.CFG.edge -> Calculus.Cfg.HE.ti
    val build_cfg_annots :
      '-> Calculus.Cfg.HE.t -> Format.formatter -> Cil2cfg.CFG.E.t -> unit
    val get_result :
      Cil2cfg.t ->
      Db_types.kernel_function * Calculus.CFG.t * 'a * Calculus.Cfg.HE.t *
      W.t_env -> string -> Fol.decl list -> Fol.decl list
    val cfg :
      ?with_bot:bool ->
      Fol.decl list ->
      Cil2cfg.t ->
      WpAnnot.t ->
      Fol.decl list * (Format.formatter -> Cil2cfg.CFG.E.t -> unit)
    val add_glob_decls : Fol.decl list -> Fol.decl list
  end