Remark list_norepet_append_commut:
  forall (A: Type) (a b: list A),
  list_norepet (a ++ b) -> list_norepet (b ++ a).

(* Specifications: *)
Lemma list_norepet_app: forall (A: Type) (l1 l2: list A), list_norepet (l1 ++ l2) <-> list_norepet l1 /\ list_norepet l2 /\ list_disjoint l1 l2.
Lemma list_norepet_append: forall (A: Type) (l1 l2: list A), list_norepet l1 -> list_norepet l2 -> list_disjoint l1 l2 -> list_norepet (l1 ++ l2).
Lemma list_norepet_append_right: forall (A: Type) (l1 l2: list A), list_norepet (l1 ++ l2) -> list_norepet l2.
Lemma list_norepet_append_left: forall (A: Type) (l1 l2: list A), list_norepet (l1 ++ l2) -> list_norepet l1.
Lemma list_norepet_app: forall (A: Type) (l1 l2: list A), list_norepet (l1 ++ l2) <-> list_norepet l1 /\ list_norepet l2 /\ list_disjoint l1 l2.
Lemma list_norepet_append: forall (A: Type) (l1 l2: list A), list_norepet l1 -> list_norepet l2 -> list_disjoint l1 l2 -> list_norepet (l1 ++ l2).
Lemma list_norepet_append_right: forall (A: Type) (l1 l2: list A), list_norepet (l1 ++ l2) -> list_norepet l2.
Lemma list_norepet_append_left: forall (A: Type) (l1 l2: list A), list_norepet (l1 ++ l2) -> list_norepet l1.