induction lsa; intuition.
exists nil.
econstructor.
edestruct (IHlsa _ _ H).
intuition.
destruct (H a).
eapply H0.
simpl. intuition.
exists (x0 :: x).
econstructor; eauto.
Qed.

(* Specifications: *)
Lemma firstn_eq_all_gen : forall (A : Type)(ls : list A) n,
n = length ls ->
firstn n ls = ls.