Library nueva_equiv2_tes

Require Export lemma_cong_red2_tes.

Inductive suma_pol_mon [F:(list pol); f:pol] : pol->Prop :=
       suma_pol_mon1: (f0:pol)(full_fam F)->
                       (full_term_pol f)
                        ->(full_term_pol f0)
                           ->(equpol f f0)->(suma_pol_mon F f f0)
    | suma_pol_mon2: (g0:pol)
                       (g:pol)(full_fam F)->
                        (full_term_pol f)
                         ->(full_term_pol g0)
                            ->(full_term_pol g)
                               ->(suma_pol_mon F f g)
                                  ->(m:monom)
                                     (full_mon n m)
                                      ->(fi:pol)
                                         (pol_In_ensemb fi F)
                                          ->(equpol g0
                                              (suma_app g (mult_m fi m)))
                                             ->(suma_pol_mon F f g0).

Hints Resolve suma_pol_mon1 suma_pol_mon2.

Lemma equpol_Id_sum2: (p,q,p':pol)(F:(list pol))(equpol p q)->
   (suma_pol_mon F p p')->(full_term_pol q)->(suma_pol_mon F q p').
Induction 2; Intros.
Apply suma_pol_mon1; Trivial.

Apply equpol_tran with p; Auto.

Apply suma_pol_mon2 with g:=g m:=m fi:=fi; Auto.
Save.
Hints Resolve equpol_Id_sum2.

Lemma equpol_Id_sum2_op: (p,q,p':pol)(F:(list pol))(suma_pol_mon F p' p)->
   (full_term_pol q)->(equpol p q)->(suma_pol_mon F p' q).
Induction 1; Intros.
Apply suma_pol_mon1; Trivial.

Apply equpol_tran with f0; Trivial.

Apply suma_pol_mon2 with g:=g m:=m fi:=fi; Trivial.

Apply equpol_tran with g0; Auto.
Save.
Hints Resolve equpol_Id_sum2_op.

Lemma trans_equiv_Id2: (f,g,h:pol)(F:(list pol))(suma_pol_mon F f g)->
   (suma_pol_mon F g h)->(suma_pol_mon F f h).
Induction 1.
Intros.
Apply equpol_Id_sum2 with p:=f0; Auto.
 
Intros.
Generalize H9.
Induction 1.
Intros.
(Apply suma_pol_mon2 with g:=g1 m:=m fi:=fi; Trivial).
Apply equpol_tran with g0; Auto.
 
Intros.
(Apply suma_pol_mon2 with g:=g3 m:=m0 fi:=fi0; Auto).
Save.
Hints Resolve trans_equiv_Id2.

Lemma sym_equiv_Id2: (f,g:pol)(F:(list pol))(suma_pol_mon F f g)->(suma_pol_mon F g f).

Induction 1.
Auto.

Intros.
Apply trans_equiv_Id2 with g1; Trivial.
Apply suma_pol_mon2 with g:=g0 fi:=fi m:=(monom_op m); Trivial.
Auto.

Generalize m H6.
Induction m0; Auto.

Apply ch_m_plus.
Apply equpol_tran with (suma_app g1 (mult_m fi m)); Auto.
Save.

Lemma equat_equiv_Id: (f,g,p:pol)(F:(list pol))(full_term_pol f)->(full_term_pol g)->
   (suma_pol_mon F (suma_app f (pol_opp g)) p)->(suma_pol_mon F f (suma_app p g)).

Induction 3; Intros.
Apply suma_pol_mon1; Trivial.
Apply full_term_suma_app; Trivial.

Apply equpol_tran with (suma_app f (suma_app (pol_opp g) g)).
Apply equpol_tran with (suma_app f vpol).
Auto.

Apply equpol_ss; Auto.

Apply equpol_tran with (suma_app (suma_app f (pol_opp g)) g); Auto.

Apply suma_pol_mon2 with g:=(suma_app g1 g) m:=m fi:=fi; Trivial.
Apply full_term_suma_app; Trivial.

Apply full_term_suma_app; Trivial.

Apply equpol_tran with (suma_app g1 (suma_app g (mult_m fi m))).
Apply equpol_tran with (suma_app g1 (suma_app (mult_m fi m) g)).
Apply equpol_tran with (suma_app (suma_app g1 (mult_m fi m)) g); Auto.

Auto.

Auto.
Save.
Hints Resolve equat_equiv_Id.

Lemma equiv_Id_cpol: (f,p:pol)(F:(list pol))(full_term_pol p)->
 (~(equpol p vpol))->(suma_pol_mon F f vpol)->(suma_pol_mon (cons p F) f vpol).

Induction 3; Intros; Auto.
Apply suma_pol_mon2 with g:=g m:=m fi:=fi; Auto.
Save.
Hints Resolve equiv_Id_cpol.

Lemma equiv_m: (F:(list pol))(f,g:pol)(m:monom)(full_mon n m)->
  (suma_pol_mon F f g)->(suma_pol_mon F (cpol m f) (cpol m g)).
Induction 2.
Intros.
Apply suma_pol_mon1; Auto.
Generalize H.
Induction m; Intros.
Apply full_term_pol_cons; Auto.

Generalize H.
Induction m; Intros.
Apply full_term_pol_cons; Auto.

Intros.
Apply suma_pol_mon2 with g:=(cpol m g1) m:=m0 fi:=fi; Trivial.
Generalize H.
Induction m; Intros.
Apply full_term_pol_cons; Auto.

Generalize H.
Induction m; Intros.
Apply full_term_pol_cons; Auto.

Generalize H.
Induction m; Intros.
Apply full_term_pol_cons; Auto.

Simpl.
Auto.
Save.

Lemma monot_suma_pol_mon: (F:(list pol))(f,g,h:pol)(full_term_pol h)->(suma_pol_mon F f g)->(suma_pol_mon F (suma_app h f) (suma_app h g)).

Induction h; Intros; Auto.

Cut (suma_pol_mon F (suma_app p f) (suma_app p g)); Intros.
Simpl.
Apply equiv_m; Trivial.

Inversion H0; Auto.

Apply H; Auto.

Inversion H0; Auto.
Save.

Lemma split_pol_mon: (F:(list pol))(f,g,h :pol)(full_term_pol g)->(full_term_pol h)->(full_fam F)->
(suma_pol_mon (cons g F) f (mult_p g h))->(suma_pol_mon (cons g F)f vpol).

Induction h; Intros.
Apply equpol_Id_sum2_op with (mult_p g vpol); Auto.

Cut (full_term_pol p); Intros.
Cut (full_fam (cons g F)); Intros.
Cut (full_term_pol (mult_m g m)); Intros.
Cut (full_term_pol (mult_p g p)); Intros.
Cut (full_term_pol (suma_app (mult_m g m) (mult_p g p))); Intros.
Cut (suma_pol_mon (cons g F) (mult_m g m) vpol); Intros.
Cut (suma_pol_mon (cons g F) (suma_app (mult_m g m) (mult_p g p))
      (mult_p g p)); Intros.
Cut (suma_pol_mon (cons g F) f (mult_p g p)); Intros.
Apply H; Auto.

Apply trans_equiv_Id2 with (suma_app (mult_m g m) (mult_p g p)); Auto.

Apply trans_equiv_Id2 with (mult_p g (cpol m p)); Auto.

Apply equpol_Id_sum2 with (suma_app (mult_p g p) (mult_m g m)); Auto.

Apply equpol_Id_sum2_op with (suma_app (mult_p g p) vpol); Auto.

Apply monot_suma_pol_mon; Auto.

Apply suma_pol_mon2 with g:=(mult_m g m) m:=(monom_op m) fi:=g; Auto.

Inversion H1; Auto.

Apply full_term_suma_app; Auto.

Apply full_term_mult_p; Trivial.

Generalize m H1.
Induction m0; Intros.
Apply full_mult_m; Trivial.

Inversion H6; Auto.

Inversion H3; Auto.

Inversion H1; Auto.
Save.

Lemma split_mon_mon: (F:(list pol))(f,g:pol)(m:monom)(full_term_pol g)->
(~(equpol g vpol))->(full_mon n m)->(suma_pol_mon F f vpol)->
 (suma_pol_mon (cons g F) (suma_app (mult_m g m) f) vpol).

Intros.
Cut (full_term_pol (mult_m g m)); Intros.
Cut (suma_pol_mon (cons g F) f vpol); Intros.
Cut (full_fam (cons g F)); Intros.
Cut (suma_pol_mon (cons g F) (suma_app (mult_m g m) f) (mult_m g m)); Intros.
Cut (suma_pol_mon (cons g F) (mult_m g m) vpol); Intros.
Apply trans_equiv_Id2 with (mult_m g m); Auto.

Apply suma_pol_mon2 with g:=(mult_m g m) m:=(monom_op m) fi:=g; Auto.

Generalize m H1.
Induction m0; Intros; Auto.

Apply equpol_Id_sum2_op with (suma_app (mult_m g m) vpol); Auto.

Apply monot_suma_pol_mon; Auto.

Inversion H4; Auto.

Apply equiv_Id_cpol; Auto.

Generalize m H1.
Induction m0; Intros.
Apply full_mult_m; Auto.
Save.

Lemma equiv_Id2_equiv_Id: (f,g:pol)(F:(list pol))(suma_pol_mon F f g)->
   (equiv_Id F f g).
Induction 1.
Auto.

Intros.
Apply equiv_Id_cons; Trivial.
Inversion H5.
Apply pol_eq_id_eg
 with (suma_app (suma_app f (pol_opp g1)) (pol_opp (mult_m fi m))).
Apply suma_p_id; Auto.
Apply opp_p_id.
Apply pol_F_idmult; Auto.
Apply elem_full with F; Trivial.

Apply equpol_tran
 with (suma_app f (suma_app (pol_opp g1) (pol_opp (mult_m fi m)))).
Auto.

Apply equpol_ss; Trivial.
Apply equpol_sym.
Apply equpol_tran with (pol_opp (suma_app g1 (mult_m fi m))).
Auto.

Auto.

Auto.
Save.
Hints Resolve equiv_Id2_equiv_Id.

Lemma imp_equiv_Id2_opp: (h,g,f,fi:pol)(F:(list pol))
 (full_fam F)->(pol_In_ensemb fi F)->(full_term_pol h) ->
 (full_term_pol g)->(full_term_pol f)->
 (equpol g (suma_app f (mult_p h fi)))->(suma_pol_mon F f g).
Induction h.
Intros.
(Apply suma_pol_mon1; Trivial).
Apply equpol_sym.
Apply equpol_tran with (suma_app f vpol); Auto.
 
Intros.
Simpl in H5.
Apply trans_equiv_Id2 with (suma_app g (pol_opp (mult_p p fi))).
(Apply suma_pol_mon2 with g:=f m:=m fi:=fi; Trivial).
(Apply full_term_suma_app; Trivial).
Apply full_term_opp.
(Apply full_term_mult_p; Trivial).
(Inversion H2; Auto).
 
(Apply elem_full with F; Auto).
 
Auto.
 
(Inversion H2; Auto).
 
Apply equpol_tran
 with (suma_app (suma_app f (mult_m fi m))
        (suma_app (mult_p p fi) (pol_opp (mult_p p fi)))).
Apply equpol_tran
 with (suma_app (suma_app (suma_app f (mult_m fi m)) (mult_p p fi))
        (pol_opp (mult_p p fi))).
Apply monot_suma.
Apply equpol_tran
 with (suma_app f (suma_app (mult_m fi m) (mult_p p fi))); Auto.
 
Auto.
 
Apply equpol_tran with (suma_app (suma_app f (mult_m fi m)) vpol).
Auto.
 
Auto.
 
(Apply H with fi:=fi; Trivial).
(Inversion H2; Auto).
 
Apply full_term_suma_app; Trivial.
Apply full_term_opp.
Apply full_term_mult_p; Trivial.
Inversion H2; Auto.
 
Apply elem_full with F; Auto.
 
Apply equpol_tran
 with (suma_app g (suma_app (pol_opp (mult_p p fi)) (mult_p p fi))).
Apply equpol_tran with (suma_app g vpol).
Auto.
 
Auto.
 
Auto.
Save.
Hints Resolve imp_equiv_Id2_opp.

Lemma ideal_suma_pol_mon: (F:(list pol))(f,g:pol)(full_term_pol f)->
(full_term_pol g)->(full_fam F)->
(Ideal (suma_app f (pol_opp g)) F)->
(suma_pol_mon F f g).

Intros.
Apply equpol_Id_sum2_op with (suma_app vpol g); Trivial.

Apply equat_equiv_Id; Trivial.

Generalize F f g H H0 H2 H1.
Clear H H0 H2 H1 F f g.
Induction 3; Intros.
Apply suma_pol_mon1; Auto.

Cut (full_term_pol q); Intros.
Cut ~(equpol q vpol); Intros.
Cut (full_fam F0); Intros.
Cut (suma_pol_mon F0 p' vpol); Intros.
Induction q'; Intros.
Apply trans_equiv_Id2 with p'.
Apply suma_pol_mon1; Trivial.

Inversion H4; Auto.

Apply equpol_tran with (suma_app vpol p'); Trivial.

Apply equpol_tran with (suma_app (mult_p q vpol) p'); Auto.

Apply equiv_Id_cpol; Auto.

Cut (full_term_pol q'); Intros.
Cut (suma_pol_mon (cons q F0) (suma_app (mult_m q m) p') vpol); Intros.
Cut (suma_pol_mon (cons q F0)
     (suma_app (mult_p q q') (suma_app (mult_m q m) p')) (mult_p q q')); Intros.
Apply split_pol_mon with h:=q'; Trivial.

Apply equpol_Id_sum2 with (suma_app (mult_p q q') (suma_app (mult_m q m) p'));
                             Trivial.

Apply equpol_tran with (suma_app (mult_p q (cpol m q')) p').
Apply equpol_tran with (suma_app (suma_app (mult_p q q') (mult_m q m)) p').
Auto.

Apply equpol_ss; Trivial.

Apply equpol_sym.
Apply equpol_tran with (suma_app (mult_m q m) (mult_p q q')); Auto.

Auto.

Apply equpol_Id_sum2_op with (suma_app (mult_p q q') vpol); Trivial.

Apply monot_suma_pol_mon; Auto.

Auto.

Apply split_mon_mon; Trivial.

Inversion H3; Auto.

Inversion H3; Auto.

Apply H5; Auto.

Inversion H7; Auto.

Inversion H7.
Elim H11; Auto.

Inversion H7.
Elim H10; Auto.
Save.

Lemma equiv_Id_equiv_Id2: (f,g:pol)(F:(list pol))(equiv_Id F f g)->
   (suma_pol_mon F f g).
Induction 1.
Intros.
Apply ideal_suma_pol_mon; Auto.
Save.
Hints Resolve equiv_Id_equiv_Id2.


Index
This page has been generated by coqdoc