Library Axiomas_n_full2_tes
Require
Export
Prop_basic2_tes.
Lemma
comp_common_succ: (p,q,r,s:pol)(F:(list pol))
(full_term_pol q)->
(full_term_pol s)->(equpol p q)->(equpol r s)->
(common_succ F p r)->
(common_succ F q s).
Intros p q r s F fq fs e1 e2.
Induction 1; Intros.
Exists p0.
Apply Red3_ext2 with f:=p; Auto.
Apply Red3_ext2 with f:=r; Auto.
Save
.
Hints Resolve comp_common_succ.
Lemma
eq_Red_equiv_common: (f,g:pol)(F:(list pol))(h:pol)(Red1 F f h)->
(h':pol)(Red1 F g h')->(equpol h h')->(common_succ F f g).
Intros f g F.
Induction 1.
Intros f0 ff0 fg0 f0F.
Induction 1.
Intros f1 f1F rf1 e fh.
Split with h; Auto.
Apply Red3_ext1 with g:=h'; Auto.
Inversion f0F; Auto.
Save
.
Hints Resolve eq_Red_equiv_common.
Lemma
Red1_is_common: (f,g:pol)(F:(list pol))(Red1 F f g)->
(common_succ F f g).
Intros f g F.
Induction 1.
Intros fF f0 f0F rf0.
Split with g; Auto.
(Inversion rf0; Auto).
Save
.
Hints Resolve Red1_is_common.
Lemma
sufc_common1: (f,g,fi:pol)(F:(list pol))(full_fam F)->(full_term_pol f)->
(full_term_pol g)->(pol_In_ensemb fi F)->(m:monom)(full_mon n m)->
~(z_monom m)->(equpol f (suma_app g (pol_opp (mult_m fi m))))->(common_succ F f g).
Induction m; Intros.
Cut (full_term_pol fi); Intros.
Cut ~(equpol fi vpol); Intros.
Elim (dec_term_in_pol f (hterm (mult_m fi (a,b)))); Intros.
Red in a0.
Elim (decQ (coef g (hterm (mult_m fi (a,b))))); Intros.
Cut (eqQ (coef f (hterm (mult_m fi (a,b))))
(multQ_neg (coef (mult_m fi (a,b)) (hterm (mult_m fi (a,b)))))); Intros.
Cut (equpol g (suma_app f (mult_m fi (a,b)))); Intros; Auto.
Clear H5.
Cut (Red1 F f g); Auto.
Apply sufc_Red1 with fi:=fi m:=(monom_op (a,b)); Trivial.
Unfold monom_op.
Unfold z_monom.
Simpl; Auto.
Apply equpol_tran with (suma_app f (mult_m fi (a,b))); Auto.
Red.
Apply eqQ_trans with (coef g (hterm (mult_m fi (a,b)))); Auto.
Replace (hterm (mult_m fi (monom_op (a,b)))) with (hterm (mult_m fi (a,b))).
Apply eqQ_trans with (plusQ (coef g (hterm (mult_m fi (a,b))))
(coef (pol_opp (mult_m fi (a,b))) (hterm (mult_m fi (a,b))))).
Apply eqQ_trans with (coef (suma_app g (pol_opp (mult_m fi (a,b))))
(hterm (mult_m fi (a,b)))); Auto.
Apply eqQ_trans with (plusQ OQ
(multQ_neg (coef (mult_m fi (a,b)) (hterm (mult_m fi (a,b)))))).
Auto.
Apply eqQ_trans with (plusQ
(multQ_neg (coef (mult_m fi (a,b)) (hterm (mult_m fi (a,b))))) OQ); Auto.
Auto.
Cut (Red1 F f (suma_app g (pol_opp (mult_m fi ((divQ
(coef g (hterm (mult_m fi (a,b)))) (hcoef fi)),(mon_term (a,b))))))); Intros.
Cut (Red1 F g (suma_app g (pol_opp (mult_m fi ((divQ
(coef g (hterm (mult_m fi (a,b)))) (hcoef fi)),(mon_term (a,b))))))); Intros.
Split with (suma_app g (pol_opp (mult_m fi ((divQ
(coef g (hterm (mult_m fi (a,b)))) (hcoef fi)),(mon_term (a,b)))))); Auto.
Apply Red1_simp with f:=fi; Auto.
Apply red1_simpl with t:=(hterm (mult_m fi (a,b))); Trivial.
Apply full_term_suma_app; Trivial.
Apply full_term_opp.
Apply full_mult_m; Auto.
Replace (hterm (mult_m fi (a,b))) with
(term_mult (hterm fi) (mon_term (a,b))); Auto.
Symmetry.
Apply hterm_mult_m; Auto.
Apply equpol_ss; Trivial.
Apply opp_comp.
Apply mult_pm_comp_2; Auto.
Apply Red1_simp with f:=fi; Auto.
Apply red1_simpl with t:=(hterm (mult_m fi (a,b))); Trivial.
Auto.
Apply term_div_hterm; Trivial.
Apply equpol_tran with (suma_app (suma_app g (pol_opp (mult_m fi (a,b))))
(pol_opp (mult_m fi ((divQ (coef f (hterm (mult_m fi (a,b)))) (hcoef fi)),
(div_term (hterm (mult_m fi (a,b))) (hterm fi)))))).
Apply equpol_tran with (suma_app g (suma_app (pol_opp (mult_m fi (a,b)))
(pol_opp (mult_m fi ((divQ (coef f (hterm (mult_m fi (a,b)))) (hcoef fi)),
(div_term (hterm (mult_m fi (a,b))) (hterm fi))))))).
Apply equpol_ss; Trivial.
Apply equpol_tran with (pol_opp (suma_app
(mult_m fi ((divQ (coef f (hterm (mult_m fi (a,b)))) (hcoef fi)),
(div_term (hterm (mult_m fi (a,b))) (hterm fi))))
(pol_opp (pol_opp (mult_m fi (a,b)))))).
Apply opp_comp.
Apply equpol_tran with (suma_app
(mult_m fi ((divQ (coef f (hterm (mult_m fi (a,b)))) (hcoef fi)),
(div_term (hterm (mult_m fi (a,b))) (hterm fi))))
(mult_m fi (a,b))).
Simpl.
Replace (div_term (hterm (mult_m fi (a,b))) (hterm fi)) with b.
Apply equpol_tran with (mult_m fi
((plusQ (divQ (coef f (hterm (mult_m fi (a,b)))) (hcoef fi)) a),b)).
Apply mult_pm_comp_2.
Simpl.
Right.
Split; Trivial.
Apply eqQ_trans with (divQ
(plusQ (coef f (hterm (mult_m fi (a,b)))) (multQ a (hcoef fi))) (hcoef fi)).
Apply eg_denomQ; Auto.
Cut (equpol g (suma_app f (mult_m fi (a,b)))); Intros; Auto.
Apply eqQ_trans with (plusQ (coef f (hterm (mult_m fi (a,b))))
(coef (mult_m fi (a,b)) (hterm (mult_m fi (a,b))))).
Apply eqQ_trans with
(coef (suma_app f (mult_m fi (a,b))) (hterm (mult_m fi (a,b)))); Auto.
Apply plusQ_comp; Auto.
Apply eqQ_trans with (hcoef (mult_m fi (a,b))); Auto.
Apply eqQ_trans with (multQ (hcoef fi) a); Auto.
Apply eqQ_trans with (multQ (hcoef fi) (mon_coef (a,b))); Auto.
Apply hcoef_mult; Auto.
Apply eqQ_sym.
Apply eqQ_trans with (plusQ a
(divQ (coef f (hterm (mult_m fi (a,b)))) (hcoef fi))); Auto.
Apply eqQ_trans with (divQ (plusQ
(multQ a (hcoef fi)) (coef f (hterm (mult_m fi (a,b))))) (hcoef fi)); Auto.
Auto.
Auto.
Auto.
Auto.
Auto.
Auto.
Cut (Red1 F g f); Intros; Auto.
Apply sufc_Red1 with fi:=fi m:=(a,b); Auto.
Apply elem_n_vpol with F; Trivial.
Apply elem_full with F; Trivial.
Save
.
Hints Resolve sufc_common1.
Lemma
sufc_common: (f,g,fi:pol)(F:(list pol))(full_fam F)->(full_term_pol f)->
(full_term_pol g)->(pol_In_ensemb fi F)->(m:monom)(full_mon n m)->
(equpol f (suma_app g (pol_opp (mult_m fi m))))->(common_succ F f g).
Induction m; Intros.
Elim (z_monom_dec (a,b)); Intros.
Cut (equpol f g); Intros.
Split with f; Auto.
Apply equpol_tran with (suma_app g (pol_opp (mult_m fi (a,b)))); Trivial.
Apply equpol_tran with (suma_app g vpol).
Apply equpol_ss; Trivial.
Apply equpol_tran with (pol_opp vpol); Auto.
Auto.
Apply sufc_common1 with fi:=fi m:=(a,b); Auto.
Save
.
Hints Resolve sufc_common.
Lemma
congr_conv : (F:(list pol))(f,g:pol)(suma_pol_mon F f g)-> (Red_equiv F f g).
Induction 1; Intros.
Auto.
Apply Red_equiv_trans with g1; Trivial.
Apply common_is_Red_equiv.
Apply sufc_common with fi:=fi m:=m; Trivial.
Apply equpol_sym.
Apply equpol_tran with
(suma_app g1 (suma_app (mult_m fi m) (pol_opp (mult_m fi m)))).
Apply equpol_tran with
(suma_app (suma_app g1 (mult_m fi m)) (pol_opp (mult_m fi m))).
Apply monot_suma; Assumption.
Auto.
Apply equpol_tran with (suma_app g1 vpol); Auto.
Save
.
Hints Resolve congr_conv.
Index
This page has been generated by coqdoc