IntDomain0include module type of struct include IntDomain_intf endmodule type Arith = IntDomain_intf.Arithmodule type ArithIkind = IntDomain_intf.ArithIkindmodule type B = IntDomain_intf.BThe signature of integral value domains. They need to support all integer * operations that are allowed in C
module type IkindUnawareS = IntDomain_intf.IkindUnawareSInterface of IntDomain implementations that do not take ikinds for arithmetic operations yet. TODO: Should be ported to S in the future.
module type S = IntDomain_intf.SInterface of IntDomain implementations taking an ikind for arithmetic operations
module type SOverflow = IntDomain_intf.SOverflowmodule type Y = IntDomain_intf.YThe signature of integral value domains keeping track of ikind information
module type Z = IntDomain_intf.Zmodule type Ikind = IntDomain_intf.Ikindmodule type IntDomain = IntDomain_intf.IntDomainmodule M = Messagestype ana_int_config_values = {mutable interval_threshold_widening : bool option;mutable interval_narrow_by_meet : bool option;mutable def_exc_widen_by_join : bool option;mutable interval_threshold_widening_constants : string option;mutable refinement : string option;}Define records that hold mutable variables representing different Configuration values. * These values are used to keep track of whether or not the corresponding Config values are en-/disabled
val ana_int_config : ana_int_config_valuesWhether for a given ikind, we should compute with wrap-around arithmetic. * Always for unsigned types, for signed types if 'sem.int.signed_overflow' is 'assume_wraparound'
Whether for a given ikind, we should assume there are no overflows. * Always false for unsigned types, true for signed types if 'sem.int.signed_overflow' is 'assume_none'
module type Bitfield_SOverflow = sig ... endmodule IntDomLifter (I : S) : sig ... endmodule PtrDiffIkind : Ikindmodule Size : sig ... endmodule IntervalArith (Ints_t : IntOps.IntOps) : sig ... endmodule IntInvariant : sig ... endmodule IntIkind : sig ... endmodule Integers
(Ints_t : IntOps.IntOps) :
IkindUnawareS with type t = Ints_t.t and type int_t = Ints_t.tmodule FlatPureIntegers :
IkindUnawareS with type t = int64 and type int_t = int64module Flat
(Base : IkindUnawareS) :
IkindUnawareS
with type t = [ `Bot | `Lifted of Base.t | `Top ]
and type int_t = Base.int_tmodule Lift
(Base : IkindUnawareS) :
IkindUnawareS
with type t = [ `Bot | `Lifted of Base.t | `Top ]
and type int_t = Base.int_tmodule Flattened : sig ... endmodule Lifted : sig ... end