Fixpoint forNats(n : nat) :=
  match n with
      | 0 => nil
      | S n' =>
        cons n' (forNats n')
  end.

Theorem fst_split_eq_list_pred : forall (A B : Set)(ls1 : list (A * B))(ls2 : list A), list_pred (fun a b => fst a = b) ls1 ls2 -> fst (split ls1) = ls2.