intros.
apply Trans with ((a;; v) ++ w).
intro i.
destruct i.
destruct index as [| n0].
simpl in |- *.
auto with algebra.
rename in_range_prf into p.
apply Trans with ((v ++ w) (Build_finiteT (lt_S_n _ _ p))); auto with algebra.
apply Trans with ((Seqtl (a;; v) ++ w) (Build_finiteT (lt_S_n _ _ p)));
auto with algebra.
change ((a;; v) ++ w =' (a';; v') ++ w' in seq (S n + m) A) in |- *.
apply concat_comp; auto with algebra.
Qed.
Hint Resolve cons_concat: algebra.

(* Specifications: *)
Lemma concat_cons :
forall (a a' : A) (v v' : seq n A) (w w' : seq m A),
a =' a' in _ ->
v =' v' in _ -> w =' w' in _ -> (a';; v') ++ w' =' a;; v ++ w in _.