Definition ppcp : poly A0 eqA ltM -> poly A0 eqA ltM -> poly A0 eqA ltM.

(* Specifications: *)
Theorem divp_ppc : forall a b c : poly A0 eqA ltM, divp (ppcp a b) c -> divp (ppcp b a) c.
Theorem zerop_ddivp_ppc : forall a b : poly A0 eqA ltM, ~ zerop a -> ~ zerop b -> divp (ppcp a b) b.
Theorem divp_nzeropl : forall a b : poly A0 eqA ltM, divp a b -> ~ zerop a.
Theorem divp_nzeropr : forall a b : poly A0 eqA ltM, divp a b -> ~ zerop b.
Theorem reducetopO_pO : forall Q : list (poly A0 eqA ltM), reducestar A A0 A1 eqA invA minusA multA divA eqA_dec n ltM ltM_dec Q (pO A n) (pO A n).
Theorem zerop_red_spoly_l : forall a b : poly A0 eqA ltM, zerop a -> forall Q : list (poly A0 eqA ltM), red (spolyp a b) Q.
Theorem zerop_red_spoly_r : forall a b : poly A0 eqA ltM, zerop b -> forall Q : list (poly A0 eqA ltM), red (spolyp a b) Q.
Theorem divP_ppc : forall a b c : poly A0 eqA ltM, divp a b -> divp a c -> divp a (ppcp b c).