induction ls; intuition; simpl in *.
destruct (P a); simpl;
repeat rewrite (fold_add_init_nat _ _ (f a)).
rewrite IHls.
repeat rewrite plus_assoc.
trivial.
rewrite IHls.
repeat rewrite plus_assoc.
f_equal.
rewrite plus_comm.
trivial.
Qed.

Lemma fold_left_add_removePresent :
forall (B : Set)(eqd : eq_dec B)(f : B -> nat)(ls u : list B),
NoDup ls ->
NoDup u ->
fold_left (fun acc b => (acc + (f b))%nat) (removePresent eqd u ls) O =
minus
(fold_left (fun acc b => (acc + (f b))%nat) ls O)
(fold_left (fun acc b => (acc + (f b))%nat) (intersect eqd ls u) O).