Definition Rminus :
  forall (a : Term A n) (nZa : ~ zeroP (A:=A) A0 eqA (n:=n) a),
  list (Term A n) -> list (Term A n) -> list (Term A n) -> list (Term A n).

(* Specifications: *)
Theorem minuspf_in : forall (p q : list (Term A n)) (a b : Term A n), In a p -> ltT ltM b a -> canonical A0 eqA ltM p -> canonical A0 eqA ltM (pX b q) -> In a (minuspf A A0 A1 eqA invA minusA multA eqA_dec n ltM ltM_dec p (pX b q)).
Theorem minus_is_reduce : forall (Q : list (poly A0 eqA ltM)) (a : Term A n) (nZa : ~ zeroP (A:=A) A0 eqA (n:=n) a) (q : list (Term A n)), inPolySet A A0 eqA n ltM (pX a q) Q -> forall u : Term A n, divP A A0 eqA multA divA n u a -> forall p : list (Term A n), canonical A0 eqA ltM p -> In u p -> reduce A A0 A1 eqA invA minusA multA divA eqA_dec n ltM ltM_dec Q p (minuspf A A0 A1 eqA invA minusA multA eqA_dec n ltM ltM_dec p (mults (A:=A) multA (n:=n) (divTerm (A:=A) (A0:=A0) (eqA:=eqA) divA (n:=n) u (b:=a) nZa) (pX a q))).