induction ls; intuition; simpl in *.
remember (f a) as z.
destruct z.
remember (split (map f ls)) as y.
destruct y.
simpl.
f_equal.
assert (l = fst (split (map f ls))).
rewrite <- Heqy.
trivial.
subst.
eauto.
Qed.

(* Specifications: *)
Theorem in_split_l_if :
forall (A B : Type)(ls : list (A * B)) a,
In a (fst (split ls)) ->
exists b,
In (a, b) ls.