intros L p q H' H'0.
apply Cb_comp with (L1 := p :: L); auto.
simpl in |- *; auto.
intros p0 H'1; case H'1;
[ intros H'2; rewrite <- H'2; clear H'1 | intros H'2; clear H'1 ];
auto.
generalize H'; case p; simpl in |- *; auto.
intros x; case x; simpl in |- *; auto.
intros H'1 H'3; try assumption.
change (CombLinear A A0 eqA plusA multA eqA_dec n ltM ltM_dec L (pO A n))
in |- *.
apply CombLinear_0; auto.
intros a l H'1 H'3; elim H'3; auto.
apply Cb_id with (1 := cs); auto.
Qed.

(* Specifications: *)
Theorem Cb_compo :
forall (p : poly A0 eqA ltM) (L1 : list (poly A0 eqA ltM)),
Cb A A0 eqA plusA multA eqA_dec n ltM ltM_dec p L1 ->
forall L2 : list (poly A0 eqA ltM),
(forall q : poly A0 eqA ltM,
In q L1 -> Cb A A0 eqA plusA multA eqA_dec n ltM ltM_dec q L2) ->
Cb A A0 eqA plusA multA eqA_dec n ltM ltM_dec p L2.
Theorem zerop_nf_cb :
forall (L : list (poly A0 eqA ltM)) (p : poly A0 eqA ltM),
zerop A A0 eqA n ltM
(nf A A0 A1 eqA plusA invA minusA multA divA cs eqA_dec n ltM ltM_dec os p
L) -> Cb A A0 eqA plusA multA eqA_dec n ltM ltM_dec p L.