let map f set = fold (fun x -> add (f x)) set empty