intros a H' H'0 Q p q H'1 H'2.
apply
reduceplus_mults_invf0
with
(a := a)
(p := mults (A:=A) multA (n:=n) a p)
(q := mults (A:=A) multA (n:=n) a q); auto.
Qed.

(* Specifications: *)
Theorem rep_minus_reduce :
forall (Q : list (poly A0 eqA ltM)) (p q s : list (Term A n)),
reduce A A0 A1 eqA invA minusA multA divA eqA_dec n ltM ltM_dec Q
(minuspf A A0 A1 eqA invA minusA multA eqA_dec n ltM ltM_dec p q) s ->
canonical A0 eqA ltM p ->
canonical A0 eqA ltM q ->
exists p1 : list (Term A n),
(exists q1 : list (Term A n),
reduceplus Q p p1 /\
reduceplus Q q q1 /\
eqP A eqA n s
(minuspf A A0 A1 eqA invA minusA multA eqA_dec n ltM ltM_dec p1 q1)).