package frama-c
Install
Dune Dependency
Authors
-
MMichele Alberti
-
TThibaud Antignac
-
GGergö Barany
-
PPatrick Baudin
-
TThibaut Benjamin
-
AAllan Blanchard
-
LLionel Blatter
-
FFrançois Bobot
-
RRichard Bonichon
-
QQuentin Bouillaguet
-
DDavid Bühler
-
ZZakaria Chihani
-
LLoïc Correnson
-
JJulien Crétin
-
PPascal Cuoq
-
ZZaynah Dargaye
-
BBasile Desloges
-
JJean-Christophe Filliâtre
-
PPhilippe Herrmann
-
MMaxime Jacquemin
-
FFlorent Kirchner
-
AAlexander Kogtenkov
-
TTristan Le Gall
-
JJean-Christophe Léchenet
-
MMatthieu Lemerre
-
DDara Ly
-
DDavid Maison
-
CClaude Marché
-
AAndré Maroneze
-
TThibault Martin
-
FFonenantsoa Maurica
-
MMelody Méaulle
-
BBenjamin Monate
-
YYannick Moy
-
AAnne Pacalet
-
VValentin Perrelle
-
GGuillaume Petiot
-
DDario Pinto
-
VVirgile Prevosto
-
AArmand Puccetti
-
FFélix Ridoux
-
VVirgile Robles
-
MMuriel Roger
-
JJulien Signoles
-
NNicolas Stouls
-
KKostyantyn Vorobyov
-
BBoris Yakobowski
Maintainers
Sources
sha256=5b13574a16a58971c27909bee94ae7f37b17d897852b40c768a3d4e2e09e39d2
doc/frama-c-wp.core/Wp/WpPropId/index.html
Module Wp.WpPropId
Source
Beside the property identification, it can be found in different contexts * depending on which part of the computation is involved. * For instance, properties on loops are split in 2 parts : establishment and * preservation.
Property.t information and kind of PO (establishment, preservation, etc)
returns the annotation which lead to the given PO.
Properties that are False-if-unreachable in case the PO is valid.
Stmt that is unreachable in case the PO is valid.
test if the prop_id does not have a no_wp:
in its name(s).
test if the prop_id has to be selected for the asked names.
test if the prop_id has to be selected for the asked behavior names.
val select_call_pre :
Frama_c_kernel.Cil_types.stmt ->
Frama_c_kernel.Property.t option ->
prop_id ->
bool
test if the prop_id has to be selected when we want to select the call.
From a list of names (of an identified terms), returns usable names.
Print unique id of prop_id
are_selected_names asked names
checks if names
of a property are selected according to asked
names.
TODO: should probably be somewhere else
val num_of_bhv_from :
Frama_c_kernel.Cil_types.funbehavior ->
Frama_c_kernel.Cil_types.from ->
int
val mk_smoke :
Frama_c_kernel.Cil_types.kernel_function ->
id:string ->
?doomed:Frama_c_kernel.Property.t list ->
?unreachable:Frama_c_kernel.Cil_types.stmt ->
unit ->
prop_id
val mk_code_annot_ids :
Frama_c_kernel.Cil_types.kernel_function ->
Frama_c_kernel.Cil_types.stmt ->
Frama_c_kernel.Cil_types.code_annotation ->
prop_id list
val mk_assert_id :
Frama_c_kernel.Cil_types.kernel_function ->
Frama_c_kernel.Cil_types.stmt ->
Frama_c_kernel.Cil_types.code_annotation ->
prop_id
val mk_loop_inv_id :
Frama_c_kernel.Cil_types.kernel_function ->
Frama_c_kernel.Cil_types.stmt ->
established:bool ->
Frama_c_kernel.Cil_types.code_annotation ->
prop_id
Invariant establishment and preservation
val mk_loop_inv :
Frama_c_kernel.Cil_types.kernel_function ->
Frama_c_kernel.Cil_types.stmt ->
Frama_c_kernel.Cil_types.code_annotation ->
prop_id * prop_id
Invariant establishment and preservation, in this order
val mk_inv_hyp_id :
Frama_c_kernel.Cil_types.kernel_function ->
Frama_c_kernel.Cil_types.stmt ->
Frama_c_kernel.Cil_types.code_annotation ->
prop_id
Invariant used as hypothesis
val mk_var_decr_id :
Frama_c_kernel.Cil_types.kernel_function ->
Frama_c_kernel.Cil_types.stmt ->
Frama_c_kernel.Cil_types.code_annotation ->
prop_id
Variant decrease
val mk_var_pos_id :
Frama_c_kernel.Cil_types.kernel_function ->
Frama_c_kernel.Cil_types.stmt ->
Frama_c_kernel.Cil_types.code_annotation ->
prop_id
Variant positive
val mk_var_id :
Frama_c_kernel.Cil_types.kernel_function ->
Frama_c_kernel.Cil_types.stmt ->
Frama_c_kernel.Cil_types.code_annotation ->
prop_id
Variant for
val mk_loop_from_id :
Frama_c_kernel.Cil_types.kernel_function ->
Frama_c_kernel.Cil_types.stmt ->
Frama_c_kernel.Cil_types.code_annotation ->
Frama_c_kernel.Cil_types.from ->
prop_id
\from property of loop assigns. Must not be FromAny
val mk_bhv_from_id :
Frama_c_kernel.Cil_types.kernel_function ->
Frama_c_kernel.Cil_types.kinstr ->
string list ->
Frama_c_kernel.Cil_types.funbehavior ->
Frama_c_kernel.Cil_types.from ->
prop_id
\from property of function or statement behavior assigns. Must not be FromAny
val mk_fct_from_id :
Frama_c_kernel.Cil_types.kernel_function ->
bool ->
Frama_c_kernel.Cil_types.funbehavior ->
Frama_c_kernel.Cil_types.termination_kind ->
Frama_c_kernel.Cil_types.from ->
prop_id
\from property of function behavior assigns. Must not be FromAny
. The boolean indicate whether the function has exit node or not.
val mk_disj_bhv_id :
(Frama_c_kernel.Cil_types.kernel_function
* Frama_c_kernel.Cil_types.kinstr
* string list
* string list) ->
prop_id
disjoint behaviors property. See Property.ip_of_disjoint
for more information
val mk_compl_bhv_id :
(Frama_c_kernel.Cil_types.kernel_function
* Frama_c_kernel.Cil_types.kinstr
* string list
* string list) ->
prop_id
complete behaviors property. See Property.ip_of_complete
for more information
val mk_decrease_id :
Frama_c_kernel.Cil_types.kernel_function ->
Frama_c_kernel.Cil_types.kinstr ->
Frama_c_kernel.Cil_types.variant ->
prop_id
axiom identification
val mk_stmt_assigns_id :
Frama_c_kernel.Cil_types.kernel_function ->
Frama_c_kernel.Cil_types.stmt ->
string list ->
Frama_c_kernel.Cil_types.funbehavior ->
Frama_c_kernel.Cil_types.from list ->
prop_id option
val mk_loop_assigns_id :
Frama_c_kernel.Cil_types.kernel_function ->
Frama_c_kernel.Cil_types.stmt ->
Frama_c_kernel.Cil_types.code_annotation ->
Frama_c_kernel.Cil_types.from list ->
prop_id option
val mk_fct_assigns_id :
Frama_c_kernel.Cil_types.kernel_function ->
bool ->
Frama_c_kernel.Cil_types.funbehavior ->
Frama_c_kernel.Cil_types.termination_kind ->
Frama_c_kernel.Cil_types.from list ->
prop_id option
function assigns The boolean indicate whether the function has exit node or not.
val mk_terminates_id :
Frama_c_kernel.Cil_types.kernel_function ->
Frama_c_kernel.Cil_types.kinstr ->
Frama_c_kernel.Cil_types.identified_predicate ->
prop_id
val mk_call_pre_id :
Frama_c_kernel.Cil_types.kernel_function ->
Frama_c_kernel.Cil_types.stmt ->
Frama_c_kernel.Property.t ->
Frama_c_kernel.Property.t ->
prop_id
mk_call_pre_id called_kf s_call called_pre
type assigns_desc = private {
a_label : Clabels.c_label;
a_stmt : Frama_c_kernel.Cil_types.stmt option;
a_kind : a_kind;
a_assigns : Frama_c_kernel.Cil_types.assigns;
}
type assigns_full_info = private
| AssignsLocations of assigns_info
| AssignsAny of assigns_desc
| NoAssignsInfo
val mk_loop_assigns_desc :
Frama_c_kernel.Cil_types.stmt ->
Frama_c_kernel.Cil_types.from list ->
assigns_desc
val mk_stmt_assigns_desc :
Frama_c_kernel.Cil_types.stmt ->
Frama_c_kernel.Cil_types.from list ->
assigns_desc
mk_part pid (k, n)
build the identification for the k/n
part of pid
.
A proof accumulator for a set of related prop_id
accumulate in the proof the partial proof for this prop_id
add an invalid proof result ; can not revert a complete proof