sig
  type t
  val eq : V.t -> V.t -> bool
  val fold : (Term.t -> Term.t * Jst.t -> '-> 'a) -> V.t -> '-> 'a
  val pp : V.t Pretty.printer
  val find : V.t -> Jst.Eqtrans.t
  val cnstrnt : V.t -> Term.t -> Var.Cnstrnt.t * Jst.t
  val removable : V.t -> Term.Var.Set.t
  val is_equal : V.t -> Term.t -> Term.t -> Jst.t option
  val is_canonical : V.t -> Term.t -> bool
  val empty : V.t
  val is_empty : V.t -> bool
  val copy : V.t -> V.t
  val merge : Fact.Equal.t -> V.t -> unit
  val gc : (Term.t -> bool) -> V.t -> unit
  val garbage_collection_enabled : bool Pervasives.ref
  val accumulate : V.t -> (Term.t -> '-> 'a) -> Term.t -> '-> 'a
  val iter : V.t -> (Term.t -> unit) -> Term.t -> unit
  val exists : V.t -> (Term.t -> bool) -> Term.t -> bool
  val for_all : V.t -> (Term.t -> bool) -> Term.t -> bool
  val choose : V.t -> (Term.t -> 'a option) -> Term.t -> 'a
  val diff : V.t -> V.t -> V.t
end