proposition: Theorem list_pred_snd_split_eq_l: forall (A B : Set) (a : list (B * A)) (b : list A), list_pred (fun (a0 : B * A) (b0 : A) => snd a0 = b0) a b -> b = snd (split a).
proof: Proof. induction 1; intuition; simpl in *. subst. destruct a1. remember (split ls1) as z. destruct z. simpl. trivial. Qed.
imports: FCF.Rat List Permutation Arith FCF.EqDec FCF.StdNat Bool Permutation