functor (S : SymbolType->
  sig
    type t = S.t
    val equal : t -> t -> bool
    val hash : t -> int
    val to_string : t -> string
    val make : S.t -> S.t
  end