Module Operator.Concrete
Concrete interpreter using OCaml boolean and Z.t for values.
The interpreter values can be:
{true, false, empty}for booleans;- any
Z.toremptyfor integers; - the set of bitvectors (represented by
Z.t+ empty). Empty is not an error, just a special value representing the absence of value.
But, considering that whenever an argument is empty, the result is empty, we can build an interpreter by focusing on the non-empty values, and just return an exception for the (infrequent) empty cases.
module In_bits = Units.In_bitsmodule Types : sig ... endmodule Boolean_Interp : sig ... endmodule Bitvector_Interp : sig ... end