induction 1; intuition; simpl in *.
subst.
destruct a1.
remember (split ls1) as x.
destruct x.
simpl in *.
f_equal.
Qed.

(* Specifications: *)
Theorem snd_split_eq_list_pred :
forall (A B : Set)(ls1 : list (B * A))(ls2 : list A),
list_pred (fun a b => snd a = b) ls1 ls2 ->
snd (split ls1) = ls2.
Theorem combine_map_eq :
forall (A B C : Type)(lsa : list A)(lsb : list B)(f : B -> C),
combine lsa (map f lsb) = map (fun p => (fst p, f (snd p))) (combine lsa lsb).