induction a; intuition; simpl in *.
inversion H; clear H; subst.
trivial.
inversion H; clear H; subst.
simpl.
remember (split a0) as z.
destruct z.
simpl in *.
f_equal.
eapply IHa.
trivial.
Qed.

Theorem list_pred_fst_split_flatten_eq_l :
forall (A B : Set)(a : list (list (A * B)))(b : list (list A)),
list_pred
(list_pred
(fun a0 b0 => fst a0 = b0)) a b ->
flatten b = fst (split (flatten a)).