Module type Toprop.T_no_call


module type T_no_call = sig .. end

val model_name : string
type t_exp 
type of the propagated predicate
type t = t_exp Fol.t_pred 
type t_env 
The environment can contain whatever is needed. It is for instance used to deal with the \at and \old expressions.
val new_env : unit -> t_env
val replace_at_vars : t_env ->
Cil_types.logic_label -> t -> t
examine the label and look for it in env. If an expression has been stored for a variable at this label, substitute it in the propagated object. ie substitute \at(x,L) by x for the statement label L. Be careful that this operation can remove the label from env ! so if quantify_at_vars is needed : do it before...
val quantify_at_vars : t_env ->
Cil_types.logic_label -> t -> t
see replace_at_vars : same but quantify instead of substitute.
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
quantify the object over the assigns list in order to move it before loop. If the list is empty or if the model doesn't know how to interpret it, this function returns None.

do whatever is necessary on a postcondition before propagation from the END program point of the function kf. For instance, a parameter 'a' in a postcondition doesn't have the same meaning that 'a' in an assert at END. TODO : should be t_pred -> t_pred
val close : t_env ->
Db_types.kernel_function -> t -> t
the computation is over : finish (do formals, add hypotheses, ...
val fol : t -> Fol.predicate
val pretty : Format.formatter -> t -> unit
type t_pred = t 
type of the simple predicates result of translate for instance
val pretty_pred : Format.formatter -> t_pred -> unit
val translate : Db_types.kernel_function ->
t_env ->
Cil_types.predicate Cil_types.named -> t_pred
Translate a predicate in order to add it as a goal or and hypothesis
val add_glob_decls : Fol.decl list -> Fol.decl list