package frama-c
Install
dune-project
Dependency
Authors
-
MMichele Alberti
-
TThibaud Antignac
-
GGergö Barany
-
PPatrick Baudin
-
NNicolas Bellec
-
TThibaut Benjamin
-
AAllan Blanchard
-
LLionel Blatter
-
FFrançois Bobot
-
RRichard Bonichon
-
VVincent Botbol
-
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
-
RRemi Lazarini
-
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=d2fbb3b8d0ff83945872e9e6fa258e934a706360e698dae3b4d5f971addf7493
doc/frama-c-wp.core/Wp/StmtSemantics/Make/argument-1-Compiler/C/index.html
Module Compiler.C
module M = MThe underlying memory model
type loc = M.loctype nonrec value = loc Sigs.valuetype nonrec result = loc Sigs.resulttype sigma = M.Sigma.tval pp_value : Format.formatter -> value -> unitval cval : value -> Lang.F.termEvaluate an abstract value. May fail because of M.pointer_val.
val cast :
Frama_c_kernel.Cil_types.typ ->
Frama_c_kernel.Cil_types.typ ->
value ->
valueApplies a pointer cast or a conversion.
cast tr te ve transforms a value ve with type te into a value with type tr.
val equal_typ : Frama_c_kernel.Cil_types.typ -> value -> value -> Lang.F.predComputes the value of (a==b) provided both a and b are values with the given type.
val not_equal_typ :
Frama_c_kernel.Cil_types.typ ->
value ->
value ->
Lang.F.predComputes the value of (a==b) provided both a and b are values with the given type.
val equal_obj : Ctypes.c_object -> value -> value -> Lang.F.predSame as equal_typ with an object type.
val not_equal_obj : Ctypes.c_object -> value -> value -> Lang.F.predSame as not_equal_typ with an object type.
val exp : sigma -> Frama_c_kernel.Cil_types.exp -> valueEvaluate the expression on the given memory state.
val cond : sigma -> Frama_c_kernel.Cil_types.exp -> Lang.F.predEvaluate the conditional expression on the given memory state.
val lval : sigma -> Frama_c_kernel.Cil_types.lval -> locEvaluate the left-value on the given memory state.
val call : sigma -> Frama_c_kernel.Cil_types.exp -> locAddress of a function pointer. Handles AddrOf, StartOf and Lval as usual.
val instance_of :
loc ->
Frama_c_kernel.Cil_types.kernel_function ->
Lang.F.predCheck whether a function pointer is (an instance of) some kernel function. Currently, the meaning of "being an instance of" is simply equality.
val loc_of_exp : sigma -> Frama_c_kernel.Cil_types.exp -> locCompile an expression as a location. May (also) fail because of M.pointer_val.
val val_of_exp : sigma -> Frama_c_kernel.Cil_types.exp -> Lang.F.termCompile an expression as a term. May (also) fail because of M.pointer_loc.
val result : sigma -> Frama_c_kernel.Cil_types.typ -> result -> Lang.F.termValue of an abstract result container.
val return :
sigma ->
Frama_c_kernel.Cil_types.typ ->
Frama_c_kernel.Cil_types.exp ->
Lang.F.termReturn an expression with a given type. Short cut for compiling the expression, cast into the desired type, and finally converted to a term.
val is_zero : sigma -> Ctypes.c_object -> loc -> Lang.F.predExpress that the object (of specified type) at the given location is filled with zeroes.
val is_exp_range :
sigma ->
loc ->
Ctypes.c_object ->
Lang.F.term ->
Lang.F.term ->
value option ->
Lang.F.predExpress that all objects in a range of locations have a given value.
More precisely, is_exp_range sigma loc ty a b v express that value at ( ty* )loc + k equals v, forall a <= k <= b. Value v=None stands for zero.
val unchanged :
M.sigma ->
M.sigma ->
Frama_c_kernel.Cil_types.varinfo ->
Lang.F.predExpress that a given variable has the same value in two memory states.
type warned_hyp = Warning.Set.t * (Lang.F.pred * Lang.F.pred)val init :
sigma:M.sigma ->
Frama_c_kernel.Cil_types.varinfo ->
Frama_c_kernel.Cil_types.init option ->
warned_hyp listExpress that some variable has some initial value at the given memory state. The first predicate states the value, the second, the initialization status.
Note: we DO NOT merge values and initialization status hypotheses as the factorization performed by Qed can make predicates too hard to simplify later.
Remark: None initializer are interpreted as zeroes. This is consistent with the init option associated with global variables in CIL, for which the default initializer are zeroes. This function is called for global initializers and local initializers (Cil.Local_init). It is not called for local variables without initializers as they do not have a Cil.init option.