induction ls; intros; simpl in *.
intuition.
econstructor.
inversion H; clear H; subst.
intuition.
econstructor.
intuition.
eapply H2.
eapply in_map_iff.
econstructor.
intuition.
trivial.
subst.
trivial.
subst.
exfalso.
eapply H2.
eapply in_map_iff.
econstructor.
split.
symmetry.
eapply H5.
trivial.
subst.
exfalso.
eapply H2.
eapply in_map_iff.
econstructor.
split.
eapply H5.
trivial.
Qed.

(* Specifications: *)
Theorem map_fst_eq :
forall (C : Set)(lsc : list C)(A B : Set)(ls : list A)(f : A -> B),
(length ls = length lsc) ->
map f ls =
map (fun x => f (fst x)) (combine ls lsc).