intros a P; case a.
unfold red in |- *; simpl in |- *; auto.
intros x H'.
apply rstar_rtopO; auto.
apply spolyf_canonical with (1 := cs); auto.
apply Rstar_0; auto.
apply spolyf_pO with (1 := cs); auto.
Qed.

(* Specifications: *)
Theorem inP_reduce :
forall P Q : list (poly A0 eqA ltM),
(forall a : list (Term A n),
inPolySet A A0 eqA n ltM a Q -> inPolySet A A0 eqA n ltM a P) ->
forall a b : list (Term A n),
reduce A A0 A1 eqA invA minusA multA divA eqA_dec n ltM ltM_dec Q a b ->
reduce A A0 A1 eqA invA minusA multA divA eqA_dec n ltM ltM_dec P a b.