Inductive ConfluentReduce (Q : list (poly A0 eqA ltM)) : Prop :=
    ConfluentReduce0 :
      (forall p : list (Term A n),
       canonical A0 eqA ltM p ->
       ReduStarConfluent A A0 A1 eqA invA minusA multA divA eqA_dec n ltM
         ltM_dec Q p) -> ConfluentReduce Q.Inductive ConfluentReduce (Q : list (poly A0 eqA ltM)) : Prop :=
    ConfluentReduce0 :
      (forall p : list (Term A n),
       canonical A0 eqA ltM p ->
       ReduStarConfluent A A0 A1 eqA invA minusA multA divA eqA_dec n ltM
         ltM_dec Q p) -> ConfluentReduce Q.

(* Specifications: *)
Theorem SpolyQ_imp_ConfluentReduce : forall Q : list (poly A0 eqA ltM), SpolyQ A A0 A1 eqA invA minusA multA divA eqA_dec n ltM ltM_dec Q -> ConfluentReduce Q.
Theorem ConfluentReduce_imp_Grobner : forall Q : list (poly A0 eqA ltM), ConfluentReduce Q -> Grobner Q.
Theorem CombLinear_incl : forall (a : list (Term A n)) (P Q : list (poly A0 eqA ltM)), (forall a : list (Term A n), inPolySet A A0 eqA n ltM a P -> inPolySet A A0 eqA n ltM a Q) -> CombLinear P a -> CombLinear Q a.