sig
type t =
Datatype.Option(Datatype.Integer).t *
Datatype.Option(Datatype.Integer).t
val ty : t Type.t
val name : string
val descr : t Descr.t
val packed_descr : Structural_descr.pack
val reprs : t list
val compare : t -> t -> int
val hash : t -> int
val pretty_code : Format.formatter -> t -> unit
val internal_pretty_code : Type.precedence -> Format.formatter -> t -> unit
val varname : t -> string
val mem_project : (Project_skeleton.t -> bool) -> t -> bool
val copy : t -> t
val pretty : Format.formatter -> t -> unit
val pretty_debug : Format.formatter -> t -> unit
val inject_range : int -> int -> t
val enlarge : Integer.t -> t -> t
val lift :
(Datatype.Integer.t -> Datatype.Integer.t -> Datatype.Integer.t) ->
(Datatype.Integer.t -> Datatype.Integer.t -> Datatype.Integer.t) ->
t -> t -> t
val equal : t -> t -> bool
val is_included : t -> t -> bool
val sub : t -> t -> t
val join : t -> t -> t
val add : t -> t -> t
val narrow : t -> t -> t Bottom.or_bottom
val succ : t -> t
val neg : t -> t
val mul_ct : Integer.t -> t -> t
val mul : t -> t -> t
val zero : Integer.t option * Integer.t option
val widen : ?threshold:Datatype.Integer.t -> t -> t -> t
val to_ival : t -> Ival.t
val from_ival : Ival.t -> t
type classify =
ContainsZero
| Positive of Integer.t * Integer.t option
| Negative of Integer.t option * Integer.t
val classify_sign : t -> Gauges_domain.G.Bounds.classify
val div_towards_minus_infty : Integer.t -> Integer.t -> Integer.t
val div_towards_plus_infty : Integer.t -> Integer.t -> Integer.t
val backward_nb :
b:t -> r:Ival.t -> [> `Value of Integer.t option * Integer.t option ]
end