intros.
assert (n =' m in _).
apply seq_equal_length_equal with A v w; auto with algebra.
simpl in |- *.
red in |- *.
split; intro.
simpl in |- *; simpl in H1.
inversion_clear H1.
destruct x0.
rename index into i.
case (H i).
intro.
inversion_clear H1.
inversion_clear H3.
exists (Build_finiteT x1).
apply Trans with (v (Build_finiteT in_range_prf)); auto with algebra.
intro.
inversion_clear H1.
apply False_ind; auto with algebra.
apply (le_not_lt n i); auto with algebra.
simpl in |- *; simpl in H1.
inversion_clear H1.
destruct x0.
rename index into i.
case (H i).
intro.
inversion_clear H1.
inversion_clear H3.
exists (Build_finiteT x0).
apply Trans with (w (Build_finiteT in_range_prf)); auto with algebra.
intro.
inversion_clear H1.
apply False_ind; auto with algebra.
apply (le_not_lt m i); auto with algebra.
Qed.

(* Specifications: *)
Lemma seq_equal_omit :
forall (A : Setoid) (n m : Nat) (v : seq n A) (w : seq m A)
(i : fin n) (j : fin m),
index i = index j -> seq_equal v w -> seq_equal (omit v i) (omit w j).