Module type Memory_sig.ADDRESS
Representation of pointers inside some memory regions.
include AADT_WITH_BOOLEAN
include WITH_BOOLEAN_REDEFINITION with module Context = Scalar.Context
include Sig.With_Boolean_Forward
include Sig.With_Boolean
with type boolean := boolean
with module Context = Scalar.Context
module Context = Scalar.Contextmodule Boolean : Datatype_sig.S with type t = booleanval serialize_boolean :
Context.t ->
boolean ->
Context.t ->
boolean ->
'a Context.in_acc ->
(boolean, 'a) Context.resultEmpty 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.
module Boolean_Forward :
Operator.BOOLEAN_FORWARD
with module Arity := Sig.Context_Arity_Forward(Context)
and type boolean := booleanval query_boolean : Context.t -> boolean -> Lattices.Quadrivalent.tinclude WITH_ADDRESS with module Scalar := Scalar and type boolean := boolean
module Binary : Datatype_sig.S with type t = binaryval binary_pretty :
size:Units.In_bits.t ->
Scalar.Context.t ->
Stdlib.Format.formatter ->
binary ->
unitval binary_empty : size:Units.In_bits.t -> Scalar.Context.t -> binaryval satisfiable : Scalar.Context.t -> boolean -> Smtbackend.Smtlib_sig.satval serialize :
widens:bool ->
size:Units.In_bits.t ->
Scalar.Context.t ->
binary ->
Scalar.Context.t ->
binary ->
'a Scalar.Context.in_acc ->
(binary, 'a) Scalar.Context.resultSerialize functions also return their de-serializer.
val bchoose :
size:Units.In_bits.t ->
Operator.Choice.t ->
Scalar.Context.t ->
binary ->
binaryval bindex :
size:Units.In_bits.t ->
int ->
Scalar.Context.t ->
binary ->
Scalar.binary ->
binarybindex ~size k ctx address expr is address + k * expr
val bisub :
size:Units.In_bits.t ->
Scalar.Context.t ->
binary ->
binary ->
Scalar.binarypointer substraction.
val bshift :
size:Units.In_bits.t ->
offset:int ->
max:int option ->
Scalar.Context.t ->
binary ->
binarybshift ~size ~offset ~max ctx address is address + offset. In addition, further shifts/index are bounded by max.
val ble :
size:Units.In_bits.t ->
Scalar.Context.t ->
binary ->
binary ->
booleanPointer comparison.
val beq :
size:Units.In_bits.t ->
Scalar.Context.t ->
binary ->
binary ->
booleanval binary_unknown : size:Units.In_bits.t -> Scalar.Context.t -> binaryval binary_unknown_typed :
size:Units.In_bits.t ->
Scalar.Context.t ->
Types.TypedC.typ ->
binaryval check_type :
size:Units.In_bits.t ->
Scalar.Context.t ->
Types.TypedC.typ ->
binary ->
binary Types.Type_check_tree.tType check a binary value
val binary2scalar_binary :
size:Units.In_bits.t ->
Scalar.Context.t ->
binary ->
Scalar.binaryval type_of :
size:Units.In_bits.t ->
Scalar.Context.t ->
binary ->
Types.TypedC.typ optionReturns the type of a function, or None if unknown.
val within_bounds :
size:Units.In_bits.t ->
Scalar.Context.t ->
binary ->
booleanCheck that all array indices operation are within bound.
module Query : sig ... end