intuition.
unfold shuffle.
wftac.
eapply rndListElem_wf.
Qed.
End ShuffleList.
Definition RndPerm(n : nat) :=
shuffle _ (allNatsLt n).

(* Specifications: *)
Theorem list_pred_map_both':
forall (A B C D : Set) (lsa : list A) (lsb : list B)
(P : C -> D -> Prop) (f : A -> C)(g : B -> D),
list_pred (fun (a : A) (b : B) => P (f a) (g b)) lsa lsb ->
list_pred P (map f lsa) (map g lsb).