sig
module Interp :
sig
val lval :
(Db_types.kernel_function ->
Cil_types.stmt -> string -> Cil_types.term_lval)
Pervasives.ref
val expr :
(Db_types.kernel_function ->
Cil_types.stmt -> string -> Cil_types.term)
Pervasives.ref
val term_lval_to_lval :
(result:Cil_types.varinfo option ->
Cil_types.term_lval -> Cil_types.lval)
Pervasives.ref
val term_to_lval :
(result:Cil_types.varinfo option -> Cil_types.term -> Cil_types.lval)
Pervasives.ref
val term_to_exp :
(result:Cil_types.varinfo option -> Cil_types.term -> Cil_types.exp)
Pervasives.ref
val loc_to_exp :
(result:Cil_types.varinfo option ->
Cil_types.term -> Cil_types.exp list)
Pervasives.ref
val loc_to_lval :
(result:Cil_types.varinfo option ->
Cil_types.term -> Cil_types.lval list)
Pervasives.ref
val identified_term_zone_to_loc :
(result:Cil_types.varinfo option ->
Db.Value.state ->
Cil_types.identified_term Cil_types.zone -> Locations.location)
Pervasives.ref
val loc_to_loc :
(result:Cil_types.varinfo option ->
Db.Value.state -> Cil_types.term -> Locations.location)
Pervasives.ref
val loc_to_offset :
(result:Cil_types.varinfo option ->
Cil_types.term -> Cil_types.offset list)
Pervasives.ref
val force_term_to_exp :
(Cil_types.term -> Cil_types.exp * Cilutil.opaque_term_env)
Pervasives.ref
val force_back_exp_to_term :
(Cilutil.opaque_term_env -> Cil_types.exp -> Cil_types.term)
Pervasives.ref
val force_exp_to_term :
(Cil_types.exp -> Cil_types.term) Pervasives.ref
val force_lval_to_term_lval :
(Cil_types.lval -> Cil_types.term_lval) Pervasives.ref
val force_term_offset_to_offset :
(Cil_types.term_offset -> Cil_types.offset * Cilutil.opaque_term_env)
Pervasives.ref
val force_back_offset_to_term_offset :
(Cilutil.opaque_term_env -> Cil_types.offset -> Cil_types.term_offset)
Pervasives.ref
val force_exp_to_predicate :
(Cil_types.exp -> Cil_types.predicate Cil_types.named) Pervasives.ref
val force_exp_to_assertion :
(Cil_types.exp -> Cil_types.code_annotation) Pervasives.ref
val force_term_lval_to_lval :
(Cil_types.term_lval -> Cil_types.lval * Cilutil.opaque_term_env)
Pervasives.ref
val force_back_lval_to_term_lval :
(Cilutil.opaque_term_env -> Cil_types.lval -> Cil_types.term_lval)
Pervasives.ref
val from_range_to_comprehension :
(Cil.visitor_behavior -> Project.t -> Cil_types.file -> unit)
Pervasives.ref
val range_to_comprehension :
(Cil_types.term -> Cil_types.term) Pervasives.ref
val from_comprehension_to_range :
(Cil.visitor_behavior -> Project.t -> Cil_types.file -> unit)
Pervasives.ref
val term_offset_to_offset :
(result:Cil_types.varinfo option ->
Cil_types.term_offset -> Cil_types.offset)
Pervasives.ref
module To_zone :
sig
type t_ctx = {
state_opt : bool option;
ki_opt : (Cil_types.stmt * bool) option;
kf : Kernel_function.t;
}
val mk_ctx_func_contrat :
(Db_types.kernel_function ->
state_opt:bool option -> Db.Properties.Interp.To_zone.t_ctx)
Pervasives.ref
val mk_ctx_stmt_contrat :
(Db_types.kernel_function ->
Cil_types.stmt ->
state_opt:bool option -> Db.Properties.Interp.To_zone.t_ctx)
Pervasives.ref
val mk_ctx_stmt_annot :
(Db_types.kernel_function ->
Cil_types.stmt ->
before:bool -> Db.Properties.Interp.To_zone.t_ctx)
Pervasives.ref
type t = {
before : bool;
ki : Cil_types.stmt;
zone : Locations.Zone.t;
}
type t_zone_info = Db.Properties.Interp.To_zone.t list option
type t_decl = Cil_datatype.Varinfo.Set.t
type t_pragmas = {
ctrl : Cil_datatype.Stmt.Set.t;
stmt : Cil_datatype.Stmt.Set.t;
}
val from_term :
(Cil_types.term ->
Db.Properties.Interp.To_zone.t_ctx ->
Db.Properties.Interp.To_zone.t_zone_info *
Db.Properties.Interp.To_zone.t_decl)
Pervasives.ref
val from_terms :
(Cil_types.term list ->
Db.Properties.Interp.To_zone.t_ctx ->
Db.Properties.Interp.To_zone.t_zone_info *
Db.Properties.Interp.To_zone.t_decl)
Pervasives.ref
val from_pred :
(Cil_types.predicate Cil_types.named ->
Db.Properties.Interp.To_zone.t_ctx ->
Db.Properties.Interp.To_zone.t_zone_info *
Db.Properties.Interp.To_zone.t_decl)
Pervasives.ref
val from_preds :
(Cil_types.predicate Cil_types.named list ->
Db.Properties.Interp.To_zone.t_ctx ->
Db.Properties.Interp.To_zone.t_zone_info *
Db.Properties.Interp.To_zone.t_decl)
Pervasives.ref
val from_zones :
(Cil_types.identified_term Cil_types.zone list ->
Db.Properties.Interp.To_zone.t_ctx ->
Db.Properties.Interp.To_zone.t_zone_info *
Db.Properties.Interp.To_zone.t_decl)
Pervasives.ref
val from_zone :
(Cil_types.identified_term Cil_types.zone ->
Db.Properties.Interp.To_zone.t_ctx ->
Db.Properties.Interp.To_zone.t_zone_info *
Db.Properties.Interp.To_zone.t_decl)
Pervasives.ref
val from_stmt_annot :
(Cil_types.code_annotation ->
before:bool ->
Cil_types.stmt * Db_types.kernel_function ->
(Db.Properties.Interp.To_zone.t_zone_info *
Db.Properties.Interp.To_zone.t_decl) *
Db.Properties.Interp.To_zone.t_pragmas)
Pervasives.ref
val from_stmt_annots :
((Db_types.rooted_code_annotation Db_types.before_after -> bool)
option ->
Cil_types.stmt * Db_types.kernel_function ->
(Db.Properties.Interp.To_zone.t_zone_info *
Db.Properties.Interp.To_zone.t_decl) *
Db.Properties.Interp.To_zone.t_pragmas)
Pervasives.ref
val from_func_annots :
(((Cil_types.stmt -> unit) -> Db_types.kernel_function -> unit) ->
(Db_types.rooted_code_annotation Db_types.before_after -> bool)
option ->
Db_types.kernel_function ->
(Db.Properties.Interp.To_zone.t_zone_info *
Db.Properties.Interp.To_zone.t_decl) *
Db.Properties.Interp.To_zone.t_pragmas)
Pervasives.ref
val code_annot_filter :
(Db_types.rooted_code_annotation Db_types.before_after ->
ai:bool ->
user_assert:bool ->
slicing_pragma:bool ->
loop_inv:bool -> loop_var:bool -> others:bool -> bool)
Pervasives.ref
end
val code_annot :
(Db_types.kernel_function ->
Cil_types.stmt -> before:bool -> string -> Cil_types.code_annotation)
Pervasives.ref
end
val synchronize_alarms : State.t list -> unit
val add_alarm :
Db_types.kernel_function ->
Cil_types.stmt -> State.t list -> Alarms.alarm -> unit
val add_assert :
Db_types.kernel_function ->
Cil_types.stmt -> State.t list -> before:bool -> string -> unit
end