Definition genPcPf0 :
  forall (i : poly A0 eqA ltM) (aP R : list (poly A0 eqA ltM)),
  {Q : list (poly A0 eqA ltM) | genPcP i aP R Q}.Definition genPcPf :
  poly A0 eqA ltM ->
  list (poly A0 eqA ltM) -> list (poly A0 eqA ltM) -> list (poly A0 eqA ltM).

Theorem spolyp_addEnd_genPcPf : forall (aP R Q : list (poly A0 eqA ltM)) (a b : poly A0 eqA ltM), ~ BuchAux.zerop A A0 eqA n ltM a -> ~ BuchAux.zerop A A0 eqA n ltM b -> In b aP -> exists c : poly A0 eqA ltM, In c aP /\ (In (spolyp A A0 A1 eqA plusA invA minusA multA divA cs eqA_dec n ltM ltM_dec os a c) (genPcPf a aP Q) \/ red A A0 A1 eqA invA minusA multA divA eqA_dec n ltM ltM_dec (spolyp A A0 A1 eqA plusA invA minusA multA divA cs eqA_dec n ltM ltM_dec os a c) (addEnd A A0 eqA n ltM a aP)) /\ divp A A0 eqA multA divA n ltM (ppcp A A0 A1 eqA plusA invA minusA multA divA cs n ltM a b) c.