(* END Tactics copied from ecm/Coqlib2.v *)

Ltac spec H :=
  match type of H with ?a -> _ =>
    let H1 := fresh in (assert (H1: a); [|generalize (H H1); clear H H1; intro H]) end.

Lemma list_norepet_append_inv: forall (A : Set) (l1 l2 : list A), list_norepet (l1 ++ l2) -> list_norepet l1 /\ list_norepet l2 /\ list_disjoint l1 l2.