Arguments perm[A].
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).

(* Specifications: *)
Lemma uniq_perm l1 l2: perm l1 l2 -> uniq l1 -> uniq l2.
Lemma uniq_cons_inv a l: uniq (a::l) -> uniq l.
Lemma uniq_app_inv_l l1 l2: uniq (l1 ++ l2) -> uniq l1.
Lemma uniq_app_inv_r l1 l2: uniq (l1 ++ l2) -> uniq l2.
Lemma perm_incl_inv l1 l2:
uniq l1 -> uniq l2 -> incl l1 l2 -> exists l3, perm l2 (l1 ++ l3).