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 length_split (A B: Type) (a b: A) (lk: list B) l1 l2:
length lk = length ((a:: l1) ++ b :: l2)%list ->
exists k1, exists k2, exists lk1, exists lk2,
lk = ((k1::lk1) ++ k2::lk2)%list /\ length lk1 = length l1 /\ length lk2 = length l2.