Library ideal_tes

Require Export ecuaciones_tes.

Inductive Ideal: pol->(list pol)->Prop:=
   ideal_vpol: (p:pol)(F:(list pol))(full_term_pol p)->
    (equpol p vpol)->(Ideal p F)
 | ideal_cpol: (p,p',q,q':pol)(F:(list pol))(full_term_pol p)->
    (full_term_pol q')->
     (Ideal p' F)->(equpol p (suma_app (mult_p q q') p'))->
                 (Ideal p (cons q F)).
Hints Resolve ideal_vpol ideal_cpol.

Inductive pol_In_ensemb [p:pol]: (list pol)->Prop:=
   pol_In_hd: (p':pol)(F:(list pol))(full_term_pol p')->
      (full_term_pol p)->(equpol p p')->(pol_In_ensemb p (cons p' F))
 | pol_In_tl: (p':pol)(F:(list pol))(pol_In_ensemb p F)->
      (pol_In_ensemb p (cons p' F)).
Hints Resolve pol_In_hd pol_In_tl.

Lemma pol_In_ensemb_unic: (f,f0:pol)(pol_In_ensemb f0 (cons f (nil pol)))->(equpol f0 f).

Intros.
Inversion H; Trivial.

Inversion H1; Trivial.
Save.

Lemma pol_In_ensemb_ext: (x:pol)(F:(list pol))(y:pol)(full_term_pol y)->
         (equpol x y)->(pol_In_ensemb x F)->(pol_In_ensemb y F).

Intros x F y fy exy.
Induction 1; Intros.
Apply pol_In_hd; Auto.
Apply equpol_tran with x; Auto.

Apply pol_In_tl; Trivial.
Save.

Require Export Relations.

Lemma pol_eq_id_eg: (f,g:pol)(F:(list pol))(Ideal f F)->
   (equpol f g)->(full_term_pol g)->(Ideal g F).
Intros f g F i d fg.
Inversion i.
(Apply ideal_vpol; Trivial).
(Apply equpol_tran with f; Auto).
 
(Apply ideal_cpol with p':=p' q':=q'; Trivial).
(Apply equpol_tran with f; Auto).
Save.
Hints Resolve pol_eq_id_eg.

Lemma ideal_mon : (F:(list pol))(p,g:pol)(Ideal p F)->(Ideal p (cons g F)).
Intros F p g i.
Inversion i.
Apply ideal_vpol; Auto.
 
(Apply ideal_cpol with p':=p q':=vpol; Trivial).
Replace (cons q F0) with F; Trivial.
Apply equpol_tran with (suma_app vpol p);Auto.
Save.
Hints Resolve ideal_mon.

Lemma mult_p_id: (f,g:pol)(F:(list pol))(Ideal f F)->(full_term_pol g)->
   (Ideal (mult_p f g) F).
Induction 1.
Intros.
Apply ideal_vpol.
(Apply full_term_mult_p; Auto).
 
Apply equpol_tran with (mult_p vpol g); Auto.
 
Intros.
Apply ideal_cpol with p':=(mult_p p' g) q':=(mult_p q' g).
Apply full_term_mult_p; Auto.
 
Apply full_term_mult_p; Auto.
 
Auto.
 
Apply equpol_tran with (mult_p (suma_app (mult_p q q') p') g).
EAuto.
 
Apply equpol_tran
 with (suma_app (mult_p (mult_p q q') g) (mult_p p' g)).
Auto.
 
EAuto.
Save.
Hints Resolve mult_p_id.

Lemma p_idp: (p:pol)(F:(list pol))(full_term_pol p)->(Ideal p (cons p F)).
Intros.
Apply ideal_cpol with p':=vpol q':=(cpol (unQ,(n_term_O n)) vpol).
Auto.
 
Auto.
 
Auto.
 
Apply equpol_tran with (mult_p p (cpol (unQ,(n_term_O n)) vpol)); Auto.
Save.
Hints Resolve p_idp.

Lemma pol_F_idF: (f:pol)(F:(list pol))(pol_In_ensemb f F)->
   (full_term_pol f)->(Ideal f F).
Induction 1; Intros; Auto.
Apply pol_eq_id_eg with p'; Auto.
Save.
Hints Resolve pol_F_idF.

Lemma pol_F_idmult: (f:pol)(m:monom)(F:(list pol))(pol_In_ensemb f F)->
 (full_term_pol f)->(full_mon n m)->(Ideal (mult_m f m) F).

Intros.
Apply pol_eq_id_eg with (mult_p f (cpol m vpol)); Auto.
Generalize m H0 H1; Induction m0; Intros.
Apply full_mult_m; Trivial.
Save.
Hints Resolve pol_F_idmult.

Lemma opp_p_id: (f:pol)(F:(list pol))(Ideal f F)->
                 (Ideal (pol_opp f) F).

Intros.
Apply pol_eq_id_eg
 with (mult_p f (cpol ((multQ_neg unQ),(n_term_O n)) vpol)).
Auto.

Inversion H; Auto.

Inversion H; Auto.
Save.
Hints Resolve opp_p_id.

Lemma suma_p_id: (f:pol)(F:(list pol))(Ideal f F)->(g:pol)(Ideal g F)
   ->(Ideal (suma_app f g) F).
Induction 1.
Intros.
(Apply pol_eq_id_eg with f:=g; Auto).
(Apply equpol_tran with (suma_app vpol g); Auto).
 
Apply full_term_suma_app; Auto.
Inversion H2; Auto.
 
Intros.
Inversion H5.
Apply ideal_cpol with p':=p' q':=q'; Auto.
Apply equpol_tran with (suma_app p vpol); Auto.
Apply equpol_tran with p; Auto.
 
Apply ideal_cpol with p':=(suma_app p' p'0) q':=(suma_app q' q'0).
Apply full_term_suma_app; Auto.
 
Apply full_term_suma_app; Auto.
 
Elim (H3 p'0).
Auto.
 
Intros.
Apply ideal_cpol with p':=p'1 q':=q'1; Auto.
 
Assumption.
 
Apply equpol_tran
 with (suma_app (suma_app (mult_p q q') (mult_p q q'0))
        (suma_app p' p'0)).
Apply equpol_tran
 with (suma_app (suma_app (mult_p q q') p')
        (suma_app (mult_p q q'0) p'0)).
Auto.
 
Apply equpol_tran
 with (suma_app (mult_p q q')
        (suma_app p' (suma_app (mult_p q q'0) p'0))).
Auto.
 
Apply equpol_tran
 with (suma_app (mult_p q q')
        (suma_app (mult_p q q'0) (suma_app p' p'0))).
Auto.
 
Auto.
 
Auto.
Save.
Hints Resolve suma_p_id.

Lemma opp_p_id2: (f,g:pol)(F:(list pol))(Ideal f F)->
 (equpol g (pol_opp f))->(full_term_pol g)->(Ideal g F).
Intros.
Apply pol_eq_id_eg with (pol_opp f); Auto.
Save.
Hints Resolve opp_p_id2.

Lemma oppm_idp: (p:pol)(m:monom)(F:(list pol))(full_term_pol p)->
 (full_mon n m)->(Ideal (pol_opp (mult_m p m)) (cons p F)).
Intros.
Apply opp_p_id; Auto.
Save.
Hints Resolve oppm_idp.

Lemma pol_F_idmult_opp: (f:pol)(m:monom)(F:(list pol))
 (pol_In_ensemb f F)->(full_term_pol f)->(full_mon n m)->
    (Ideal (pol_opp (mult_m f m)) F).
Intros.
Apply opp_p_id; Auto.
Save.
Hints Resolve pol_F_idmult_opp.

Lemma id_trans: (F:(list pol))(f,g0,h0:pol)(Ideal h0 (cons f F))->
                       (Ideal f (cons g0 F))->(Ideal h0 (cons g0 F)).

Intros.
Inversion H; Auto.
Inversion H0.
Cut (equpol h0 p'); Intros.
Apply ideal_mon.
Apply pol_eq_id_eg with p'; Auto.

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

Apply ideal_cpol with (suma_app (mult_p p'0 q') p') (mult_p q'0 q');
Auto.
Apply equpol_tran with (suma_app (mult_p f q') p'); Auto.
Apply equpol_tran
 with (suma_app (suma_app (mult_p g0 (mult_p q'0 q')) (mult_p p'0 q'))
        p'); Auto.
Apply equpol_ss; Auto.
Apply equpol_tran with (mult_p (suma_app (mult_p g0 q'0) p'0) q'); Auto.
Apply equpol_tran
 with (suma_app (mult_p (mult_p g0 q'0) q') (mult_p p'0 q')); Auto.
Save.

Definition Ideal_ens:= [F:(list pol)][p:pol](Ideal p F).
Hints Unfold Ideal_ens.
  
Definition eq_Ideal:= [I1,I2:(pol->Prop)]
   ((p:pol)(I1 p)->(I2 p)) /\ ((p:pol)(I2 p)->(I1 p)).
Hints Unfold eq_Ideal.

Lemma eq_Ideal_eq_p: (p:pol)(F:(list pol))(Ideal p F)->
   (eq_Ideal (Ideal_ens F) (Ideal_ens (cons p F))).
Intros.
Unfold eq_Ideal.
Split.
Auto.

Unfold Ideal_ens.
Intros.
Inversion H0.
Auto.

(Apply pol_eq_id_eg with f:=(suma_app (mult_p p q') p'); Auto).
Save.
Hints Resolve eq_Ideal_eq_p.


Index
This page has been generated by coqdoc