Module Db.Properties.Interp


module Interp: sig .. end
Interpretation of logic terms.


From C terms to logic terms


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

From logic terms to C terms


val term_lval_to_lval : (Cil_types.term_lval -> Cil_types.lval) Pervasives.ref
Raises Invalid_argument if the argument is not a left value.
val term_to_lval : (Cil_types.term -> Cil_types.lval) Pervasives.ref
Raises Invalid_argument if the argument is not a left value.
val term_to_exp : (Cil_types.term -> Cil_types.exp) Pervasives.ref
Raises Invalid_argument if the argument is not a valid expression.
val loc_to_exp : (Cil_types.term -> Cil_types.exp list) Pervasives.ref
returns a list of C expressions.
Raises Invalid_argument if the argument is not a valid set of expressions.
val loc_to_lval : (Cil_types.term -> Cil_types.lval list) Pervasives.ref
returns a list of C locations.
Raises Invalid_argument if the argument is not a valid set of left values
val identified_term_zone_to_loc : (Db.Value.state ->
Cil_types.identified_term Cil_types.zone -> Locations.location)
Pervasives.ref
returns a Locations.Location
Raises Invalid_argument in some cases. Complain if you'd like more cases to be treated. A bottle of single malt may help.
val loc_to_loc : (Db.Value.state -> Cil_types.term -> Locations.location) Pervasives.ref
returns a Locations.Location
Raises Invalid_argument in some cases. See identified_term_to_loc
val loc_to_offset : (Cil_types.term -> Cil_types.offset list) Pervasives.ref
returns a list of C offset provided the term denotes location who have all the same base address.
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.location -> Cil_types.exp -> Cil_types.term) Pervasives.ref
val force_lval_to_term_lval : (Cil_types.location -> 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.location -> Cil_types.exp -> Cil_types.predicate Cil_types.named)
Pervasives.ref
val force_exp_to_assertion : (Cil_types.location -> 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 : (Cil_types.term_offset -> Cil_types.offset) Pervasives.ref
Raises Invalid_argument if the argument is not a valid offset.

From logic terms to Zone.t


module To_zone: sig .. end

Internal use only


val code_annot : (Db_types.kernel_function ->
Cil_types.stmt -> before:bool -> string -> Cil_types.code_annotation)
Pervasives.ref