Section Dupfree.
Variable X : Type.
Implicit Types A B : list X.
End Dupfree.

Lemma dupfree_concat X (A: list (list X)):
dupfree A ->
(forall A1 A2, A1 el A -> A2 el A -> A1 <> A2 -> disjoint A1 A2)
-> (forall A1, A1 el A -> dupfree A1)
-> dupfree (concat A).