induction n; destruct ls; intuition; simpl in *.
econstructor.
inversion H; clear H; subst.
econstructor.
intuition.
eapply H2.
eapply firstn_In.
eauto.
eapply IHn; intuition.
Qed.

(* Specifications: *)
Theorem NoDup_flatten_subset :
forall (A : Set)(ls1 ls2 : list (list A)),
list_pred (fun x y => exists n, y = firstn n x) ls1 ls2 ->
NoDup (flatten ls1) ->
NoDup (flatten ls2).