sig
  type term = FOTerm.t
  type t
  val create : ?size:int -> unit -> t
  val clear : t -> unit
  val push : t -> unit
  val pop : t -> unit
  val stack_size : t -> int
  val find : t -> term -> term
  val iter : t -> (mem:term -> repr:term -> unit) -> unit
  val iter_roots : t -> (term -> unit) -> unit
  val mk_eq : t -> term -> term -> unit
  val mk_less : t -> term -> term -> unit
  val is_eq : t -> term -> term -> bool
  val is_less : t -> term -> term -> bool
  val cycles : t -> bool
end