Remark CombLinear_trans_cons_lem :
 forall (a : list (Term A n)) (R : list (poly A0 eqA ltM)),
 CombLinear R a ->
 forall (b : poly A0 eqA ltM) (Q : list (poly A0 eqA ltM)),
 R = b :: Q -> CombLinear Q (s2p A A0 eqA n ltM b) -> CombLinear Q a.

(* Specifications: *)
Theorem reduce_cb : forall (a b : list (Term A n)) (Q : list (poly A0 eqA ltM)), reduce A A0 A1 eqA invA minusA multA divA eqA_dec n ltM ltM_dec Q a b -> canonical A0 eqA ltM a -> CombLinear Q a -> CombLinear Q b.
Theorem reduceplus_cb : forall (a b : list (Term A n)) (Q : list (poly A0 eqA ltM)), reduceplus A A0 A1 eqA invA minusA multA divA eqA_dec n ltM ltM_dec Q a b -> canonical A0 eqA ltM a -> CombLinear Q a -> CombLinear Q b.
Theorem reducestar_cb : forall (a b : list (Term A n)) (Q : list (poly A0 eqA ltM)), reducestar A A0 A1 eqA invA minusA multA divA eqA_dec n ltM ltM_dec Q a b -> canonical A0 eqA ltM a -> CombLinear Q a -> CombLinear Q b.
Theorem reduce_cb1 : forall (a : poly A0 eqA ltM) (b : list (Term A n)) (Q : list (poly A0 eqA ltM)), reduce A A0 A1 eqA invA minusA multA divA eqA_dec n ltM ltM_dec Q (s2p A A0 eqA n ltM a) b -> CombLinear (a :: Q) b.
Theorem CombLinear_compo : forall (p : list (Term A n)) (L1 : list (poly A0 eqA ltM)), CombLinear L1 p -> forall L2 : list (poly A0 eqA ltM), (forall q : list (Term A n), inPolySet A A0 eqA n ltM q L1 -> CombLinear L2 q) -> CombLinear L2 p.
Theorem reduceplus_cb1_lem : forall (a b : list (Term A n)) (Q : list (poly A0 eqA ltM)), reduceplus A A0 A1 eqA invA minusA multA divA eqA_dec n ltM ltM_dec Q a b -> forall x : poly A0 eqA ltM, s2p A A0 eqA n ltM x = a -> CombLinear (x :: Q) b.
Theorem reduceplus_cb1 : forall (a : poly A0 eqA ltM) (b : list (Term A n)) (Q : list (poly A0 eqA ltM)), reduceplus A A0 A1 eqA invA minusA multA divA eqA_dec n ltM ltM_dec Q (s2p A A0 eqA n ltM a) b -> CombLinear (a :: Q) b.
Theorem reducestar_cb1 : forall (a : poly A0 eqA ltM) (b : list (Term A n)) (Q : list (poly A0 eqA ltM)), reducestar A A0 A1 eqA invA minusA multA divA eqA_dec n ltM ltM_dec Q (s2p A A0 eqA n ltM a) b -> CombLinear (a :: Q) b.
Theorem reduce_cb2 : forall (a b : poly A0 eqA ltM) (Q : list (poly A0 eqA ltM)), reduce A A0 A1 eqA invA minusA multA divA eqA_dec n ltM ltM_dec Q (s2p A A0 eqA n ltM a) (s2p A A0 eqA n ltM b) -> CombLinear (b :: Q) (s2p A A0 eqA n ltM a).
Theorem reduceplus_cb2_lem : forall (a b : list (Term A n)) (Q : list (poly A0 eqA ltM)), reduceplus A A0 A1 eqA invA minusA multA divA eqA_dec n ltM ltM_dec Q a b -> canonical A0 eqA ltM a -> forall x : poly A0 eqA ltM, s2p A A0 eqA n ltM x = b -> CombLinear (x :: Q) a.
Theorem reduceplus_cb2 : forall (a b : poly A0 eqA ltM) (Q : list (poly A0 eqA ltM)), reduceplus A A0 A1 eqA invA minusA multA divA eqA_dec n ltM ltM_dec Q (s2p A A0 eqA n ltM a) (s2p A A0 eqA n ltM b) -> CombLinear (b :: Q) (s2p A A0 eqA n ltM a).
Theorem reducestar_cb2 : forall (a b : poly A0 eqA ltM) (Q : list (poly A0 eqA ltM)), reducestar A A0 A1 eqA invA minusA multA divA eqA_dec n ltM ltM_dec Q (s2p A A0 eqA n ltM a) (s2p A A0 eqA n ltM b) -> CombLinear (b :: Q) (s2p A A0 eqA n ltM a).