intros.
destruct n.
red in |- *.
intro.
right.
split; simpl in |- *; auto with arith.
assert (0 = m).
apply seq_equal_length_equal with A v w; auto with algebra.
rewrite <- H0.
simpl in |- *; auto with arith.
destruct m as [| n0].
assert (S n = 0).
apply seq_equal_length_equal with A v w; auto with algebra.
inversion_clear H0.
red in H.
red in |- *.
simpl in |- *.
intro; case (H (S i)); clear H; intros.
inversion_clear H; inversion_clear H0.
left.
exists (lt_S_n _ _ x).
exists (lt_S_n _ _ x0).
apply Trans with (v (Build_finiteT x)); auto with algebra.
apply Trans with (w (Build_finiteT x0)); auto with algebra.
right.
inversion_clear H.
split; auto with arith.
Qed.
Hint Resolve seq_equal_seqtl: algebra.

(* Specifications: *)
Lemma seq_equal_cons :
forall (A : Setoid) (n m : Nat) (v : seq n A) (w : seq m A) (a b : A),
seq_equal v w -> a =' b in _ -> seq_equal (a;; v) (b;; w).