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-e-acsl.core/E_ACSL/Interval/index.html
Module E_ACSL.Interval
Interval inference for terms.
Compute the smallest interval that contains all the possible values of a given integer term. The interval of C variables is directly inferred from their C type. The interval of logic variables must be registered from outside before computing the interval of a term containing such variables (see module Interval.Env).
It implements Figure 3 of J. Signoles' JFLA'15 paper "Rester statique pour devenir plus rapide, plus précis et plus mince". Also implements a partial support for real numbers.
Example: consider a variable x of type int on a (strange) architecture in which values of type int belongs to the interval [-128;127] and a logic variable y which was registered in the environment with an interval [-32;31]. Then here are the intervals computed from the term 1+(x+1)/(y-64): 1. x in [128;127]; 2. x+1 in [129;128]; 3. y in [-32;31]; 4. y-64 in [-96;-33]; 5. (x+1)/(y-64) in [-3;3]; 6. 1+(x+1)/(y-64) in [-2;4]
Note: this is a partial wrapper on top of Ival.t, to which most functions are delegated.
type t = Analyses_types.ivalUseful operations on intervals
val ty_of_interv : 
  ?ctx:Analyses_types.number_ty ->
  ?use_gmp_opt:bool ->
  t ->
  Analyses_types.number_tyval is_included_in_typ : 
  Analyses_types.ival ->
  Frama_c_kernel.Cil_types.typ ->
  boolInference system
val get_from_profile : 
  profile:Analyses_datatype.Profile.t ->
  Frama_c_kernel.Cil_types.term ->
  tval get : 
  logic_env:Analyses_datatype.Logic_env.t ->
  Frama_c_kernel.Cil_types.term ->
  tval joins_from_profile : 
  profile:Analyses_datatype.Profile.t ->
  Frama_c_kernel.Cil_types.term list ->
  tval joins : 
  logic_env:Analyses_datatype.Logic_env.t ->
  Frama_c_kernel.Cil_types.term list ->
  tval join_plus_one : 
  profile:Analyses_datatype.Profile.t ->
  Frama_c_kernel.Cil_types.term ->
  Frama_c_kernel.Cil_types.term ->
  tval get_ival : 
  logic_env:Analyses_datatype.Logic_env.t ->
  Frama_c_kernel.Cil_types.term ->
  Frama_c_kernel.Ival.tInterval processing
val infer_program : Frama_c_kernel.Cil_types.file -> unitcompute and store the type of all the terms that will be translated in a program
val preprocess_predicate : 
  logic_env:Analyses_datatype.Logic_env.t ->
  Frama_c_kernel.Cil_types.predicate ->
  unitcompute and store the type of all the terms in a code annotation
val preprocess_code_annot : 
  logic_env:Analyses_datatype.Logic_env.t ->
  Frama_c_kernel.Cil_types.code_annotation ->
  unitcompute and store the type of all the terms in a code annotation
val preprocess_term : 
  logic_env:Analyses_datatype.Logic_env.t ->
  Frama_c_kernel.Cil_types.term ->
  unit