sig
  type elt = string
  type t
  val empty : Var.Vars.t
  val is_empty : Var.Vars.t -> bool
  val mem : Var.Vars.elt -> Var.Vars.t -> bool
  val add : Var.Vars.elt -> Var.Vars.t -> Var.Vars.t
  val singleton : Var.Vars.elt -> Var.Vars.t
  val remove : Var.Vars.elt -> Var.Vars.t -> Var.Vars.t
  val union : Var.Vars.t -> Var.Vars.t -> Var.Vars.t
  val inter : Var.Vars.t -> Var.Vars.t -> Var.Vars.t
  val diff : Var.Vars.t -> Var.Vars.t -> Var.Vars.t
  val compare : Var.Vars.t -> Var.Vars.t -> int
  val equal : Var.Vars.t -> Var.Vars.t -> bool
  val subset : Var.Vars.t -> Var.Vars.t -> bool
  val iter : (Var.Vars.elt -> unit) -> Var.Vars.t -> unit
  val fold : (Var.Vars.elt -> '-> 'a) -> Var.Vars.t -> '-> 'a
  val for_all : (Var.Vars.elt -> bool) -> Var.Vars.t -> bool
  val exists : (Var.Vars.elt -> bool) -> Var.Vars.t -> bool
  val filter : (Var.Vars.elt -> bool) -> Var.Vars.t -> Var.Vars.t
  val partition :
    (Var.Vars.elt -> bool) -> Var.Vars.t -> Var.Vars.t * Var.Vars.t
  val cardinal : Var.Vars.t -> int
  val elements : Var.Vars.t -> Var.Vars.elt list
  val min_elt : Var.Vars.t -> Var.Vars.elt
  val max_elt : Var.Vars.t -> Var.Vars.elt
  val choose : Var.Vars.t -> Var.Vars.elt
  val split : Var.Vars.elt -> Var.Vars.t -> Var.Vars.t * bool * Var.Vars.t
  val of_list : Var.Vars.elt list -> Var.Vars.t
  val print : Pervasives.out_channel -> Var.Vars.t -> unit
end