sig
  type t = Hstring.t
  type subst = (Variable.t * Variable.t) list
  module Set :
    sig
      type elt = t
      type t
      val empty : t
      val is_empty : t -> bool
      val mem : elt -> t -> bool
      val add : elt -> t -> t
      val singleton : elt -> t
      val remove : elt -> t -> t
      val union : t -> t -> t
      val inter : t -> t -> t
      val diff : t -> t -> t
      val compare : t -> t -> int
      val equal : t -> t -> bool
      val subset : t -> t -> bool
      val iter : (elt -> unit) -> t -> unit
      val map : (elt -> elt) -> t -> t
      val fold : (elt -> '-> 'a) -> t -> '-> 'a
      val for_all : (elt -> bool) -> t -> bool
      val exists : (elt -> bool) -> t -> bool
      val filter : (elt -> bool) -> t -> t
      val partition : (elt -> bool) -> t -> t * t
      val cardinal : t -> int
      val elements : t -> elt list
      val min_elt : t -> elt
      val min_elt_opt : t -> elt option
      val max_elt : t -> elt
      val max_elt_opt : t -> elt option
      val choose : t -> elt
      val choose_opt : t -> elt option
      val split : elt -> t -> t * bool * t
      val find : elt -> t -> elt
      val find_opt : elt -> t -> elt option
      val find_first : (elt -> bool) -> t -> elt
      val find_first_opt : (elt -> bool) -> t -> elt option
      val find_last : (elt -> bool) -> t -> elt
      val find_last_opt : (elt -> bool) -> t -> elt option
      val of_list : elt list -> t
    end
  val compare : Variable.t -> Variable.t -> int
  val compare_list : Variable.t list -> Variable.t list -> int
  val procs : Variable.t list
  val proc_vars_int : int list
  val alphas : Variable.t list
  val freshs : Variable.t list
  val number : Variable.t -> int
  val is_proc : Variable.t -> bool
  val build_subst : Variable.t list -> Variable.t list -> Variable.subst
  val subst : Variable.subst -> Variable.t -> Variable.t
  val is_subst_identity : Variable.subst -> bool
  val well_formed_subst : Variable.subst -> bool
  val all_permutations : 'a list -> 'a list -> ('a * 'a) list list
  val all_instantiations :
    Variable.t list -> Variable.t list -> Variable.subst list
  val all_arrangements : int -> Variable.t list -> Variable.t list list
  val all_arrangements_arity :
    Hstring.t -> Variable.t list -> Variable.t list list
  val permutations_missing :
    Variable.t list -> Variable.t list -> Variable.subst list
  val extra_vars : Variable.t list -> Variable.t list -> Variable.t list
  val extra_procs : Variable.t list -> Variable.t list -> Variable.t list
  val append_extra_procs :
    Variable.t list -> Variable.t list -> Variable.t list
  val give_procs : int -> Variable.t list
  val print : Format.formatter -> Variable.t -> unit
  val print_vars : Format.formatter -> Variable.t list -> unit
  val print_subst : Format.formatter -> Variable.subst -> unit
end