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
- 
  
    
    KKilyan Le Gallic
- 
  
    
    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
- 
  
    
    CCécile Ruet-Cros
- 
  
    
    JJulien Signoles
- 
  
    
    NNicolas Stouls
- 
  
    
    KKostyantyn Vorobyov
- 
  
    
    BBoris Yakobowski
Maintainers
Sources
sha256=93a291a8764644df2f3618d7ea18258b5fbe0912ec98dfdfd180967afdf24474
    
    
  doc/frama-c-eva.core/Eva/Assigns/Memory/index.html
Module Assigns.Memory
include Frama_c_kernel.Lmap_bitwise.Location_map_bitwise
  with type v = DepsOrUnassigned.t
type v = DepsOrUnassigned.tinclude Frama_c_kernel.Datatype.S with type t = lmap
include Frama_c_kernel.Datatype.S_no_copy with type t = lmap
include Frama_c_kernel.Datatype.Ty with type t = lmap
type t = lmapinclude Frama_c_kernel.Lattice_type.Bounded_Join_Semi_Lattice with type t := t
include Frama_c_kernel.Lattice_type.Join_Semi_Lattice with type t := t
datatype of element of the lattice
include Frama_c_kernel.Datatype.S with type t := t
include Frama_c_kernel.Datatype.S_no_copy with type t := t
include Frama_c_kernel.Datatype.Ty with type t := t
val ty : t Frama_c_kernel.Type.tval descr : t Frama_c_kernel.Descr.tDatatype descriptor.
val packed_descr : Frama_c_kernel.Structural_descr.packPacked version of the descriptor.
val reprs : t listList of representants of the descriptor.
val hash : t -> intHash function: same spec than Hashtbl.hash.
val pretty : Format.formatter -> t -> unitPretty print each value in an user-friendly way.
val mem_project : (Frama_c_kernel.Project_skeleton.t -> bool) -> t -> boolmem_project f x must return true iff there is a value p of type Project.t in x such that f p returns true.
val bottom : tsmallest element
include Frama_c_kernel.Lattice_type.With_Top with type t := t
val top : tlargest element
module LOffset : 
  Frama_c_kernel.Offsetmap_bitwise_sig.S
    with type v = v
     and type intervals = Frama_c_kernel.Int_Intervals.tval is_empty : t -> boolval is_bottom : t -> boolval empty : tval empty_map : mapval pretty_generic_printer : 
  ?pretty_v:v Frama_c_kernel.Pretty_utils.formatter ->
  ?skip_v:(v -> bool) ->
  sep:string ->
  unit ->
  t Frama_c_kernel.Pretty_utils.formatterval pretty_debug : t Frama_c_kernel.Pretty_utils.formatterval add_base : Frama_c_kernel.Base.t -> LOffset.t -> t -> tval remove_base : Frama_c_kernel.Base.t -> t -> tval filter_base : (Frama_c_kernel.Base.t -> bool) -> t -> tIterators
val fold : 
  (Frama_c_kernel.Locations.Zone.t -> v -> 'a -> 'a) ->
  map ->
  'a ->
  'aThe following fold_* functions, as well as map2 take arguments of type map to force their user to handle the cases Top and Bottom explicitly.
fold f m folds a function f on the bindings in m. Contiguous bits with the same value are merged into a single zone. Different bases are presented in different zones.
val fold_base : 
  (Frama_c_kernel.Base.t -> LOffset.t -> 'a -> 'a) ->
  map ->
  'a ->
  'aval fold_fuse_same : 
  (Frama_c_kernel.Locations.Zone.t -> v -> 'a -> 'a) ->
  map ->
  'a ->
  'aSame behavior as fold, except if two non-contiguous ranges r1 and r2 of a given base are mapped to the same value. fold will call its argument f on each range successively (hence, in our example, on r1 and r2 separately). Conversely, fold_fuse_same will call f directly on r1 U r2, U being the join on sets of intervals.
val fold_join_zone : 
  both:(Frama_c_kernel.Int_Intervals.t -> LOffset.t -> 'a) ->
  conv:(Frama_c_kernel.Base.t -> 'a -> 'b) ->
  empty_map:(Frama_c_kernel.Locations.Zone.t -> 'b) ->
  join:('b -> 'b -> 'b) ->
  empty:'b ->
  Frama_c_kernel.Locations.Zone.t ->
  map ->
  'bfold_join_zone ~both ~conv ~empty_map ~join ~empty z m folds over the intervals present in z. When a base b is present in both z and m, and bound respectively to itvs and mb, both itvs mb is called. The results obtained for this base b are then converted using conv. If a sub-zone z' is present in z, but the corresponding bases are not bound in m, empty_map z' is called. All the sub-results (of type) 'b are joined using join. empty is used when an empty map or sub-zone is encountered. It must be a neutral element for join.
This function internally uses a cache, and must be partially applied to its named arguments. (This explains the somewhat contrived interface, in particular the fact that both and conv are not fused.)
val map2 : 
  cache:Frama_c_kernel.Hptmap_sig.cache_type ->
  symmetric:bool ->
  idempotent:bool ->
  empty_neutral:bool ->
  (LOffset.t -> LOffset.t -> LOffset.map2_decide) ->
  (v -> v -> v) ->
  map ->
  map ->
  map'map'-like function between two interval maps, implemented as a simultaneous descent in both maps. map2 ~cache ~symmetric ~idempotent ~empty_neutral decide_fast f m1 m2 computes the map containing k |-> f v_1 v_2 for all the keys k present in either m1 or m2. When a key is present, v_i is the corresponding value in the map. When it is missing in one of the maps, a default value is generated. (See argument default to functor Make_bitwise below.)
symmetric, idempotent, empty_neutral and decide_fast are present for optimisation purposes, to avoid visiting some trees. If symmetric holds, f v1 v2 = f v2 v1 must also holds. If idempotent holds, f v v = v must also holds. Similarly, if empty_neutral holds, f v default = f default v = v must hold. decide_fast is called before visiting two subtrees, and can be used to stop the recursion early. See the documentation of Offsetmap_sig.map2_decide.
Depending on the value of cache, the results of this function will be cached.
Misc
val shape : 
  map ->
  LOffset.t Frama_c_kernel.Hptmap.Shape(Frama_c_kernel.Base.Base).tval find : 
  t ->
  Frama_c_kernel.Locations.Zone.t ->
  Frama_c_kernel.Locations.Zone.tImprecise version of find, in which data and indirect dependencies are not distinguished
val find_precise : t -> Frama_c_kernel.Locations.Zone.t -> Deps.tPrecise version of find
val find_precise_loffset : 
  LOffset.t ->
  Frama_c_kernel.Base.t ->
  Frama_c_kernel.Int_Intervals.t ->
  Deps.tval add_binding : 
  exact:bool ->
  t ->
  Frama_c_kernel.Locations.Zone.t ->
  Deps.t ->
  tval add_binding_loc : 
  exact:bool ->
  t ->
  Frama_c_kernel.Locations.location ->
  Deps.t ->
  tval add_binding_precise_loc : 
  exact:bool ->
  Frama_c_kernel.Locations.access ->
  t ->
  Frama_c_kernel.Precise_locs.precise_location ->
  Deps.t ->
  t