intuition.
assert (pred_count P (a :: (removeFirst eqd ls a)) c).
eapply pred_count_permutation.
eapply removeFirst_permutation.
trivial.
trivial.
inversion H4; clear H4; subst.
assert (n = 0)%nat.
eapply pred_count_eq_none_inv.
eauto.
intuition.
eapply H3.
eapply removeFirst_in_iff.
eauto.
assert (~In a (removeFirst eqd ls a)).
eapply removeFirst_NoDup_not_in.
trivial.
intuition; subst; intuition.
trivial.
omega.
intuition.
Qed.

(* Specifications: *)
Lemma pred_count_left_total : forall (A : Type)(P : A -> Prop)(ls : list A),
(forall a, P a \/ ~P a) ->
exists c, pred_count P ls c.