Section Uniq.
Variable A: Type.
Inductive uniq: list A -> Prop :=
uniq_nil: uniq nil
| uniq_cons: forall a l, ~ In a l -> uniq l -> uniq (a::l).
End Uniq.

Lemma list_split (A: Type) n1 n2 (l: list A):
length l = n1 + n2 ->
exists l1, exists l2, l = l1 ++ l2 /\ length l1 = n1 /\ length l2 = n2.