Module IntDomain_intf

type overflow_info = {
  1. overflow : bool;
  2. underflow : bool;
}
module type Arith = sig ... end
module type ArithIkind = sig ... end
module type B = sig ... end

The signature of integral value domains. They need to support all integer * operations that are allowed in C

module type IkindUnawareS = sig ... end

Interface of IntDomain implementations that do not take ikinds for arithmetic operations yet. TODO: Should be ported to S in the future.

module type S = sig ... end

Interface of IntDomain implementations taking an ikind for arithmetic operations

module type SOverflow = sig ... end
module type Y = sig ... end

The signature of integral value domains keeping track of ikind information

module type Z = Y with type int_t = Z.t
module type Ikind = sig ... end
module type IntDomain = sig ... end