Frama-C API - E_ACSL
module Analyses : sig ... endGeneral module for E-ACSL analyses
module Analyses_datatype : sig ... endDatatypes for analyses types
module Analyses_types : sig ... endTypes used by E-ACSL analyses
module Assert : sig ... endModule with the context to hold the data contributing to an assertion and general functions to create assertion statements.
module Assigns : sig ... endmodule Bimap : sig ... endA bijective hash map implementation based on a pair of hash tables
module Bound_variables : sig ... endmodule Build_pred_or_term : sig ... endmodule Builtins : sig ... endE-ACSL built-in database.
module Contract : sig ... endTranslate a given ACSL contract (function or statement) into the corresponding C statement for runtime assertion checking.
module Contract_types : sig ... endmodule E_acsl_visitor : sig ... endmodule Env : sig ... endmodule Error : sig ... endHandling errors.
module Exit_points : sig ... endE-ACSL tracks a local variable by injecting:
module Functions : sig ... endmodule Global_observer : sig ... endObservation of global variables.
module Gmp : sig ... endCalls to the GMP's API.
module Gmp_types : sig ... endGMP Values.
module Inductive : sig ... endThis module transforms inductive predicate definitions into "direct" predicate definitions (introduced by LBpred), a form that can then be translated into Cil. It is in general not clear how inductive definitions can be translated into an executable form. However for a restricted set of inductive definitions this can be achieved. This subset is constituted of generalized Horn clauses, described in the reference manual under the subsection Inductive predicates.
module Injector : sig ... endThe E-ACSL main instrumentation step.
module Interlang : sig ... endThe compilation of E-ACSL to Cil is implemented as a two-stage process, where E-ACSL is first translated into an intermediate language Interlang and only then into Cil. This module defines the E-ACSL intermediate language type, along with pretty printing functions.
module Interlang_build : sig ... endSmart constructors for building expressions of the intermediate language.
module Interlang_gen : sig ... endThe compilation of E-ACSL to Cil is implemented as a two-stage process, where E-ACSL is first translated into an intermediate language Interlang and only then into Cil. This module defines a monad M for specifying computations that generate Interlang expressions, and is thus used for the first stage.
module Interlang_trans : sig ... endThe compilation of E-ACSL to Cil currently has two different compilation schemes, the original direct-to-Cil compilation scheme, and the new compilation scheme, in which E-ACSL is first translated into an intermediate language Interlang and only then into Cil. The implementation of the new compilation scheme is not yet complete and will fail on many E-ACSL expressions. Therefore we supply in this module a function that tries first the new compilation schemes and only in case of failure applies the older one.
module Interval : sig ... endInterval inference for terms.
module Interval_utils : sig ... endmodule Labels : sig ... endPre-analysis for Labeled terms and predicates.
module Libc : sig ... endCode generation for libc functions
module Literal_strings : sig ... endAssociate literal strings to fresh varinfo.
module Logic_aggr : sig ... endUtilities function for aggregate types.
module Logic_array : sig ... endmodule Logic_functions : sig ... endGenerate C implementations of user-defined logic functions. A logic function can have multiple C implementations depending on the types computed for its arguments. Eg: Consider the following definition: integer g(integer x) = x with the following calls: g(5) and g(10*INT_MAX) They will respectively generate the C prototypes int g_1(int) and long g_2(long)
module Logic_normalizer : sig ... endThis module is dedicated to some preprocessing on the predicates:
module Loops : sig ... endLoop specific actions.
module Lscope : sig ... endmodule Main : sig ... endRegister the plugin in the Frama-C kernel. Nothing is exported.
module Memory_observer : sig ... endExtend the environment with statements which allocate/deallocate memory blocks.
module Memory_tracking : sig ... endCompute a sound over-approximation of what left-values must be tracked by the memory model library
module Memory_translate : sig ... endmodule Misc : sig ... endUtilities for E-ACSL.
module Monad_rws : sig ... endThis is an implementation the RWS monad. It is a monad to model computations with side-effects and environments in a purely functional and a safe manner. RWS stands for Reader, Writer, State.
module Options : sig ... endmodule Prepare_ast : sig ... endPrepare AST for E-ACSL generation.
module Quantif : sig ... endConvert quantifiers.
module Rte : sig ... endAccessing the RTE plug-in easily.
module Rtl : sig ... endThis module links the E-ACSL's RTL to the user source code.
module Smart_exp : sig ... endmodule Smart_stmt : sig ... endmodule Temporal : sig ... endTransformations to detect temporal memory errors (e.g., dereference of stale pointers).
module Translate_annots : sig ... endFunctions that translate a given ACSL annotation into the corresponding C statements (if any) for runtime assertion checking. These C statements are part of the resulting environment.
module Translate_ats : sig ... endGenerate C implementations of E-ACSL \at() terms and predicates.
module Translate_predicates : sig ... endGenerate C implementations of E-ACSL predicates.
module Translate_rtes : sig ... endGenerate and translate RTE annotations.
module Translate_terms : sig ... endGenerate C implementations of E-ACSL terms.
module Translate_utils : sig ... endUtility functions for generating C implementations.
module Translation_error : sig ... endmodule Typed_number : sig ... endManipulate the type of numbers.
module Typing : sig ... endType system which computes the smallest C type that may contain all the possible values of a given integer term or predicate. Also compute the required casts. It is based on interval inference of module Interval.
module Varname : sig ... endmodule Widening : sig ... end