Definition concat {A : Type} (l : list (list A)) : list A :=
flat_map id l.
induction l; simpl; intros. constructor.
econstructor. 2: reflexivity.
apply Forall_inv in F; trivial.
apply IHl. apply Forall_tl in F; trivial.
Qed.

Lemma concat_app {A} (l1 l2:list A): l1 ++ l2 = l1 ++ concat (l2 :: nil).