sig
  val model_name : string
  type t_exp
  type t = t_exp Fol.t_pred
  type t_env
  val new_env : unit -> t_env
  val replace_at_vars : t_env -> Cil_types.logic_label -> t -> t
  val quantify_at_vars : t_env -> Cil_types.logic_label -> t -> t
  val assign : Cil_types.lval -> Cil_types.exp -> t -> t
  val return : Db_types.kernel_function -> Cil_types.exp option -> t -> t
  val test : Cil_types.exp -> t -> t -> t
  val quantif_locals : Db_types.kernel_function -> t -> t
  val quantify_loop_assigns :
    Cil_types.identified_term Cil_types.assigns list -> t -> t option
  val close : t_env -> Db_types.kernel_function -> t -> t
  val fol : t -> Fol.predicate
  val pretty : Format.formatter -> t -> unit
  type t_pred = t
  val pretty_pred : Format.formatter -> t_pred -> unit
  val translate :
    Db_types.kernel_function ->
    t_env -> Cil_types.predicate Cil_types.named -> t_pred
  val add_glob_decls : Fol.decl list -> Fol.decl list
  val call :
    (Db_types.kernel_function ->
     Cil_types.predicate Cil_types.named list *
     Cil_types.predicate Cil_types.named list *
     Cil_types.identified_term Cil_types.assigns list) ->
    Cil_types.lval option -> Cil_types.exp -> Cil_types.exp list -> t -> t
end