proposition: Theorem reduceplus_mults : forall (Q : list (poly A0 eqA ltM)) (a : Term A n) (p q : list (Term A n)), reduceplus Q p q -> canonical A0 eqA ltM p -> ~ zeroP (A:=A) A0 eqA (n:=n) a -> reduceplus Q (mults (A:=A) multA (n:=n) a p) (mults (A:=A) multA (n:=n) a q).
proof: Proof. Proof using plusA os cs. 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.