Module Property


module Property: sig .. end
ACSL comparable property.
Since Carbon-20101201


type behavior_or_loop =
| Id_behavior of Cil_types.funbehavior
| Id_code_annot of Cil_types.code_annotation
assigns can belong either to a contract or a loop annotation
type identified_complete = Db_types.kernel_function * Cil_types.kinstr * string list 
type identified_disjoint = identified_complete 
type identified_code_annotation = Db_types.kernel_function * Cil_types.stmt * Cil_types.code_annotation 
Only AAssert, AInvariant, or APragma. Other code annotations are dispatched as identified_property of their own.
type identified_assigns = Db_types.kernel_function * Cil_types.kinstr * behavior_or_loop *
Cil_types.identified_term Cil_types.from list
type identified_from = Db_types.kernel_function * Cil_types.kinstr * behavior_or_loop *
(Cil_types.identified_term * Cil_types.identified_term list)
type identified_decrease = Db_types.kernel_function * Cil_types.kinstr *
Cil_types.code_annotation option * Cil_types.term Cil_types.variant
code_annotation is None for decreases and Some { AVariant } for loop variant.
type identified_behavior = Db_types.kernel_function * Cil_types.kinstr * Cil_types.funbehavior 

type predicate_kind =
| PKRequires of Cil_types.funbehavior
| PKAssumes of Cil_types.funbehavior
| PKEnsures of Cil_types.funbehavior * Cil_types.termination_kind
| PKTerminates
type identified_predicate = predicate_kind * Db_types.kernel_function * Cil_types.kinstr *
Cil_types.identified_predicate
type identified_spec = Db_types.kernel_function * Cil_types.kinstr * Cil_types.funspec 

type identified_property = private
| IPBlob of State.t
| IPPredicate of identified_predicate
| IPAxiom of string
| IPComplete of identified_complete
| IPDisjoint of identified_disjoint
| IPCodeAnnot of identified_code_annotation
| IPBehavior of identified_behavior
| IPAssigns of identified_assigns
| IPFrom of identified_from
| IPDecrease of identified_decrease
include Datatype.S_with_collections

Builders


val ip_of_behavior : Db_types.kernel_function ->
Cil_types.kinstr -> Cil_types.funbehavior -> identified_property
Builds an IPBehavior.
Since Carbon-20110201
val ip_of_requires : Db_types.kernel_function ->
Cil_types.kinstr ->
Cil_types.funbehavior ->
Cil_types.identified_predicate -> identified_property
IPPredicate of a single requires.
Since Carbon-20110201
val ip_requires_of_behavior : Db_types.kernel_function ->
Cil_types.kinstr ->
Cil_types.funbehavior -> identified_property list
Builds the IPPredicate corresponding to requires of a behavior.
Since Carbon-20110201
val ip_of_assumes : Db_types.kernel_function ->
Cil_types.kinstr ->
Cil_types.funbehavior ->
Cil_types.identified_predicate -> identified_property
IPPredicate of a single assumes.
Since Carbon-20110201
val ip_assumes_of_behavior : Db_types.kernel_function ->
Cil_types.kinstr ->
Cil_types.funbehavior -> identified_property list
Builds the IPPredicate corresponding to assumes of a behavior.
Since Carbon-20110201
val ip_of_ensures : Db_types.kernel_function ->
Cil_types.kinstr ->
Cil_types.funbehavior ->
Cil_types.termination_kind * Cil_types.identified_predicate ->
identified_property
IPPredicate of single ensures.
Since Carbon-20110201
val ip_ensures_of_behavior : Db_types.kernel_function ->
Cil_types.kinstr ->
Cil_types.funbehavior -> identified_property list
Builds the IPPredicate PKEnsures corresponding to a behavior.
Since Carbon-20110201
val ip_of_assigns : Db_types.kernel_function ->
Cil_types.kinstr ->
behavior_or_loop ->
Cil_types.identified_term Cil_types.assigns ->
identified_property option
Builds the corresponding IPAssigns.
Since Carbon-20110201
val ip_assigns_of_behavior : Db_types.kernel_function ->
Cil_types.kinstr ->
Cil_types.funbehavior -> identified_property option
Builds IPAssigns for a contract (if not WritesAny)
Since Carbon-20110201
val ip_of_from : Db_types.kernel_function ->
Cil_types.kinstr ->
behavior_or_loop ->
Cil_types.identified_term Cil_types.from ->
identified_property option
Builds the corresponding IPFrom.
Since Carbon-20110201
val ip_from_of_behavior : Db_types.kernel_function ->
Cil_types.kinstr ->
Cil_types.funbehavior -> identified_property list
Builds IPFrom for a contract (if not ReadsAny)
Since Carbon-20110201
val ip_assigns_of_code_annot : Db_types.kernel_function ->
Cil_types.kinstr ->
Cil_types.code_annotation -> identified_property option
Builds IPAssigns for a loop annotation (if not WritesAny)
Since Carbon-20110201
val ip_from_of_code_annot : Db_types.kernel_function ->
Cil_types.kinstr ->
Cil_types.code_annotation -> identified_property list
Builds IPFrom for a loop annotation(if not ReadsAny)
Since Carbon-20110201
val ip_post_cond_of_behavior : Db_types.kernel_function ->
Cil_types.kinstr ->
Cil_types.funbehavior -> identified_property list
Builds all IP related to the post-conditions (including assigns and from)
Since Carbon-20110201
val ip_all_of_behavior : Db_types.kernel_function ->
Cil_types.kinstr ->
Cil_types.funbehavior -> identified_property list
Builds all IP related to a behavior.
Since Carbon-20110201
val ip_of_complete : Db_types.kernel_function ->
Cil_types.kinstr -> string list -> identified_property
Builds IPComplete.
Since Carbon-20110201
val ip_complete_of_spec : Db_types.kernel_function ->
Cil_types.kinstr -> Cil_types.funspec -> identified_property list
Builds IPComplete of a given spec.
Since Carbon-20110201
val ip_of_disjoint : Db_types.kernel_function ->
Cil_types.kinstr -> string list -> identified_property
Builds IPDisjoint.
Since Carbon-20110201
val ip_disjoint_of_spec : Db_types.kernel_function ->
Cil_types.kinstr -> Cil_types.funspec -> identified_property list
Builds IPDisjoint of a given spec.
Since Carbon-20110201
val ip_of_terminates : Db_types.kernel_function ->
Cil_types.kinstr ->
Cil_types.identified_predicate -> identified_property
val ip_terminates_of_spec : Db_types.kernel_function ->
Cil_types.kinstr -> Cil_types.funspec -> identified_property option
Builds IPTerminates of a given spec.
Since Carbon-20110201
val ip_of_decreases : Db_types.kernel_function ->
Cil_types.kinstr ->
Cil_types.term Cil_types.variant -> identified_property
Builds IPDecrease
Since Carbon-20110201
val ip_decreases_of_spec : Db_types.kernel_function ->
Cil_types.kinstr -> Cil_types.funspec -> identified_property option
Builds IPDecrease of a given spec.
Since Carbon-20110201
val ip_post_cond_of_spec : Db_types.kernel_function ->
Cil_types.kinstr -> Cil_types.funspec -> identified_property list
Builds all IP of post-conditions related to a spec.
Since Carbon-20110201
val ip_of_spec : Db_types.kernel_function ->
Cil_types.kinstr -> Cil_types.funspec -> identified_property list
Builds all IP related to a spec.
Since Carbon-20110201
val ip_axiom : string -> identified_property
Builds an IPAxiom.
Since Carbon-20110201
val ip_blob : State.t -> identified_property
Builds an IPBlob.
Since Carbon-20110201
val ip_of_code_annot : Db_types.kernel_function ->
Cil_types.stmt ->
Cil_types.code_annotation -> identified_property list
Builds all IP related to a given code annotation. \
Since Carbon-20110201
val ip_of_code_annot_single : Db_types.kernel_function ->
Cil_types.stmt -> Cil_types.code_annotation -> identified_property
Builds the IP related to the code annotation. should be used only on code annotations returning a single ip, i.e. assert, invariant, variant, pragma.
Since Carbon-20110201
Raises Invalid_argument if the resulting code annotation has an empty set of identified property

getters


val get_kinstr : identified_property -> Cil_types.kinstr
val get_kf : identified_property -> Db_types.kernel_function option
val get_behavior : identified_property -> Cil_types.funbehavior option