destruct n.
intros; (apply False_ind; auto with algebra).
induction  n as [| n Hrecn].
intros.
unfold omit in |- *.
unfold nat_rect in |- *.
unfold mult_by_scalars in |- *.
unfold pointwise in |- *.
simpl in |- *.
red in |- *.
intro.
apply False_ind; auto with algebra.
rename n into n'; intros.
case i.
intro x; case x.
intro l.
apply Trans with (Seqtl (mult_by_scalars a v)); auto with algebra.
apply Trans with (mult_by_scalars (Seqtl a) (Seqtl v)); auto with algebra.
intros n0 l.
apply
Trans
with
(head (mult_by_scalars a v:seq _ _);;
omit (Seqtl (mult_by_scalars a v))
(Build_finiteT (lt_S_n _ _ l):fin (pred (S (S n')))));
auto with algebra.
apply
Trans
with
(mult_by_scalars (head a;; omit (Seqtl a) (Build_finiteT (lt_S_n _ _ l)))
(head v;; omit (Seqtl v) (Build_finiteT (lt_S_n _ _ l))));
auto with algebra.
unfold mult_by_scalars in |- *.
apply
Trans
with
(uncurry (MODULE_comp (R:=F) (Mod:=V)) (couple (head a) (head v));;
pointwise (uncurry (MODULE_comp (R:=F) (Mod:=V)))
(omit (Seqtl a) (Build_finiteT (lt_S_n n0 (S n') l)))
(omit (Seqtl v) (Build_finiteT (lt_S_n n0 (S n') l)))).
change
(head (pointwise (uncurry (MODULE_comp (R:=F) (Mod:=V))) a v);;
omit (Seqtl (pointwise (uncurry (MODULE_comp (R:=F) (Mod:=V))) a v))
(Build_finiteT (lt_S_n n0 (S n') l)) ='
uncurry (MODULE_comp (R:=F) (Mod:=V)) (couple (head a) (head v));;
pointwise (uncurry (MODULE_comp (R:=F) (Mod:=V)))
(omit (Seqtl a) (Build_finiteT (lt_S_n n0 (S n') l)))
(omit (Seqtl v) (Build_finiteT (lt_S_n n0 (S n') l))) in _)
in |- *.
apply cons_comp; auto with algebra.
unfold mult_by_scalars in Hrecn.
apply
Trans
with
(omit
(pointwise (uncurry (MODULE_comp (R:=F) (Mod:=V))) (Seqtl a) (Seqtl v))
(Build_finiteT (lt_S_n n0 (S n') l))); auto with algebra.
change
(uncurry (MODULE_comp (R:=F) (Mod:=V)) (couple (head a) (head v));;
pointwise (uncurry (MODULE_comp (R:=F) (Mod:=V)))
(omit (Seqtl a) (Build_finiteT (lt_S_n n0 (S n') l)))
(omit (Seqtl v) (Build_finiteT (lt_S_n n0 (S n') l))) ='
pointwise (uncurry (MODULE_comp (R:=F) (Mod:=V)))
(head a;; omit (Seqtl a) (Build_finiteT (lt_S_n n0 (S n') l)))
(head v;; omit (Seqtl v) (Build_finiteT (lt_S_n n0 (S n') l))) in _)
in |- *.
auto with algebra.
Qed.
Hint Resolve omit_mult_by_scalars: algebra.

(* Specifications: *)
Lemma omit_Map_embed :
forall (n : Nat) (F : ring) (V : module F) (s : part_set V)
(v : seq n s) (i : fin n),
omit (Map_embed v) i =' Map_embed (omit v i) in _.