functor
  (S : sig
         type t
         val sexp_of_t : Utest.Debug_compare.t -> Sexplib.Sexp.t
         val t_of_sexp : Sexplib.Sexp.t -> Utest.Debug_compare.t
         val compare : Utest.Debug_compare.t -> Utest.Debug_compare.t -> int
       end->
  sig
    val equal : S.t -> S.t -> bool
    val compare : S.t -> S.t -> int
    val ascending : S.t -> S.t -> int
    val descending : S.t -> S.t -> int
    val min : S.t -> S.t -> S.t
    val max : S.t -> S.t -> S.t
    val ( >= ) : S.t -> S.t -> bool
    val ( <= ) : S.t -> S.t -> bool
    val ( = ) : S.t -> S.t -> bool
    val ( > ) : S.t -> S.t -> bool
    val ( < ) : S.t -> S.t -> bool
    val ( <> ) : S.t -> S.t -> bool
  end