functor (W : Mcfg.S->
  sig
    val do_labels : W.t_env -> Cil2cfg.edge -> W.t_prop -> W.t_prop
    val add_hyp : W.t_env -> W.t_prop -> WpAnnot.t_id_pred -> W.t_prop
    val add_goal : W.t_env -> W.t_prop -> WpAnnot.t_id_pred -> W.t_prop
    val add_assigns_goal :
      W.t_env -> WpAnnot.t_id_assigns -> W.t_prop -> W.t_prop
    val add_inv_hyp : W.t_env -> W.t_prop -> W.t_prop -> W.t_prop
    val add_inv_goal : W.t_env -> W.t_prop -> W.t_prop -> W.t_prop
    module R :
      sig
        type t
        val empty : keep:bool -> Cil2cfg.t -> Calculus.Cfg.??.t
        val change_mode : Calculus.Cfg.??.-> unit
        val find : Calculus.Cfg.??.-> Cil2cfg.edge -> W.t_prop
        val set :
          WpAnnot.strategy ->
          W.t_env ->
          Calculus.Cfg.??.-> Cil2cfg.edge -> W.t_prop -> W.t_prop
        val wp_loop :
          Cil2cfg.t ->
          WpAnnot.strategy ->
          Calculus.Cfg.??.->
          Cil2cfg.node ->
          Cil2cfg.edge ->
          (Cil2cfg.node -> W.t_prop) -> (W.t_prop -> W.t_prop) -> W.t_prop
        val add_oblig :
          Calculus.Cfg.??.-> Cil_types.logic_label -> W.t_prop -> unit
      end
    val wp_call :
      W.t_env ->
      WpAnnot.strategy ->
      Cil_types.stmt ->
      Cil_types.lval option ->
      Cil_types.exp -> Cil_types.exp list -> W.t_prop -> W.t_prop -> W.t_prop
    val wp_stmt : W.t_env -> Cil_types.stmt -> W.t_prop -> W.t_prop
    val wp_scope :
      W.t_env -> Cil_types.varinfo list -> Mcfg.scope -> W.t_prop -> W.t_prop
    val get_wp_edge :
      Kernel_function.t * Cil2cfg.t * WpAnnot.strategy * Calculus.Cfg.R.t *
      W.t_env -> Cil2cfg.edge -> W.t_prop
    val get_only_succ :
      Kernel_function.t * Cil2cfg.t * WpAnnot.strategy * Calculus.Cfg.R.t *
      W.t_env -> Cil2cfg.t -> Cil2cfg.node -> W.t_prop
    val compute_wp_edge :
      Kernel_function.t * Cil2cfg.t * WpAnnot.strategy * Calculus.Cfg.R.t *
      W.t_env -> Cil2cfg.edge -> W.t_prop
    val process_global_init : W.t_env -> W.t_prop -> W.t_prop
    val do_main_init_if_needed :
      W.t_env -> Kernel_function.t -> W.t_prop -> W.t_prop
    val get_weakest_precondition :
      Cil2cfg.t ->
      Kernel_function.t * Cil2cfg.t * WpAnnot.strategy * Calculus.Cfg.R.t *
      W.t_env -> W.t_prop list
    val add_axiom :
      WpAnnot.prop_id *
      (string * Cil_types.logic_label list *
       Cil_types.predicate Cil_types.named) ->
      unit
    val compute :
      Cil2cfg.t ->
      WpAnnot.strategy ->
      W.t_prop list * (Format.formatter -> Cil2cfg.edge -> unit)
  end