intros Q p q H'; inversion H'; auto.
inversion H; auto.
case (pO_reduce A A0 A1 eqA invA minusA multA divA eqA_dec n ltM ltM_dec Q y);
auto.
Qed.

(* Specifications: *)
Theorem rep_plus_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
(pluspf (A:=A) A0 (eqA:=eqA) plusA eqA_dec (n:=n) (ltM:=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
(pluspf (A:=A) A0 (eqA:=eqA) plusA eqA_dec (n:=n) (ltM:=ltM) ltM_dec
p1 q1)).