Proof using.
induction l; intros; simpl in *.
- invc_NoDup; auto.
- invc_NoDup.
intro.
break_or_hyp.
* match goal with H: ~ In _ _ |- _ => contradict H end.
apply in_or_app.
right; left. auto.
* match goal with H: In _ _ |- _ => contradict H end.
eauto.
Qed.

Lemma Permutation_split :
forall (ns ns' : list A) (n : A),
Permutation (n :: ns) ns' ->
exists ns0, exists ns1, ns' = ns0 ++ n :: ns1.