proposition: 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.
proof: Proof. induction 1; intuition; simpl in *. subst. destruct a1. remember (split ls1) as x. destruct x. simpl in *. f_equal. Qed.
imports: FCF.Rat List Permutation Arith FCF.EqDec FCF.StdNat Bool Permutation