sig   type t   type attr   type domain   type elt   type event   val create : ?name:string -> domain -> t   val interval : ?name:string -> elt -> elt -> t   val array : ?name:string -> int -> elt -> elt -> t array   val elt : elt -> t   val is_var : t -> bool   val is_bound : t -> bool   val value : t -> (attr, elt) concrete   val min : t -> elt   val max : t -> elt   val min_max : t -> elt * elt   val elt_value : t -> elt   val int_value : t -> elt   val size : t -> int   val member : t -> elt -> bool   val id : t -> int   val name : t -> string   val compare : t -> t -> int   val equal : t -> t -> bool   val fprint : out_channel -> t -> unit   val fprint_array : out_channel -> t array -> unit   val unify : t -> elt -> unit   val refine : t -> domain -> unit   val refine_low : t -> elt -> unit   val refine_up : t -> elt -> unit   val refine_low_up : t -> elt -> elt -> unit   val on_refine : event   val on_subst : event   val on_min : event   val on_max : event   val delay : event list -> t -> ?waking_id:int -> Cstr.t -> unit   val int : elt -> t   val subst : t -> elt -> unit   val unify_cstr : t -> elt -> Cstr.t   val remove : t -> elt -> unit   val values : t -> elt list   val iter : (elt -> unit) -> t -> unit end