package goblint

  1. Overview
  2. Docs
Static analysis framework for C

Install

Dune Dependency

Authors

Maintainers

Sources

goblint-2.1.0.tbz
sha256=bfc412ec2e447eaef6f4f83892e3511ebf305593cb00561c1406be3ae8bf48e9
sha512=5f2a162e5f36bffafc9836b0d18b5b2808cecfa6bf68f83bb7d1e8b9947ac74cf07776eb09274b4b29d55c897a45a10768f0d9ed25810cf6ba2409c525e4cd4d

doc/goblint.lib/Goblint_lib/ArrayDomain/index.html

Module Goblint_lib.ArrayDomain

type domain =
  1. | TrivialDomain
  2. | PartitionedDomain
  3. | UnrolledDomain
val get_domain : varAttr:GoblintCil.Cil.attributes -> typAttr:GoblintCil.Cil.attributes -> domain

gets the underlying domain: chosen by the attributes in AttributeConfiguredArrayDomain

val can_recover_from_top : domain -> bool

Some domains such as Trivial cannot recover from their value ever being top. ValueDomain handles intialization differently for these

module type S = sig ... end

Abstract domains representing arrays.

module type LatticeWithSmartOps = sig ... end
module Trivial (Val : Lattice.S) (Idx : Lattice.S) : S with type value = Val.t and type idx = Idx.t

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.

module TrivialWithLength (Val : Lattice.S) (Idx : IntDomain.Z) : S with type value = Val.t and type idx = Idx.t

This functor creates a trivial single cell representation of an array. The * indexing type is also used to manage the length.

module Partitioned (Val : LatticeWithSmartOps) (Idx : IntDomain.Z) : S with type value = Val.t and type idx = Idx.t

This functor creates an array representation that allows for partitioned arrays * Such an array can be partitioned according to an expression in which case it * uses three values from Val to represent the elements of the array to the left, * at, and to the right of the expression. The Idx domain is required only so to * have a signature that allows for choosing an array representation at runtime.

Like partitioned but additionally manages the length of the array.

Switches between PartitionedWithLength, TrivialWithLength and Unroll based on variable, type, and flag.

OCaml

Innovation. Community. Security.