package frama-c
Install
dune-project
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
-
PPierre Nigron
-
AAnne Pacalet
-
VValentin Perrelle
-
GGuillaume Petiot
-
DDario Pinto
-
VVirgile Prevosto
-
AArmand Puccetti
-
FFélix Ridoux
-
VVirgile Robles
-
JJan Rochel
-
MMuriel Roger
-
JJulien Signoles
-
NNicolas Stouls
-
KKostyantyn Vorobyov
-
BBoris Yakobowski
Maintainers
Sources
sha256=29612882330ecb6eddd0b4ca3afc0492b70d0feb3379a1b8e893194c6e173983
doc/frama-c-eva.gui/Eva_gui/Gui_eval/Make/argument-1-X/Eval/index.html
Module X.Eval
type state = Dom.tState of abstract domain.
type value = Val.tNumeric values to which the expressions are evaluated.
type origin = Dom.originOrigin of values.
type loc = Loc.locationLocation of an lvalue.
module Valuation :
Eva.Eval.Valuation
with type value = value
and type origin = origin
and type loc = locResults of an evaluation: the results of all intermediate calculation (the value of each expression and the location of each lvalue) are cached here. See Eval for more details.
val to_domain_valuation :
Valuation.t ->
(value, loc, origin) Eva__.Abstract_domain.valuationEvaluation functions store the results of an evaluation into Valuation.t maps. Abstract domains read these results from Abstract_domain.valuation records. This function converts the former into the latter.
val evaluate :
?valuation:Valuation.t ->
?reduction:bool ->
?subdivnb:int ->
state ->
Frama_c_kernel.Cil_types.exp ->
(Valuation.t * value) Eva.Eval.evaluatedevaluate ~valuation state expr evaluates the expression expr in the state state, and returns the pair result, alarms, where:
alarmsare the set of alarms ensuring the soundness of the evaluation;resultis either `Bottom if the evaluation leads to an error, or `Value (valuation, value), wherevalueis the numeric value computed for the expressionexpr, andvaluationcontains all the intermediate results of the evaluation.
Optional arguments are:
valuationis a cache of already computed expressions; empty by default.reductionallows the deactivation of the backward reduction performed after the forward evaluation; true by default.subdivnbis the maximum number of subdivisions performed on non-linear sub-expressions ofexpr. If a lvalue occurs several times inexpr, its value can be split up tosubdivnbtimes to gain more precision. Set to the value of the option -eva-subdivide-non-linear by default.
val copy_lvalue :
?valuation:Valuation.t ->
?subdivnb:int ->
state ->
Frama_c_kernel.Cil_types.lval ->
(Valuation.t * value Eva.Eval.flagged_value) Eva.Eval.evaluatedComputes the value of a lvalue, with possible indeterminateness: the returned value may be uninitialized, or contain escaping addresses. Also returns the alarms resulting of the evaluation of the lvalue location, and a valuation containing all the intermediate results of the evaluation. The valuation argument is a cache of already computed expressions. It is empty by default. subdivnb is the maximum number of subdivisions performed on non-linear expressions.
val lvaluate :
?valuation:Valuation.t ->
?subdivnb:int ->
for_writing:bool ->
state ->
Frama_c_kernel.Cil_types.lval ->
(Valuation.t * loc * Frama_c_kernel.Cil_types.typ) Eva.Eval.evaluatedlvaluate ~valuation ~for_writing state lval evaluates the left value lval in the state state. Same general behavior as evaluate above but evaluates the lvalue into a location and its type. The boolean for_writing indicates whether the lvalue is evaluated to be read or written. It is useful for the emission of the alarms, and for the reduction of the location. subdivnb is the maximum number of subdivisions performed on non-linear expressions (including the possible pointer and offset of the lvalue).
val reduce :
?valuation:Valuation.t ->
state ->
Frama_c_kernel.Cil_types.exp ->
bool ->
Valuation.t Eva.Eval.evaluatedreduce ~valuation state expr positive evaluates the expression expr in the state state, and then reduces the valuation such that the expression expr evaluates to a zero or a non-zero value, according to positive. By default, the empty valuation is used.
val assume :
?valuation:Valuation.t ->
state ->
Frama_c_kernel.Cil_types.exp ->
value ->
Valuation.t Eva.Eval.or_bottomassume ~valuation state expr value assumes in the valuation that the expression expr has the value value in the state state, and backward propagates this information to the subterm of expr. If expr has not been already evaluated in the valuation, its forward evaluation takes place first, but the alarms are dismissed. By default, the empty valuation is used. The function returns the updated valuation, or bottom if it discovers a contradiction.
val eval_function_exp :
?subdivnb:int ->
Frama_c_kernel.Cil_types.exp ->
?args:Frama_c_kernel.Cil_types.exp list ->
state ->
(Frama_c_kernel.Kernel_function.t * Valuation.t) list Eva.Eval.evaluatedEvaluation of the function argument of a Call constructor
val interpret_truth :
alarm:(unit -> Frama_c_kernel.Alarms.t) ->
'a ->
[ `False | `Unknown of 'a | `True | `TrueReduced of 'a | `Unreachable ] ->
'a Eva.Eval.evaluated