sig
  module type SetType =
    sig
      type t
      val empty : BasicSetEquations.SetType.t
      val union :
        BasicSetEquations.SetType.t ->
        BasicSetEquations.SetType.t -> BasicSetEquations.SetType.t
      val inter :
        BasicSetEquations.SetType.t ->
        BasicSetEquations.SetType.t -> BasicSetEquations.SetType.t
      val diff :
        BasicSetEquations.SetType.t ->
        BasicSetEquations.SetType.t -> BasicSetEquations.SetType.t
      val is_empty : BasicSetEquations.SetType.t -> bool
      val equal :
        BasicSetEquations.SetType.t -> BasicSetEquations.SetType.t -> bool
      val print : BasicSetEquations.SetType.t -> string
    end
  module Make :
    functor (Set : SetType->
      sig
        type term
        val variable : Set.t -> BasicSetEquations.Make.term
        val svariable : unit -> BasicSetEquations.Make.term
        val empty : BasicSetEquations.Make.term
        val sum :
          Set.t -> BasicSetEquations.Make.term -> BasicSetEquations.Make.term
        val unify :
          BasicSetEquations.Make.term -> BasicSetEquations.Make.term -> unit
        exception Error
        val print : BasicSetEquations.Make.term -> string
      end
end