sig
type +'a t = private { id : int; ty : 'a; }
type 'a hvar = 'a HVar.t
val make : ty:'a -> int -> 'a HVar.t
val id : 'a HVar.t -> int
val ty : 'a HVar.t -> 'a
val cast : 'a HVar.t -> ty:'b -> 'b HVar.t
val update_ty : 'a HVar.t -> f:('a -> 'b) -> 'b HVar.t
val compare : 'a HVar.t -> 'b HVar.t -> int
val equal : 'a HVar.t -> 'b HVar.t -> bool
val hash : 'a HVar.t -> int
val hash_fun : 'a HVar.t CCHash.hash_fun
val max : 'a HVar.t -> 'a HVar.t -> 'a HVar.t
val min : 'a HVar.t -> 'a HVar.t -> 'a HVar.t
val pp : 'a HVar.t CCFormat.printer
val to_string : 'a HVar.t -> string
val make_unsafe : ty:'a -> int -> 'a HVar.t
val fresh : ty:'a -> unit -> 'a HVar.t
end