intuition.
eapply fold_add_subset; intuition.
Qed.
Fixpoint flatten(A : Type)(ls : list (list A)) :=
match ls with
| nil => nil
| a :: ls' => a ++ (flatten ls')
end.

(* Specifications: *)
Theorem in_flatten : forall (A : Set)(ls : list (list A)) a,
In a (flatten ls) <->
exists x : _, In x ls /\ In a x.