intuition.
eapply fold_add_iter_le; eauto.
Qed.
Fixpoint removeFirst(A : Set)(eqd : eq_dec A)(ls : list A) a :=
match ls with
| nil => nil
| a' :: ls' =>
if (eqd a a') then ls' else a' :: (removeFirst eqd ls' a)
end.

(* Specifications: *)
Lemma removeFirst_permutation : forall (A : Set)(eqd : eq_dec A)(ls : list A) a,
In a ls ->
Permutation ls (a :: (removeFirst eqd ls a)).