induction ls; intuition; simpl in *.
remember (f a) as z.
destruct z.
remember (split (map f ls)) as z.
destruct z.
simpl.
f_equal.
assert (l0 = snd (l, l0)).
trivial.
rewrite H.
rewrite Heqz0.
eapply IHls.
Qed.

(* Specifications: *)
Theorem cons_ne :
forall (A : Set)(eqda : eq_dec A)(a1 a2 : A)(ls1 ls2 : list A),
((a1 :: ls1) = (a2 :: ls2) -> False) ->
(a1 <> a2) \/ (ls1 <> ls2).