type t
= private
{
}
val equal : t -> t -> bool
val compare : t -> t -> int
val hash : t -> int
val id : t -> Uid.t
val name : t -> string
val ty : t -> Type.t
val copy : ?skolem:bool -> t -> t
val map : (Type.t -> Type.t) -> t -> t
val with_ty : Type.t -> t -> t
val is_skolem : t -> bool
val make : ?skolem:bool -> Uid.t -> Type.t -> t
val of_string : ?skolem:bool -> string -> Type.t -> t
val make_f : ?skolem:bool -> ty:Type.t -> ('a, Stdlib.Format.formatter, unit, t) Stdlib.format4 -> 'a
val print : Stdlib.Format.formatter -> t -> unit
val print_name : Stdlib.Format.formatter -> t -> unit
val print_id : Stdlib.Format.formatter -> t -> unit
val to_string : t -> string
val to_string_name : t -> string
val chash : cb_id:(Uid.t -> unit) -> ?local:Uid.Chash_map.t -> t Imandra_util.Chash.hasher
val chash_bind : t -> Uid.Chash_map.t -> Uid.Chash_map.t
val chash_bind_l : t list -> Uid.Chash_map.t -> Uid.Chash_map.t
module Tbl : CCHashtbl.S with type Tbl.key = t
module Map : CCMap.S with type Map.key = t
module Set : CCSet.S with type Set.elt = t
val gen_var : fvars:Set.t -> Type.t -> t