sig
  type term = Var of Var.var | App of Symb.symbol * Term.term list
  val vars : Term.term -> Var.VarSet.t
  val vars_of_terms : Term.term list -> Var.VarSet.t
  val list_vars : Term.term -> Var.var list
  val list_vars_of_terms : Term.term list -> Var.var list
  val is_linear : Term.term -> bool
  val symbols : Term.term -> Symb.SymbolSet.t
  val symbols_of_terms : Term.term list -> Symb.SymbolSet.t
  val occurs : Var.var -> Term.term -> bool
  val fprintf : Format.formatter -> Term.term -> unit
  val rename : Var.var Var.VarMap.t -> Term.term -> Term.term
  val compare : Term.term -> Term.term -> int
  val eq : Term.term -> Term.term -> bool
  val linearize : Term.term -> Term.term * Var.var Var.VarMap.t
  val pr_term : Format.formatter -> Term.term -> unit
end