Proof using.
intros l g; elim l; simpl in |- *; auto.
intros a l0 H a0 b H0 [H1| H1]; apply in_or_app; auto.
left; rewrite H1; auto.
right; apply H with (b := b); auto.
Qed.

(* Specifications: *)
Theorem in_flat_map_ex :
forall (l : list B) (f : B -> list C) a,
In a (flat_map f l) -> exists b : _, In b l /\ In a (f b).