Expand description

This module defines traits describing general properties of abstract domains as well as several abstract domain types implementing these traits.

Structs

  • An abstract identifier is used to identify an object or a value in an abstract state.
  • The data contained in an abstract identifier
  • An abstract domain representing a set of base values plus offsets or an absolute value (or both).
  • A DomainMap<Key, Value, MapMergeStrategy> is a wrapper type around a BTreeMap<Key, Value> where the Value` type is an abstract domain and the map itself is also an abstract domain.
  • A MapMergeStrategy where the merge function only keeps keys that are present in both input maps.
  • A strided interval of values with a fixed byte size.
  • An abstract domain representing values in an interval range with strides and widening hints.
  • A memory region is an abstract domain representing a continuous region of memory, e.g. the stack frame of a function.
  • A MapMergeStrategy where for every key that only occurs in one input map of the merge function the corresponding value is merged with Top before being added to the merged map. Furthermore, keys whose values are merged to the Top value are removed from the merged map.
  • A MapMergeStrategy where key-value pairs whose key is only present in one input map are added to the merged map. Top values and their corresponding keys are also preserved in the merged map.

Enums

  • An abstract location describes how to find the value of a variable in memory at a given time.
  • An abstract memory location is either an offset from the given location, where the actual value can be found, or an offset to a pointer to another memory location, where the value can be found by (recursively) following the embedded target memory location.
  • The BitvectorDomain is a simple abstract domain describing a bitvector of known length.
  • The single brick domain that represents a set of character sequences as well as the minimum and maximum of the sum of their occurrences.
  • The BricksDomain contains a sorted list of single normalized BrickDomains. It represents the composition of a string through sub sequences.
  • The CharacterInclusionDomain is a abstract domain describing the characters a string certainly has and the characters a string may have.
  • A domain that represents character sets.

Traits

  • The main trait describing an abstract domain.
  • A set of functions that all abstract string domains should implement.
  • An abstract domain implementing this trait has a global maximum, i.e. a Top element.
  • A MapMergeStrategy determines how the merge-method for a DomainMap works.
  • A trait for abstract domains that can represent values loaded into CPU register.
  • A trait for types representing values with a fixed size (in bytes).
  • A trait for domains whose values can be restricted by knowing the result of a comparison of it with a known bitvector. The comparison may also be used to add widening hints to the domain.
  • A conversion trait for abstract domains that can represent register values.
  • A conversion trait for abstract domains that can represent register values.