let rm_dup l =
  fold_left (fun nd x -> add_no_dup x nd) [] l