Definition spO : poly A0 eqA ltM.Definition sp1 : poly A0 eqA ltM.Definition sgen : nat -> poly A0 eqA ltM.Definition sscal : A -> poly A0 eqA ltM -> poly A0 eqA ltM.

(* Specifications: *)
Theorem red_cons : forall (a : poly A0 eqA ltM) (p : list (poly A0 eqA ltM)), In a p -> red a p.
Theorem red_id : forall (a : poly A0 eqA ltM) (aL : list (poly A0 eqA ltM)), red (spolyp a a) aL.
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.
Theorem inP_reduceplus : 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), reduceplus A A0 A1 eqA invA minusA multA divA eqA_dec n ltM ltM_dec Q a b -> reduceplus A A0 A1 eqA invA minusA multA divA eqA_dec n ltM ltM_dec P a b.
Theorem inP_reducestar : 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), reducestar A A0 A1 eqA invA minusA multA divA eqA_dec n ltM ltM_dec Q a b -> reduceplus A A0 A1 eqA invA minusA multA divA eqA_dec n ltM ltM_dec P a b.
Theorem red_incl : forall (a : poly A0 eqA ltM) (p q : list (poly A0 eqA ltM)), incl p q -> red a p -> red a q.