functor (W : Mcfg.S->
  sig
    type t_env = W.t_env
    val new_env : Db_types.kernel_function -> W.t_env
    type description = Cfgpropid.dnode
    type t_goal = {
      g_id : WpAnnot.prop_id;
      g_prop : W.t_prop;
      g_descr : Cfgpropid.dnode;
    }
    type t_prop = Cfgpropid.Create.t_goal list
    val pp_goal :
      Format.formatter -> string -> Cfgpropid.Create.t_goal -> unit
    val pp_descr : Format.formatter -> Cfgpropid.Create.t_goal -> unit
    val iter_description :
      (Wpo.warning -> unit) ->
      (Wpo.dependency -> unit) -> Cfgpropid.dnode -> unit
    val pp_goalx : Format.formatter -> Cfgpropid.Create.t_goal -> unit
    val pretty : Format.formatter -> Cfgpropid.Create.t_goal list -> unit
    val empty : 'a list
    val dnode_cpt : int Pervasives.ref
    val make_goal :
      WpAnnot.prop_id ->
      (unit -> W.t_prop) -> Cfgpropid.dnode list -> Cfgpropid.Create.t_goal
    val merge :
      Cfgpropid.Create.t_goal list ->
      Cfgpropid.Create.t_goal list -> Cfgpropid.Create.t_goal list
    val add_as_hyp :
      W.t_env ->
      Cfgpropid.Create.t_goal list ->
      Cfgpropid.Create.t_goal list -> Cfgpropid.Create.t_goal list
    val add_as_goal :
      '->
      Cfgpropid.Create.t_goal list ->
      Cfgpropid.Create.t_goal list -> Cfgpropid.Create.t_goal list
    val add_hyp :
      W.t_env ->
      WpAnnot.prop_id ->
      Cil_types.predicate Cil_types.named ->
      Cfgpropid.Create.t_goal list -> Cfgpropid.Create.t_goal list
    val build_prop_of_from :
      W.t_env ->
      WpAnnot.t_id_pred list ->
      Cfgpropid.Create.t_goal list -> Cfgpropid.Create.t_goal list
    val add_goal :
      W.t_env ->
      WpAnnot.prop_id ->
      Cil_types.predicate Cil_types.named ->
      Cfgpropid.Create.t_goal list -> Cfgpropid.Create.t_goal list
    val add_axiom :
      WpAnnot.prop_id ->
      string ->
      Cil_types.logic_label list ->
      Cil_types.predicate Cil_types.named -> unit
    val add_assigns :
      W.t_env ->
      WpAnnot.prop_id ->
      Cil_types.logic_label ->
      WpAnnot.a_kind ->
      Cil_types.identified_term Cil_types.assigns list ->
      Cfgpropid.Create.t_goal list -> Cfgpropid.Create.t_goal list
    val assigns_method : unit -> Mcfg.assigns_method
    val assign :
      W.t_env ->
      Cil_types.lval ->
      Cil_types.exp ->
      Cfgpropid.Create.t_goal list -> Cfgpropid.Create.t_goal list
    val return :
      W.t_env ->
      Cil_types.exp option ->
      Cfgpropid.Create.t_goal list -> Cfgpropid.Create.t_goal list
    val test :
      W.t_env ->
      Cil_types.exp ->
      Cfgpropid.Create.t_goal list ->
      Cfgpropid.Create.t_goal list -> Cfgpropid.Create.t_goal list
    val switch :
      W.t_env ->
      Cil_types.exp ->
      (Cil_types.exp list * Cfgpropid.Create.t_goal list) list ->
      Cfgpropid.Create.t_goal list -> Cfgpropid.Create.t_goal list
    val call_normal :
      W.t_env ->
      get_pre:(Db_types.kernel_function ->
               (WpAnnot.prop_id * Cil_types.predicate Cil_types.named) list) ->
      get_post:(Db_types.kernel_function ->
                (WpAnnot.prop_id * Cil_types.predicate Cil_types.named) list) ->
      get_assigns:(Db_types.kernel_function ->
                   Cil_types.identified_term Cil_types.assigns list) ->
      Cil_types.stmt ->
      Cil_types.lval option ->
      Cil_types.exp ->
      Cil_types.exp list ->
      Cfgpropid.Create.t_goal list -> Cfgpropid.Create.t_goal list
    val call_exit :
      W.t_env ->
      get_pre:(Db_types.kernel_function ->
               (WpAnnot.prop_id * Cil_types.predicate Cil_types.named) list) ->
      get_exits:(Db_types.kernel_function ->
                 (WpAnnot.prop_id * Cil_types.predicate Cil_types.named) list) ->
      get_assigns:(Db_types.kernel_function ->
                   Cil_types.identified_term Cil_types.assigns list) ->
      Cil_types.stmt ->
      Cil_types.exp ->
      Cil_types.exp list ->
      Cfgpropid.Create.t_goal list -> Cfgpropid.Create.t_goal list
    val use_assigns :
      W.t_env ->
      WpAnnot.prop_id ->
      WpAnnot.a_kind ->
      Cil_types.identified_term Cil_types.assigns list ->
      Cfgpropid.Create.t_goal list -> Cfgpropid.Create.t_goal list
    val label :
      W.t_env ->
      Cil_types.logic_label ->
      Cfgpropid.Create.t_goal list -> Cfgpropid.Create.t_goal list
    val scope :
      W.t_env ->
      Cil_types.varinfo list ->
      Mcfg.scope ->
      Cfgpropid.Create.t_goal list -> Cfgpropid.Create.t_goal list
    val close :
      W.t_env -> Cfgpropid.Create.t_goal list -> Cfgpropid.Create.t_goal list
  end