sig
  type t
  val create : unit -> t
  val copy : t -> t
  val clear : t -> unit
  val used : t -> string -> bool
  val fresh : t -> sanitizer:('-> string) -> ?suggest:bool -> '-> string
  val define : t -> string -> Lang.F.term -> unit
  val unfold : t -> Lang.F.term -> unit
  val shared : t -> Lang.F.term -> bool
  val shareable : t -> Lang.F.term -> bool
  val set_indexed_vars : t -> unit
  val iter : (string -> Lang.F.term -> unit) -> t -> unit
end