Library Polynomes_tes

Require Export Monomes_tes.

Parameter n:nat.

Inductive pol : Set :=
  vpol : pol
| cpol : monom -> pol->pol.

Inductive full_term_pol: pol -> Prop :=
  full_term_pol_nil: (full_term_pol vpol)
 | full_term_pol_cons : (t:term)(a:Q)(p:pol)(full n t)->
   (full_term_pol p)->(full_term_pol (cpol (a,t) p)).
Hints Resolve full_term_pol_nil full_term_pol_cons.

Fixpoint mult_Q_pol [c:Q;p:pol]: pol:=
   Cases p of
      vpol => vpol
    | (cpol m1 p1) => (cpol (mult_Q_monom c m1) (mult_Q_pol c p1))
   end.

Lemma full_term_cpol: (m:monom)(full_mon n m)->
   (full_term_pol (cpol m vpol)).
Induction m; Intros.
Apply full_term_pol_cons; Auto.
Save.
Hints Resolve full_term_cpol.

Lemma full_term_pol_mon: (m:monom)(p:pol)(full_term_pol (cpol m p))->
   (full_mon n m).
Intros m.
Elim m; Intros.
Red.
Inversion H; Auto.
Save.
Hints Resolve full_term_pol_mon.

Lemma full_tm_dec : (t:term){(full n t)}+{~(full n t)}.
Intros t ; Elim (eq_nat_dec n (length t));
   [Left; Auto | Right; Unfold full; Auto].
Save.

Lemma full_pol_tm_dec : (p:pol){(full_term_pol p)}+{~(full_term_pol p)}.
Induction p.
Left; Auto.
Induction m; Intros c t p' HR.
Elim (full_tm_dec t).
Intros vrai; Elim HR.
Intros v2; Left; Auto.
(Intros f2; Right ; Unfold not; Intros f3).
(Apply f2; Inversion f3; Auto).

(Intros f2; Right ; Unfold not; Intros f3; Apply f2; Inversion f3; Auto).

Save.


Index
This page has been generated by coqdoc