sig
type +'a t = private { id : ID.t; ty : 'a; }
type 'a var = 'a Var.t
val make : ty:'a -> ID.t -> 'a Var.t
val of_string : ty:'a -> string -> 'a Var.t
val gensym : ty:'a -> unit -> 'a Var.t
val copy : 'a Var.t -> 'a Var.t
val update_ty : 'a Var.t -> f:('a -> 'b) -> 'b Var.t
val id : 'a Var.t -> ID.t
val ty : 'a Var.t -> 'a
val name : 'a Var.t -> string
val compare : 'a Var.t -> 'b Var.t -> int
val equal : 'a Var.t -> 'b Var.t -> bool
val hash : 'a Var.t -> int
val hash_fun : 'a Var.t CCHash.hash_fun
val pp : 'a Var.t CCFormat.printer
val to_string : 'a Var.t -> string
val pp_full : 'a Var.t CCFormat.printer
val pp_fullc : 'a Var.t CCFormat.printer
module Set :
sig
type +'a t
val is_empty : 'a Var.Set.t -> bool
val empty : 'a Var.Set.t
val add : 'a Var.Set.t -> 'a Var.var -> 'a Var.Set.t
val mem : 'a Var.Set.t -> 'a Var.var -> bool
val find : 'a Var.Set.t -> ID.t -> 'a Var.var option
val find_exn : 'a Var.Set.t -> ID.t -> 'a Var.var
val diff : 'a Var.Set.t -> 'a Var.Set.t -> 'a Var.Set.t
val of_seq : 'a Var.var Sequence.t -> 'a Var.Set.t
val to_seq : 'a Var.Set.t -> 'a Var.var Sequence.t
val to_list : 'a Var.Set.t -> 'a Var.var list
val cardinal : 'a Var.Set.t -> int
val pp : 'a Var.Set.t CCFormat.printer
end
module Subst :
sig
type (+'a, +'b) t
val empty : ('a, 'b) Var.Subst.t
val add :
('a, 'b) Var.Subst.t -> 'a Var.var -> 'b -> ('a, 'b) Var.Subst.t
val mem : ('a, 'b) Var.Subst.t -> 'a Var.var -> bool
val find : ('a, 'b) Var.Subst.t -> 'a Var.var -> 'b option
val find_exn : ('a, 'b) Var.Subst.t -> 'a Var.var -> 'b
val of_seq : ('a Var.var * 'b) Sequence.t -> ('a, 'b) Var.Subst.t
val to_list : ('a, 'b) Var.Subst.t -> ('a Var.var * 'b) list
val to_seq : ('a, 'b) Var.Subst.t -> ('a Var.var * 'b) Sequence.t
val pp : 'b CCFormat.printer -> ('a, 'b) Var.Subst.t CCFormat.printer
end
end