intros Q a p q H'; elim H'; auto.
intros x y z H'0 H'1 H'2 H'3 H'4.
apply Rstar_n with (y := mults (A:=A) multA (n:=n) a y); auto.
apply reduce_mults with (1 := cs); auto.
apply H'2; auto.
apply canonical_reduce with (1 := cs) (3 := H'0); auto.
Qed.

(* Specifications: *)
Lemma reduceplus_mults_invr_lem :
forall (Q : list (poly A0 eqA ltM)) (p q : list (Term A n)),
reduceplus Q p q ->
forall r : list (Term A n),
eqP A eqA n p
(mults (A:=A) multA (n:=n) (invTerm (A:=A) invA (n:=n) (T1 A1 n)) r) ->
canonical A0 eqA ltM r ->
reduceplus Q r
(mults (A:=A) multA (n:=n) (invTerm (A:=A) invA (n:=n) (T1 A1 n)) q).