sig
  module V :
    sig
      type t = Abstract_interp.Int.t
      val pretty : Format.formatter -> Ival.Widen_Hints.V.t -> unit
      val compare : Ival.Widen_Hints.V.t -> Ival.Widen_Hints.V.t -> int
      val hash : Ival.Widen_Hints.V.t -> int
      module Datatype :
        sig
          type t = t
          val rehash : t -> t
          val descr : Unmarshal.t
          val copy : t -> t
          val name : string
          val register_comparable :
            ?compare:(t -> t -> int) ->
            ?equal:(t -> t -> bool) ->
            ?hash:(t -> int) -> ?physical_hash:(t -> int) -> unit -> unit
          val is_comparable_set : unit -> bool
          val hash : t -> int
          val physical_hash : t -> int
          val equal : t -> t -> bool
          val compare : t -> t -> int
          val contain_project : (Project.project -> t -> bool) option ref
        end
      val gt : Ival.Widen_Hints.V.t -> Ival.Widen_Hints.V.t -> bool
      val le : Ival.Widen_Hints.V.t -> Ival.Widen_Hints.V.t -> bool
      val ge : Ival.Widen_Hints.V.t -> Ival.Widen_Hints.V.t -> bool
      val lt : Ival.Widen_Hints.V.t -> Ival.Widen_Hints.V.t -> bool
      val eq : Ival.Widen_Hints.V.t -> Ival.Widen_Hints.V.t -> bool
      val add :
        Ival.Widen_Hints.V.t -> Ival.Widen_Hints.V.t -> Ival.Widen_Hints.V.t
      val sub :
        Ival.Widen_Hints.V.t -> Ival.Widen_Hints.V.t -> Ival.Widen_Hints.V.t
      val mul :
        Ival.Widen_Hints.V.t -> Ival.Widen_Hints.V.t -> Ival.Widen_Hints.V.t
      val native_div :
        Ival.Widen_Hints.V.t -> Ival.Widen_Hints.V.t -> Ival.Widen_Hints.V.t
      val rem :
        Ival.Widen_Hints.V.t -> Ival.Widen_Hints.V.t -> Ival.Widen_Hints.V.t
      val pos_div :
        Ival.Widen_Hints.V.t -> Ival.Widen_Hints.V.t -> Ival.Widen_Hints.V.t
      val c_div :
        Ival.Widen_Hints.V.t -> Ival.Widen_Hints.V.t -> Ival.Widen_Hints.V.t
      val c_rem :
        Ival.Widen_Hints.V.t -> Ival.Widen_Hints.V.t -> Ival.Widen_Hints.V.t
      val cast :
        size:Ival.Widen_Hints.V.t ->
        signed:bool -> value:Ival.Widen_Hints.V.t -> Ival.Widen_Hints.V.t
      val abs : Ival.Widen_Hints.V.t -> Ival.Widen_Hints.V.t
      val zero : Ival.Widen_Hints.V.t
      val one : Ival.Widen_Hints.V.t
      val two : Ival.Widen_Hints.V.t
      val four : Ival.Widen_Hints.V.t
      val minus_one : Ival.Widen_Hints.V.t
      val is_zero : Ival.Widen_Hints.V.t -> bool
      val is_one : Ival.Widen_Hints.V.t -> bool
      val equal : Ival.Widen_Hints.V.t -> Ival.Widen_Hints.V.t -> bool
      val pgcd :
        Ival.Widen_Hints.V.t -> Ival.Widen_Hints.V.t -> Ival.Widen_Hints.V.t
      val ppcm :
        Ival.Widen_Hints.V.t -> Ival.Widen_Hints.V.t -> Ival.Widen_Hints.V.t
      val min :
        Ival.Widen_Hints.V.t -> Ival.Widen_Hints.V.t -> Ival.Widen_Hints.V.t
      val max :
        Ival.Widen_Hints.V.t -> Ival.Widen_Hints.V.t -> Ival.Widen_Hints.V.t
      val length :
        Ival.Widen_Hints.V.t -> Ival.Widen_Hints.V.t -> Ival.Widen_Hints.V.t
      val of_int : int -> Ival.Widen_Hints.V.t
      val of_float : float -> Ival.Widen_Hints.V.t
      val of_int64 : Int64.t -> Ival.Widen_Hints.V.t
      val to_int : Ival.Widen_Hints.V.t -> int
      val to_float : Ival.Widen_Hints.V.t -> float
      val neg : Ival.Widen_Hints.V.t -> Ival.Widen_Hints.V.t
      val succ : Ival.Widen_Hints.V.t -> Ival.Widen_Hints.V.t
      val pred : Ival.Widen_Hints.V.t -> Ival.Widen_Hints.V.t
      val round_up_to_r :
        min:Ival.Widen_Hints.V.t ->
        r:Ival.Widen_Hints.V.t ->
        modu:Ival.Widen_Hints.V.t -> Ival.Widen_Hints.V.t
      val round_down_to_r :
        max:Ival.Widen_Hints.V.t ->
        r:Ival.Widen_Hints.V.t ->
        modu:Ival.Widen_Hints.V.t -> Ival.Widen_Hints.V.t
      val pos_rem :
        Ival.Widen_Hints.V.t -> Ival.Widen_Hints.V.t -> Ival.Widen_Hints.V.t
      val shift_left :
        Ival.Widen_Hints.V.t -> Ival.Widen_Hints.V.t -> Ival.Widen_Hints.V.t
      val shift_right :
        Ival.Widen_Hints.V.t -> Ival.Widen_Hints.V.t -> Ival.Widen_Hints.V.t
      val fold :
        (Ival.Widen_Hints.V.t -> '-> 'a) ->
        inf:Ival.Widen_Hints.V.t ->
        sup:Ival.Widen_Hints.V.t -> step:Ival.Widen_Hints.V.t -> '-> 'a
      val logand :
        Ival.Widen_Hints.V.t -> Ival.Widen_Hints.V.t -> Ival.Widen_Hints.V.t
      val logor :
        Ival.Widen_Hints.V.t -> Ival.Widen_Hints.V.t -> Ival.Widen_Hints.V.t
      val logxor :
        Ival.Widen_Hints.V.t -> Ival.Widen_Hints.V.t -> Ival.Widen_Hints.V.t
      val lognot : Ival.Widen_Hints.V.t -> Ival.Widen_Hints.V.t
      val power_two : int -> Ival.Widen_Hints.V.t
      val two_power : Ival.Widen_Hints.V.t -> Ival.Widen_Hints.V.t
      val extract_bits :
        with_alarms:CilE.warn_mode ->
        start:Ival.Widen_Hints.V.t ->
        stop:Ival.Widen_Hints.V.t ->
        Ival.Widen_Hints.V.t -> Ival.Widen_Hints.V.t
    end
  type elt = Ival.Widen_Hints.V.t
  type t
  val empty : Ival.Widen_Hints.t
  val is_empty : Ival.Widen_Hints.t -> bool
  val mem : Ival.Widen_Hints.elt -> Ival.Widen_Hints.t -> bool
  val add : Ival.Widen_Hints.elt -> Ival.Widen_Hints.t -> Ival.Widen_Hints.t
  val singleton : Ival.Widen_Hints.elt -> Ival.Widen_Hints.t
  val remove :
    Ival.Widen_Hints.elt -> Ival.Widen_Hints.t -> Ival.Widen_Hints.t
  val union : Ival.Widen_Hints.t -> Ival.Widen_Hints.t -> Ival.Widen_Hints.t
  val inter : Ival.Widen_Hints.t -> Ival.Widen_Hints.t -> Ival.Widen_Hints.t
  val diff : Ival.Widen_Hints.t -> Ival.Widen_Hints.t -> Ival.Widen_Hints.t
  val compare : Ival.Widen_Hints.t -> Ival.Widen_Hints.t -> int
  val equal : Ival.Widen_Hints.t -> Ival.Widen_Hints.t -> bool
  val subset : Ival.Widen_Hints.t -> Ival.Widen_Hints.t -> bool
  val iter : (Ival.Widen_Hints.elt -> unit) -> Ival.Widen_Hints.t -> unit
  val fold :
    (Ival.Widen_Hints.elt -> '-> 'a) -> Ival.Widen_Hints.t -> '-> 'a
  val for_all : (Ival.Widen_Hints.elt -> bool) -> Ival.Widen_Hints.t -> bool
  val exists : (Ival.Widen_Hints.elt -> bool) -> Ival.Widen_Hints.t -> bool
  val filter :
    (Ival.Widen_Hints.elt -> bool) ->
    Ival.Widen_Hints.t -> Ival.Widen_Hints.t
  val partition :
    (Ival.Widen_Hints.elt -> bool) ->
    Ival.Widen_Hints.t -> Ival.Widen_Hints.t * Ival.Widen_Hints.t
  val cardinal : Ival.Widen_Hints.t -> int
  val elements : Ival.Widen_Hints.t -> Ival.Widen_Hints.elt list
  val min_elt : Ival.Widen_Hints.t -> Ival.Widen_Hints.elt
  val max_elt : Ival.Widen_Hints.t -> Ival.Widen_Hints.elt
  val choose : Ival.Widen_Hints.t -> Ival.Widen_Hints.elt
  val split :
    Ival.Widen_Hints.elt ->
    Ival.Widen_Hints.t -> Ival.Widen_Hints.t * bool * Ival.Widen_Hints.t
  val nearest_elt_le :
    Ival.Widen_Hints.elt -> Ival.Widen_Hints.t -> Ival.Widen_Hints.elt
  val nearest_elt_ge :
    Ival.Widen_Hints.elt -> Ival.Widen_Hints.t -> Ival.Widen_Hints.elt
  val default_widen_hints : Ival.Widen_Hints.t
end