Module OrderedType

module type S = sig ... end
module Pair (M : S) (N : S) : S with type t = M.t * N.t
module UnorderedPair (M : S) : S with type t = M.t * M.t