Library impl_large
Require
Export
red_expl.
Lemma
basic3_full: (h,f,g:pol)(F:(list pol_full))
(Red1 (inc_list F) f g)->(full_term_pol h)->
(x,y:pol_full)(equpol (inc x) (suma_app f h))->
(equpol (inc y) (suma_app g h))->(common_succ_full F x y).
Intros.
Elim basic3 with h f g (inc_list F); Trivial; Intros.
Elim (can_fun p); Trivial; Intros.
Elim p0; Intros.
Clear p0.
Split with (exist pol [x:pol](full_pol x) x0 H5); Simpl.
Apply Red3_ext1 with p; Auto.
Apply Red3_ext2 with (suma_app f h); Auto.
Simpl.
Apply Red3_ext2 with (suma_app g h); Auto.
Apply Red3_ext1 with p; Auto.
Inversion H3; Auto.
Save
.
Lemma
basic4_full: (f,g:pol_full)(F:(list pol_full))
(Red3 (inc_list F) (suma_app (inc f) (pol_opp (inc g))) vpol)->
(common_succ_full F f g).
Intros.
Elim basic4 with (inc f) (inc g) (inc_list F); Auto; Intros.
Elim (can_fun p); Trivial; Intros.
Elim p0; Intros.
Clear p0.
Split with (exist pol [x:pol](full_pol x) x H2); Simpl.
Apply Red3_ext1 with p; Auto.
Apply Red3_ext1 with p; Auto.
Inversion H0; Auto.
Save
.
Lemma
G2_impl_G3_LCR_full: (F:(list pol_full))(Groebner2_full F)->
((f,g,h:pol_full)(Red1 (inc_list F) (inc f) (inc g))->
(Red1 (inc_list F) (inc f) (inc h))->(common_succ_full F g h)).
Intros F Gb2.
Induction 1; Intros fF fi pfiF rfifg.
Induction 1; Intros fF' fj pfjF rfjfh.
Inversion rfifg.
Inversion rfjfh.
Clear H0 fF' H.
Cut (full n t).
Intro ft.
Cut (full n t0).
Intros ft0.
Cut (full_term_pol (cpol ((coef (inc f) t0),t0) vpol)).
Intros fct.
Cut (full_term_pol (cpol ((coef (inc f) t),t) vpol)).
Intros fct0.
Cut (full n (div_term t (hterm fi))).
Intros ftht.
Cut (full_term_pol
(mult_m fi ((divQ (coef (inc f) t) (hcoef fi)),(div_term t (hterm fi))))).
Intros fficht.
Cut (full_term_pol (suma_app (cpol ((coef (inc f) t),t) vpol) (pol_opp (mult_m fi
((divQ (coef (inc f) t) (hcoef fi)),(div_term t (hterm fi))))))).
Intros fsucfi.
Cut (full n (div_term t0 (hterm fj))).
Intros ftht0.
Cut (full_term_pol
(mult_m fj ((divQ (coef (inc f) t0) (hcoef fj)),(div_term t0 (hterm fj))))).
Intros ffjcht.
Cut (full_term_pol (suma_app (cpol ((coef (inc f) t0),t0) vpol) (pol_opp (mult_m fj
((divQ (coef (inc f) t0) (hcoef fj)),(div_term t0 (hterm fj))))))).
Intros fsucfj.
Cut (t=(hterm (cpol ((coef (inc f) t),t) vpol))).
Intros htt.
Cut (t0=(hterm (cpol ((coef (inc f) t0),t0) vpol))).
Intros htt0.
Elim (Ttm_total t0 t n); Trivial.
Destruct 1; Intros.
Clear a.
Elim split_pol with (inc f) t; Trivial.
Intros f1 hf1.
Elim hf1; Intros ff1 f1t'.
Clear hf1.
Intro.
Cut (full_term_pol (suma_app f1 (suma_app (cpol ((coef (inc f) t),t) vpol)
(pol_opp (mult_m fi((divQ (coef (inc f) t) (hcoef fi)),(div_term t (hterm fi)))))))).
Intros ff1cfi.
Elim H; Intros f2 hf2 eqf.
Elim hf2; Intros ff2 htermf2.
Clear hf2.
Clear H.
Cut (full_term_pol (suma_app f2 (pol_opp (mult_m fj
((divQ (coef (inc f) t0) (hcoef fj)),(div_term t0 (hterm fj))))))).
Intros ff2cfj.
Cut (red fi (cpol ((coef (inc f) t),t) vpol)
(suma_app (cpol ((coef (inc f) t),t) vpol) (pol_opp (mult_m fi
((divQ (coef (inc f) t) (hcoef fi)),(div_term t (hterm fi))))))); Intros.
Cut (red fj f2
(suma_app f2 (pol_opp (mult_m fj
((divQ (coef f2 t0) (hcoef fj)),(div_term t0 (hterm fj))))))); Intros.
Cut (equpol (inc g) (suma_app (suma_app f1 (suma_app (cpol ((coef (inc f) t),t) vpol) f2))
(pol_opp (mult_m fi
((divQ (coef (inc f) t) (hcoef fi)),(div_term t (hterm fi))))))); Intros.
Cut (equpol (inc g) (suma_app (suma_app f1 (suma_app (cpol ((coef (inc f) t),t) vpol)
(pol_opp (mult_m fi
((divQ (coef (inc f) t) (hcoef fi)),(div_term t (hterm fi))))))) f2)); Intros.
Cut (equpol (inc h) (suma_app (suma_app f1 (cpol ((coef (inc f) t),t) vpol))
(suma_app f2 (pol_opp (mult_m fj
((divQ (coef (inc f) t0) (hcoef fj)),(div_term t0 (hterm fj)))))))); Intros.
Cut (red fi (inc h) (suma_app (suma_app f1 (suma_app (cpol ((coef (inc f) t),t) vpol)
(pol_opp (mult_m fi ((divQ (coef (inc f) t) (hcoef fi)),(div_term t (hterm fi)))))))
(suma_app f2 (pol_opp (mult_m fj
((divQ (coef (inc f) t0) (hcoef fj)),(div_term t0 (hterm fj)))))))); Intros.
Elim (can_fun (suma_app (suma_app f1
(suma_app (cpol ((coef (inc f) t),t) vpol)
(pol_opp (mult_m fi ((divQ (coef (inc f) t) (hcoef fi)),(div_term t (hterm fi))))))) f2)); Trivial; Intros.
Elim p; Intros.
Clear p.
Elim (can_fun (suma_app (suma_app f1 (suma_app (cpol ((coef (inc f) t),t) vpol)
(pol_opp (mult_m fi ((divQ (coef (inc f) t) (hcoef fi)),(div_term t (hterm fi)))))))
(suma_app f2 (pol_opp (mult_m fj
((divQ (coef (inc f) t0) (hcoef fj)),(div_term t0 (hterm fj)))))))); Trivial; Intros.
Elim p; Intros.
Clear p.
Cut (common_succ_full F (exist pol [x:pol](full_pol x) x H19)
(exist pol [x:pol](full_pol x) x0 H21)); Intros.
Apply comp_common_succ_full with p:=(exist pol [x:pol](full_pol x) x H19) r:=h; Auto.
Simpl.
Apply equpol_tran
with (suma_app
(suma_app f1
(suma_app (cpol ((coef (inc f) t),t) vpol)
(pol_opp
(mult_m fi
((divQ (coef (inc f) t) (hcoef fi)),
(div_term t (hterm fi))))))) f2); Auto.
Apply trans_common_red_full
with f:=(exist pol [x:pol](full_pol x) x0 H21).
Apply Red1_simp with f:=fi; Auto.
Simpl.
Apply red_ext1
with (suma_app
(suma_app f1
(suma_app (cpol ((coef (inc f) t),t) vpol)
(pol_opp
(mult_m fi
((divQ (coef (inc f) t) (hcoef fi)),
(div_term t (hterm fi)))))))
(suma_app f2
(pol_opp
(mult_m fj
((divQ (coef (inc f) t0) (hcoef fj)),
(div_term t0 (hterm fj))))))); Auto.
Trivial.
Elim (can_fun (suma_app f2 (suma_app f1
(suma_app (cpol ((coef (inc f) t),t) vpol)
(pol_opp (mult_m fi ((divQ (coef (inc f) t) (hcoef fi)),(div_term t (hterm fi))))))))); Trivial; Intros.
Elim p; Intros.
Clear p.
Elim (can_fun (suma_app (suma_app f2
(pol_opp (mult_m fj ((divQ (coef (inc f) t0) (hcoef fj)),(div_term t0 (hterm fj))))))
(suma_app f1 (suma_app (cpol ((coef (inc f) t),t) vpol) (pol_opp (mult_m fi
((divQ (coef (inc f) t) (hcoef fi)),(div_term t (hterm fi))))))))); Trivial; Intros.
Elim p; Intros.
Clear p.
Apply comp_common_succ_full with p:=(exist pol [x:pol](full_pol x) x1 H23) r:=(exist pol [x:pol](full_pol x) x2 H25); Auto.
Simpl.
Apply equpol_tran
with (suma_app f2
(suma_app f1
(suma_app (cpol ((coef (inc f) t),t) vpol)
(pol_opp
(mult_m fi
((divQ (coef (inc f) t) (hcoef fi)),
(div_term t (hterm fi)))))))); Auto.
Apply equpol_tran
with (suma_app
(suma_app f1
(suma_app (cpol ((coef (inc f) t),t) vpol)
(pol_opp
(mult_m fi
((divQ (coef (inc f) t) (hcoef fi)),
(div_term t (hterm fi))))))) f2); Auto.
Simpl.
Apply equpol_tran
with (suma_app
(suma_app f2
(pol_opp
(mult_m fj
((divQ (coef (inc f) t0) (hcoef fj)),
(div_term t0 (hterm fj))))))
(suma_app f1
(suma_app (cpol ((coef (inc f) t),t) vpol)
(pol_opp
(mult_m fi
((divQ (coef (inc f) t) (hcoef fi)),
(div_term t (hterm fi)))))))); Auto.
Apply equpol_tran
with (suma_app
(suma_app f1
(suma_app (cpol ((coef (inc f) t),t) vpol)
(pol_opp
(mult_m fi
((divQ (coef (inc f) t) (hcoef fi)),
(div_term t (hterm fi)))))))
(suma_app f2
(pol_opp
(mult_m fj
((divQ (coef (inc f) t0) (hcoef fj)),
(div_term t0 (hterm fj))))))); Auto.
Apply basic3_full
with h:=(suma_app f1
(suma_app (cpol ((coef (inc f) t),t) vpol)
(pol_opp
(mult_m fi
((divQ (coef (inc f) t) (hcoef fi)),
(div_term t (hterm fi))))))) f:=f2
g:=(suma_app f2
(pol_opp
(mult_m fj
((divQ (coef (inc f) t0) (hcoef fj)),
(div_term t0 (hterm fj)))))).
Apply Red1_simp with fj; Trivial.
Apply red_ext1
with (suma_app f2
(pol_opp
(mult_m fj
((divQ (coef f2 t0) (hcoef fj)),(div_term t0 (hterm fj))))));
Trivial.
Apply equpol_ss; Trivial.
Apply opp_comp.
Apply mult_pm_comp_2.
Simpl.
Right.
Split; Trivial.
Apply eg_denomQ; Auto.
Apply coef_Ttm_split_pol with f1:=f1 t:=t; Trivial.
Apply full_term_suma_app; Trivial.
Simpl.
Auto.
Simpl.
Auto.
Apply full_term_suma_app; Trivial.
Apply full_term_suma_app; Trivial.
Apply full_term_suma_app; Trivial.
Apply full_term_suma_app; Trivial.
Apply red_ext2 with (suma_app (suma_app (cpol ((coef (inc f) t),t) vpol)
(suma_app f2 (pol_opp (mult_m fj
((divQ (coef (inc f) t0) (hcoef fj)),(div_term t0 (hterm fj))))))) f1); Trivial.
Apply equpol_sym.
Apply equpol_tran with (suma_app (suma_app f1 (cpol ((coef (inc f) t),t) vpol))
(suma_app f2 (pol_opp (mult_m fj
((divQ (coef (inc f) t0) (hcoef fj)),(div_term t0 (hterm fj))))))); Trivial.
Apply equpol_tran with (suma_app f1 (suma_app (cpol ((coef (inc f) t),t) vpol)
(suma_app f2 (pol_opp (mult_m fj
((divQ (coef (inc f) t0) (hcoef fj)),(div_term t0 (hterm fj)))))))); Auto.
Apply red_ext1 with (suma_app (suma_app (suma_app (cpol ((coef (inc f) t),t) vpol)
(pol_opp (mult_m fi ((divQ (coef (inc f) t) (hcoef fi)),(div_term t (hterm fi))))))
(suma_app f2 (pol_opp (mult_m fj
((divQ (coef (inc f) t0) (hcoef fj)),(div_term t0 (hterm fj))))))) f1).
Apply equpol_tran with (suma_app f1 (suma_app (suma_app (cpol ((coef (inc f) t),t) vpol)
(pol_opp (mult_m fi ((divQ (coef (inc f) t) (hcoef fi)),(div_term t (hterm fi))))))
(suma_app f2 (pol_opp (mult_m fj
((divQ (coef (inc f) t0) (hcoef fj)),(div_term t0 (hterm fj)))))))); Auto.
Apply full_term_suma_app; Trivial.
Apply basic2; Trivial.
Apply hred_suma_bis; Trivial.
Apply hred1_simpl; Trivial.
Apply n_zmonom_n_vpol; Auto.
Replace (hterm (cpol ((coef (inc f) t),t) vpol)) with t; Trivial.
Apply equpol_ss; Trivial.
Apply opp_comp.
Apply mult_pm_comp_2.
Simpl.
Right.
Split.
Replace (hterm (cpol ((coef (inc f) t),t) vpol)) with t; Trivial.
Apply eg_denomQ; Auto.
Intros.
Replace (hterm (cpol ((coef (inc f) t),t) vpol)) with t.
Apply no_hterm_Ttm_in_red_bis with f2 (suma_app f2 (pol_opp (mult_m fj
((divQ (coef (inc f) t0) (hcoef fj)),(div_term t0 (hterm fj)))))) fj; Trivial.
Apply red_ext1 with (suma_app f2 (pol_opp (mult_m fj
((divQ (coef f2 t0) (hcoef fj)),(div_term t0 (hterm fj)))))); Trivial.
Apply equpol_ss; Trivial.
Apply opp_comp.
Apply mult_pm_comp_2.
Simpl.
Right.
Split; Trivial.
Apply eg_denomQ; Auto.
Apply coef_Ttm_split_pol with f1:=f1 t:=t; Trivial.
Intros.
Cut (Ttm t t2); Intros.
Cut (term_in_pol (cpol ((coef (inc f) t),t) vpol) t') \/
(term_in_pol (suma_app f2 (pol_opp (mult_m fj
((divQ (coef (inc f) t0) (hcoef fj)),(div_term t0 (hterm fj)))))) t'); Intros.
Elim H21; Intros.
Cut t=t'; Intros.
Rewrite <- H23; Auto.
Symmetry.
Apply eq_term_in_pol_monom with (coef (inc f) t); Trivial.
Apply full_coef with (cpol ((coef (inc f) t),t) vpol); Trivial.
Clear H21.
Apply Ttm_trans with t n; Trivial.
Cut (term_in_pol f2 t')\/(term_in_pol (pol_opp (mult_m fj
((divQ (coef (inc f) t0) (hcoef fj)),(div_term t0 (hterm fj))))) t'); Intros.
Elim H21; Intros; Clear H21; Auto.
Clear H22.
Cut (term_in_pol (mult_m fj ((divQ (coef (inc f) t0) (hcoef fj)),
(div_term t0 (hterm fj)))) t'); Intros.
Apply term_in_Ttm with fj t0 (coef (inc f) t0); Trivial.
Apply full_coef with (mult_m fj
((divQ (coef (inc f) t0) (hcoef fj)),(div_term t0 (hterm fj)))); Trivial.
Apply term_in_pol_opp; Auto.
Apply term_in_sum; Trivial.
Apply full_coef with (suma_app f2 (pol_opp (mult_m fj
((divQ (coef (inc f) t0) (hcoef fj)),(div_term t0 (hterm fj)))))); Trivial.
Apply full_coef with f1; Trivial.
Apply term_in_sum; Trivial.
Auto.
Apply equpol_tran with (suma_app (inc f) (pol_opp (mult_m fj
((divQ (coef (inc f) t0) (hcoef fj)),(div_term t0 (hterm fj)))))); Trivial.
Apply equpol_tran with (suma_app (suma_app f1 (suma_app
(cpol ((coef (inc f) t),t) vpol) f2)) (pol_opp (mult_m fj
((divQ (coef (inc f) t0) (hcoef fj)),(div_term t0 (hterm fj)))))).
Apply equpol_ss; Trivial.
Apply equpol_tran with (suma_app (suma_app (suma_app f1
(cpol ((coef (inc f) t),t) vpol)) f2) (pol_opp (mult_m fj
((divQ (coef (inc f) t0) (hcoef fj)),(div_term t0 (hterm fj)))))); Auto.
Apply equpol_tran with (suma_app (inc f) (pol_opp (mult_m fi
((divQ (coef (inc f) t) (hcoef fi)),(div_term t (hterm fi)))))); Trivial.
Apply equpol_tran with (suma_app (suma_app f1 (suma_app
(cpol ((coef (inc f) t),t) vpol) f2)) (pol_opp (mult_m fi
((divQ (coef (inc f) t) (hcoef fi)),(div_term t (hterm fi)))))).
Apply equpol_ss; Trivial.
Apply equpol_tran with (suma_app (suma_app (suma_app f1
(cpol ((coef (inc f) t),t) vpol)) f2) (pol_opp (mult_m fi
((divQ (coef (inc f) t) (hcoef fi)),(div_term t (hterm fi)))))).
Apply equpol_ss; Trivial.
Auto.
Apply equpol_tran with (suma_app (suma_app (suma_app f1
(cpol ((coef (inc f) t),t) vpol)) (pol_opp (mult_m fi
((divQ (coef (inc f) t) (hcoef fi)),(div_term t (hterm fi)))))) f2).
Apply equpol_tran with (suma_app (suma_app f1 (cpol ((coef (inc f) t),t) vpol))
(suma_app f2 (pol_opp (mult_m fi
((divQ (coef (inc f) t) (hcoef fi)),(div_term t (hterm fi))))))); Trivial.
Apply equpol_tran with (suma_app (suma_app f1 (cpol ((coef (inc f) t),t) vpol))
(suma_app (pol_opp (mult_m fi
((divQ (coef (inc f) t) (hcoef fi)),(div_term t (hterm fi))))) f2)); Auto.
Apply equpol_ss; Trivial.
Apply equpol_tran with (suma_app (inc f) (pol_opp (mult_m fi
((divQ (coef (inc f) t) (hcoef fi)),(div_term t (hterm fi)))))); Auto.
Apply red1_simpl with t0; Auto.
Apply split_term_in_pol with f1 (coef (inc f) t) t;Trivial.
Apply comp_term_in_pol with (inc f); Trivial.
Apply red1_simpl with t; Trivial.
Auto.
Apply equpol_ss; Trivial.
Apply opp_comp.
Apply mult_pm_comp_2.
Simpl.
Right.
Split; Trivial.
Elim (eq_tm_dec t t); Intros; Auto.
Elim b; Auto.
Apply full_term_suma_app; Trivial.
Apply full_term_opp.
Apply full_mult_m; Trivial.
Apply full_term_suma_app; Trivial.
Apply conmt_common_succ_full.
Clear a.
Elim split_pol with (inc f) t0; Trivial; Intros f1 hf1.
Elim hf1; Intros ff1 f1t'.
Clear hf1.
Intro.
Elim H; Intros f2 hf2 eqf.
Elim hf2; Intros ff2 htermf2.
Clear hf2.
Clear H.
Cut (full_term_pol (suma_app f1 (suma_app (cpol ((coef (inc f) t0),t0) vpol)
(pol_opp (mult_m fj((divQ (coef (inc f) t0) (hcoef fj)),(div_term t0 (hterm fj)))))))).
Intros ff1cfj.
Cut (full_term_pol (suma_app f2 (pol_opp (mult_m fi
((divQ (coef (inc f) t) (hcoef fi)),(div_term t (hterm fi))))))).
Intros ff2cfi.
Cut (red fj (cpol ((coef (inc f) t0),t0) vpol) (suma_app (cpol ((coef (inc f) t0),t0) vpol)
(pol_opp (mult_m fj
((divQ (coef (inc f) t0) (hcoef fj)),(div_term t0 (hterm fj))))))); Intros.
Cut (red fi f2 (suma_app f2 (pol_opp (mult_m fi
((divQ (coef f2 t) (hcoef fi)),(div_term t (hterm fi))))))); Intros.
Cut (equpol (inc g) (suma_app
(suma_app f1 (suma_app (cpol ((coef (inc f) t0),t0) vpol) f2))
(pol_opp (mult_m fi
((divQ (coef (inc f) t) (hcoef fi)),(div_term t (hterm fi))))))); Intros.
Cut (equpol (inc h) (suma_app (suma_app f1 (cpol ((coef (inc f) t0),t0) vpol))
(suma_app f2 (pol_opp (mult_m fj
((divQ (coef (inc f) t0) (hcoef fj)),(div_term t0 (hterm fj)))))))); Intros.
Cut (equpol (inc h) (suma_app (suma_app f1
(suma_app (cpol ((coef (inc f) t0),t0) vpol) (pol_opp (mult_m fj
((divQ (coef (inc f) t0) (hcoef fj)),(div_term t0 (hterm fj))))))) f2)); Intros.
Cut (red fj (inc g) (suma_app (suma_app f1 (suma_app (cpol ((coef (inc f) t0),t0) vpol)
(pol_opp (mult_m fj
((divQ (coef (inc f) t0) (hcoef fj)),(div_term t0 (hterm fj)))))))
(suma_app f2 (pol_opp (mult_m fi
((divQ (coef (inc f) t) (hcoef fi)),(div_term t (hterm fi)))))))); Intros.
Elim (can_fun (suma_app f2 (suma_app f1 (suma_app
(cpol ((coef (inc f) t0),t0) vpol) (pol_opp (mult_m fj
((divQ (coef (inc f) t0) (hcoef fj)),(div_term t0 (hterm fj))))))))); Trivial; Intros.
Elim p; Intros.
Clear p.
Elim (can_fun (suma_app (suma_app f2 (pol_opp (mult_m fi
((divQ (coef (inc f) t) (hcoef fi)),(div_term t (hterm fi))))))
(suma_app f1 (suma_app (cpol ((coef (inc f) t0),t0) vpol) (pol_opp (mult_m fj
((divQ (coef (inc f) t0) (hcoef fj)),(div_term t0 (hterm fj))))))))); Trivial; Intros.
Elim p; Intros.
Clear p.
Cut (common_succ_full F (exist pol [x:pol](full_pol x) x H19)
(exist pol [x:pol](full_pol x) x0 H21)); Intros.
Apply comp_common_succ_full with p:=(exist pol [x:pol](full_pol x) x H19) r:=g; Auto.
Simpl.
Apply equpol_sym.
Apply equpol_tran with (suma_app f2
(suma_app f1
(suma_app (cpol ((coef (inc f) t0),t0) vpol)
(pol_opp
(mult_m fj
((divQ (coef (inc f) t0) (hcoef fj)),
(div_term t0 (hterm fj)))))))); Auto.
Apply equpol_tran with (suma_app
(suma_app f1
(suma_app (cpol ((coef (inc f) t0),t0) vpol)
(pol_opp
(mult_m fj
((divQ (coef (inc f) t0) (hcoef fj)),
(div_term t0 (hterm fj))))))) f2); Auto.
Apply trans_common_red_full
with f:=(exist pol [x:pol](full_pol x) x0 H21).
Apply Red1_simp with f:=fj; Auto.
Simpl.
Apply red_ext1
with (suma_app
(suma_app f1
(suma_app (cpol ((coef (inc f) t0),t0) vpol)
(pol_opp
(mult_m fj
((divQ (coef (inc f) t0) (hcoef fj)),
(div_term t0 (hterm fj)))))))
(suma_app f2
(pol_opp
(mult_m fi
((divQ (coef (inc f) t) (hcoef fi)),
(div_term t (hterm fi))))))); Auto.
Apply equpol_tran with (suma_app
(suma_app f2
(pol_opp
(mult_m fi
((divQ (coef (inc f) t) (hcoef fi)),
(div_term t (hterm fi))))))
(suma_app f1
(suma_app (cpol ((coef (inc f) t0),t0) vpol)
(pol_opp
(mult_m fj
((divQ (coef (inc f) t0) (hcoef fj)),
(div_term t0 (hterm fj)))))))); Auto.
Auto.
Elim (can_fun (suma_app f2 (suma_app f1
(suma_app (cpol ((coef (inc f) t0),t0) vpol) (pol_opp (mult_m fj
((divQ (coef (inc f) t0) (hcoef fj)),(div_term t0 (hterm fj))))))))); Trivial; Intros.
Elim p; Intros.
Clear p.
Elim (can_fun (suma_app (suma_app f2 (pol_opp (mult_m fi
((divQ (coef (inc f) t) (hcoef fi)),(div_term t (hterm fi))))))
(suma_app f1 (suma_app (cpol ((coef (inc f) t0),t0) vpol) (pol_opp (mult_m fj
((divQ (coef (inc f) t0) (hcoef fj)),(div_term t0 (hterm fj))))))))); Trivial; Intros.
Elim p; Intros.
Clear p.
Apply comp_common_succ_full with p:=(exist pol [x:pol](full_pol x) x1 H23) r:=(exist pol [x:pol](full_pol x) x2 H25); Auto.
Simpl.
Apply equpol_tran with (suma_app f2
(suma_app f1
(suma_app (cpol ((coef (inc f) t0),t0) vpol)
(pol_opp
(mult_m fj
((divQ (coef (inc f) t0) (hcoef fj)),
(div_term t0 (hterm fj)))))))); Auto.
Simpl.
Apply equpol_tran with (suma_app
(suma_app f2
(pol_opp
(mult_m fi
((divQ (coef (inc f) t) (hcoef fi)),
(div_term t (hterm fi))))))
(suma_app f1
(suma_app (cpol ((coef (inc f) t0),t0) vpol)
(pol_opp
(mult_m fj
((divQ (coef (inc f) t0) (hcoef fj)),
(div_term t0 (hterm fj)))))))); Auto.
Apply basic3_full
with h:=(suma_app f1
(suma_app (cpol ((coef (inc f) t0),t0) vpol)
(pol_opp
(mult_m fj
((divQ (coef (inc f) t0) (hcoef fj)),
(div_term t0 (hterm fj))))))) f:=f2
g:=(suma_app f2
(pol_opp
(mult_m fi
((divQ (coef (inc f) t) (hcoef fi)),
(div_term t (hterm fi)))))).
Apply Red1_simp with fi; Trivial.
Apply red_ext1 with (suma_app f2 (pol_opp (mult_m fi
((divQ (coef f2 t) (hcoef fi)),(div_term t (hterm fi)))))); Trivial.
Apply equpol_ss; Trivial.
Apply opp_comp.
Apply mult_pm_comp_2.
Simpl.
Right.
Split; Trivial.
Apply eg_denomQ; Auto.
Apply coef_Ttm_split_pol with f1:=f1 t:=t0; Trivial.
Apply full_term_suma_app; Trivial.
Simpl.
Auto.
Simpl; Auto.
Apply full_term_suma_app; Auto.
Apply full_term_suma_app; Auto.
Apply full_term_suma_app; Auto.
Apply full_term_suma_app; Auto.
Apply red_ext2 with (suma_app (suma_app (cpol ((coef (inc f) t0),t0) vpol)
(suma_app f2 (pol_opp (mult_m fi
((divQ (coef (inc f) t) (hcoef fi)),(div_term t (hterm fi))))))) f1); Trivial.
Apply equpol_sym.
Apply equpol_tran with (suma_app (suma_app f1 (suma_app
(cpol ((coef (inc f) t0),t0) vpol) f2)) (pol_opp (mult_m fi
((divQ (coef (inc f) t) (hcoef fi)),(div_term t (hterm fi)))))); Trivial.
Apply equpol_tran with (suma_app f1 (suma_app
(cpol ((coef (inc f) t0),t0) vpol) (suma_app f2 (pol_opp
(mult_m fi ((divQ (coef (inc f) t) (hcoef fi)),(div_term t (hterm fi)))))))); Trivial.
Apply equpol_tran with (suma_app (suma_app f1 (suma_app
(cpol ((coef (inc f) t0),t0) vpol) f2)) (pol_opp (mult_m fi
((divQ (coef (inc f) t) (hcoef fi)),(div_term t (hterm fi)))))); Trivial.
Apply equpol_tran with (suma_app (suma_app f1
(cpol ((coef (inc f) t0),t0) vpol)) (suma_app f2 (pol_opp (mult_m fi
((divQ (coef (inc f) t) (hcoef fi)),(div_term t (hterm fi))))))); Trivial.
Apply equpol_tran with (suma_app (suma_app (suma_app f1
(cpol ((coef (inc f) t0),t0) vpol)) f2) (pol_opp (mult_m fi
((divQ (coef (inc f) t) (hcoef fi)),(div_term t (hterm fi)))))); Auto.
Apply red_ext1 with (suma_app (suma_app (suma_app
(cpol ((coef (inc f) t0),t0) vpol)
(pol_opp (mult_m fj ((divQ (coef (inc f) t0) (hcoef fj)),(div_term t0 (hterm fj))))))
(suma_app f2 (pol_opp (mult_m fi
((divQ (coef (inc f) t) (hcoef fi)),(div_term t (hterm fi))))))) f1).
Apply equpol_tran with (suma_app f1 (suma_app (suma_app
(cpol ((coef (inc f) t0),t0) vpol) (pol_opp (mult_m fj
((divQ (coef (inc f) t0) (hcoef fj)),(div_term t0 (hterm fj))))))
(suma_app f2 (pol_opp (mult_m fi
((divQ (coef (inc f) t) (hcoef fi)),(div_term t (hterm fi)))))))); Auto.
Apply full_term_suma_app; Auto.
Apply basic2; Trivial.
Apply hred_suma_bis.
Apply hred1_simpl; Trivial.
Apply n_zmonom_n_vpol; Auto.
Replace (hterm (cpol ((coef (inc f) t0),t0) vpol)) with t0; Trivial.
Apply equpol_ss; Trivial.
Apply opp_comp.
Apply mult_pm_comp_2.
Simpl.
Right.
Split.
Replace (hterm (cpol ((coef (inc f) t0),t0) vpol)) with t0; Trivial.
Apply eg_denomQ; Auto.
Apply full_term_suma_app; Trivial.
Apply full_term_opp; Trivial.
Intros.
Replace (hterm (cpol ((coef (inc f) t0),t0) vpol)) with t0.
Apply no_hterm_Ttm_in_red_bis with f2 (suma_app f2 (pol_opp (mult_m fi
((divQ (coef (inc f) t) (hcoef fi)),(div_term t (hterm fi)))))) fi; Trivial.
Apply red_ext1 with (suma_app f2 (pol_opp (mult_m fi
((divQ (coef f2 t) (hcoef fi)),(div_term t (hterm fi)))))); Trivial.
Apply equpol_ss; Trivial.
Apply opp_comp.
Apply mult_pm_comp_2.
Simpl.
Right.
Split; Trivial.
Apply eg_denomQ; Auto.
Apply coef_Ttm_split_pol with f1:=f1 t:=t0; Trivial.
Intros.
Cut (Ttm t0 t2); Intros.
Cut (term_in_pol (cpol ((coef (inc f) t0),t0) vpol) t')\/
(term_in_pol (suma_app f2 (pol_opp (mult_m fi
((divQ (coef (inc f) t) (hcoef fi)),(div_term t (hterm fi)))))) t');Intros.
Elim H21; Intros.
Cut t0=t'; Intros.
Rewrite <- H23; Auto.
Symmetry.
Apply eq_term_in_pol_monom with (coef (inc f) t0);Trivial.
Apply full_coef with (cpol ((coef (inc f) t0),t0) vpol); Trivial.
Clear H21.
Apply Ttm_trans with t0 n; Trivial.
Cut (term_in_pol f2 t')\/(term_in_pol (pol_opp (mult_m fi
((divQ (coef (inc f) t) (hcoef fi)),(div_term t (hterm fi))))) t'); Intros.
Elim H21; Intros; Clear H21; Auto.
Clear H22.
Cut (term_in_pol (mult_m fi
((divQ (coef (inc f) t) (hcoef fi)),(div_term t (hterm fi)))) t'); Intros.
Apply term_in_Ttm with fi t (coef (inc f) t);Trivial.
Apply full_coef with (mult_m fi
((divQ (coef (inc f) t) (hcoef fi)),(div_term t (hterm fi)))); Trivial.
Auto.
Apply term_in_sum; Trivial.
Apply full_coef with (suma_app f2 (pol_opp (mult_m fi
((divQ (coef (inc f) t) (hcoef fi)),(div_term t (hterm fi)))))); Trivial.
Apply full_coef with f1; Trivial.
Apply term_in_sum; Trivial.
Auto.
Apply equpol_tran with (suma_app (inc f) (pol_opp (mult_m fj
((divQ (coef (inc f) t0) (hcoef fj)),(div_term t0 (hterm fj)))))); Trivial.
Apply equpol_tran with (suma_app (suma_app f1 (suma_app
(cpol ((coef (inc f) t0),t0) vpol) f2))
(pol_opp (mult_m fj ((divQ (coef (inc f) t0) (hcoef fj)),(div_term t0 (hterm fj)))))).
Apply equpol_ss; Auto.
Apply equpol_tran with (suma_app f1 (suma_app (suma_app
(cpol ((coef (inc f) t0),t0) vpol) f2) (pol_opp (mult_m fj
((divQ (coef (inc f) t0) (hcoef fj)),(div_term t0 (hterm fj))))))); Trivial.
Apply equpol_tran with (suma_app f1 (suma_app (suma_app
(cpol ((coef (inc f) t0),t0) vpol) (pol_opp (mult_m fj
((divQ (coef (inc f) t0) (hcoef fj)),(div_term t0 (hterm fj)))))) f2)).
Apply equpol_ss; Trivial.
Apply equpol_tran with (suma_app (cpol ((coef (inc f) t0),t0) vpol) (suma_app f2 (pol_opp
(mult_m fj ((divQ (coef (inc f) t0) (hcoef fj)),(div_term t0 (hterm fj))))))); Trivial.
Apply equpol_tran with (suma_app (cpol ((coef (inc f) t0),t0) vpol)
(suma_app (pol_opp (mult_m fj
((divQ (coef (inc f) t0) (hcoef fj)),(div_term t0 (hterm fj))))) f2)); Auto.
Auto.
Apply equpol_tran with (suma_app (inc f) (pol_opp (mult_m fj
((divQ (coef (inc f) t0) (hcoef fj)),(div_term t0 (hterm fj)))))); Trivial.
Apply equpol_tran with (suma_app (suma_app (suma_app f1
(cpol ((coef (inc f) t0),t0) vpol)) f2) (pol_opp (mult_m fj
((divQ (coef (inc f) t0) (hcoef fj)),(div_term t0 (hterm fj)))))); Trivial.
Apply equpol_ss; Trivial.
Apply equpol_tran with
(suma_app f1 (suma_app (cpol ((coef (inc f) t0),t0) vpol) f2)); Auto.
Apply equpol_tran with (suma_app (inc f) (pol_opp (mult_m fi
((divQ (coef (inc f) t) (hcoef fi)),(div_term t (hterm fi)))))); Auto.
Apply red1_simpl with t; Trivial.
Apply split_term_in_pol with f1 (coef (inc f) t0) t0;Trivial.
Apply comp_term_in_pol with (inc f); Trivial.
Apply full_term_suma_app; Trivial.
Apply full_term_opp.
Apply full_mult_m; Trivial.
Apply red1_simpl with t0; Trivial.
Auto.
Apply equpol_ss; Trivial.
Apply opp_comp.
Apply mult_pm_comp_2.
Simpl.
Right.
Split; Trivial.
Elim (eq_tm_dec t0 t0); Auto; Intros.
Elim b; Auto.
Apply full_term_suma_app; Trivial.
Apply full_term_opp; Trivial.
Apply full_term_suma_app; Trivial.
Intro.
Rewrite b in H14.
Rewrite b in H13.
Cut (equpol (suma_app (inc g) (pol_opp (inc h))) (mult_m (S_pol fj fi)
((coef (inc f) t),(div_term t (lcm (hterm fj) (hterm fi)))))); Intros.
Red in Gb2. Elim Gb2; Intros.
Clear H0.
Apply basic4_full; Trivial.
Apply Red3_ext2
with (mult_m (S_pol fj fi)
((coef (inc f) t),(div_term t (lcm (hterm fj) (hterm fi)))));
Auto.
Apply Red3_vpol_mult_m.
Elim (can_fun fj); Trivial; Intros.
Elim p; Intros.
Clear p.
Elim (can_fun fi); Trivial; Intros.
Elim p; Intros.
Clear p.
Cut (Red3 (inc_list F)
(S_pol (inc (exist pol [x:pol](full_pol x) x H0))
(inc (exist pol [x:pol](full_pol x) x0 H17))) vpol); Intros.
Simpl in H19.
Apply Red3_ext2 with (S_pol x x0); Auto.
Apply S_pol_ext; Auto.
Cut ~(equpol fj vpol); Intros.
EAuto.
Apply elem_n_vpol with (inc_list F); Auto.
Cut ~(equpol fi vpol); Intros.
EAuto.
Apply elem_n_vpol with (inc_list F); Auto.
Apply full_term_S_pol; Auto.
Apply H15.
Simpl.
Apply pol_In_ensemb_ext with fj; Auto.
Simpl.
Apply pol_In_ensemb_ext with fi; Auto.
Auto.
Apply equpol_tran with (suma_app (suma_app (inc f) (pol_opp (mult_m fi
((divQ (coef (inc f) t) (hcoef fi)),(div_term t (hterm fi))))))
(pol_opp ((suma_app (inc f) (pol_opp (mult_m fj
((divQ (coef (inc f) t) (hcoef fj)),(div_term t (hterm fj))))))))).
Apply equpol_ss; Trivial.
Apply opp_comp; Trivial.
Apply equpol_tran with (suma_app (suma_app (inc f) (pol_opp (mult_m fi
((divQ (coef (inc f) t) (hcoef fi)),(div_term t (hterm fi))))))
(suma_app (mult_m fj
((divQ (coef (inc f) t) (hcoef fj)),(div_term t (hterm fj)))) (pol_opp (inc f)))).
Auto.
Apply equpol_tran with (suma_app (suma_app (mult_m fj
((divQ (coef (inc f) t) (hcoef fj)),(div_term t (hterm fj))))
(pol_opp (inc f))) (suma_app (inc f) (pol_opp (mult_m fi
((divQ (coef (inc f) t) (hcoef fi)),(div_term t (hterm fi))))))); Trivial.
Apply equpol_tran with (suma_app (mult_m fj
((divQ (coef (inc f) t) (hcoef fj)),(div_term t (hterm fj)))) (pol_opp (mult_m fi
((divQ (coef (inc f) t) (hcoef fi)),(div_term t (hterm fi)))))); Trivial.
Unfold S_pol.
Apply equpol_tran with (suma_app (mult_m (mult_m fj
((divQ unQ (hcoef fj)),(div_term (lcm (hterm fj) (hterm fi)) (hterm fj))))
((coef (inc f) t),(div_term t (lcm (hterm fj) (hterm fi))))) (mult_m (pol_opp (mult_m fi
((divQ unQ (hcoef fi)),(div_term (lcm (hterm fj) (hterm fi)) (hterm fi)))))
((coef (inc f) t),(div_term t (lcm (hterm fj) (hterm fi)))))).
Apply equpol_ss.
Apply equpol_tran with (mult_m fj (mult_mon
((divQ unQ (hcoef fj)),(div_term (lcm (hterm fj) (hterm fi)) (hterm fj)))
((coef (inc f) t),(div_term t (lcm (hterm fj) (hterm fi)))))).
Apply mult_pm_comp_2.
Simpl.
Right.
Split.
Apply simpl_term with n; Auto.
Apply lcm_div with n; Auto.
Apply eqQ_trans with (divQ (multQ unQ (coef (inc f) t)) (hcoef fj)); Auto.
Apply eg_denomQ; Auto.
Apply eqQ_sym.
Apply eqQ_trans with (multQ (coef (inc f) t) unQ); Auto.
Auto.
Apply equpol_tran with (mult_m (pol_opp fi)
((divQ (coef (inc f) t) (hcoef fi)),(div_term t (hterm fi)))); Trivial.
Apply equpol_tran with (pol_opp (mult_m (mult_m fi
((divQ unQ (hcoef fi)),(div_term (lcm (hterm fj) (hterm fi)) (hterm fi))))
((coef (inc f) t),(div_term t (lcm (hterm fj) (hterm fi)))))); Trivial.
Apply equpol_tran with (pol_opp (mult_m fi (mult_mon
((divQ unQ (hcoef fi)),(div_term (lcm (hterm fj) (hterm fi)) (hterm fi)))
((coef (inc f) t),(div_term t (lcm (hterm fj) (hterm fi))))))).
Apply equpol_tran with (mult_m (pol_opp fi) (mult_mon
((divQ unQ (hcoef fi)),(div_term (lcm (hterm fj) (hterm fi)) (hterm fi)))
((coef (inc f) t),(div_term t (lcm (hterm fj) (hterm fi)))))).
Apply mult_pm_comp_2.
Simpl.
Right.
Split.
Apply simpl_term with n; Auto.
Apply lcm_div with n; Auto.
Apply eqQ_trans with (divQ (multQ unQ (coef (inc f) t)) (hcoef fi)); Auto.
Apply eg_denomQ; Auto.
Apply eqQ_sym.
Apply eqQ_trans with (multQ (coef (inc f) t) unQ); Auto.
Auto.
Auto.
Cut ~(equpol fi vpol); Intros.
Cut ~(equpol fj vpol); Intros.
Generalize fi fj H H0.
Induction fi0; Intros.
Elim H15; Auto.
Induction fj0; Intros.
Elim H17; Auto.
Simpl; Auto.
Apply elem_n_vpol with (inc_list F); Trivial.
Apply elem_n_vpol with (inc_list F); Trivial.
Symmetry.
Apply term_monom_hterm; Auto.
Symmetry.
Apply term_monom_hterm; Auto.
Apply full_term_suma_app; Trivial.
Apply full_term_opp; Trivial.
Apply full_mult_m; Trivial.
Apply term_div_full; Auto.
Apply full_term_suma_app; Trivial.
Apply full_term_opp; Trivial.
Apply full_mult_m; Trivial.
Apply term_div_full; Auto.
Apply full_term_pol_cons; Trivial.
Apply full_term_pol_cons; Trivial.
Apply full_coef with (inc f); Trivial.
Apply full_coef with (inc f); Trivial.
Save
.
Hints Resolve G2_impl_G3_LCR_full.
Index
This page has been generated by coqdoc