Parameter MakeComplete.Block

include Memory_sig.AADT_WITH_BOOLEAN with module Scalar = Sub.Scalar
include Memory_sig.AADT with module Scalar = Sub.Scalar
module Scalar = Sub.Scalar
include Memory_sig.WITH_BOOLEAN_REDEFINITION with module Context = Scalar.Context
include Sig.With_Boolean_Forward
type boolean
include Sig.With_Boolean with type boolean := boolean with module Context = Scalar.Context
module Context = Scalar.Context
module Boolean : Datatype_sig.S with type t = boolean
val boolean_pretty : Context.t -> Stdlib.Format.formatter -> boolean -> unit
val serialize_boolean : Context.t -> boolean -> Context.t -> boolean -> 'a Context.in_acc -> (boolean, 'a) Context.result
val boolean_empty : Context.t -> boolean

Empty denotes that the concretization has no value (or it is the concrete value representing the absence of value). Note that this does not necessarily imply that some error occured; for instance the offset of an uninitialized pointer can be represented with empty. Emptyness testing is a simple way of communicating between domains.

val boolean_unknown : Context.t -> boolean
val query_boolean : Context.t -> boolean -> Lattices.Quadrivalent.t
val assume : Context.t -> boolean -> Context.t option
module Offset : Memory_sig.OFFSET with module Scalar = Scalar
module Value = Sub.Address
type offset = Offset.offset
type block
val pretty : Context.t -> Stdlib.Format.formatter -> block -> unit
include Operator.BLOCK_FORWARD with module Arity := Sig.Context_Arity_Forward(Context) and type boolean := boolean and type value := Value.binary and type block := block and type offset := offset

Size of a block in bytes

Concatenates two blocks

Loads (extracts) a value of a fixed size at a given index from a block

Stores (writes) a fixed size value of a given index in a block

Converts a fixed size value to a block

val addresses_in_block : Context.t -> block -> Context.t -> block -> (Value.binary * Value.binary) list
val serialize : widens:bool -> Context.t -> block -> Context.t -> block -> 'a Context.in_acc -> (block, 'a) Context.result
val initial : Context.t -> Units.In_bytes.t -> block

Create an initial region of size int (in bytes). Only meaning full for memories that are a single contiguous region

val unknown : level:int -> Context.t -> block
val block_empty : Context.t -> block

An empty region, with no bound offset.

val block_unknown_typed : Context.t -> Types.TypedC.typ -> block

Returns an unknown block value with a given type.

Type check a block value