Library Mult_poly_tes
Require
Export
Somme_poly_tes.
Fixpoint
mult_m [p:pol] : monom -> pol :=
[m:monom]Cases p of
vpol => vpol
| (cpol m1 p1) => (cpol (mult_mon m m1) (mult_m p1 m))
end.
Fixpoint
mult_p [p:pol] : pol -> pol :=
[q:pol]Cases p of
vpol => vpol
| (cpol m1 p1) => (suma_app (mult_m q m1) (mult_p p1 q))
end.
Theorem
mult_m_vpol: (m:monom) (equpol (mult_m vpol m) vpol).
Auto.
Save
.
Hints Resolve mult_m_vpol.
Theorem
mult_vpol: (q:pol)(equpol (mult_p q vpol) vpol).
Induction q; Auto.
Save
.
Hints Resolve mult_vpol.
Lemma
mult_p_cpol: (m:monom)(p,p':pol)(equpol (mult_p p (cpol m p'))
(suma_app (mult_m p m) (mult_p p p'))).
Intros; Elim p; Auto; Intros.
Simpl.
Apply equpol_cpol2; Auto.
Apply equpol_tran with
(suma_app (suma_app (mult_m p0 m) (mult_m p' m0)) (mult_p p0 p'));
Auto.
Apply equpol_tran with
(suma_app (suma_app (mult_m p' m0) (mult_m p0 m)) (mult_p p0 p'));
Auto.
Apply equpol_tran with
(suma_app (mult_m p' m0) (suma_app (mult_m p0 m) (mult_p p0 p')));
Auto.
Save
.
Hints Resolve mult_p_cpol.
Lemma
mult_m_distr: (p,q:pol)(m:monom)(equpol (mult_m (suma_app p q) m)
(suma_app (mult_m p m) (mult_m q m))).
Intros; Elim p; Auto; Intros.
Simpl; Apply equpol_cpol; Trivial.
Save
.
Hints Resolve mult_m_distr.
Lemma
mult_m_asoc: (m,n:monom)(p:pol)(equpol (mult_m (mult_m p m) n)
(mult_m p (mult_mon m n))).
Induction p; Auto; Intros m0 p0 HR.
Simpl; Apply equpol_cpol2; Auto.
Save
.
Hints Resolve mult_m_asoc.
Lemma
mult_pm_comp_2: (m1,m2:monom)(p:pol)(equmon m1 m2)->
(equpol (mult_m p m1) (mult_m p m2)).
Induction p; Auto; Intros.
Simpl; Auto.
Save
.
Hints Resolve mult_pm_comp_2.
Lemma
mult_p_m_asoc: (m:monom)(p,q:pol)(equpol (mult_m (mult_p p q) m)
(mult_p (mult_m p m) q)).
Induction p; Auto; Intros.
Simpl.
Apply equpol_tran
with (suma_app (mult_m (mult_m q m0) m) (mult_m (mult_p p0 q) m)).
Auto.
Apply equpol_tran with
(suma_app (mult_m q (mult_mon m0 m)) (mult_m (mult_p p0 q) m)).
Auto.
Apply equpol_ss; Auto.
Save
.
Hints Resolve mult_p_m_asoc.
Lemma
mult_pm_comp: (m:monom)(p1,p2:pol)(equpol p1 p2)->
(equpol (mult_m p1 m) (mult_m p2 m)).
Intros m p1 p2 H; Elim H; Auto; Intros.
Apply equpol_tran with (mult_m q m); Auto.
Simpl.
Apply equpol_tran with
(suma_app (mult_m p m) (mult_m (cpol m0 q) m)); Auto.
Apply equpol_tran with
(cpol (mult_mon m m0) (suma_app (mult_m p m) (mult_m q m))); Auto.
Apply equpol_tran with
(suma_app (mult_m p m) (cpol (mult_mon m m0) (mult_m q m))); Auto.
Apply equpol_tran with (suma_app (mult_m p m) (mult_m q m)); Auto.
Apply equpol_tran with (suma_app (mult_m p' m) (mult_m q' m)); Auto.
Simpl; Elim m; Intros.
Simpl.
Apply equpol_tran
with (cpol ((plusQ (multQ a k) (multQ a k')),(term_mult b t))
(mult_m p (a,b))); Auto.
Simpl; Auto.
Save
.
Hints Resolve mult_pm_comp.
Lemma
mult_pm_comp_ss: (p1,p2:pol)(equpol p1 p2)->
(m1,m2:monom)(equmon m1 m2)->
(equpol (mult_m p1 m1) (mult_m p2 m2)).
Induction p1.
Induction p2; Auto; Intros.
Apply equpol_tran with (mult_m vpol m2); Auto.
Induction p2; Intros.
Apply equpol_tran with (mult_m vpol m1); Auto.
Apply equpol_tran with (mult_m (cpol m p) m2); Auto.
Save
.
Hints Resolve mult_pm_comp_ss.
Lemma
mult_p_comp: (p,p',r:pol)(equpol p p')->
(equpol (mult_p r p) (mult_p r p')).
Induction r; Auto.
Intros m p0 HR H; Simpl; Auto.
Save
.
Hints Resolve mult_p_comp.
Lemma
mult_p_conm: (p,p':pol)(equpol (mult_p p p') (mult_p p' p)).
Intros; Elim p.
Elim p'; Auto.
Intros; Simpl.
Apply equpol_tran with (suma_app (mult_m p' m) (mult_p p' p0));
Auto.
Save
.
Hints Resolve mult_p_conm.
Lemma
mult_p_comp_r: (p,p',r:pol)(equpol p p')->
(equpol (mult_p p r) (mult_p p' r)).
Intros.
(Apply equpol_tran with (mult_p r p); Auto).
(Apply equpol_tran with (mult_p r p'); Auto).
Save
.
Hints Resolve mult_p_comp_r.
Lemma
distr_mult_p: (f,g,h:pol)(equpol (mult_p (suma_app f g) h)
(suma_app (mult_p f h) (mult_p g h))).
Induction h.
Apply equpol_tran with vpol.
Auto.
Apply equpol_tran with (suma_app vpol vpol).
Auto.
Auto.
Intros m p HR.
Generalize (mult_p_cpol m (suma_app f g) p) .
Intros.
Apply equpol_tran
with (suma_app (mult_m (suma_app f g) m) (mult_p (suma_app f g) p)).
Auto.
Generalize (mult_m_distr f g m) .
Intros.
Apply equpol_tran
with (suma_app (suma_app (mult_m f m) (mult_m g m))
(mult_p (suma_app f g) p)).
Auto.
Clear H H0.
Generalize (mult_p_cpol m f p) .
Intros.
Apply equpol_tran
with (suma_app (suma_app (mult_m f m) (mult_p f p))
(mult_p g (cpol m p))).
Generalize (mult_p_cpol m g p) .
Intros.
Apply equpol_tran
with (suma_app (suma_app (mult_m f m) (mult_p f p))
(suma_app (mult_m g m) (mult_p g p))).
Clear H H0.
Apply equpol_tran
with (suma_app (suma_app (mult_m f m) (mult_m g m))
(suma_app (mult_p f p) (mult_p g p))).
Auto.
Apply equpol_tran
with (suma_app (mult_m f m)
(suma_app (mult_m g m) (suma_app (mult_p f p) (mult_p g p)))).
Auto.
Apply equpol_tran
with (suma_app (mult_m f m)
(suma_app (mult_p f p) (suma_app (mult_m g m) (mult_p g p)))).
Auto.
Auto.
Auto.
Auto.
Save
.
Hints Resolve distr_mult_p.
Lemma
distr_mult_p_r: (f,g,h:pol)(equpol (mult_p f (suma_app g h))
(suma_app (mult_p f g) (mult_p f h))).
Intros.
Apply equpol_tran with (mult_p (suma_app g h) f).
Auto.
Apply equpol_tran with (suma_app (mult_p g f) (mult_p h f)).
Auto.
Auto.
Save
.
Hints Resolve distr_mult_p_r.
Lemma
mult_p_assoc: (p,q,r:pol)(equpol (mult_p p (mult_p q r))
(mult_p (mult_p p q) r)).
Induction p; Auto; Intros.
Apply equpol_tran with (mult_p (mult_p q r) (cpol m p0)); Auto.
Apply equpol_tran with
(suma_app (mult_m (mult_p q r) m) (mult_p (mult_p q r) p0)); Auto.
Apply equpol_tran with
(suma_app (mult_m (mult_p q r) m) (mult_p p0 (mult_p q r))); Auto.
Apply equpol_tran with (mult_p (mult_p q (cpol m p0)) r); Auto.
Apply equpol_tran with
(mult_p (suma_app (mult_m q m) (mult_p q p0)) r); Auto.
Apply equpol_tran with
(mult_p (suma_app (mult_m q m) (mult_p p0 q)) r); Auto.
Apply equpol_tran with
(suma_app (mult_p (mult_m q m) r) (mult_p (mult_p p0 q) r)); Auto.
Save
.
Hints Resolve mult_p_assoc.
Lemma
neut_mult_m: (f:pol)(full_term_pol f)->
(equpol f (mult_m f (unQ,(n_term_O n)))).
Induction f; Auto.
Intro m; Elim m; Intros.
Simpl.
Inversion H0.
Generalize (H H5); Intros.
Apply equpol_tran
with (cpol ((multQ unQ a),(term_mult (n_term_O n) b)) p).
Generalize (term_mult_full_nulo b n H3); Intro.
Apply equpol_tran
with (cpol ((multQ unQ a),(term_mult b (n_term_O n))) p).
Rewrite H7.
Generalize (neut_multQ a); Intro.
Apply equpol_cpol2; Trivial.
Red; Right.
Split; Auto.
Apply eqQ_trans with (multQ a unQ); Auto.
Apply eq_mon_cpol.
Red; Right; Split; Auto.
Apply equpol_cpol2; Trivial.
Save
.
Hints Resolve neut_mult_m.
Lemma
neut_mult_p: (p:pol)(full_term_pol p)->(equpol
(mult_p p (cpol (unQ,(n_term_O n)) vpol)) p).
Induction p; Auto.
Intro m; Elim m; Intros.
Simpl.
Inversion H0.
Generalize (H H5); Intro.
EApply (equpol_tran
(cpol ((multQ a unQ),(term_mult b (n_term_O n)))
(mult_p p0 (cpol (unQ,(n_term_O n)) vpol)))
(cpol ((multQ a unQ),(term_mult b (n_term_O n))) p0)).
Auto.
Generalize (term_mult_full_nulo b n H3); Intro.
Rewrite H7.
Generalize (neut_multQ a); Intro; Auto.
Save
.
Hints Resolve neut_mult_p.
Lemma
regl_sig: (p,q:pol)(equpol (mult_p p (pol_opp q))
(pol_opp (mult_p p q))).
Intros.
Cut (equpol (suma_app (mult_p p (pol_opp q)) (mult_p p q)) vpol).
Auto.
Apply equpol_tran with (mult_p p (suma_app (pol_opp q) q)); Auto.
Apply equpol_tran with (mult_p p vpol); Auto.
Save
.
Hints Resolve regl_sig.
Lemma
mult_neg_unQ: (p:pol)(full_term_pol p)->(equpol
(mult_p p (cpol ((multQ_neg unQ),(n_term_O n)) vpol)) (pol_opp p)).
Intros.
Apply equpol_tran
with (pol_opp (mult_p p (cpol (unQ,(n_term_O n)) vpol))).
Apply equpol_tran
with (mult_p p (pol_opp (cpol (unQ,(n_term_O n)) vpol))); Auto.
Auto.
Save
.
Hints Resolve mult_neg_unQ.
Lemma
mult_p_m: (p:pol)(m:monom)(equpol (mult_m p m) (mult_p p (cpol m vpol))).
Intros.
Apply equpol_tran with (suma_app (mult_m p m) (mult_p p vpol)); Auto.
Apply equpol_tran with (suma_app (mult_m p m) vpol); Auto.
Save
.
Hints Resolve mult_p_m.
Lemma
mult_m_z_monom: (p:pol)(m:monom)(z_monom m)->
(equpol (mult_m p m) vpol).
(Induction p; Auto).
Intros.
Simpl.
(Apply equpol_tran with (mult_m p0 m0); Auto).
Save
.
Hints Resolve mult_m_z_monom.
Lemma
mul_opp_monom: (p:pol)(m:monom)(equpol (pol_opp (mult_m p m))
(mult_p p (pol_opp (cpol m vpol)))).
Intros.
Apply equpol_tran with (pol_opp (mult_p p (cpol m vpol))); Auto.
Save
.
Hints Resolve mul_opp_monom.
Lemma
mult_opp_monom2:(p:pol)(m:monom)(equpol (mult_m p m)
(pol_opp (mult_m p (monom_op m)))).
Intros.
Apply equpol_tran with (mult_p p (cpol m vpol)).
Auto.
Apply equpol_tran with (mult_p p (pol_opp (cpol (monom_op m) vpol)));Auto.
Apply mult_p_comp.
Simpl; Elim m; Auto.
Save
.
Hints Resolve mult_opp_monom2.
Lemma
distr_mult_m_monom: (p:pol)(c,c':Q)(t:term)(equpol
(suma_app (mult_m p (c,t)) (mult_m p (c',t)))
(mult_m p ((plusQ c c'),t))).
Intros.
Apply equpol_tran with (suma_app (mult_p p (cpol (c,t) vpol))
(mult_p p (cpol (c',t) vpol))); Auto.
Apply equpol_tran with (mult_p p (suma_app (cpol (c,t) vpol) (cpol (c',t) vpol)));
Auto.
Apply equpol_tran with (mult_p p (cpol ((plusQ c c'),t) vpol)); Auto.
Apply mult_p_comp.
Simpl; Auto.
Save
.
Hints Resolve distr_mult_m_monom.
Lemma
mult_m_monom_opp: (f:pol)(m:monom)(equpol
(mult_m f (monom_op m)) (pol_opp (mult_m f m))).
Intros.
Apply equpol_tran with (mult_p f (pol_opp (cpol m vpol))); Auto.
Apply equpol_tran with (mult_p f (cpol (monom_op m) vpol)); Auto.
Apply mult_p_comp.
Elim m; Auto.
Save
.
Hints Resolve mult_m_monom_opp.
Lemma
full_mult_m: (c:Q)(t:term)(p:pol)(full n t)->
(full_term_pol p)->(full_term_pol (mult_m p (c,t))).
(Induction p; Auto).
(Induction m; Intros).
Simpl.
Apply full_term_pol_cons.
(Apply term_mult_full; Trivial).
(Inversion H1; Auto).
(Apply H; Trivial).
(Inversion H1; Trivial).
Save
.
Hints Resolve full_mult_m.
Lemma
full_term_mult_p: (p:pol)(full_term_pol p)->
(q:pol)(full_term_pol q)->(full_term_pol (mult_p p q)).
Induction p; Auto.
Intros.
Simpl.
(Inversion H0; Auto).
Save
.
Hints Resolve full_term_mult_p.
Index
This page has been generated by coqdoc