sig
type id = ID.t
type +'ty t = private { id : Var.id; ty : 'ty; }
val equal : 'a Var.t -> 'a Var.t -> bool
val compare : 'a Var.t -> 'a Var.t -> int
val make : ty:'ty -> name:string -> 'ty Var.t
val makef :
ty:'ty ->
('b, Format.formatter, unit, 'ty Var.t) Pervasives.format4 -> 'b
val fresh_copy : 'ty Var.t -> 'ty Var.t
val fresh_copies : 'ty Var.t list -> 'ty Var.t list
val of_id : ty:'ty -> Var.id -> 'ty Var.t
val ty : 'ty Var.t -> 'ty
val id : 'a Var.t -> Var.id
val name : 'a Var.t -> string
val update_ty : 'a Var.t -> f:('a -> 'b) -> 'b Var.t
val set_ty : 'a Var.t -> ty:'b -> 'b Var.t
val fresh_update_ty : 'a Var.t -> f:('a -> 'b) -> 'b Var.t
val make_gen :
names:(int -> string, unit, string) Pervasives.format -> 'a -> 'a Var.t
val print : 'a Var.t CCFormat.printer
val to_string : 'a Var.t -> string
val print_full : 'a Var.t CCFormat.printer
val to_string_full : 'a Var.t -> string
module Subst :
sig
type 'a var = 'a Var.t
type (+'ty, +'a) t
val empty : ('a, 'b) Var.Subst.t
val is_empty : ('a, 'b) Var.Subst.t -> bool
val size : ('a, 'b) Var.Subst.t -> int
val singleton : 'ty Var.Subst.var -> 'a -> ('ty, 'a) Var.Subst.t
val add :
subst:('ty, 'a) Var.Subst.t ->
'ty Var.Subst.var -> 'a -> ('ty, 'a) Var.Subst.t
val add_list :
subst:('ty, 'a) Var.Subst.t ->
'ty Var.Subst.var list -> 'a list -> ('ty, 'a) Var.Subst.t
val concat :
('ty, 'a) Var.Subst.t ->
into:('ty, 'a) Var.Subst.t -> ('ty, 'a) Var.Subst.t
val of_list :
'ty Var.Subst.var list -> 'a list -> ('ty, 'a) Var.Subst.t
val remove :
subst:('ty, 'a) Var.Subst.t ->
'ty Var.Subst.var -> ('ty, 'a) Var.Subst.t
val deref_rec :
subst:('ty, 'ty Var.Subst.var) Var.Subst.t ->
'ty Var.Subst.var -> 'ty Var.Subst.var
val find_deref_rec :
subst:('ty, 'ty Var.Subst.var) Var.Subst.t ->
'ty Var.Subst.var -> 'ty Var.Subst.var option
val rename_var :
('a, 'a Var.Subst.var) Var.Subst.t ->
'a Var.Subst.var ->
('a, 'a Var.Subst.var) Var.Subst.t * 'a Var.Subst.var
val mem : subst:('ty, 'a) Var.Subst.t -> 'ty Var.Subst.var -> bool
val find :
subst:('ty, 'a) Var.Subst.t -> 'ty Var.Subst.var -> 'a option
val find_exn : subst:('ty, 'a) Var.Subst.t -> 'ty Var.Subst.var -> 'a
val find_or :
subst:('ty, 'a) Var.Subst.t -> default:'a -> 'ty Var.Subst.var -> 'a
val map :
f:('a -> 'b) -> ('ty, 'a) Var.Subst.t -> ('ty, 'b) Var.Subst.t
val to_list : ('ty, 'a) Var.Subst.t -> ('ty Var.Subst.var * 'a) list
val to_seq :
('ty, 'a) Var.Subst.t -> ('ty Var.Subst.var * 'a) Sequence.t
val print :
'a CCFormat.printer -> ('b, 'a) Var.Subst.t CCFormat.printer
end
module Set :
functor (Ty : sig type t end) ->
sig
type elt = Ty.t t
type t
val empty : t
val is_empty : t -> bool
val mem : elt -> t -> bool
val add : elt -> t -> t
val singleton : elt -> t
val remove : elt -> t -> t
val union : t -> t -> t
val inter : t -> t -> t
val diff : t -> t -> t
val compare : t -> t -> int
val equal : t -> t -> bool
val subset : t -> t -> bool
val iter : (elt -> unit) -> t -> unit
val fold : (elt -> 'a -> 'a) -> t -> 'a -> 'a
val for_all : (elt -> bool) -> t -> bool
val exists : (elt -> bool) -> t -> bool
val filter : (elt -> bool) -> t -> t
val partition : (elt -> bool) -> t -> t * t
val cardinal : t -> int
val elements : t -> elt list
val min_elt : t -> elt
val max_elt : t -> elt
val choose : t -> elt
val split : elt -> t -> t * bool * t
val find : elt -> t -> elt
val of_seq : elt CCSet.sequence -> t
val add_seq : t -> elt CCSet.sequence -> t
val to_seq : t -> elt CCSet.sequence
val of_list : elt list -> t
val add_list : t -> elt list -> t
val to_list : t -> elt list
val pp :
?start:string ->
?stop:string -> ?sep:string -> elt CCSet.printer -> t CCSet.printer
val print :
?start:string ->
?stop:string ->
?sep:string -> elt CCSet.formatter -> t CCSet.formatter
end
end