I'd like to raise a voice against using these immutable forms altogether. If the set S is immutable, then we aren't actually going to delete anything from anything by calling delete(S, x) - we're going to return a new set S' which has all the elements of S except x. Thus, a better name might be without(S, x), or it could be implemented as -(S, x) to allow for writing S' = S - x. Similarly, doing other things that can be done in place on mutable sets should not be called the same thing for immutable sets, since they aren't actually doing the same thing.
// Tomas
