Proof with simpl; try solve[exfalso; auto|congruence]; auto.
induction l... intros [[a [C D]]|E]... intros [[a0 [C D]]|E]...
destruct C; subst. left... right; apply IHl; eauto.
right; eapply IHl...
Qed.

(* Specifications: *)
Lemma listd_In_inv_pred_un l s :
listd f un b l s -> (exists a, In a l /\ f a s) \/ b s.