Section ShuffleList.
Variable A : Set.
Hypothesis A_EqDec : EqDec A.
Definition shuffle(ls : list A) :=
o <-$ rndListElem _ (getAllPermutations ls);
ret
match o with
| None => nil
| Some x => x
end.

Theorem shuffle_perm :
forall (ls1 ls2 : list A),
In ls2 (getSupport (shuffle ls1)) ->
Permutation ls2 ls1.