Module type Std.Value

Abstract value.

Anything isomorphic to the value, is a value. Since we define isomorphism modulo the machine monad it is possible to define abstract types that could be easily embedded in the Primus runtime value representation.

type t
type 'a m

to_value x injects x into the value domain

val to_value : t -> Bap_primus.Std.Primus.value m

to_value x injects x into the value domain

val of_value : Bap_primus.Std.Primus.value -> t m

of_value v project the value v to the abstract domain of t