induction ls1; intuition; simpl in *.
intuition.
subst.
inversion H; clear H; subst.
eapply H3.
eapply in_or_app.
intuition.
inversion H; clear H; subst.
eapply IHls1;
eauto.
Qed.

(* Specifications: *)
Lemma flatten_NoDup :
forall (A : Set)(ls : list (list A)),
NoDup ls ->
(forall x, In x ls -> NoDup x) ->
(forall x1 x2, In x1 ls -> In x2 ls -> x1 <> x2 -> NoDup (x1 ++ x2)) ->
NoDup (flatten ls).