Proof with auto.
induction l...
simpl.
rewrite map_length.
congruence.
Qed.
Definition perms: list T -> list (list T)
:= fold_right (fun h => concat ∘ map (insert_everywhere h)) (nil :: nil).

(* Specifications: *)
Lemma perms_are_perms l a: In a (perms l) -> Permutation a l.
Proof with auto.