Fixpoint insert_everywhere (x: T) (l: list T): list (list T) :=
    match l with
    | nil => (x :: nil) :: nil
    | h :: t => (x :: h :: t) :: map (cons h) (insert_everywhere x t)
    end.

Lemma insert_everywhere_are_perms x l: forall y, In y (insert_everywhere x l) -> Permutation y (x :: l).