package goblint
Install
    
    dune-project
 Dependency
Authors
Maintainers
Sources
sha256=99b78e6def71534d195eef9084baa26d8334b36084e120aa6afb300c9bf8afa6
    
    
  sha512=f3162bd95a03c00358a2991f6152fc6169205bfb4c55e2c483e98cc3935673df9656d025b6f1ea0fa5f1bd0aee037d4f483966b0d2907e3fa9bf11a93a3392af
    
    
  doc/goblint_cdomain_value/ArrayDomain/Trivial/index.html
Module ArrayDomain.Trivial
This functor creates a trivial single cell representation of an array. The * indexing type is taken as a parameter to satisfy the type system, it is not * used in the implementation.
Parameters
module Val : LatticeWithInvalidateSignature
include S0 with type value = Val.t with type idx = Idx.t
include Lattice.S
include Lattice.PO
include Printable.S
val hash : t -> intval show : t -> stringval pretty : unit -> t -> Printable.Pretty.docval printXml : 'a BatInnerIO.output -> t -> unitval to_yojson : t -> Yojson.Safe.tval tag : t -> intUnique ID, given by HConsed, for context identification in witness
val arbitrary : unit -> t QCheck.arbitrarywiden x y assumes leq x y. Solvers guarantee this by calling widen old (join old new).
val bot : unit -> tval is_bot : t -> boolval top : unit -> tval is_top : t -> booltype idx = Idx.tThe abstract domain used to index on arrays.
type value = Val.tThe abstract domain of values stored in the array.
Returns a new abstract value, where the given index is replaced with the * given element.
val make : 
  ?varAttr:GoblintCil.Cil.attributes ->
  ?typAttr:GoblintCil.Cil.attributes ->
  idx ->
  value ->
  tmake l e creates an abstract representation of an array of length l * containing the element e.
val move_if_affected : 
  ?replace_with_const:bool ->
  VDQ.t ->
  t ->
  GoblintCil.Cil.varinfo ->
  (GoblintCil.Cil.exp -> int option) ->
  tchanges the way in which the array is partitioned if this is necessitated by a change * to the variable *
val get_vars_in_e : t -> GoblintCil.Cil.varinfo listreturns the variables occuring in the expression according to which the * array was partitioned (if any)
Left fold (like List.fold_left) over the arrays elements
val smart_join : 
  (GoblintCil.Cil.exp -> IntOps.BigIntOps.t option) ->
  (GoblintCil.Cil.exp -> IntOps.BigIntOps.t option) ->
  t ->
  t ->
  tval smart_widen : 
  (GoblintCil.Cil.exp -> IntOps.BigIntOps.t option) ->
  (GoblintCil.Cil.exp -> IntOps.BigIntOps.t option) ->
  t ->
  t ->
  tval smart_leq : 
  (GoblintCil.Cil.exp -> IntOps.BigIntOps.t option) ->
  (GoblintCil.Cil.exp -> IntOps.BigIntOps.t option) ->
  t ->
  t ->
  boolval invariant : 
  value_invariant:
    (offset:GoblintCil.Cil.offset ->
      lval:GoblintCil.Cil.lval ->
      value ->
      Invariant.t) ->
  offset:GoblintCil.Cil.offset ->
  lval:GoblintCil.Cil.lval ->
  t ->
  Invariant.tval get : 
  ?checkBounds:bool ->
  VDQ.t ->
  t ->
  (Basetype.CilExp.t option * idx) ->
  valueReturns the element residing at the given index.