Module Domains.Memory_sig

type 'a precision =
  1. | Empty
  2. | Singleton of 'a
  3. | Imprecise
exception Memory_Empty
module type Value = sig ... end

A scalar value stored inside a memory region. Should be a subset of Domain.Minimal + With_Binary.

module type With_Offset = sig ... end

Abstraction of an offset in a contiguous memory region.

module type Offset = sig ... end

A true domain dealing with offsets.

module type With_Address = sig ... end

Abstraction of an address, pointing to a region in a C-like memory model. The type adress is named binary for historical reasons, and also to help sharing with bitvectors in whole.

module type Address = sig ... end
module type With_Fixed_Size_Value = sig ... end

A fixed-size value is the type of values returned by C expressions or held in machine code registers, i.e. it is a bitvector containing an integer, pointer, floating point value, or contenation or extraction of other fixed-size values.

module type Fixed_size_value_domain = sig ... end

An abstract domain handling fixed-size values.

module type Memory_Queries = sig ... end
module type Region = sig ... end
module type Memory = sig ... end

Memory map adresses to values. These types may differ (for instance, an array functor can takes integer as adresses, but can contain any value).

module type Value_to_offset = sig ... end
module type Value_to_address = sig ... end
module type Address_to_Scalar = sig ... end
module type Offset_to_Scalar = sig ... end
module type Offset_Memory_domain = sig ... end
module type Memory_domain = sig ... end
module type Whole_Memory_domain = sig ... end

Like a Memory_domain, but we can do bitvector operations on addresses.