(* Sets over types ordered with the default ordering *) type 'a t val empty: 'a t val mem: 'a -> 'a t -> bool val add: 'a -> 'a t -> 'a t val remove: 'a -> 'a t -> 'a t val elements: 'a t -> 'a list