sig
module MV :
sig
module MT :
sig
val model_name : string
type t_data = Model1.M.t_data
type t_exp = t_data Fol.d_term
type t_pred = t_data Fol.d_pred
val prop_in_data : (t_exp -> t_exp) -> t_data -> t_exp
val eq_data : t_data -> t_data -> bool
val pp_data : Format.formatter -> t_data -> unit
val mk_cvar_addr : Cil_types.varinfo -> t_exp
val mk_lvar_addr : Cil_types.logic_var -> t_exp
val mk_cvar : Cil_types.varinfo -> t_exp
val mk_lvar : Cil_types.logic_var -> t_exp
val mk_field_access : t_exp -> Cil_types.fieldinfo -> t_exp
val mk_index_access :
t_exp -> Cil_types.logic_type -> t_exp -> t_exp
val mk_field_shift : t_exp -> Cil_types.fieldinfo -> t_exp
val mk_index_shift :
t_exp -> Cil_types.logic_type -> t_exp -> t_exp
val mk_shift_pointer :
t_exp -> Cil_types.logic_type -> t_exp -> t_exp
val mk_access_pointer : t_exp -> Cil_types.logic_type -> t_exp
val mk_field_update :
t_exp -> Cil_types.fieldinfo -> t_exp -> t_exp
val mk_index_update : t_exp -> t_exp -> t_exp -> t_exp
val expr_cast : Cil_types.typ -> t_exp -> t_exp
val mk_let :
fresh:bool -> Fol.variable -> t_exp -> t_pred -> t_pred
val add_decl_hyp : Cil_types.logic_var -> t_pred -> t_pred
val visit_exp_in_data : ('a -> t_exp -> 'a) -> 'a -> t_data -> 'a
val fol : t_data Fol.d_pred -> Fol.predicate
val pp_exp : Format.formatter -> Model1.M.t_data Fol.d_term -> unit
val pp_pred :
Format.formatter -> Model1.M.t_data Fol.d_term Fol.t_pred -> unit
val mk_minus_pointer :
'a Fol.d_term -> 'a Fol.d_term -> 'a Fol.d_term
type t_env =
Mvar.MT(Model1.M).t_env = {
env_at : (string, Fol.variable * Model1.M.t_exp) Hashtbl.t;
}
val new_env : unit -> t_env
val term_at :
t_env ->
Cil_types.logic_label ->
Model1.M.t_exp -> Fol.pure_type -> 'a Fol.d_term
val get_at_vars :
remove:bool ->
t_env ->
Cil_types.logic_label -> (Fol.variable * Model1.M.t_exp) list
val pred_forall :
fresh:bool ->
Fol.variable ->
Model1.M.t_data Fol.d_pred -> Model1.M.t_data Fol.d_pred
end
module T :
sig
exception AbortTranslation of string
val expr : Cil_types.exp -> MT.t_exp
val cond : Cil_types.exp -> MT.t_exp
val predicate :
Kernel_function.t ->
MT.t_env -> Cil_types.predicate Cil_types.named -> MT.t_pred
val export_fct_table :
(MT.t_pred -> Fol.predicate) -> Fol.decl list -> Fol.decl list
end
type t = Model1.M.t_data Fol.d_pred
type t_exp = Model1.M.t_exp
type t_pred = t
val pretty :
Format.formatter -> Model1.M.t_data Fol.d_term Fol.t_pred -> unit
val pretty_pred :
Format.formatter -> Model1.M.t_data Fol.d_term Fol.t_pred -> unit
val abort : string -> 'a
val ptrue : 'a Fol.t_pred
val add_hyp : 'a Fol.t_pred -> 'a Fol.t_pred -> 'a Fol.t_pred
val add_goal : 'a Fol.t_pred -> 'a Fol.t_pred -> 'a Fol.t_pred
val pbot : 'a Fol.t_pred
val subst_vars :
(Fol.variable -> Model1.M.t_data Fol.d_term option) ->
Model1.M.t_data Fol.d_pred -> Model1.M.t_data Fol.d_pred
exception Invalid_subst
val subst_var :
Fol.variable ->
Model1.M.t_data Fol.d_term option ->
Model1.M.t_data Fol.d_pred -> Model1.M.t_data Fol.d_pred
val mk_let :
fresh:bool ->
Fol.variable ->
Model1.M.t_exp option -> Model1.M.t_pred -> Model1.M.t_pred
val mk_let_vi :
Cil_types.varinfo ->
Model1.M.t_exp option -> Model1.M.t_pred -> Model1.M.t_pred
val pred_forall_cv :
Model1.M.t_data Fol.d_pred ->
Cil_types.varinfo -> Model1.M.t_data Fol.d_pred
val mk_offset_update :
(Cil_types.exp -> Model1.M.t_exp option) ->
MT.t_env option ->
Model1.M.t_exp ->
Cil_types.logic_type ->
Model1.M.t_exp option -> Cil_types.offset -> Model1.M.t_exp option
end
module MT :
sig
val model_name : string
type t_data = Model1.M.t_data
type t_exp = t_data Fol.d_term
type t_pred = t_data Fol.d_pred
val prop_in_data : (t_exp -> t_exp) -> t_data -> t_exp
val eq_data : t_data -> t_data -> bool
val pp_data : Format.formatter -> t_data -> unit
val mk_cvar_addr : Cil_types.varinfo -> t_exp
val mk_lvar_addr : Cil_types.logic_var -> t_exp
val mk_cvar : Cil_types.varinfo -> t_exp
val mk_lvar : Cil_types.logic_var -> t_exp
val mk_field_access : t_exp -> Cil_types.fieldinfo -> t_exp
val mk_index_access : t_exp -> Cil_types.logic_type -> t_exp -> t_exp
val mk_field_shift : t_exp -> Cil_types.fieldinfo -> t_exp
val mk_index_shift : t_exp -> Cil_types.logic_type -> t_exp -> t_exp
val mk_shift_pointer : t_exp -> Cil_types.logic_type -> t_exp -> t_exp
val mk_access_pointer : t_exp -> Cil_types.logic_type -> t_exp
val mk_field_update : t_exp -> Cil_types.fieldinfo -> t_exp -> t_exp
val mk_index_update : t_exp -> t_exp -> t_exp -> t_exp
val expr_cast : Cil_types.typ -> t_exp -> t_exp
val mk_let : fresh:bool -> Fol.variable -> t_exp -> t_pred -> t_pred
val add_decl_hyp : Cil_types.logic_var -> t_pred -> t_pred
val visit_exp_in_data : ('a -> t_exp -> 'a) -> 'a -> t_data -> 'a
val fol : t_data Fol.d_pred -> Fol.predicate
val pp_exp : Format.formatter -> Model1.M.t_data Fol.d_term -> unit
val pp_pred :
Format.formatter -> Model1.M.t_data Fol.d_term Fol.t_pred -> unit
val mk_minus_pointer : 'a Fol.d_term -> 'a Fol.d_term -> 'a Fol.d_term
type t_env =
Mvar.MT(Model1.M).t_env = {
env_at : (string, Fol.variable * Model1.M.t_exp) Hashtbl.t;
}
val new_env : unit -> t_env
val term_at :
t_env ->
Cil_types.logic_label ->
Model1.M.t_exp -> Fol.pure_type -> 'a Fol.d_term
val get_at_vars :
remove:bool ->
t_env ->
Cil_types.logic_label -> (Fol.variable * Model1.M.t_exp) list
val pred_forall :
fresh:bool ->
Fol.variable ->
Model1.M.t_data Fol.d_pred -> Model1.M.t_data Fol.d_pred
end
module T :
sig
exception AbortTranslation of string
val expr : Cil_types.exp -> MT.t_exp
val cond : Cil_types.exp -> MT.t_exp
val predicate :
Kernel_function.t ->
MT.t_env -> Cil_types.predicate Cil_types.named -> MT.t_pred
val export_fct_table :
(MT.t_pred -> Fol.predicate) -> Fol.decl list -> Fol.decl list
end
type t = Model1.M.t_data Fol.d_pred
type t_exp = Model1.M.t_exp
type t_pred = t
val pretty :
Format.formatter -> Model1.M.t_data Fol.d_term Fol.t_pred -> unit
val pretty_pred :
Format.formatter -> Model1.M.t_data Fol.d_term Fol.t_pred -> unit
val abort : string -> 'a
val ptrue : 'a Fol.t_pred
val add_hyp : 'a Fol.t_pred -> 'a Fol.t_pred -> 'a Fol.t_pred
val add_goal : 'a Fol.t_pred -> 'a Fol.t_pred -> 'a Fol.t_pred
val pbot : 'a Fol.t_pred
val subst_vars :
(Fol.variable -> Model1.M.t_data Fol.d_term option) ->
Model1.M.t_data Fol.d_pred -> Model1.M.t_data Fol.d_pred
exception Invalid_subst
val subst_var :
Fol.variable ->
Model1.M.t_data Fol.d_term option ->
Model1.M.t_data Fol.d_pred -> Model1.M.t_data Fol.d_pred
val mk_let :
fresh:bool ->
Fol.variable ->
Model1.M.t_exp option -> Model1.M.t_pred -> Model1.M.t_pred
val mk_let_vi :
Cil_types.varinfo ->
Model1.M.t_exp option -> Model1.M.t_pred -> Model1.M.t_pred
val pred_forall_cv :
Model1.M.t_data Fol.d_pred ->
Cil_types.varinfo -> Model1.M.t_data Fol.d_pred
val mk_offset_update :
(Cil_types.exp -> Model1.M.t_exp option) ->
MT.t_env option ->
Model1.M.t_exp ->
Cil_types.logic_type ->
Model1.M.t_exp option -> Cil_types.offset -> Model1.M.t_exp option
val model_name : string
type t_env = MT.t_env
val new_env : unit -> MT.t_env
val texpr : Cil_types.exp -> MT.t_exp option
val translate :
Kernel_function.t ->
MT.t_env -> Cil_types.predicate Cil_types.named -> MT.t_pred
val assign_exp :
Cil_types.lval ->
Model1.M.t_exp option ->
Model1.M.t_data Fol.d_pred -> Model1.M.t_data Fol.d_pred
val assign_old_exp :
Mvar.MT(Model1.M).t_env ->
Cil_types.lval ->
Model1.M.t_exp option ->
Model1.M.t_data Fol.d_pred -> Model1.M.t_data Fol.d_pred
val assign :
Cil_types.lval ->
Cil_types.exp -> Model1.M.t_data Fol.d_pred -> Model1.M.t_data Fol.d_pred
val test :
Cil_types.exp ->
MT.t_data Fol.d_pred -> MT.t_data Fol.d_pred -> MT.t_data Fol.d_pred
val return :
Kernel_function.t ->
Cil_types.exp option -> Model1.M.t_pred -> Model1.M.t_pred
val replace_at_vars :
MT.t_env ->
Cil_types.logic_label ->
Model1.M.t_data Fol.d_pred -> Model1.M.t_data Fol.d_pred
val quantify_at_vars :
MT.t_env ->
Cil_types.logic_label ->
Model1.M.t_data Fol.d_pred -> Model1.M.t_data Fol.d_pred
val quantify_assigns :
(Cil_types.identified_term Cil_types.zone * 'a) list ->
Model1.M.t_data Fol.d_pred -> Model1.M.t_data Fol.d_pred
exception CallNeedFctAssigns
exception CallArgsVsParamNb
exception CallFctPtr
val call_do_body :
(Cil_types.identified_term Cil_types.zone * 'a) list ->
Model1.M.t_data Fol.d_pred -> Model1.M.t_data Fol.d_pred
val call_add_pre_and_do_args :
Cil_types.exp list ->
Cil_types.varinfo list ->
Model1.M.t_data Fol.d_term Fol.t_pred list ->
Model1.M.t_data Fol.d_term Fol.t_pred -> Model1.M.t_data Fol.d_pred
val call_res_and_add_post :
Kernel_function.t ->
MT.t_env ->
Cil_types.lval option ->
Model1.M.t_data Fol.d_pred list ->
Model1.M.t_data Fol.d_pred -> Model1.M.t_data Fol.d_pred
val quantify_loop_assigns :
(Cil_types.identified_term Cil_types.zone * 'a) list ->
Model1.M.t_data Fol.d_pred -> Model1.M.t_data Fol.d_pred option
val fol : Model1.M.t_data Fol.d_pred -> Fol.predicate
val post_at_end : 'a -> 'b -> 'c -> 'c
val quantif_locals :
Kernel_function.t -> MT.t_data Fol.d_pred -> MT.t_data Fol.d_pred
val close :
'a ->
Kernel_function.t ->
Model1.M.t_data Fol.d_pred -> Model1.M.t_data Fol.d_pred
val add_glob_decls : Fol.decl list -> Fol.decl list
end