Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Quelle  Valuation2.thy

  Sprache: Isabelle
 

(**        Valuation2  
                            author
                            Group You Santo
                            Department of Mathematics
                            Nihon University
                            
                            June 24, 2005
                            theory java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

   chapter 1 elementarypropertiesof  valuation
     section 8. approximationcontinued
    
   **)


theory Valuation2 
imports Valuation1
begin

lemma (in Corps) OstrowskiTr8:"[valuation K v; x carrier K;
      0 < v (1r ± - ==>
      < 0(\^sub>r ±\<^uba K
apply (cut_tac field_is_ring, frule Ring.ingisag[o "K]
apply(ulef"K""x"] assumption+,
       frule Ring.ring_one[of "K"],
       frule(case_tac "x =1KK]
       aGroupg_p_closd[f" 1<ubsub       simpadd_r_inv1ingtimes_x_0
applycase_tacx=1       fruleofassumption
        add:aGroup.ag_r_inv1 invf_one, simp add.ring_r_one
       simp:aGroup, cut_tacval_field_1_neq_0,
       cut_tac invf_onefrule aGroup[of "1<^sub>r ± -\^sub>a x)], assumption+,
       simp add:aGroup.ag_r_inv1, simp add:Ring.rig_times_,
apply (f aGroup.ag_pOp_closed[of K "<sub<><subr (1plusminus -] assumption+ 
       rule Ring.ring_tOp_closed invf_one simp add.ring_r_one
 apply(cut_tacinvf_closed java.lang.NullPointerException

 ruleirn_tOpcose, supion)
java.lang.NullPointerException
 apply (rule aGroup.ag_pOp_closed, assumption+,
        rule aGroup.ag_mOp_closed,
        ssumption+
        thin_tac "1<[ubstClose
        (thin_tacr ± -\<^sub>r (1🚫 ±\^>r ±a x))=
        subgoal_tac "1r ±<s> x^Suc (Suc 0))r ±r ± -\<hyphen> K

        simp del:npow_suc,
        thin_tac 1\^>r ±a x^>= (1r ±r ±a x)")
 apply (subst val_t2p[of v], assumption+,
        rule aGroup.ag_pOp_closed, assumption+,
        substvalue_of_inv[of1 \>^r (1 -CHANGED distinct_subgoals_tac, assumption+)

 apply (rule contrapos_pp, simp+,
        fruleing_tOp_closed^ubr ± -a x)"], assumption+,
        simp add:aGroup.ag_pOp_commute[of K "1]
        frule_[fv umption
        ssumption,assumption
 apply        subst\^± x r ± -CHANGED distinct_subgoals_tac, assumption+)
        frule eq_elems_eq_val[of " <>a x ±r)" "-r" v],
        thin_tac "x r"],
        simpupfK <><suba x ±r)" "- ingassumption
        apply assumptiontionulep_closededon
               frule aadd_pos_poss[of "v x" java.lang.NullPointerException
               simp,
               subst value_less_eq[THEN sym, of v "thin_tacplusminus 1a 1java.lang.NullPointerException
               assumption+,
               rule RingOp_closedinglose
               ,
                dd_pos_possjava.lang.NullPointerException
               simp add:value_of_one,
               cut_tac,
                simp add:aadd_0_r, rule val_axiom4, assu+)
   (subRing.ring_distrib2,, assumption+, simp add:Ri
         subst Ring.ring_distri1,asupt+,sm ad:Rn.in_
         substaGroupsimp a ad:aad__r, rva_axm,assumptin+
         rule Ring.ring_tOp_closed, assu+,
         simp add:aGroup.ag_l_inv1 aGroup.g_r_zero
        subst Ring.ring_inv1_2, assumption+, simp, assumption+)

 apply simp

apply (rule contrapos_pp, simp+,
       frule Ring.ring_tOp_closed[of K x "(1       frule[ofx \cdot\^ubsubst,sumption
        dd1java.lang.NullPointerException
       uleyma x ± 1a 1java.lang.NullPointerException
       assumption+, rule aGroup.ag_mOp_closed,assumption
 lyaddpag_inv_inv_of<sub,
        frulefrule,  \cdot^> (-\^r-^> x ± 1<sub<>🚫sub>r"],
        simp addalmis_eq value_ofoe
        simp add:val_mapply (smpadvaltp,
        simp add:val_t2p,
        frule aadd_pos_poss[of "v x" "v (-a x ±r)"], assumption+,
        simp)
done

lemma ( sip adva_minus_eq value_of_one,
                  ad:a_
apply (subgoal_tac "1substjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
apply acring_is_ag
       Groupsed ssumption
       eing
       fruleclosed
       subst up^>" "-<               value_of_one
       java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
apply simp
 apply (rule aGroupadd_0_r eal_axiom4xiom4
        Ringg_tOp_closedsumption
(* 
 pplyrulecontrapos_ppntrapos_ppsimp
        ruleegring_tOp_closedfK(\subr \plusminus> -^suba x)"], assumption+) apply (
       simp add:              roup_closed umption
       frule aGroup.ag_eq_diffzero[THEN sym, of K "x \<cdot>\<^sub>r (-\<^sub
       apply (rule Ring.ring_tOp_closed, assumption+,
              (mpddGroupg_pOp_commute1<^r
       apply (simp add:aGroup.ag_inv_inv)
       lyulessumption,ruleGroupoup._Op_closedclosedosed sumption
        thin_tac "x \<cdotapply elems_eq_val"\>\r -<subax\plusminus> 1\<^sub>) ^> 1^>r" v],
simpminus_eqalue_of_one
       ddl_t2pjava.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25
         ( add:aadd_commute[of "v x" "v<^b  <plusminus>1<subr"
       apply cut_tacaadd_pos_possof "v (-\<subax \> 1\^>r) v x", simp)
        (simp :val_minus_eq[THENsym, of java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54
        substaGroupag_pOp_commute, assumption+)
               contrapos_pp,simp+,
       apply (simp add:aless_imp_le, assumption) *)

 apply (stalue_of_inv "1\^su>r \plusminus> x r ±
        rule aGroup.g_ assumpt+,
               rule Ring.ring_tOp_closed, assumption+,
        frule ap (simp add:aGroup.ag_pOfruleRringt[oK x "1\^ubr < -
        mpe impd:minus_eq
         ubstless_eqeqym "1r ± - aGroup.ag_mOp_clo, assumption+,
           assumption+, rule Ring.ring_tOp_closed, assumption+,
           simp add:value_of_one, subst val_t2p, assumption+,
           subst aadd_commute,
       rule aadd_pos_poss[of "v (1a x)" "v x"],
       simp, assumption, simp add:value_of_one,
        mp ad:va_minuss_eq value_of_one,
apply (cut_truleGopa_mOp_closd ssumpt
       frule Ring.ring_one,
       rule con, simp+,
        gri_o x(1\^> ±
        aGroup.ag_pO, assumption+,
       rule aGroupsubs aGrou.ag_pOp_commute, assumption+,
       frule aGroup.ag_mOp_closed[of x,,aa+)

java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
frule.ag_eq_diffzerTHEN sym, of K "\dotr)" "-java.lang.NullPointerException
       simp add:aGroup.ag_pOp_commute, 
      Group
       simpval_t2p
              _eq_val <dot\
>^a x ± 1java.lang.NullPointerException
        simp add:val_minus_eq value_of_one,
        rule_tacaGroupg_pOp_closedd[fK -       ruleing,
        simp
 ( addx \cdot^sub\^ub -"java.lang.NullPointerException
         cut_tac        Ring_,
         substruleapos_pps_pp,simp+java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 32
         subst value_less_eq[THEN symofp,
         simp:value_of_one val_minus_eq addaGrouppOp_closedumptionion,
   
 applyjava.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
done

lemma ( Corps:"[ carrier K;
       ¬ 0 , .ag_of "K
pplyuletrowskiTr6v x]sumption
       cut_tac invf_closed1 dddnt_0     fruleaGrouperoym x <>sub -<^>a x 🚫
uleonjE addeg_lefruleal_neg_nonzero" ",java.lang.StringIndexOutOfBoundsException: Index 73 out of bounds for length 73
       ( conjE assumption java.lang.NullPointerException
applyt_tac field_is_ring, frule Ring.ring_is_ag[of "K"],
        Gou.gmO_osdo "K" ""], assumptn+
        Ring.ring_o ""],
        aGroup.ag_pOp_closed[of rotate_t -1
       subst val_t2p, assumpt)
apply (subst valueof_in[of "v"1^>r<plusminusxcdotsub^>r±a x)"],
       assumption+, subst aGroup.ag_pOp_commute[of "K" "1 0"inforl_sec sm,
       ue Ring.ring_tOp_cosed smpton+,
       substvlroupagpp_comt asump+,
                                      \^s>r (1a x)" java.lang.NullPointerException
apply (rule Ring.ring_tOp_closed, assumption+, simp add:value_of_one,
       frule one_plus_x_nonzero[of "erule bexEassumption
       simp add orps OstrowskiTr10<>valuationv; x\incarrier K; 
2p[f "v" ssumptiondd_two_negg

apply (simp         [java.lang.NullPointerException
        thin_tac "<notv_equiv  (v Sucvv)",
       simp add:value_of_one, simp add:val_minus_eq,
       simp add:val_minus_eq, simp add:aGroup.ag_pOp_commute[of "K" "- (cut_tacrulegofK]
        val_nonzero_zv"x" assumption exE
       simp add Ring[of]
       )
done

n)Ostrowski_firstjava.lang.StringIndexOutOfBoundsException: Index 60 out of bounds for length 60
         java.lang.NullPointerException
 apply (simp Ringring_tOp_closedassumptionale_neq_lessassumptionjava.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 52
        cut_tac, (erule),
        simpassumption ale_neq_less+) 
 apply (rotate_tac, 
        frule_tac norall_spec        mprowski_elem_defdef
        rotate_tac -1,
        drule_tac   (ut_tac Ring "",
frulelus_x_nonzerononzerorov" "-^b>a ],ssumptionon
1,
        drule_tacassumptionneq_lession
 applytac,simp
ca Suc"in, simp
        frule_tac v    apply assumption     
,
         erule bexE) 

 apply (erule conjE
        frule_tacval_nonzero_z
        nonequiv_ex_Ostrowski_elem addzpz, simpant_0] aless_zless
        erule,
        thin_tac "¬ K (uc v
         "<> v_equiv K( 0) (vv 0)

 apply
                          lines *)
 
 apply ( conjE
        frule_tac x = t and n = n and = vv restrict_vals_nonequiv2
apply         a ="compose {{h. h
       frule_tacdr "       frule_tacinpecp
       assumptiondrule_tac "Suc0"" in foal_pec, ip
applyleconj, ssumption)

 apply ful x = s and y= t n Ring.rn_tOp_closed[o ""]s+,
       assumption+,rul ale_e_lss, s, assumption+)
 pply(fruetcs = vv and s= s anddd t t in OstrowskiTr5,asssumtion+)

 apply (subgoal_tac "\(** case * * * **)
        simp only:Ostrowski_elem_def0\le (vv ) 
        frule_tac " ( n) an m = " (Suc and=vjava.lang.StringIndexOutOfBoundsException: Index 72 out of bounds for length 72
       (* Here simp add:nset_m_m[of "Suc 0"] wouldn't work *)+,
 apply (cut_tac field_is_ring, frule Ring.ring_is_ag[oferulexE
        rule Ring.ring_tOp_closedssumption
        frule_tac s = s and)                ,mp
        ssumptioness+
        (t \cdot<^sub
   t_tac v ="vv0 inval_neg_nonzero, assumption+)+)
    apply assum (* in the above two lines, simpwouldn't work *)
java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 4

(** subsection on inequality **)

lemma(inC) Ostl thin "vals_nonequiv(Succompose hh
                        \existsx<>arrier K. Ostrowski_elem K (Suc x)"
apply (induct_tac n,
 rule allI, rule impI, simp add:Ostrowski_first)
(** case (Suc n) **)
 apply (rule allI, = "Suc n) and=vv 0n
       frule_tac n = n and simp        v=v"and x = t in
       frule_tac n = n and vv = vv in restrict_vals_nonequiv2,
       frule_tac a = "compose
        assumption
       drule_tac= "compose {h. h )" forall_spec
         + rule 
apply (rename_tac s ndsimpompose_def_ kip_def
       cut_tachin_tac \le ( ((uc0) s),
(**  case * * *  **)
 apply (frule_tac x =                    (ompose (Suc n)} vv (skip (Suc 0))) s,
        case_tac< vv (Suc 0) s 
        frule_tac vv = vvsimp (cut_tacx "s <> t i infcc, s, , bl
java.lang.StringIndexOutOfBoundsException: Index 60 out of bounds for length 12


 (** case * * * **)
apply (simp,,
       case_tac "0 vv 0"and x = t iin
       frule_tac n = "Suc allIruleimpIassumption
         vals_nonequiv_valuationj=j andin+,
       simp
       tac="vv ( (Suc (Suc 0))" and x = t in OstrowskiTr6
         assumption
       frule_tac n = nand vv vv in
       frule_tac x = tand1<sub t r1subr ±a t))java.lang.NullPointerException
g.ing_tOp_closedOp_closedmp
apply (subgoal_tac,(erule)java.lang.StringIndexOutOfBoundsException: Index 37 out of bounds for length 37
                       (t )
       )
applyubst
       rule ( {h. h <> ption
       thin_tact
         (compose {h. h 
       thin_tac "vals_nonequiv K (Suc n)
         (compose {h. h . h le>S }v (sip 2)) "
       thin_tac "vals_nonequiv K (Suc n) (compose {h. h
       thin_tac "0 <        subgoal_tac
        n ="Suc(Suc n)" and = vvandm =0in
                      luation simp,
       rule_tac" "d =tin
          OstrowskiTr8, <cdot<^sub>r (1a s)" i invf_closed1, simp,

applyfrule_tac x = x = t an ply ( (rrule cconjI)
        "Suc.
              ( {h. h Sucvv
       simp add:compose_def skip_def,
       rule,
       thin_tac "0 \<       (
       thin_tac "Ostrowski_elem K (Suc n) 
                    composeh.h \le (Suc n)} vv (skip (Suc 0))) s",
       frule_tac n = "Suc Suc n) and vv = vv and m = j in 
                     vals_nonequiv_valuation,
       simp, simp" K(un)
 (** case * * * **)
 apply (c(
         x = " 0 bspecthin_tac "vals_nonequiv K (Su n)
        simp add:nset_def,
        simp add:compose_def skip_def,
        rule_tac v = "vv (Suc 0)" and x = t in
         OstrowskiTr9, assumption+,
        frule_tac j = j and =n nnseTr5,asuptin+
        drule_tac x = "j - Suc     rule_tac j" and x == s iin OstrowskiTr9,,
        simp add:compose_def skip_ruln = " (Sucn" an vv = v and m = 0 in  
java.lang.StringIndexOutOfBoundsException: Range [46, 20) out of bounds for length 20
applycase_tac"c0" ) apply (
       rule_tac v = "vv (Suc (Suc 0))"erule exE,, simp, simp add:asprod_amult a_z_z,,
       assumption+) apply(
       subgoal_tac "java.lang.NullPointerException
       rule_tac "vv and x = = t in
                    OstrowskiTr9) apply (simp add:nset_def, assumption+) rule Ring.npClose, assumption+, rule Ring.ring_tOp_closed[of "K] 
applye_tacdrulemp
       thin_tac 0 (a K m
 (1± -) = vv 0 (a ^esup)")
         (compose {h. h \<lethin_tac0 xx"assumption
       ac K ( n0 < (ompose {h. h \le (Suc}vvskip 0)jsjava.lang.StringIndexOutOfBoundsException: Index 70 out of bounds for length 70
                   compose\>(Suc n)} vv (kip
       thin_tac Ostrowski_elem 
                   (compose {h. h 
 apply (subgoal_taccdotsub ((1r ±<^sub1<sub<>K rrier
        subgoal_tac "Ostrowski_elem K (Suc (Suc n)) vv
                            s \cdot>r \<lusminus 
 prefer2\<> vv j ((1"v j"d  sn rowskiTr9
 apply (frule_tacfrule[of"" "x],asumpin+
        
    frule_tacv vv (Suc 0 0)"andwskiTr6assumption           le.efK"],
     rule Ring.ring_tOp_closed, assumption+,
     frule_tac x = 1 ± s r (1a s)" in invf_closed1,
    simprowski_elem_def_ef
apply (rule conjI
apply (rule_tac v = "vv 0" and x = s in (inorpsnonzero[ in vals_nonequiv_valuationn "vv",
       simp add:vals_nonequiv_valuation, assumption) 
       apply (
        "vals_nonequiv K Suc (Sc n)))) vv"
       ( conjE
       java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
             <mpose\> (Sucip)s"
       simp add:compose_def skip_def, rule ballI)
 (** case *** *** **)
  (as "  0"imp
     rule_tac v = "vvsimpOstrowski_elem_deft_def
     simp  (mprotate_tac
     rule_tac v     simpasprod_n_0
     simp add:vals_nonequiv_valuation
     \oralll>2\le>m<longrightarrow 0 plusminus - ^supplusminuscdot>r(x^<> <esup)) = 1"
     frule_tac j = j in nse<>crrie K;
     ule_tacx = "j - 0in,assumption+
 apply (simpfruleng_oneK"",
doneruleesup)) = vv j aa + (int m) *   )"

lemma (in Corps) val_1_nonzero:"[( Ostrowski_elem_nonzero "n" "vv""x",
                               x  0"
applyrule ecntaos_p, im+,
       simp add:value_of_zero,
       rotate_tac 3, drule sym, simp only:ant_1[THE[THEN sym],
       imp de:at_1
done

lemma (in Corps) Approximation1_5Tr1:"[ "vv ""a"],assumptionval_exp_ringmsumption+p
 
Ostrowski_elem. "" assumption
        <>m>carrier
apply (cut_tac, frule.ring_is_ag Ostrowski_elem(Suc vv;j \in> nset 0) Sucrbrakk<Longrightarrow
       frule.ring_oneK"
       rule allI, rule impI,
       vals_nonequiv_valuationo " " vv 0"java.lang.StringIndexOutOfBoundsException: Index 58 out of bounds for length 58
       ,
       simp add:Ostrowski_elem_def, frule conjunct1, fold Ostrowski_elem_def,
       frule[ofthin_tac>. vv \cdot  a+int*\^>a vv x")
apply (frule valref 2
       ulevlnoneo_onnf[f vv 0""a" ssumption
       frule[f "vv 00""x",ssumption
       frule_tac n = m in  nals_nonequiv_valuation n" ""],
        aGroup.ag_mOp_closed[of "
       fruleal_nonzero_z j"rule Ring.npClose, assu+,simp add: val_tpp,
apply (subgoal_tac "0 < m",
       frule_tac x = "add:Ostrowski_elem_def
       value_less_eq[of " drule_tac x = j in bspec, assu)
        rl igigtplsed, asupi+
       (kemfuetc =m iRgnZro_ub[f""], sim,
        value_zero_nonzero[of "v0"x",assumption
       simp a =za x   zin zmult_pos_bignumTr
apply case_tac^>
       frule_tacjava.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
       simpuc nset (Suc 0) (Suc n)]
apply (cut_tacexistsl.  vv j ((1^subr ± -K m a r (x^) = 0"
apply (otate_ -1, drule not_sym,
      frule aGroup.ag_neq_diffnonzero[of "K" simpadd:nset_de,
      simp add:Ring.ring_on[of "",asmton,smp
      simp add:val_exp_ring[THEN sym],
      cut_tac n1 = m in of_nat_0_less_iff[THEN sym])
apply (cut_tac a = "0 < m" b = "0 <int,
       assumption)
apply (thin_tac "(0 < m) = (0 < int m)",
      frule val_nonzero_z[of "vv 0" java.lang.NullPointerException
      ulel , im, im ad:spr_amult _zz,
      simp only:ant_1[THEN sym], simp r ± -K m
K m

apply (subst aGroup.ag_pOp_commute[of "K"], assumption+,
       rule Ring.npClose, assumption+, rule Ring.ring_tOp_closed[of "K"],
       assumption+,
       rotate_tac -1, drule sym, simp,
       thin_tac "vv\cdot<sub<bsup> ± (1 -K mK m
apply (simp add:val_t2paGroup
       frule value_zero_nonzero_p_closed
       simp add:val_exp_ring[THENClosemption
       mp
       cut_tac z = m inumption
done

lemma (in Corps) Approximation1_5Tr3:"<> K (Suc n) vv;
      x carrier K] \\Lo>
        <o> vv j ((1r ± -a x)^ m
apply (frule Ostrowski_elem_not_one[of "n" "vv" "x"], assumption+,
       cut_tac field_is_ring, frule Ring.ring_is_ag[of "K"],
       frule Ring.ring_one(vv j (1<br\plusminussub>a x)^m in a_b,simp,
       frule aGr(0 =(0 < m)"
applyadd simp:,
       frule_tac m = j in vals_nonequiv_valuation" "vvSuc
       ,
       frule_tac onlyant_1 frule[ "Suc 0"""""] simp
        [THEN], assumption

apply (frule_tac
       value_less_eq, assumption+,(rulemption RingK]java.lang.StringIndexOutOfBoundsException: Index 74 out of bounds for length 74
 apply(simp          assumption,
       simp exE,
apply (simp add:value_of_one, rotate_tac -1 (simp:val_t2p
        add)
java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4

lemmaCorps>K( n) vv
     aa 
     Ostrowski_elem exE
     vv j (aa>  ((1\sub±K m

applyacvv (<subplusminusa x)^<)\ a 🚫]
                                          assumption+,
       cut_tacfrule_tacals_nonequiv_valuationvaluationion  " "],
apply (frule_tac m = j inrule_tac  vvand1<^ubr \> <>a
apply (substval_t2p[f  j and x  1\sub"and y = "-^uba x" in
       rule Ring.ap (frule alof "Suc""vv] mpply
        d_is_idommjava.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29
       frule_tac v1 = "vv j"       add_)
       
done

lemma (in Corps:"\lemma a nd x x in ppoxatin15[f "n" ""
     a
     Ostrowski_elem K (Suc n) vv x; j \<inximation1_5Tr7
java.lang.NullPointerException
apply (frule Ostrowski_elem_nonzx.coboude1of "java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 53
              assumption
      simp field_is_ring Ring "K"])
      thin_tacn. vvj (a <cdotrx^^sup) = vv j a + int n *java.lang.NullPointerException
prefer
apply (rule" "x1n1in
         assumption+, simp add
apply (frule_tac j in (norps pproximation1_5Tr5\lbrakk> K (Suc)vv 
       simp:nset_def,, frule.ring_is_ag "K"]java.lang.StringIndexOutOfBoundsException: Index 60 out of bounds for length 60
       fruleof" """,+, erule,
       simp add:Ostrowski_elem_def add.ag_mOp_closed Ring, assumption
        conjunct2 Ostrowski_elem_def
       drule_tac x = j in bspec, assumption
applyfrule_em_nonzero"vv"x"] assumption+,
       frule val_nonzero_z[of "vv( addZset_def) 
       frule_tac a = za and thin_tac>. vv j (a r x^java.lang.NullPointerException
       simp dd _zpz
done  

lemma (in Corps) Approximation1_5Tr6:"Cps)tanpsvasnnequv"lbrakkvals_nonequiv K (Suc n) vv
      a <> \zero<> rrier
      Ostrowski_elem K (Suc n) vv x; j simp add
        
apply (fruleja",,
       simp add:nset_def,
       frule Approximation1_5Tr5[of "n" "vv" "a" "x" "j"],
               assumption+, erule exE,
       cut_tac field_is_ring, frule Ring.ring_is_ag[of "K"],
       subgoal_tac "
        j(\^b <usminusa x)^ m)")
 apply (simp add:Approximation1_5Tr3, blast)
 apply (rule allI, rule impI,
        drule_tac a = m in forall_spec, assumption,
        frule_tac x = "(1r ± -a x)^ m(^\^bsup>K m
           value_less_eq 
        rule Ring.npClose, assumption(ase_tac", si add:transpos_eq)
        rule aGroup.ag_pOp_closed, assumption+, simp add:Riapply (cut_tax = ja in transpos_id_1[of 0 "Sucassumption
        simp add:aGroup.ag_mOp_closed)
 apply (rule Ring.ring_tOp_closed(ruleempI
        rulej=0", simp ddtrnposeq
        simp add:Approximation1_5Tr3,
        frule sym, assumption)
done

lemma (in Corps) Approximation1_5Tr7:"[ carrier K; vv 0 a = 1
      x \in carrier\rbrakk>==>
      vals_nonequiv K (Suc n) vv   Ostrowski_elem K  apply l=ja transpos_mem ""Suc]simp
      (transpos_mem n" "j"], simp, assumption+,
                 j ((1 -K m ±K m
apply (induct_tac imp, , suptin, ul osy, supton)
       rule impI, erule conjE, simp add:nset_m_m[of "Suc 0"],
       frule vals_nonequiv_valuation[of "Suc 0" "vv" "Suc 0"], simp,
       frule Approximation1_5Tr6[of "0" "vv" "a" "x" "Sucsumption
apply (frule()
       nonzero[of"v0 "a" smpio+,sim ad:nse_de,
        (OstroK n ( <> (\tau\bj<es)
(** case n **) 
apply (rule impI, erule conjE,
       frule_tac n = n in restrict_vals_nonequiv[of _ "vv :: "[_, nat \Rightarrow 'b ==>Righ> (nat ==> 'b)" where
       frule_tac n = n in restrict_Ostrowski_elem[of "x"  _ "vv"],
          assumptionmp
       erule exE <and (nset (Suc 0) n. ((vv\circ><^bsub>0 j
       frule_tac n = "Suc
        of _ "vva "", assumption
       frule_tac      Ostrowski_base K  (Sucin{h. h  (Suc n)} 
        "0"],simp,
       rule val_1_nonzero[of "vv 0" cut_tac
       simp
apply (erule exE,
       subgoal_tac "
          j ((1 -K m a r (x^) = 0)",
       blast,
      simp add:nset_Suc)
done   

lemma (in Corps) Approximation1_5P:"[vals_nonequiv K (Suc n) vv;
    n_val K (vv 0) = vv 0]frule Ostrow[of "n" "vv
    x
apply (frule vals_nonequiv_valuation[of "vv ""] sim) apply (
       frule n_val_surj[of "vv 0"], erule bexE) apply (
       rename_tac aa) apply (
       cut_tac n = n in Ostrowski) apply (
       drule_tac a = vv in forall_spec[of "vals_nonequiv K( n)"], simp)
  apply (
       
       frule_tac Suc n] ==> j 0
       assumption+,
       simp, assumption+)
apply (frule_tac a = aa and x = x in Approximation1_5Tr7[of _ "vvassumption
       simp,       cut_tacn"
       simp, erule exE,
       cut_tac b = "Suc rule, blast
       cut_tac b =Suc max[of 2],
       cut_tac n = l in lessI,       erule conjE)
       rule_tacland l" and z = " 2 (Suc
         less_le_trans, assumption+,
       thin_tac "Suc l max 2 (Suc l)", thin_tac "l < Suc l",
       drule_tac a = "max 2 (Suc l)" in forall_spec, simp
       drule_tac a = "max 2 (Suc l)" in forall_spec, assumption) 
 apply (subgoal_tac "(1 -K (max 2 (Suc l))
aa r (x^
       carrier K",
       blast,
       cut_tac, frule.ring_is_ag "K",
       rule j = ja transpos_vals_nonequiv "n""vv"
       rule
       simp strowski
       rule Ring.npClose 0 ja
assumption+ 
done

lemma K_gamma_hom:"k someI2 blast,
apply (simp add:Zset_def)
done

lemma transpos_eq:"(τjamp_qof
by (simp add:transpos_def)

lemma (in Corps) transpos_vals_nonequiv:"[
cut_tacspos_ij_2o0"Suc"], simp,simp+)
apply (simp add:vals_nonequiv_def)
 apply (frulconjunct1, fold vals_nonequiv_def))
 apply (simp add:valuations_def, rule conjI)
 apply (rule allI, rule impI)
 apply (case_tac "ja = 0", simp,
        case_tac "j = 0", simp add:transpos_eq)
 apply subst tra transpos[of "0" "Suc"j], simp, asumption++,
        rule not_sym, assumption, simp)

 apply (case_tac "ja = j", simp)
 pply (su(subst transpos_of "0" "Suc"j", simp, assumption simp,
        simp add allIrule impIjava.lang.StringIndexOutOfBoundsException: Index 28 out of bounds for length 28
 apply ( "j = 0", simp:transpos_eq
 apply (cut_tac Approximation1_5P "n" "vv"], simp
        rule, assumption
 apply (simp add:vals_nonequiv_valuation (frule_tacj =k intranspos_vals_nonequiv[of "n" "vv"],
        (rule allI,rule impI)+rule)
 apply (case_tac "j = 0", simp add vv "vv 0 k
Approxof "n"])
        simp add:vals_nonequiv_def,
         subst t transpos_ij_1[of 0 " n" k], simp+)
 apply (frulex = ja and y = l in injective[of " 0 j"
                       .j\le Su n)"simp
 apply (cut_tac l = ja in transpos_mem" "Suc n" "j", simp,, assumption+,
        simp, assumption,
       cut_tac l = l t[of "0" "Sucn" "j"], simp, as, assumption+,
        simp, assumption)
 apply (simp add:vals_nonequiv_def,
        simp, assumption, rule not_sym, assumption)
done

definition
  Ostrowski_base :: "[_  ==> ant, nat] ==> '
                             (<>(<Omega_ _ _ [90,90,91]90where
  "Ostrowski_base K vv n = (λj{h. h
                            (Ostrowski_elem K n (vv (τ, ipd:set_e assuptin

definition
  App_base :: "[_,        roximation1_5P 0 j
  "App_base K vv nn = (\lambdaj\<n{. h n}. (SOME x. x (((vv 0 x
                      = 1)
  (* Approximation base. *)

lemma (in Corps) Ostrowski_base_hom:"vals_nonequiv K (Suc n) vv ==>, simp:Kronecker_delta_def
      Ostrowski_base K vv (Suc n)  {h. h x
apply (rule Pi_I, rename_tac
       simp add:Ostrowski_base_def        erule
       ule_tacals_nonequiv
       cut_tac Ostrowskisimp2
apply (drule_tac a = "vv
       rule someI2_ex, blast, simp)
done

lemma (in Corps) Ostrowski_base_mem:"vals_nonequiv K (Suc n) vv 
         ja 0) (Sucn) vv (τ0 j

by (rule allI, rule impI,
       frule Ostrowski_base_hom[of "n" "vv"],
       simp adddf0"uc n"j i, simp

lemma (in Corps)  Ostrowski_base_mem_1:"[vals_nonequiv K (Suc n) vv; (*
       j (Suc n)] ==> Ostrowski_base K vv (Suc n) j carrier K"
by (simp add:Ostrowski_base_mem)

lemma (in Corps) Ostrowski_base_nonzero:"[vals_nonequiv K (Suc n) vv;
       j <> S n](Su n)
apply (simp add:Ostrowski_base_def,
       frule_tac j = j in transpos_vals_nonequiv[of "n" "vv"],
                      assumption+,
       cut_tac Ostrowski[of "n"],
       drule_tac a = "vv  τ j" in forall_spec, assumption,
       rule someI2_ex, blast)
apply (thin_tac "xcarrier K. Ostrowski_elem K (Suc n) (vv  τ j) x",
       eruleconjE)
apply (rul_tac vv = " 0 j x = x in[of "n",
       assumption+)
done

lemma (in Corps) Ostrowski_base_pos:"[m[of n vv], rule allI, simp)
      j n; ja j] ==>j)((\OmegaK vv (Suc n)) ja))"
apply (simp add:Ostrowski_base_def,
       frule_tac j = ja in transpos_vals_nonequiv[of "n" "vv"],
       assumption+,
       cut_tac Ostrowski[of "n"],
       drule_tac a = "vv τ ja" in forall_spec, assumption+) 
apply (rule someI2_ex, blast,
       thin_tac "xcarrier K. Ostrowski_elem K (Suc n) (vv τ ja) x",
       simp add:Ostrowski_elem_def, (erule conjE)+)
apply (case_tac "ja = 0", simp, cut_tac transpos_eq[of "j"],
       simp add:nset_def, frule Suc_leI[of "0" "j"],
       frule_tac a = j in forall_spec, simp, simp)
apply (case_tac "j = 0", simp,
       frule_tac x = ja in bspec, simp add:nset_def,
       cut_tac  transpos_ij_2[of "0" "Suc n" "ja"], simp, simp+refer2
apply (frule_tac x = j in bspecmp
            _ac0" "Suc n" "ja", simp+)
done

lemma (in CorsdOtrowski_ele_de,
java.lang.StringIndexOutOfBoundsException: Index 80 out of bounds for length 80
        azz
apply (rule allI, rule impI,
       rename_tac k,
       subst App_base_def)
 apply (case_tac "k = 0", simp, simp add:transpos_eq,
        frule Approximation1_5P[of "n" "vv"], simp,
        rule someI2_e,simp)
 apply (frule_tac j = k in transpos_vals_nonequiv[of "n" "vv ( vals_nonequiv_valuation "Suc n" "v "j"],
                  add:ns,
cut_tac field_is_ring, frule Ring.ring_is_ag[of ",
 apply (simp add:mp_def, subst transpos_ij_1[ofSuc+,
        subst transpos_ij_1[of 0 "Suc n" k], simpvv j((1<>ra x)^")
 apply (rule someI2_ex, blast, simp)
done

lemma (in Corps) Approzimation1_5P2:"[(Sucjava.lang.StringIndexOutOfBoundsException: Index 73 out of bounds for length 73
           {h. h  Suc n; j 
          ==> vv i (App_base K vv (Suc n) j) = δ j",
apply (simp add:App_base_def)
apply(ca "j = 0", simp a:transpos_eq,
       rule someI2_ex,
       frule Approximation1_5[of "n" "vv,
       mp_,uleE+
       frule_tac x = i in bspec, simp         frule

apply (frule_tac transpos_vals_nonequiv[f"""v], simp,
       frule Approximation1_5P[of "n" "vv  τ carrier K] 
       simpadd, simp:transpos_ij_1[of 0 "Suc n" j])
       
apply (simp add:cmp_def,
         case_tac "i = 0", simpvv-sub>ax^🚫
         simptranspos_ij_1, add:Kronecker_delta_def,
          someI2_ex,
         thin_tac(frule vals_nonequiv_valuation[ "Suc 0"vvmp
            frule "vv 0" "a"], assumption+, simp add:nset_def
        (erule conjE)+
         drule_tacin, simp:nset_def
         simp:transpos_ij_2)

apply (simp, simp
       case_tac "i = j", simp add n = "Suc n and j =" (Sucnproximation1_5Tr6

apply (simp, rule someI2_ex, blast]simp
       tacx .vv 0) x = 11 🪙
                     (orallnset (Suc 0) (Suc n) v( j) ja) x = 0)",
       (erule conjE)+,
       drule_tac x = i in bspec, simp add:nset_def,
       cut_tac transpos_id[of 0 "Sucn"j i],simp+)
doneblast,

(*
lemma (in Corps) Approximation1_5:"[:\lbrakkvals_nonequiv
  le (Suc n)}. n_val K (vv j) =vv ==>
  xand> (<in ) Suc0
                              ((vv i)  (x j) = δ erulebexE apply(

lemma  Corps:"[ n) vv;;
   (Suc n). n_val K (vv j)= vv j\rbrakk \Longrightarrow>
   x = x in Appr[of "n vv
                              ((vv i)  (x j) = δ" _ "]
apply (frule App_base_hom[of n vv], rule allI, simp)
 apply (subgoal_tac "(
                  i) (App_ba K vv (Suc n)) j) = (δi j
))",
        blast
 apply (rulecut_tacn=lin lessI,
 apply (rule Approzimation1_5P2 assumption, simp+)
done

lemma (in Corps strowski_baseTr0vals_nonequiv K (Suc n) vv; l 
   ==>   0 <        drule_taca=max  forall_spec,
  ({h. h .0 (vv m (Ostrowski_base K vv (Suc n)l)))java.lang.StringIndexOutOfBoundsException: Index 92 out of bounds for length 92
apply (simp addOstrowski_base_def
       frule_tac j = l in transpos_vals_nonequiv[of "n" "vv"], assumption,
       cut_tac Ostrowski[of "n"],
       drule_tac a = "vv τ l" in forall_spec,        carrier K",
apply (erul bexE,
       unfold Ostrowski_elem_ rule aaGrou.ag_pOp_closed, assumption+,rule Ring..npClose, assumption+,
       fold Ostrowski_elem,
        conjI, simp add:Ostrowsk)
applyse_tac"0"impm,simp adtanso_eq
       rule s
       simp add:transpos_ij_1,
       rule someI2_ex, blast, simp)

apply (simp add:Ostrowski_elem_def
       case_tac "applysimp:)
       rule someI2_ex simp:, rule)
       thin_tac< vv>r ± -
                      ( " ,
       rule ballI, simp add:nset_def)

apply (rule ballI, erule conjE,
       rule someI2_ex, blast,
       thin_tac "
       erule conjE+

apply (case_tac "m = 0", simp "j = 0", add) 
       drule_tac x = l in bspec, simp add:nset_def,
        addtranspos_ij_2
       drule_tac in, simp add,
d
done add,

lemma Corps:"[>(Suc n)]
     ==> 0 < ((vv l) (1r ± -"{j. j
by (simp add:Ostrowski_baseTr0)

lemma (in Corps) Ostrowski_baseTr2:"[Suc imp
        l ion
        0 < ((vv m) (Ostrowski_base K vv (Suc ule)
apply (frule Ostrowski_baseTr0[of
apply simp
done

lemma Nset_have_two:"j {h. h <ong> m {h. h (Suc n)}. j m"
apply (rule contrapos_pp, simp+,
       case_tac  "Ostrowski_base K vv n = (\<ambdambda
       drule_tac a = 0 in forall_spec, simp, arith)
 apply (drule_tac a = "Suc n" in forall_spec, simp, simp)
done

lemma (in Corps) Ostrowski_base_npow_not_one:"[0 < N; j  Suc n;
       vals_nonequivSuc  ==>
                            r ±a ((Ω j<K N
 0"
apply (cut_tac fin.i_sag K],
       rule contrapos_pp, simp
frule[of "n""v""j"]aspo
       frule Ring.npClose[of "K" "(ΩK vv (Suc n)

       fruleapply( Pi_I rename_tac ljava.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31
       frule aGroup.ag_mOp_closed[of 
       frule aGroup.ag_pOp_closed[of "K" "1a ((Ω> v (ucn)\^>) j^"
       assumptionblast
apply (frule  aGroup.ag_pOp_add_r[of
           "(ΩK vv (Suc n)
K N
], assumption+,
        simp add:aGroup.ag_inc, assumption+,
        thin_tac "1 ^> ((Ωn)K N) = 0)
 apply (simp add:aGroup.ag_pOp_assoc[of "K" "1:Pi_I'')
 apply(in Co) Ostrowski_base_mem_1"<lbrakkvals_nonequiv K (Suc n) vv; 
  apply (subgoal_tac "\<>m n). j \noteq m
java.lang.NullPointerException
 apply (cut_tac Nset_have_two[of "j" "n"],
        erule bexE, drule_tac a = m in forall_spec, simp,
        (smp ddOtowsi_as_def,
       frule_tac f = "vv m" in eq_elems_eq_val[of "1 assumption
       thin_tac "1 τ in forall_spec, assumption,
 apply (frule_tac m = m in vals_nonequiv_valuat someI2_ex, blast)
        assumption+,
        frule_tac v1 = "vv m" and n1 = N in val_exp_ring[THEN sym,
         of _ _ "\Omega j"], assumption+,
        simp add:Ostrowski_base_nonzero, simp, simp add:value_of_one)
 apply (subgoal_tac "int N 
        frule_tac x = "v \Omega j)" in asprod_0[of "int N"],
        assumption,java.lang.StringIndexOutOfBoundsException: Index 54 out of bounds for length 54
        rule"
        rule Ostrowski_baseTr2, assumption+)
done

abbreviation
  CHOOSE :: "[nat, nati_elem_def
  "<bsu>n
i

lemmainRg epnsonofsum:"\in arrier 
                (1java.lang.NullPointerException
apply (cut_tac ranspos_ij_2 n" "ja"], simp, simp+)
       simp add:npOne, subgoal_tac "\forall>:nat^> j
)
apply (simp add:ring_l_one, rule allI, simp add:npClose
done 

lemma (in Ring) tail_of_expansion:"x (1 x)^\^>R (Suc n)
             nsumR (λ(Suc n)×RR (Suc i))) n) ±r"
apply (cut_tac ring_is_ag)
apply (frule expansion_of_sum1[of "x" "Suc n"],
       simp:nsum_suc npow_suc
       thin_tac java.lang.NullPointerException
apply (subst aGroup.nsumTail[of R n "<ambdai. Suc n)C×<^R\R i,
       rule allI ( "k = 0", simp add,
applycut_tac
       rule,simp
done

lemma (in Ring) tail_of_expansion1:"x
  (1[of "0" "Suc
applyeil_of_expansion
  um_suc
       subgoal_tac "
  cut_tac ring_one, cut_t ring_is_ag)
prefer 2 appl(simp add: nsClose npClose)
apply\>vv i (App_base K vv (Suc n) j) = δi j

       earup.su_mm,asumptin+,ru ll ul ip,
       rule nsClose, rulap(case_t "= addtranspos_eqjava.lang.StringIndexOutOfBoundsException: Index 46 out of bounds for length 46
apply (rule ring_tOp_closed, assumption+,
       ruleaGroup.nsum_mem+, blast add)
apply (subst x = i in, simp:nset_def) 
apply (rule aGroup.nsum_eq, assumption, rulefrule_tacin transpos_vals_nonequiv[ "n" "vv",simp
       rule npClose, assumption, rule allI, rule
       rule ring_tOp_closed, assumption+,       simpmp[  Suc
       assumption) 
apply (rule allI, rule impI)
 ulDistrL,dpClose
       frule_tac n = j in npClose[of x], simp add:ring_tOp_commute<>x
done 

lemma (in Corps) nsum_in_VrTr         drule_tac x  j in bspec add,
       (
       0 simp:transpos_ij_1 someI2_ex, simp
apply (induct_tac n)
 apply (rule impI, erule conjE, simp add "\<>x ((\tau 0) x = 1
apply (rule impI, erule conjE)
apply (frule Vr_ring[of v], frule Ring.ring_is_ag[of "Vr K v"],
       frule_tac x = "f (Suc n)" and y = "nsum K f n" in
         aGroup.ag_pOp_closed[of "Vr K v"],
       subst val_pos_mem_Vr[THEN sym, of "v"], assumption+,
       simp, simp, simp)
apply (simp, subst Vr_pOp_f_pOp[of "v", THEN sym], assumption+,
       subst val_pos_mem_Vr[THEN sym, of v], assumption+,
       simp+)
apply (subst aGroup.ag_pOp_commute, assumption+, simp add:val_pos_mem_Vr,
       assumption)
done

lemma (in Corps) nsum_in_Vr:"[valuation K v;  n. f j  carrier K; 
       <xists{ h<le >i elen). 
apply (simp add:nsum_in_VrTr)
done

lemma (in Corps) nsum_mem_in_Vr:"[valuation K v;
       j n. (f j) carrier K; j n. 0 (v (f j))] ==>
         
by (rule nsum_in_Vr)

lemma (in ors)val_scal_e_efT:"<aluation K v; x  v x]
       Longrightarrow<>  K

apply                              (vv i  xj) δi j
applyimp
       simp subgoal_taci 
       frule_tac" \times x" infv" "] assumption+,
       rule Ring) 
apply (simp add:amin_def,
       frule.ring_is_ag K]],
       frule_tac n = n in
       simp add( CorpsOstrowski_baseTr0:"\lbrakk>vals_noneq K (Suc n) vv; l
done

lemma (in Corps) ApproximationTr:"[,
             v x v (1r ±a ((1 x)^n)
apply (cut_tac 0 l) 
        "x = 0^bsub>K",
       simp.[of",siadd:aGroup.ag_r_ze,
       simp add:Ring.npOne, simp add:Ring.ring_l_one,simp add: rule conjI, simp add:Ostrowski_elem_de)
       subst Ring.tail_of_expansion1[of "K" "x"], assumption+,
       frule Ring.ring_one[of "K"])
apply (subgoal_ "(nsumi. ×x^ n))
       frule       simpranspos_ij_1,
       assumption+,
       frule_tac x = x and y = "nsum K (λ
       Ring.ring_tOp_closed[of "K"], assumption+,
       subst aGroup.ag_pOp_commute[of "K" _ "1r ± -
       subst aGroup.ag_p_inv ""1java.lang.NullPointerException
       subst aGroup.ag_pOp_assoc[THEN symeallI
       simp add:aGroup.ag_mOp_closed> (Suc (Sucn. 0vv j) x",
       simp del:binomial_Suc_Suc add:a (erule conjE)+)
       assumption+,
       rule aGroup.ag_mOp_closed, assumption+, simp add:val_minus_eq)

apply (subst val_t2[of v], assumption+) apply (
       simp add:val_pos_mem_Vr[THEN sym, of v
                   (lambda>i.(\^<esb<^bsu>n
Suc i
x^ n"],
       frule aadd_le_mono[of "0" java.lang.NullPointerException
         "v x"], simp add:aadd_0_l, simp add:aadd_commute[of "v x"])

apply (rule nsum_mem_in_Vr[of v n "λi.×<bsub x^i
       rule allIrowski_baseTr0

apply (rule allI impI
apply (cut_tac i =0 and j  "v(^\sup<^eup>)""v (×x^"
        ale_trans
 apply (case_tac(frule[of"n" "vv" "l"], assumption
 apply (simp
        frule val_nonzero_z[ofv ],ssumption
        eruleapply(le
        cut_tac m1 = 0 and n1 = j in of_nat_less_iff[THEN sym],
        frule_tac a = "0 < j" and b = "int 0 < int j" in a_b_exchange,
        assumption, thin_tac "0 < j", thin_tac orpsstrowski_base_npow_not_one0 < N; j 
apply simp: of_nat_0_less_iff

apply (frule_tac w1"int j"d=0andant z in
         asprod_pos_mono[THEN symcut_taceRingK"]
        simp only:asprod_n_0)

 apply(rule_tac x = "x^ j" and n = " n Ring[ "K" (<> j" "N"], assumption+,
    scal_ge_selfTrov, asmtin+
       simp add:Ring.npClose, simp add:val_exp_ring[[THEN sym],
       frule val_nonzero_z[of "v" "x"], assumption+, erule exE, simp)
 apply (case_tac "j = 0", simp))
 apply (subst apro_ault imp, m ada__)
apply
        simp only:ant_0[THEN sym], simp only:ale_zle,
        cut_tac m1 = 0 and n1 = j in of_nat_less_iff[THEN sym])apply (simp adaGroup.ag_pOp_assoc[of "1<sub<suba ((Ω j^ Njava.lang.NullPointerException
apply (        frule_tac " (Suc n). (j
        +, thin_tac "0<j,thin_tac  (int0 < j)",
        frule_tac z = "int 0" and z' = "int j" in zless_imp_zle,
        frule_tac i = "int 0" and j = "int j" and k = z in int_mult_le,
         assumption+, simp add:mult.commute )
 apply assumption
done

lemma (in Corps) Approximatithin_tac ""<sub> (\Omega><bsu>Kv Su )\^u> j", simp)
           sub> ± -K N
K N\^<> carrir "
apply (cut_tac field_is_ring m" n 1= i a_xp_in[TENym,
       rule Ring.npCl, as+,
       rule aGroup.ag_pOp_closed, assumption+, simp add:Rin.ring_one,
       rule aGroup.ag_mOp_closed, assumption+, rule Ring.npClose, assumption+)
done

lemma (in Corps) ApproximationTr1:"aa  add, simp,
            1r ±+)
apply (cut_tac field_is_ring, frule Ring.ring_is_ag
       frule ApproximationTr0[of aa N],
       frule Ring.ring_one[of "K"], rule aGroup.ag_pOp_closed, assumption+,
       rule aGroup.ag_mOp_closed, assumption+)
done

 in\valuation K v; aa  \;
     0  ==>suba(v aa) ^> ± -r  -K N
K N^)))"
apply (cut_tac field_is_ring, frule Ring.ring_is_ag[of "K
       case_tac "N = 0",
       frulenonzero_z[ofsumption
 apply(frule> i. ((Suc i)x^) n) <plusminusr"
       simp add:value_of_zero) (frexpnioo_um1 "c

apply (frule_tac n = N inf"",umption
       frule ApproximationTr[of v "-a (aa^ N)" "N - Suc 0"],
       rule aGroup.ag_mOp_closed, assumption+, simp add:val_minus_eq,
       subst val_exp_ring[THEN sym, of v], assumption+,
       simp add:asprod_pos_pos)
apply (simp add:val_minus_eq, simp
java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4

lemma (inil_of_expansion
i.  ×R^> i
 carrier R",
 ( j
 ( >({h. h n} -{l}). (g j = (x )\cdotr (1>-
   = x ) \cdot>\^sub> (-a (b l))
\<longrightarrow> (nsum K (\<lambda 
                       nsum K g n"
apply ( eld_is_ring
apply (induct_tacsum_eqrulelose
 apply (simp, rule impI, (erule conjE)+, 
       simp, frule Ring.ring_one[of "K"], subst Ring (ellI
       assumptionnnpClose_utex)
       simp add:aGroup.ag_mOp_closed
       frule aGroup.ag_mOp_closed,sumption
       frule Ring.ring_tOp_closed[of x0<submption
       subst aGroup.ag_pOp_commute[of "K" "x 0"_]assumption
       subst aGroup.ag_pOp_assoc, assumption+, 
       rulelosed
       assumption)
 apply (simp add:aGroup.ag_r_inv1, subst aGroup.ag_r_zero, assumption Vr
apply (rule impI, (erule conjE)+)
 apply (subgoal_tac java.lang.NullPointerException
apply (case_tac "l = Suc n", simp)
 apply (subgoal_tac "Σe K g n  carrier K",
        (Suc n)} - {Suc n} = {h. h
        subgoal_tac "
        frule_tac f = "λu. if u j carrier K; n. 0 ]
        undefined" and n = n in aGroup.by ule
 apply (rule allIorpsnscal_ge_selfTrvaluation K v; x  v x]
        rule allI, simp lI,imp

 apply  (padd
       b = "x (Suc n) x" in amin_le_plus[of "v" "x"], assumption,
       c = java.lang.NullPointerException
 apply (rule aGroup.ag_pOp_closed, assumption+,
        rule Ring.ring_tOp_clloe,aumptin+ mp
        rule aGroup.ag_pOp_closed, assumption+, simp add:Ring.ring_one,
        rule aGroup.ag_mOp_closed, assumption, simp,
        rule aGroup.ag_mO, assumpion, sm,
        rule ngrin_tO_coe, aumto+,sm,
        rule aGroup.ag_mOp_closed, assumption+, simp, assumption)

 apply (subst Ring.ring_distrib1, assumption+, simp, simp add:Ring.ring_one,
        simp add:aGroup.ag_mOp_closed,
        simp add:Ring.ring_r_one) apply (
        frule_tac x = "x ( ndcdota (b (Suc n)))" in
        aGroup.ag_pOp_commut frule_tac = xany= "  <>.<bsubSuc n
Suc i
><^bsub>K
 x^ n" in
        simp add:Ring.ring_tOp_closed aGroup.ag_mOp_closed,
        simp) apply (
        subst aGroup.ag_pOp_assoc[of "K"], assumption+,
        rule Ring.ring_tOp_closed, assumption+, simp,
        (simp add:aGroup.ag_mOp_closed)+,
        subst aG aGroup.ag_r_inv1, assumption+, si imp del:binma_SuSucaddaGou.grinv ub ru._l_zr,
        subst aGroup.ag_r_zero, assumption+,
        simp add:Ring.ring_tOp_closed aGroup.ag_mOp_closed, simp,
        rotate_tac -1, drule sym, simp) apply (
        thin_tac "Σe K g n ± x (Suc n) r (-a (b (Suc n))) =
         Σe K g n ± (x (Suc n) r (1r ± -a (b (Suc n))) ± -a (x (Suc n)))")
   apply (subst aGroup.ag_pOp_assoc[THEN sym], assumption+,
          rule Ring.ring_tOp_closed, assumption+, simp,
          rule aGroup.ag_pOp_closed, assumption+, simp add:Ring.ring_one,
          rule aGroup.ag_mOp_closed, assumption+, simp,
          rule aGroup.ag_mOp_closed, assumption+, simp, simp,
          simp, rule equalityI, rule subsetI, simp, rule subsetI, simp)
  apply (rule aGroup.nsum_mem, assumption+,
         rule allI, rule impI, simp)
defer
  apply (rule allI, rule impI)
  apply (case_tac "j = l", simp,
         rule Ring.ring_tOp_closed, assumption, simp,
         rule aGroup.ag_pOp_closed, assumption+, simp add:Ring.ring_one,
         rule aGroup.ag_mOp_closed, assumption, simp, simp,
         rule Ring.ring_tOp_closed, assumption, simp,
         rule aGroup.ag_pOp_closed, assumption+, simp add:Ring.ring_one,
         rule aGroup.ag_mOp_closed, assumption, simp, simp) (* end defer *)

 apply (subst aGroup.ag_pOp_assoc, assumption+,
        rule aGroup.nsum_mem, assumption+,
        rule allI, simp, rule Ring.ring_tOp_closed, assumption+, simp,
        rule aGroup.ag_pOp_closed, assumption+, simp add:Ring.ring_one,
        rule aGroup.ag_mOp_closed, assumption, simp,
        rule aGroup.ag_mOp_closed, assumption, simp,
        subst aGroup.ag_pOp_commute[of K _ "-a (x l)"], assumption+,
        rule Ring.ring_tOp_closed, assumption, simp,
        rule aGroup.ag_pOp_closed, assumption+, simp add:Ring.ring_one)
 apply (rule aGroup.ag_mOp_closed, assumption+, simp,
        rule aGroup.ag_mOp_closed, assumption+, simp,
        subst aGroup.ag_pOp_assoc[THEN sym], assumption+,
        rule aGroup.nsum_mem, assumption+,
        rule allI, rule impI, simp,
        rule aGroup.ag_mOp_closed, assumption, simp,
        rule Ring.ring_tOp_closed, assumption, simp,
         rule aGroup.ag_pOp_closed, assumption+, simp add:Ring.ring_one,
         rule aGroup.ag_mOp_closed, assumption, simp)
  apply (subgoal_tac "Σe K (λa. if a  (Suc n) then x a r (1r ± -a (b a)) 
         else undefined) n ± -a (x l) = 
         Σe K (λa. if a  n then x a r (1r ± -a (b a)) else undefined) n ±
         -a (x l)", simp,
         rule aGroup.ag_pOp_add_r[of K _ _ "-a (x l)"], assumption+,
         rule aGroup.nsum_mem, assumption+,
         rule allI, rule impI, simp,
         rule aGroup.nsum_mem, assumption+,
         rule allI, rule impI, simp,
         rule aGroup.ag_mOp_closed, assumption, simp,
         rule aGroup.nsum_eq, assumption+,
         rule allI, rule impI, simp, rule allI, rule impI)
   apply simp
   apply (rule allI, rule impI, simp)
done

lemma (in Corps) eSum_minus_x:"[ n. (x j)  carrier K; 
        n. (b j)  carrier K; l  n; 
       j({h. h  n} -{l}). (g j = (x j) r (1r ± -a (b j))); 
       g l = (x l) java.lang.NullPointerException
       (nsum K (λx:"<for>j \\<le> n. (x j) carrier K;
                        nsum K g n"
by       j n} -{l}). (g j = (x j) r (1 -java.lang.NullPointerException

lemma (innsum<><>{r (1\plusminusa (b j))) n) ± (-java.lang.NullPointerException
 (1r ± - eSum_tr "n"x" b""l ""], simp)
apply (cemma (in Ring) one_m_x_times:"
       frule aGroup.ag_mOp_closed[of "R" "x"], assumption+,
       frule aGroup.ag_pOp_closed[of "R" "1 aGroup.ag_mOp_[of "R" "x"], assumptio+,


 apply (simp add:ring_r_one ring_l_one)
 apply (simp del:npow_suc,
        frule_tac n = "Suc="uc n"in npClose "x"],
        subst ring_distrib1, assumption+)
 apply (rule aGroup.nsum_mem, assumption, rule allI, rule impI,
        simp add:npClose, rule npClose, assumption+,
        simp del:npow_suc,
        thin_tac "(1r ±, assumption, rule allI, rule impI,,
 apply (subst ring_distrib2, assumption+,
        simp del:npow_suc add:ring_l_one,
        subst aGroup.pOp_assocTr43[of R], assumption+,
        rule_tac x = "x^java.lang.NullPointerException
        ring_tOp_closedclosed
 apply (subst aGroup.ag_l_inv1, assumption+, simp del 
        add:aGroup.ag_r_zero,
        frule_tac=-<^sub  y = "x\^>R (Suc n)

        assumption+)a x" and =x<bsup" in ring_tOp_closed,
 apply (rule aGroup.ag_pOp_add_l[of R _ _ "1r"], assumption+,
        rule aGroup.ag_mOp_closed, assumption+,
        rule npClose, assumption+,
        subst ring_inv1_1[THEN sym, of x], assumption,
        rule npClose, assumption,
        simp,
        subst ring_tOp_commutedo
done

lemma (in Corps) x_pow_fSum_in_Vr:"[r_ring
   (nsum K (npowapply
apply (frule Vr_ring[of v])
apply (induct_tac n)
 apply simp
 apply (frule Ring.ring_one[of "Vr K v"])
 apply (simp add:Vr_1_f_1)
apply (simp del:npow_suc)
 apply (frule Ringuledf"Vr K v" sumption

 apply ( Vr_pOp_f_pOpTHEN sym v], +)
 apply (subst Vr_exp_f_exp[THEN sym, of v], assumption+)
 apply (rule.npClose "Vr K v"], assumption+)
 apply (rule aGroup.ag_pOp_closed[of "Vr K v"], assumption+)
 apply (subst Vr_exp_f_exp[THEN sym, of v], assumption+)
 apply (rule Ring.npClose[of "Vr K v"], assumption+)
done

lemma        frule Ringring_is_ag""
         0 < (v (1 - ==>  v x ="
apply (cut_tac field_is_ring, frule Ring.ring_one[of "K"],
       frule Ring..ring_is_agof""
 apply (frule aGroup.ag_mOp_closed[of "K" "x"], assumption+)
 apply (frule aGroup.ag_pOp_closed[of "K" "1substsym
 apply (frule aGroup.ag_mOp_closed[of "K" java.lang.NullPointerException
 apply (cut_tac x = x and y = "1java.lang.NullPointerException
        eq_elems_eq_val)
apply subst.ag_p_inv+,
       subst aGroup.ag_pOp_assocassumption+)
       rule aGroup.ag_mOp_closed, assumption+,
       subst aGroup.ag_inv_inv, assumption+,
       subst aGroup.ag_r_inv1, assumption+,
       subst aGroup.ag_l_zero, assumption+,
       (simp add
       frule  value_less_eq[of v  java.lang.NullPointerException
        assumption+)
 apply (simp add:val_minus_eq value_of_one,
        simp add:value_of_one)
done

lemmaTHENsy],assmption+
lusminus\subax)\rbrakk>\Longrightarrow (v (1<sub>r <plusm -K (Suc n)
apply (cut_tac field_is_ring, frule Ring.ring_is_ag[of "K"])
apply (subst Ring.one_m_x_times[THEN sym, of K xaapply (subst (subst val_t2p, asumption+,+,
 apply (frule Ring.ring_one[of "K"],
        frule x_ simp add addaGro.ag_mOp_closed, simp :Vr_mem_,
        subst val_pos_mem_Vr[THEN sym], assumption+,
        frule val_1mx_[of "v" "x] ssumption
        mp

 apply (subst val_t2p, assumption+,
        rule aGroup.ag_pOp_closed, assumption+,
        simp add:Group, simp:Vr_mem_f_mem
        frule val_pos_mem_Vr[THEN sym of v"nsum K (npow K x) n"]
        simp add, simp
 apply(frule n)) ±a (x j))))"
       simp add:aadd_0_l, simp add:aadd_commute)
done

lemma (in Corps) ApproximationTl (subgoal_tac "<>. Σe K (λj{h. h  (Suc n)}. (x j) r (1r ± -a (1r ± 
       (Suc n). x l  (Suc n)]>
     L.({h. h Suc(f  r (1 -<sub -java.lang.NullPointerException
        (x k) <> l)^ NK N^± -r ±
        (Sucsuba ((Ω)<esub^\^>K NK N  ± -r))) (Suc n)")
apply (cut_tac field_is_ring, frule Ring.ring_is_ag[of "K"])
 apply (frule_tac vals_nonequiv_valuation[of "Suc n" "vv" j], assumption+)
apply (subgoal_ta "<orallN. Σe K (λj{h. h  (Suc n)}. (x j) r ± -r ±
 -\<^bsubuc) j)^ NK N -java.lang.NullPointerException
 Σe K (λ
 ((Ωapply (simp add ply
        -a (applymp
 apply (simp del:nsum_suc)
apply (thin_tac "N. Σ>e K ( (Suc n)}. (x j) r (1r ±a (1
  ApproximationTr0)
prefer 2 apply (rule allI)
 apply (rule eSum_minus_x, assumption+)
 apply (rule allI, rule impI) apply (rule ApproximationTr0)
 apply (simp add:Ostrowski_base_mem) apply assumption
 apply (rule ballI, simp)
 apply simp
 apply (frule Ring.ring_one[of "K"])
 apply (cut_tac aa = "(Ω(bstsym
                                               pOp_closed
 apply (simp add:Ostrowski_base_mem)
 apply (subst aGroupapplysimp )
 apply (rule aGroup.ag_mOp_closed, assumption+)+
 apply (subst aGroup.ag_pOp_commute[of java.lang.NullPointerException
 apply (rule aGroup.ag_mOp_closed, assule\< ( (λl{h. h (Suc n)}. if l j then (x l) 🚫 l)^^ else (x j)) 🚫 -r ± -K vv (Suc n) l)^NK N -r))) ja))")

 apply (subst aGroup.ag_pOp_assoc[THEN sym],elsej \cdotK +K (1K -K(ΩK vv (Suc n)
K KN
 apply( aGroup.ag_mOp_closed+)+
 apply (simp add:aGroup.ag_r_inv1)
 apply substoupumptionmp_Op_closed
 apply simp (* subgoal 2 done **)

 apply (subgoal_tac "K +subK (1K+\^ub>K K vv (Suc n)
)^ K \^su>)ese x <c\<ubK
java.lang.NullPointerException

(*
 apply (subgoal_tac "L. N. L < N  (an m)  Amin (Suc n) (vv j  (λlNset (Suc n). if lthen (x l) K (1K +K -K (1K +K -K ((Ω vv (Suc n)) l)^K N)^K N)
 else (x j) K (1K +K  -K (1K +K -K ((Ω vv (Suc n)) l)^K N)^K N
+K -K 1K)))")
 apply (erule exE)
 apply (subgoal_tac "N. L < N 
  ((an m)  ((vv j) (eΣ K (λlNset (Suc n). (if l  j then (x l) K
(1K +K -K (1K +K -K ((Ω vv (Suc n)) l)^K N)^K N) else (x j) K (1K +K -K 
(1K +K -K ((Ω vv (Suc n)) l)^K N)^K N +K -K 1K))) (Suc n))))")
apply blast
*)

apply (erule exE)
apply (rename_tac M)
 apply (subgoal_tac "N. M < (N::nat) 
   (an m)  (vv j (Σe K (λl{h. h  (Suc n)}. (if l  j then 
   (x l) r  (1r ± -a (1r ± -a ((Ω vv (Suc n)) l)^ N)^ N)
   else (x j) r (1r ± -a (1r ± -a ((Ω vv (Suc n)) l)^ N)^ N
   ± -a 1r))) (Suc n)))")
 apply blast
 apply (rule allI, rule impI)
apply (drule_tac a = N in forall_spec, assumption)
 apply (rule value_ge_add[of "vv j" "Suc n" _ "an m"], assumption+)
 
apply (rule allI, rule impI)
 apply (frule Ring.ring_one[of "K"])
 apply (case_tac "ja = j", simp)
 apply (rule Ring.ring_tOp_closed, assumption+, simp)
 apply (rule aGroup.ag_pOp_closed, assumption+)+
 apply (rule aGroup.ag_mOp_closed, assumption+)
 apply (rule Ring.npClose, assumption)
 apply (rule aGroup.ag_pOp_closed, assumption+)
 apply (rule aGroup.ag_mOp_closed, assumption)
 apply (rule Ring.npClose, assumption)
 apply (simp add:Ostrowski_base_mem)
 apply (rule aGroup.ag_mOp_closed, assumption+)

apply simp
 apply (rule Ring.ring_tOp_closed, assumption+, simp)
 apply (rule aGroup.ag_pOp_closed, assumption+)+
 apply (rule aGroup.ag_mOp_closed, assumption+)
 apply (rule Ring.npClose, assumption)
 apply (rule aGroup.ag_pOp_closed, assumption+)
 apply (rule aGroup.ag_mOp_closed, assumption)
 apply (rule Ring.npClose, assumption)
 apply (simp add:Ostrowski_base_mem)

apply assumption

 apply (subgoal_tac "N. ja  (Suc n). (1r ± -a (1r ± -a 
 ((Ω vv (Suc n)) ja)^ N)^ N carrier K")
 apply (subgoal_tac "N. (1r ± -a (1r ± -a ((Ω vv (Suc n)) j)^ N)^ N
                         ± -a 1r carrier K")
 apply (simp add:val_t2p)
 apply (cut_tac multi_inequalityTr0[of "Suc n" "(vv j)  x" "m"])
 apply (subgoal_tac "ja  (Suc n). (vv j  x) ja  - ", simp)
 apply (erule exE)
 apply (subgoal_tac "N. L < N  (ja  (Suc n). (ja  j 
an m  vv j (x ja) + (vv j (1r ± -a (1r ± -a ((Ω vv (Suc n)) ja)^ N)^ N)))
  (ja = j  (an m)  vv j (x j) +  (vv j (1r ± -a (1r ± 
  -a ((Ω vv (Suc n)) j)^ N)^ N ± -a (1r)))))")
 apply blast
 apply (rule allI, rule impI)+

apply (case_tac "ja = j", simp)
 apply (thin_tac "N. 1r ± -a (1r ± -a (Ω vv (Suc n)) j^ N)^ N ± -a 1r  
        carrier K")
 apply (thin_tac "lSuc n. x l  carrier K")
 apply (drule_tac x = N in spec)
 apply (drule_tac a = j in forall_spec, assumption,
        thin_tac "jaSuc n. 1r ± -a (1r ± -a (Ω vv (Suc n)) ja^ N)^ N 
         carrier K")
apply (cut_tac N = N in ApproximationTr0 [of " vv (Suc n)) j"])
 apply (simp add:Ostrowski_base_mem)
 apply (frule Ring.ring_one[of "K"], frule aGroup.ag_mOp_closed[of "K" "1r"],
         assumption) apply (
        frule_tac x = "(1r ± -a ((Ω vv (Suc n)) j)^ N)^ N" in
        aGroup.ag_mOp_closed[of "K"], assumption+)
 apply (simp only:aGroup.ag_pOp_assoc)
 apply (simp only:aGroup.ag_pOp_commute[of "K" _ "-a 1r"])
 apply (simp only:aGroup.ag_pOp_assoc[THEN sym])
 apply (simp add:aGroup.ag_r_inv1)
 apply (simp add:aGroup.ag_l_zero) apply (simp only:val_minus_eq)
  apply (thin_tac "(1r ± -a (Ω vv (Suc n)) j^ N)^ N  carrier K",
         thin_tac "-a (1r ± -a (Ω vv (Suc n)) j^ N)^ N  carrier K")
 apply (subst val_exp_ring[THEN sym, of "vv j"], assumption+)
  apply (rule aGroup.ag_pOp_closed[of "K"], assumption+)
  apply (rule aGroup.ag_mOp_closed[of "K"], assumption)
  apply (rule Ring.npClose, assumption+) apply (simp add:Ostrowski_base_mem)
 apply (rule Ostrowski_base_npow_not_one) apply simp apply assumption+
 apply (drule_tac a = N in forall_spec, assumption)
 apply (drule_tac a = j in forall_spec, assumption)
 apply (frule Ostrowski_baseTr1[of "n" "vv" "j"], assumption+)
 apply (frule_tac n = "N - Suc 0" in val_1mx_pow[of "vv j" " vv (Suc n)) j"])
 apply (simp add:Ostrowski_base_mem) apply assumption
 apply (thin_tac "vv j (x j)  - ") apply (simp only:Suc_pred)
 apply (thin_tac "0 < vv j (1r ± -a ((Ω vv (Suc n)) j))")
 apply (cut_tac b = "vv j (1r ± -a ((Ω vv (Suc n)) j)^ N)" and N = N in
        asprod_ge) apply assumption apply simp
 apply (cut_tac x = "an N" and y = "int N *a vv j (1r ± -a ((Ω vv (Suc n)) j)^ N)" in aadd_le_mono[of _ _ "vv j (x j)"], assumption)
 apply (simp add:aadd_commute)

apply simp
apply (frule_tac aa = " vv (Suc n)) ja" and N = N in
       ApproximationTr2[of "vv j"])
   apply (simp add:Ostrowski_base_mem)
   apply (rule Ostrowski_base_nonzero, assumption+)
apply (frule_tac l = ja in Ostrowski_baseTr0[of "n" "vv"], assumption+,
       erule conjE)
 apply (rotate_tac -1, frule_tac a = j in forall_spec) apply assumption
 apply (frule_tac x = j in bspec, simp)
 apply (rule aless_imp_le) apply blast
 apply (rotate_tac -5,
        drule_tac a = N in forall_spec, assumption)
 apply (rotate_tac -2,
        drule_tac a = ja in forall_spec, assumption) apply (
        drule_tac a = ja in forall_spec, assumption)
 apply (frule_tac l = ja in Ostrowski_baseTr0[of "n" "vv"], assumption+)
 apply (erule conjE, rotate_tac -1,
        frule_tac a = j in forall_spec, assumption+)
  apply (thin_tac "vv j (x ja)  - ")
 apply (cut_tac b = "vv j ((Ω vv (Suc n)) ja)" and N = N in asprod_ge)
 apply simp apply simp
 apply (frule_tac x = "an N" and y = "int N *a vv j ((Ω vv (Suc n)) ja)" and
        z = "vv j (x ja)" in aadd_le_mono)
 apply (frule_tac x = "int N *a vv j ((Ω vv (Suc n)) ja)" and y = "(vv j)
     (1r ± -a (1r ± -a ((Ω vv (Suc n)) ja)^ N)^ N)" and z = "vv j (x ja)"
      in aadd_le_mono)
 apply (frule_tac i = "an N + vv j (x ja)" and
       j = "int N *a vv j ((Ω vv (Suc n)) ja) + vv j (x ja)" and
       k = "vv j (1r ± -a (1r ± -a ((Ω vv (Suc n)) ja)^ N)^ N) +
          vv j (x ja)" in ale_trans, assumption+)
 apply (subst aadd_commute)
 apply (frule_tac x = "an m" and y = "vv j (x ja) + an N" in aless_imp_le)
 apply (rule_tac j = "vv j (x ja) + an N" in ale_trans[of "an m"],
                  assumption)
 apply (simp add:aadd_commute)
 apply (rule allI, rule impI, subst comp_def)
 apply (frule_tac a = ja in forall_spec, assumption)
 apply (frule_tac x = "x ja" in value_in_aug_inf[of "vv j"], assumption+)
 apply (simp add:aug_inf_def)

apply (rule allI)
  apply (rule aGroup.ag_pOp_closed, assumption+) apply blast
 apply (rule aGroup.ag_mOp_closed, assumption, rule Ring.ring_one, assumption)

apply ((rule allI)+, rule impI)
apply (rule_tac aa = " vv (Suc n)) ja" in ApproximationTr1,
       simp add:Ostrowski_base_mem)
done
 
definition
  app_lb :: "[_ , nat, nat ==> 'b ==> ant, nat ==> 'b, nat] ==> 
            (nat ==> nat)" ((5Ψ _ _ _ _) [98,98,98,98,99]98) where
  "Ψ n vv x m = (λj{h. h  n}. (SOME L. (N. L < N 
  (an m)  (vv j (Σe K (λj{h. h  n}. (x j) r (1r ± -a
  (1r ± -a ((Ω vv n) j)^ N)^ N)) n ± -a (x j))))))"
 (** Approximation lower bound **)

lemma (in Corps) app_LB:"[vals_nonequiv K (Suc n) vv; 
      l (Suc n). x l  carrier K; j  (Suc n)] ==>
        N. (Ψ (Suc n) vv x m) j < N  (an m)  
  (vv j (Σe K (λj{h. h  (Suc n)}. (x j) r (1r ± -a (1r ± 
  -a ((Ω vv (Suc n)) j)^ N)^ N)) (Suc n) ± -a (x j)))"
apply (frule ApproximationTr3[of "n" "vv" "x" "j" "m"],
                               assumption+)
apply (simp del:nsum_suc add:app_lb_def) apply (rule allI)
apply (rule someI2_ex) apply assumption+
apply (rule impI) apply blast
done

lemma (in Corps) ApplicationTr4:"[vals_nonequiv K (Suc n) vv;  
 j{h. h  (Suc n)}. x j  carrier K] ==> 
 l. N. l < N  ( (Suc n).  (an m)  
  (vv j (Σe K (λj{h. h  (Suc n)}. (x j) r (1r ± -a (1r ± 
  -a ((Ω vv (Suc n)) j)^sup)^ N)) (Suc n) ± -a (x j))))"
apply (subgoal_tac "N. (m_max (Suc n) (Ψ (Suc n) vv x m)) < N  
  (j (Suc n).  (an m)  
  (vv j (Σe K (λj{h. h  (Suc n)}. (x j) r (1r ± -a (1r ±  
  -a ((Ω vv (Suc n)) j)^ N)^ N)) (Suc n) ± -a (x j))))")
apply blast
 apply (rule allI, rule impI)+
apply (frule_tac j = j in app_LB[of "n" "vv" "x" _ "m"],
       simp, assumption,
       subgoal_tac " (Suc n) vv x m) j < N", blast)
apply (frule_tac l = j and n = "Suc n" and f = "Ψ (Suc n) vv x m" in m_max_gt,
       frule_tac x = " (Suc n) vv x m) j" and
       y = "m_max (Suc n) (Ψ (Suc n) vv x m)" and z = N in le_less_trans,
       assumption+)
done

theorem (in Corps) Approximation_thm:"[vals_nonequiv K (Suc n) vv; 
j (Suc n). (x j)  carrier K]  ==>
ycarrier K. j (Suc n). (an m)  (vv j (y ± -a (x j)))"
apply (cut_tac field_is_ring, frule Ring.ring_is_ag[of "K"])
apply (subgoal_tac "l. (N. l < N  ( (Suc n). (an m)  ((vv j) ((nsum K (λj{h. h  (Suc n)}. (x j) r (1r ± -java.lang.NullPointerException
 applyule
 apply (rename_tac M)
 apply (subgoal_tac (subgoal_tacj K (P j)

 (vv\>^>e K (λj (Suc n)}. (x j) r (1a (1
  -simpzero_in_ring_n_pd_zero_K
 apply (subgoal_tac "\_>mp,
java.lang.NullPointerException
 pplya
 apply (eGronu_emo K"]ption
 apply (rule allI, rule impI, simp del:nsum_suc npow_suc)
 apply (rule Ring.ring_tOp_closed, assumption+, simp,
        rule ApproximationTr1, simp add:Ostrowski_base_mem)

 apply (subgoal_tac M") apply blast
 apply simp
 apply (rule ApplicationTr4apply (subg "cdot\<hyphen>K
K P n

 apply simp
done

definition
  distinct_pds :: "_,at\Rightarrow ('b ==> bool" where
  java.lang.NullPointerException
          +

 (** pds --- prime divisors **)
lemma Rxin_Rxa<b> <^eu> "cdot\<hyphen>K
       distinct_pds K n P"
apply (simp add:distinct_pds_def)
done

lemma (in Corps) ring_n_distinct_prime_divisors:"distinct_pds K n P ==>
       Ring (Sr K {x. x
apply (simp add:distinct_pds_def) apply (erule conjE)
apply (cut_tac field_is_ring)
apply (rule Ring.Sr_ring, assumption+)
apply (subst sr_def)
 apply (rule conjI)
 apply (ruleng_n_pd_zero_K)
 apply (rule conjI)
 apply (simp addsimp
apply (rule
 apply (cut_tac P = "P j" in representative_of_pd_valuation, simp,
        simp add:value_of_one) 
apply (rule ballI)+
 apply simp   epresentative_of_pd_valuation
 apply (frule Ring.ring_is_ag
pply nGroup)
 apply (frule_tac<carrier (O;< n.((νK (P j) y)]  
n+
 apply simp
 apply (le
 apply (rule allI, rule impI)
 apply (rotate_tac -4, frule_tac a = j in forall_spec, assumption,
        rotate_tac -3
        drule_tac a = j in forall_spec, assumption)
 apply (cut_tac
 apply (frule_tac v = java.lang.NullPointerException
        assumption+)
 apply(mp a:vlmns_q
 apply (feta " nu y" in amin_ge1[of "0"])
        simp
 apply (rule_tac j = "amin ((\definition
 applypadd
 
apply (rule allI, rule impI,
       cut_tac P = "P j" in representative_of_pd_valuation inlbrakkdistinct_pds K n P; ideal (O ;j<n]
       subst val_t2p    ==> (P j) {}"
       rule aadd_two_pos, simp+)
done

lemma (in Corps) distinct_pds_valuation:"[
       distinct_pds K (Suc n) P]
 apply (rule_tac P = "P j" in representative_of_pd_valuation) 
 apply (simptinct_pds_def
done

lemma (in Corpsapply ( ubsetI
 < applyK P n

applyrule distinct_pds_valuation[of "j" "n - Suc 0" "P"]) 
apply simp+
done

lemma (in apply(rule_tac
          valuation K (νjava.lang.NullPointerException
apply (case_tac "n = 0",
       lemmaCorpsdistinct_pds K n P; ideal (O I; 
       subgoal_tac {0::nat"
       simp add:representativef_latnP0,
       simp)
 
 apply (simp add:distinct_pds_valuation1[of "n"])
done

definition
  ring_n_pd :: "[('b, 'm) Ring_scheme, nat ==> ('b ==> ant) set,
                             nat ] ==> ('b, 'm) Ring_scheme"
                 ((3O _ _) [98,98,99]98) where
  "O P n = Sr K {x. x  carrier K 
           ( n. 0  ((ν (P j)) x))}"
  (** ring defined by n prime divisors **)

lemma (in Corps) ring_n_pd:"distinct_pds K n P ==> Ring (O P n)"
by (simp add:ring_n_pd_def, simp add:ring_n_distinct_prime_divisors)

lemma (in Corps) ring_n_pd_Suc:"distinct_pds K (Suc n) P ==> 
          carrier (OK P (Suc n) carrier (O P n)"
apply (rule subsetI)
 apply (simp add:ring_n_pd_def Sr_def)
done

lemma (in Corps) ring_n_pd_pOp_K_pOp:"[distinct_pds K n P; xcarrier (O P n);
 y  carrier (O P n)]  ==> x ±O P n) y = x ± y"
apply (simp add:ring_n_pd_def Sr_def)
done

lemma (in Corps) ring_n_pd_tOp_K_tOp:"[distinct_pds K n P; x carrier (O P n);
      y  carrier (O P n)] ==>  x rO P n) y = x r y"
apply (simp add:ring_n_pd_def Sr_def)
done

lemma (in Corps) ring_n_eSum_K_eSumTr:"distinct_pds K n P ==> 
  (jm. f j  carrier (O P n))  nsum (O P n) f m = nsum K f m"
apply (induct_tac m)
 apply (rule impI, simp)

 apply (rule impI, simp,
        subst ring_n_pd_pOp_K_pOp, assumption+,
        frule_tac n = n in ring_n_pd[of _ "P"],
        frule_tac Ring.ring_is_ag, drule sym, simp)
 apply (rule aGroup.nsum_mem, assumption+, simp+)
done

lemma (in Corps) ring_n_eSum_K_eSum:"[distinct_pds K n P; 
       m. f j  carrier (O P n)] ==> nsum (O P n) f m = nsum K f m"
apply (simp add:ring_n_eSum_K_eSumTr)
done

lemma (in Corps) ideal_eSum_closed:"[distinct_pds K n P; ideal (O P n) I; 
       m. f j  I] ==>  nsum K f m  I"
apply (frule ring_n_pd[of "n" "P"]) thm Ring.ideal_nsum_closed
 apply (frule_tac n = m in
       Ring.ideal_nsum_closed[of "(O P n)" "I" _ "f"], assumption+)
 apply (subst ring_n_eSum_K_eSum [THEN sym, of n P m f], assumption+,
        rule allI, simp add:Ring.ideal_subset)
 apply assumption
done

definition
  prime_n_pd :: "[_, nat ==> ('b ==> ant) set,
                             nat, nat] ==> 'b set"
                 ((4P _ _ _) [98,98,98,99]98) where
  "P P n j = {x. x  (carrier (O P n))  0 < ((ν (P j)) x)}"

lemma (in Corps) zero_in_ring_n_pd_zero_K:"distinct_pds K n P ==> 
                               0O P n) = 0"
apply (simp add:ring_n_pd_def Sr_def)
done

lemma (in Corps) one_in_ring_n_pd_one_K:"distinct_pds K n P ==>
                                      1rO P n) = 1r"
apply (simp add:ring_n_pd_def Sr_def)
done

lemma (in Corps) mem_ring_n_pd_mem_K:"[distinct_pds K n P; x carrier (O P n)]
 ==> x  carrier K"
apply (simp add:ring_n_pd_def Sr_def)
done

lemma (in Corps) ring_n_tOp_K_tOp:"[distinct_pds K n P; x  carrier (O P n); 
      y  carrier (O P n)]  ==> x rO P n) y = x r y"
apply (simp add:ring_n_pd_def Sr_def)
done

lemma (in Corps) ring_n_exp_K_exp:"[distinct_pds K n P; x  carrier (O P n)]
        ==> x^ m = x^O P n) m"
apply (frule ring_n_pd[of "n" "P"])
apply (induct_tac m) apply simp
 apply (simp add:one_in_ring_n_pd_one_K)

apply simp
 apply (frule_tac n = na in Ring.npClose[of "O P n" "x"], assumption+)
 apply (simp add:ring_n_tOp_K_tOp)
done

lemma (in Corps) prime_n_pd_prime:"[distinct_pds K n P; j  n] ==>  
              prime_ideal (O P n) (P P n j)"
apply (subst prime_ideal_def)
 apply (rule conjI)
 apply (simp add:ideal_def)
 apply (rule conjI)
 apply (rule aGroup.asubg_test)
 apply (frule ring_n_pd[of "n" "P"], simp add:Ring.ring_is_ag)
 apply (rule subsetI, simp add:prime_n_pd_def)
 apply (subgoal_tac "0O P n)  P P n j")
 apply blast
 
 apply (simp add:zero_in_ring_n_pd_zero_K)
 apply (simp add:prime_n_pd_def)
 apply (simp add: ring_n_pd_def Sr_def)
 apply (cut_tac field_is_ring, simp add:Ring.ring_zero)
 apply (rule conjI) apply (rule allI, rule impI)
 apply (cut_tac P = "P ja" in representative_of_pd_valuation,
        simp add:distinct_pds_def, simp add:value_of_zero)
 apply (cut_tac P = "P j" in representative_of_pd_valuation,
        simp add:distinct_pds_def, simp add:value_of_zero)
 apply (simp add:ant_0[THEN sym])

 apply (rule ballI)+
 apply (simp add:prime_n_pd_def) apply (erule conjE)+
 apply (frule ring_n_pd [of "n" "P"], frule Ring.ring_is_ag[of "O P n"])
 apply (frule_tac x = b in aGroup.ag_mOp_closed[of "O P n"], assumption+)
 apply (simp add:aGroup.ag_pOp_closed)
  apply (thin_tac "Ring (O P n)") apply (thin_tac "aGroup (O P n)")
 apply (simp add:ring_n_pd_def Sr_def)
 apply (erule conjE)+
 apply (cut_tac v = "ν (P j)" and x = a and y = "-a b" in
        amin_le_plus)
 apply (rule_tac P = "P j" in representative_of_pd_valuation,
        simp add:distinct_pds_def)
 apply assumption+
 apply (cut_tac P = "P j" in representative_of_pd_valuation)
 apply (simp add:distinct_pds_def)
 apply (frule_tac x = " (P j)) a" and y = " (P j)) (-a b)" in
         amin_gt[of "0"])
 apply (simp add:val_minus_eq)

apply (frule_tac y = "amin ((ν (P j)) a) ((ν (P j)) (-a b))" and
 z = " (P j)) ( a ± -a b)" in aless_le_trans[of "0"], assumption+)

apply (rule ballI)+
 apply (frule ring_n_pd [of "n" "P"])
 apply (frule_tac x = r and y = x in Ring.ring_tOp_closed[of "O P n"],
        assumption+)
 apply (simp add:prime_n_pd_def)
 apply (cut_tac P = "P j" in representative_of_pd_valuation,
        simp add:distinct_pds_def)
 apply (thin_tac "Ring (O P n)")
 apply (simp add:prime_n_pd_def ring_n_pd_def Sr_def, (erule conjE)+,
        simp add:val_t2p)
 apply (subgoal_tac "0  ((ν (P j)) r)")
 apply (simp add:aadd_pos_poss, simp)

 apply (rule conjI,
        rule contrapos_pp, simp+,
        simp add:prime_n_pd_def,
        (erule conjE)+, simp add: one_in_ring_n_pd_one_K,
        simp add:distinct_pds_def, (erule conjE)+,
        cut_tac representative_of_pd_valuation[of "P j"],
        simp add:value_of_one, simp)

apply ((rule ballI)+, rule impI)
 apply (rule contrapos_pp, simp+, erule conjE,
        simp add:prime_n_pd_def, (erule conjE)+,
        simp add:ring_n_pd_def Sr_def, (erule conjE)+,
        simp add:aneg_less,
        frule_tac x = " (P j)) x" in ale_antisym[of _ "0"], simp,
        frule_tac x = " (P j)) y" in ale_antisym[of _ "0"], simp)

 apply (simp add:distinct_pds_def, (erule conjE)+,
        cut_tac representative_of_pd_valuation[of "P j"],
        simp add:val_t2p aadd_0_l,
        simp)
done

lemma (in Corps) n_eq_val_eq_idealTr:
"[distinct_pds K n P; x  carrier (O P n); y  carrier (O P n); 
 n. ((ν (P j)) x)  ((ν (P j)) y)] ==> Rxa (O P n) y  Rxa (O P n) x"
apply (subgoal_tac " n. valuation K (ν (P j))")
 apply (case_tac "x = 0O P n)",
        simp add:zero_in_ring_n_pd_zero_K)
 apply (simp add:value_of_zero)
 apply (subgoal_tac "y = 0", simp,
        drule_tac a = n in forall_spec, simp,
        drule_tac a=n in forall_spec, simp)
 apply (cut_tac inf_ge_any[of " (P n)) y"],
        frule ale_antisym[of " (P n)) y" ""], assumption+)
 apply (rule value_inf_zero, assumption+)
 apply (simp add:mem_ring_n_pd_mem_K, assumption)
       
apply (frule ring_n_pd[of n P])
 apply (subgoal_tac "jn. 0  ((ν (P j)) (y r (x<hyphen>K)))")
 apply (subgoal_tac "(y r (x<hyphen>K))  carrier (O P n)")
 apply (cut_tac field_frac_mul[of "y" "x"],
        frule Ring.rxa_in_Rxa[of "O P n" "x" "r (x<hyphen>K)"], assumption+,
        simp add:ring_n_pd_tOp_K_tOp[THEN sym],
        frule Ring.principal_ideal[of "O P n" "x"], assumption+)
 
 apply (cut_tac Ring.ideal_cont_Rxa[of "O P n" "(O P np x" "y"],
        assumption+,
        simp add:mem_ring_n_pd_mem_K,
        simp add:mem_ring_n_pd_mem_K,
        simp add:zero_in_ring_n_pd_zero_K)
 apply (frule Ring.rxa_in_Rxa[of "O P n" "x" "r (x<hyphen>K)"], assumption+,
        simp add:ring_n_pd_def Sr_def,
        (erule conjE)+,
        cut_tac field_is_ring, rule Ring.ring_tOp_closed, assumption+,
        cut_tac invf_closed1[of x], simp, simp,
        simp add:ring_n_pd_def Sr_def)
 apply (cut_tac Ring.ring_tOp_closed, assumption+,
        cut_tac field_is_ring, assumption+, simp+,
        cut_tac invf_closed1[of x], simp, simp)

 apply (rule allI, rule impI, drule_tac a = j in forall_spec, assumption+,
        cut_tac invf_closed1[of x], simp, erule conjE)
 apply (subst val_t2p [where v="ν P j"], simp,
        rule mem_ring_n_pd_mem_K[of "n" "P" "y"], assumption+,
        frule_tac x = j in spec, simp,
        simp add:zero_in_ring_n_pd_zero_K)
 apply (subst value_of_inv [where v="ν P j"], simp,
        simp add:ring_n_pd_def Sr_def, assumption+)
 apply (frule_tac x = " (P j)) x" and y = " (P j)) y" in ale_diff_pos,
        simp add:diff_ant_def,
        simp add:mem_ring_n_pd_mem_K[of "n" "P" "x"] zero_in_ring_n_pd_zero_K)

apply (rule allI, rule impI,
       simp add:distinct_pds_def, (erule conjE)+,
       rule_tac P = "P j" in representative_of_pd_valuation, simp)
done
 
lemma (in Corps) n_eq_val_eq_ideal:"[distinct_pds K n P; x  carrier (O P n);
      y  carrier (O P n);  n.((ν (P j)) x) = ((ν (P j)) y)] ==>  
                 Rxa (O P n) x = Rxa (O P n) y"
apply (rule equalityI)
 apply (subgoal_tac "j n. (ν (P j)) y  ((ν (P j)) x)")
 apply (rule n_eq_val_eq_idealTr, assumption+)
 apply (rule allI, rule impI, simp)

 apply (subgoal_tac "j n. (ν (P j)) x  ((ν (P j)) y)")
 apply (rule n_eq_val_eq_idealTr, assumption+)
 apply (rule allI, rule impI)
 apply simp
done
 
definition
  mI_gen :: "[_ , nat ==> ('r ==> ant) set, nat, 'r set] ==> 'r" where
  "mI_gen K P n I = (SOME x. x  I  
                             ( n. (ν (P j)) x = LI K (ν (P j)) I))"

definition
  mL :: "[_, nat ==> ('r ==> ant) set, 'r set, nat] ==> int" where
  "mL K P I j = tna (LI K (ν (P j)) I)"

lemma (in Corps) mI_vals_nonempty:"[distinct_pds K n P; ideal (O P n) I; jn]
    ==> (ν (P j)) ` I  {}"
apply (frule ring_n_pd[of "n" "P"])
apply (frule Ring.ideal_zero [of "O P n" "I"], assumption+)

apply (simp add:image_def)
apply blast
done

lemma (in Corps) mI_vals_LB:"[distinct_pds K n P; ideal (O P n) I; j  n] ==>
       ((ν (P j)) `I)  LBset (ant 0)"
apply (rule subsetI)
apply (simp add:image_def, erule bexE)
 apply (frule ring_n_pd[of "n" "P"])
 apply (frule_tac h = xa in Ring.ideal_subset[of "O P n" "I"], assumption+)
 apply (thin_tac "ideal (O P n) I")
 apply (thin_tac "Ring (O P n)")
 apply (simp add: ring_n_pd_def Sr_def) apply (erule conjE)+
 apply (drule_tac a = j in forall_spec, simp)
 
apply (simp add:LBset_def ant_0)
done

lemma (in Corps) mL_hom:"[distinct_pds K n P; ideal (O P n) I; 
      I  {0O P n)}; I  carrier (O P n)] ==> 
       n. mL K P I j  Zset"
apply (rule allI, rule impI)
 apply (simp add:mL_def LI_def)
 apply (simp add:Zset_def)
done

lemma (in Corps) ex_Zleast_in_mI:"[distinct_pds K n P; ideal (O P n) I; j  n]
      ==> xI. (ν (P j)) x = LI K (ν (P j)) I"
apply (frule_tac j = j in mI_vals_nonempty[of "n" "P" "I"], assumption+)
 apply (frule_tac j = j in mI_vals_LB[of "n" "P" "I"], assumption+)
 apply (frule_tac A = " (P j)) ` I" and z = 0 in AMin_mem, assumption+)
 apply (simp add:LI_def)
 apply (thin_tac " (P j)) ` I  LBset (ant 0)")
 apply (simp add:image_def, erule bexE)
 apply (drule sym)
 apply blast
done

lemma (in Corps) val_LI_pos:"[distinct_pds K n P; ideal (O P n) I; 
       I  {0O P n)}; j  n] ==> 0  LI K (ν (P j)) I"
apply (frule_tac j = j in mI_vals_nonempty[of n P I], assumption+)
 apply (frule_tac j = j in mI_vals_LB[of n P I], assumption+)
 apply (frule_tac A = " (P j)) ` I" and z = 0 in AMin_mem, assumption+)
 apply (simp add:LI_def)
apply (frule subsetD[of " (P j)) ` I" "LBset (ant 0)" "AMin ((ν (P j)) ` I)"], assumption+)
apply (simp add:LBset_def ant_0)
done

lemma (in Corps) val_LI_noninf:"[distinct_pds K n P; ideal (O P n) I; 
       I  {0O P n)}; j  n] ==> LI K (ν (P j)) I  "
 apply (frule_tac j = j in mI_vals_nonempty[of "n" "P" "I"], assumption+)
 apply (frule_tac j = j in mI_vals_LB[of "n" "P" "I"], assumption+)
 apply (frule_tac A = " (P j)) ` I" and z = 0 in AMin, assumption+)
 apply (thin_tac " (P j)) ` I  LBset (ant 0)",
        thin_tac " (P j) ) ` I  {}")
 apply (frule ring_n_pd[of "n" "P"])
 apply (frule Ring.ideal_zero[of "O P n" "I"], assumption+)
 apply (erule conjE, simp add:LI_def)
 apply (frule singleton_sub[of "0 P n" "I"])
 apply (frule sets_not_eq[of "I" "{0 P n}"],
        assumption+, erule bexE)
 apply (simp add:zero_in_ring_n_pd_zero_K)
 apply (subgoal_tac "xI. AMin ((ν (P j)) ` I) = (ν (P j)) x",
        erule bexE) apply simp
 apply (drule_tac x = a in bspec, assumption)
 apply (thin_tac "AMin ((ν (P j)) ` I) = (ν (P j)) x")

 apply (frule_tac h = a in Ring.ideal_subset[of "O P n" "I"], assumption+)
 apply (frule_tac x = a in mem_ring_n_pd_mem_K[of n P], assumption+)
 apply (simp add:distinct_pds_def, (erule conjE)+)
 apply (cut_tac representative_of_pd_valuation[of "P j"])
 defer apply simp apply blast
 apply (frule_tac x = a in val_nonzero_z[of "ν (P j)"], assumption+,
        erule exE, simp)
 apply (thin_tac " n.  n. l  m  P l  P m",
        thin_tac " (P j)) a = ant z")

 apply (rule contrapos_pp, simp+)
 apply (cut_tac x = "ant z" in inf_ge_any)
 apply (frule_tac x = "ant z" in ale_antisym[of _ ""], assumption+)
 apply simp
done

lemma (in Corps) Zleast_in_mI_pos:"[distinct_pds K n P; ideal (O P n) I; 
       I  {0O P n)}; j  n] ==> 0  mL K P I j"
apply (simp add:mL_def)
apply (frule ex_Zleast_in_mI[of "n" "P" "I" "j"], assumption+,
       erule bexE, frule sym, thin_tac " (P j)) x = LI K (ν (P j)) I")
apply (subgoal_tac "LI K (ν (P j)) I  ", simp)
apply (thin_tac "LI K (ν (P j)) I = (ν (P j)) x")

 apply (frule ring_n_pd[of "n" "P"])
 apply (frule_tac h = x in Ring.ideal_subset[of "O P n" "I"], assumption+)
 apply (thin_tac "ideal (O P n) I")
 apply (thin_tac "Ring (O P n)")
 apply (simp add: ring_n_pd_def Sr_def) apply (erule conjE)
 apply (drule_tac a = j in forall_spec, assumption)
 apply (simp add:apos_tna_pos)
apply (rule val_LI_noninf, assumption+)
done

lemma (in Corps) Zleast_mL_I:"[distinct_pds K n P; ideal (O P n) I; j  n;
   I  {0O P n)}; x  I] ==> ant (mL K P I j)  ((ν (P j)) x)"
apply (frule val_LI_pos[of "n" "P" "I" "j"], assumption+)
apply (frule apos_neq_minf[of "LI K (ν (P j)) I"])
apply (frule val_LI_noninf[of "n" "P" "I" "j"], assumption+)
apply (simp add:mL_def LI_def)
apply (simp add:ant_tna)
apply (frule Zleast_in_mI_pos[of "n" "P" "I" "j"], assumption+)

apply (frule mI_vals_nonempty[of "n" "P" "I" "j"], assumption+)
apply (frule mI_vals_LB[of "n" "P" "I" "j"], assumption+)
apply (frule AMin[of " (P j)) `I" "0"], assumption+)
 apply (erule conjE)
apply (frule Zleast_in_mI_pos[of "n" "P" "I" "j"], assumption+)
 apply (simp add:mL_def LI_def)
done

lemma (in Corps) Zleast_LI:"[distinct_pds K n P; ideal (O P n) I; j  n;
   I  {0O P n)}; x  I] ==> (LI K (ν (P j)) I)  ((ν (P j)) x)"
apply (frule mI_vals_nonempty[of "n" "P" "I" "j"], assumption+)
apply (frule mI_vals_LB[of "n" "P" "I" "j"], assumption+)
apply (frule AMin[of " (P j)) `I" "0"], assumption+)
 apply (erule conjE)
apply (simp add:LI_def)
done

lemma (in Corps) mpdiv_vals_nonequiv:"distinct_pds K n P ==> 
             vals_nonequiv K n (λj. ν (P j)"
apply (simp add:vals_nonequiv_def)
 apply (rule conjI)
 apply (simp add:valuations_def)
 apply (rule allI, rule impI)
 apply (rule representative_of_pd_valuation,
        simp add:distinct_pds_def)
apply ((rule allI, rule impI)+, rule impI)
 apply (simp add:distinct_pds_def, erule conjE)
 apply (rotate_tac 4) apply (
        drule_tac a = j in forall_spec, assumption)
 apply (rotate_tac -1,
        drule_tac a = l in forall_spec, assumption, simp)
 apply (simp add:distinct_p_divisors)
done

definition
  KbaseP :: "[_, nat ==> ('r ==> ant) set, nat] ==> 
                                          (nat ==> 'r) ==> bool" where
  "KbaseP K P n f  ( n. f j  carrier K)  
     ( n.  n. (ν (P j)) (f l) =  (δ l))"

definition
  Kbase :: "[_, nat, nat ==> ('r ==> ant) set] 
               ==> (nat ==> 'r)" ((3Kb _ _) [95,95,96]95) where
  "Kb n P  = (SOME f. KbaseP K P n f)"

lemma (in Corps) KbaseTr:"distinct_pds K n P ==>  f. KbaseP K P n f"
apply (simp add: KbaseP_def)
 apply (frule mpdiv_vals_nonequiv[of "n" "P"])
 apply (case_tac "n = 0")
  apply (simp add:vals_nonequiv_def valuations_def)
  apply (simp add:distinct_pds_def)
  apply (frule n_val_n_val1[of "0"])
  apply (frule n_val_surj[of "ν (P 0)"])
  apply (erule bexE)
  apply (subgoal_tac " ((\<lambda>j\<in>{0::nat}. x) (0::nat)) \<in> carrier K \<and> 
         (\<nu>\<^bsub>K (P 0)\<^esub>) ((\<lambda>j\<in>{0::nat}. x) (0::nat)) = (\<delta>\<^bsub>0 0\<^esub>)") 
  apply blast
  apply (rule conjI)
 apply simp apply (simp add:Kronecker_delta_def)
 apply (cut_tac Approximation1_5[of "n - Suc 0" "\<lambda>j. \<nu>\<^bsub>K (P j)\<^esub>"])
 apply simp 
 apply simp+
 apply (rule allI, rule impI)
 apply (rule n_val_n_val1 )
 apply (simp add:distinct_pds_def)
done

lemma (in Corps) KbaseTr1:"distinct_pds K n P \<Longrightarrow>  KbaseP K P n (Kb\<^bsub>K n P \<^esub>)"
apply (subst Kbase_def)
apply (frule KbaseTr[of n P])
apply (erule exE)
apply (simp add:someI)
donejava.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 5

lemma (in Corps) Kbase_hom:"distinct_pds K)<esub)` I and  =0 AMin_mem assumption
                       \<forall>j \<le> n. (Kb\<^bsub>K n P\<^esub>) j \<in> carrier K"       
apply (frule KbaseTr1[of "n" "P"])
apply (simp add:KbaseP_def)
done

 in):" K nP \Longrightarrow> 
      \<forall>j \<le> n. \<forall>l \<le> n. (\<nu>\<^bsub>K (P j)\<^esub>) ((Kb\<^bsub>K n P\<^esub>) l) = \<delta apply (frule_tacj = j inmI_vals_nonemptyof apply (frule_tac j = j in mI_vals_LB[of "n" "P" "I"], assumption+)
apply (frule KbaseTr1[of n P])
apply (simp add:KbaseP_def)
done   

lemma (in Corps) Kbase_nonzero:"distinct_pds K n P \<Longrightarrow> 
                        \<forall>j \<le> n. (Kb\<^bsub>K n P\<^esub>) j \<noteq> \<zero>"
apply (rule allI, rule impI)
 apply (frule Kbase_Kronecker[of n P])
 apply(subgoal_tac"\<u><^>K (Pj)\^esub) (\^bsub>)  \delta>\^bsub> <^esub>")
 apply (thin_tac "\<forall>j\<le>n. (\<forall>l\<le>n. ((\<nu>\<^bsub>K P j\<^esub>) ((Kb\<^bsub>K n P\<^esub>) l)) = \<delta>\<^bsub>j l\<^esub>)")
 apply (simp add:Kronecker_delta_def)
 apply (rule contrapos_pp, simp+)
 apply (cut_tac P = "P j" in representative_of_pd_valuation)  
 apply (simp add:distinct_pds_def)
  ( onlyvalue_of_zero,simp:[ ]
        frule sym, thin_tac " \<infinity> = ant 1", simp java.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 30
apply simp
done

lemma (in Corps) Kbase_hom1:"distinct_pds K n P \<Longrightarrow> 
                    \<forall>j \<le> n. (Kb\<^bsub>K n P\<^esub>) j \<in> carrier K - {\<zero>}"
by(simp add:Kbase_nonzero Kbase_hom)

definition
  Zl_mI :: "[_, nat \<Rightarrow> ('b \<Rightarrow> ant) set, 'b set]
                         \<Rightarrow> nat \<Rightarrow> 'b" where
  "Zl_mI K P I j = (SOME x. (x \<in> I \<and> ( (\<nu>\<^bsub>K (P j)\<^esub>) x = LI K (\<nu>\<^ simpjava.lang.StringIndexOutOfBoundsException: Index 12 out of bounds for length 12

 inCorpsvalue_Zl_mI"<>distinct_pds K  ;ideal O<bsubKP n<esub)I;j\le n\<rbrakk
\Longrightarrow  Zl_mI  I <> \<nu><bsubK Pj\<esub> Zl_mIK  Ij = K(<u\<bsubK ( )\^"
 subgoal_tac"<xists> (\<n I\<and> (\nu\<bsubK(P )\<sub)   LI \<nu>\^bsub> (P j\<^>)I))"java.lang.StringIndexOutOfBoundsException: Index 127 out of bounds for length 127
apply (subst Zl_mI_def)+
apply (rule someI2_ex, assumption+) 
apply (frule ex_Zleast_in_mI[of "n" "P" "I" "j"], assumption+)
apply (erule bexE, blast) 
done

lemma (in Corps) Zl_mI_nonzero:"\<lbrakk>distinct_pds K n P; ideal (O\<^bsub>K P n\<^esub>) I; 
      I \<noteq> {\<zero>\<^bsub>(O\<^bsub>K P n\<^esub>)\<^esub>}; j \<le> n\<rbrakk> \<Longrightarrow>  Zl_mI K P I \<noteq> \<zero>"
apply (case_tac "n = 0")
apply (simp add:distinct_pds_def) 
 apply (frule representative_of_pd_valuation[of "P 0"])
apply( "\<bsubK  0<esub =  K \<nu>\^bsubK( 0\<esub>")
 apply (subgoal_tac "Zl_mI K P I 0 = Ig done 
 apply simp apply (simp add:Ig_nonzero)
applysimpadd: Zl_mI_def)
 apply (simp add:ring_n_pd_def Vr_def)

 apply (simp)
 apply (frule apply ( apos_neq_minfof"  (\nu\<^bsubK ( j)<esub> I")
 apply (erule conjE)
 apply (rule contrapos_pp, simp+)
 apply (frule distinct_pds_valuation1[of n j P], assumption+)
 apply (simp add:value_of_zero)
 apply (simp add:zero_in_ring_n_pd_zero_K)
 apply (frule singleton_sub[of "\<zero>" "I"], 
        frule sets_not_eq[of "I" "{\<zero>}"], assumption,
        erule bexE, simp)
 apply (frule_tac x = a in Zleast_mL_I fruleZleast_in_mI_pos[of"""" "" "j], assumption)
 apply (frule_tac x = a in val_nonzero_z[of "\<nu>\<^bsub>K (P j)\<^esub>"])
 apply (frule ring_n_pd[of "n" "P"])
 apply (frule_tac h = a in Ring.ideal_subset[of "O\<^bsub>K P n\<^esub>" "I"], assumption+)
applysimpadd:em_ring_n_pd_mem_K) apply assumption

apply (simp add:zero_in_ring_n_pd_zero_K) apply assumption
apply (frule val_LI_noninf[THEN not_sym, of "n" "P" "I" "j"], assumption+)
 apply (simp add:zero_in_ring_n_pd_zero_K) apply assumption
 apply simp
done
 
lemma (in Corps) Zl_mI_mem_K:"\<lbrakk>distinct_pds K n P; ideal java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
       \<Longrightarrow> (Zl_mI K P I l) \<in> carrier K"
 ( [of "n"P" I "",assumption)
apply (erule conjE) 
 apply (frule, ruleimpI
 apply (frule Ring.ideal_subset[of "O\<^bsub>K P n\<^esub>" "I" "Zl_mI K P I l"], assumption+)
 apply (simp add:mem_ring_n_pd_mem_K[of "n" "P" "Zl_mI K P I l"])
done

definition
  mprod_exp :: "[_, nat \<Rightarrow> int, nat \<Rightarrow> 'b, nat] 
              \<Rightarrow> 'b" where
  "mprod_exp K e f n = nprod K (\<lambda>j. ((f j)\<^bsub>K\<^esub>\<^bsup>(e j)\<^esup>)) n"        drule_tac a  = l in forall_spec, assumption, simp

lemma(inCorps)mprod_expR_memTr:"(\<>j\le>n fj <in carrier K  \<ongrightarrow  
                      mprod_expR K e f n \<in> carrier K"
apply (cut_tac field_is_ring)
apply (induct_tac n)
 apply (rule impI, simp) 
 apply (simp add:mprod_expR_def)
apply(cut_tac RingnpClose[of K "f 0""e 0"], assumption+)

apply (rule impI) 
 apply simp
 apply (subst Ring.mprodR_Suc, assumption+)
 apply (simp)
 apply (simp)
 apply (rule Ring.ring_tOp_closed[of K], assumption+)
 apply (rule Ring.npClose, assumption+) 
 apply simp 
done

lemma (in Corps) mprod_expR_mem:"\<forall>j \<le> n. f j \<in> carrier K \<Longrightarrow> 
           mprod_expR K e f n \<in> carrier K"
apply (cut_tac field_is_ring) 
apply (cut_tac Ring.mprod_expR_memTr[of K e n f])
apply simp
pply( f\in> {j.j \le n}\rightarrow carrierK" simp+
done 

lemma (in Corps) mprod_Suc:"\<applyblast
                \<forall>j \<le> (Suc n). f j \<in> (carrier K - {\<zero>})\<rbrakk> \<Longrightarrow> 
 mprod_exp K e f (Suc n) = (mprod_exp K e f n) \<cdot>\<^sub>r ((f (Suc n))java.lang.StringIndexOutOfBoundsException: Index 75 out of bounds for length 20
apply (simp add:mprod_exp_def)
done

 in)mprod_memTr"
 (\<forall>j \<le> n. e j \<in> Zset) \<and> (\<forall>j \<le> n. f j \<in> ((carrier K) - {\<zero>})) \<longrightarrow> 
       (mprod_exp K e f n) \<in> ((carrier K) - {\<zero>})
apply (induct_tac n)
 apply (simp, rule impI, (erule conjE)+,
        simp add:mprod_exp_def, simp add:npowf_mem,
        simp add:field_potent_nonzero1) 
apply (rule impI, simp, erule conjE,
       cut_tac field_is_ring, cut_tac field_is_idom,
       erule conjE, simp add:mprod_Suc)
 apply (rule conjI)
java.lang.StringIndexOutOfBoundsException: Index 77 out of bounds for length 55
        simp add:npowf_mem)
 apply (rule Idomain.idom_tOp_nonzeros, assumption+,
        simp add:npowf_mem, assumption,
        simp add:field_potent_nonzero1) 
done

lemma (in Corps) mprod_mem:"\<lbrakk>\<forall>j \<le> n. e j \<in> Zset; \<forall>j \<le> n. f j \<( add:KbaseP_def
apply (cut_tac mprod_memTr[of n e f]) apply simp
done

lemma (in Corps) mprod_mprodR:"\<lbrakk>\<forall>j \<le> n. e j \<in>                        <forall>j \le> n (\<^bsubK n \<^>)j\noteq <zero"
 \<forall>j \<le> n. f j \<in> ((carrier K) - {\<zero>})\<rbrakk> \<Longrightarrow> 
              mprod_exp K e f n = mprod_expR K (nat o e) f n"
apply (cut_tac field_is_ring)
apply (simp add:mprod_exp_def mprod_expR_def) 
apply (rule Ring.nprod_eq, assumption+)
 apply ( , ruleimpI,simp:)
 apply (rule allI,ronecker_delta_def)
apply (rule allI, rule impI)
 apply (simp add:npowf_def)
done

subsection "Representation of an ideal I as a product of prime ideals"

lemma (in Corps) ring_n_mprod_mprodRTr:"distinct_pds K n P \<Longrightarrow> 
       (\<forall>j \<le> m. e j \<in> Zset) \<and> (\<forall>j \<le> m. 0 \<le> (e j)) \<and> 
       (\<forall>j \<le> m. f j \<in> carrier (O\<^bsub>K P n\<^esub>)-{\<zero>\<^bsub>(O\<^bsub>K P n\<^esub>)\<^esub>}) \<longrightarrow> 
        mprod_exp K e f m = mprod_expR (O\<^bsub>K P n\<^esub>) (nat o e) f m"
pplyfrule ring_n_pdofn ]
apply (induct_tac m) 
 ruleimpI ( conjE+
        simp add:mprod_exp_def mprod_expR_def)
 apply (erule conjE, simp add:npowf_def, simp add:ring_n_exp_K_exp) 

apply (rule impI, (erule conjE)+, simp)  
 apply (subst mprod_Suc, assumption+,
ruleallI,rule ,
        simp add:mem_ring_n_pd_mem_K,
        simp add:zero_in_ring_n_pd_zero_K)
  apply (subst Ring.mprodR_Suc, assumption+,
          ,blast) 
         simp)
  apply (simp add:ring_n_pd, simp add:npowf_def, 
         simp add:ring_n_exp_K_exp) 
 apply ( ring_n_tOp_K_tOp, +java.lang.StringIndexOutOfBoundsException: Index 44 out of bounds for length 44
  Ring.mprod_expR_mem, addring_n_pd
        simp
simp)
 apply (rule Ring.npClose, simp add:ring_n_pd, simp, simp)
done

lemma (in Corps) ring_n_mprod_mprodR:"
 \<forall>j \<le> m. 0 \<le> (e j); \<forall>j \<le> m. f j \<in> carrier (O\<^bsub>K P n\<^esub>)-{\<zero>\<^bsub>(O\<^bsub> applyfrule value_Zl_mIn   ]+
 <Longrightarrow>  mprod_exp  e fm  mprod_expR(\^>K Pn\^esub) (at  )f m
apply (simp add:ring_n_mprod_mprodRTr)
done

lemma (in Corps) value_mprod_expTr:"valuation K v  \<Longrightarrow> 
 (\<        frulesets_not_eq[of "I" "\zero>}" assumption
 v (mprod_exp K e f n) =  ASum  (\<lambda>j. (e j) *\<^sub>a (v (f j))) n"  
apply (induct_tac n)
 apply simp
 apply (rule impI, erule conjE)
 apply(simp add:mprod_exp_def val_exp) 

apply (rule impI, erule conjE)
 apply simp
 apply (subst mprod_Suc, assumption+)
 apply( allI,rule impI simp
 apply (subst val_t2p[of v], assumption+)
 apply (cut_tac n = "n" in mprod_mem[of _ e f],
        (rule allI, rule impI, simp)+, simp)
 apply(simp addnpowf_mem simp addfield_potent_nonzero1)
 apply (simp add:val_exp[THEN sym, of "v"]) 
done 

lemma (in Corps) value_mprod_exp:"\<lbrakk>valuation K v; \<forall>j \<le> n. e j \<in> Zset; 
       apply( Ringideal_subset[of"\^bsub>K  n\^esub>""I" "Zl_mIKPI l"] assumption)
  ( add:mem_ring_n_pd_mem_K[of"" "" "Zl_mI  P Il"]
apply (simp add:value_mprod_expTr)
done

lemma (in Corps) mgenerator0_1:"\<lbrakk>distinct_pds K (Suc n) P; 
 ideal (O\<^bsub>K P (Suc n)\<^esub>) I; I \<noteq> {\<zero>\<^bsub>(O\<^bsub>K P (Suc n)\<^esub>)\<^esub>}; 
 I \<noteq> carrier (O\<^bsub>K P (Suc n)\<^esub>); j \<le> (Suc n)\<rbrakk> \<Longrightarrow>
((\<nu>\<^mprod_expR    n\in 
                   ((\<nu>\<^bsub>K (P j)\<^apply(cut_tac field_is_ring)
apply (frule distinct_pds_valuation[of j n P], assumption+)
 apply (frule mL_hom[of "Suc n" "P" "I"], assumption+)
 apply (frule Kbase_hom1[of "Suc n" "P"]) 
 apply (frule value_mprod_exp[of "\<nu>\<^bsub>K (P j)\<^esub>" "Suc n" "mL K P I" 
           "Kb\<^bsub>K (Suc n) P\<^esub>"], assumption+)

 apply (simp del:ASum_Suc)
 apply (thin_tac "(\<nu>\<^bsub>K (P j)\<^esub>) (mprod_exp K (mL K P I) (Kb\<^bsub>K (Suc n) P\<^esub>) (Suc n)) =
     ASum (\<lambda>ja. (mL K P I ja) *\<^sub>a (\<nu>\<^bsub>K (P j)\<^esub>) ((Kb\<^bsub>K (Suc n) P\<^esub>) ja)) (Suc n)")
apply (subgoal_tac "ASum (\<lambda>ja. (mL K P I ja) *\<^sub>a 
      ((\<nu> apply( RingnpClose assumptionassumption 
                ASum (\<lambda>ja. (mL K P I ja) *\<^sub>a (\<delta>\<^bsub>j ja\<^esub>)) (Suc n)")
apply (simp del:ASum_Suc)
apply (subgoal_tac "\<forall>h \<le in Corps mprod_expR_mem:\<orallj <> n f j\<> carrier K <Longrightarrow 
apply (cut_tac eSum_single[of "Suc n" "\<lambda>ja. (mL K P I ja) *\<^sub>a (\<delta>\<^bsub>j ja\<^esub>)" "j"])
  
 apply (simp add:Kronecker_delta_def asprod_n_0)
 apply ( 1  not_sym 
apply (simp add:mL_def[of "K" "P" "I" "j"])

apply( val_LI_noninf[ Sucn""P"" "I "j" assumption
 apply (rule not_sym, simp, simp)
apply (frule val_LI_pos[of "Suc n" "P" "I" "j"], assumption+,
       rotate_tac -2, frule not_sym, simp, simp)

apply (frule apos_neq_minf[of "LI K (\<nu>\<^bsub>K (P j)\<^esub>) lemma ( )mprod_memTr:
apply (simp add:ant_tna) 
apply (simp add:value_Zl_mI[of "Suc n" "P" "I" "j"])
apply (rule allI, rule impI)
 apply (simp add:Kdelta_in_Zinf, simp)
 apply (rule ballI, simp)
 apply (simp add:Kronecker_delta_def, erule conjE)
 apply (simp add:asprod_n_0)

apply (rule        field_is_ring cut_tacfield_is_idomjava.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 52
 apply (simp add:Kdelta_in_Zinf)

apply (frule  Kbase_Kronecker[of "Suc n" "P"])
 apply (rule ASum_eq,
        rule allI, rule impI,
        simp add:delta_in_Zinf,
        ruleallI,  impI
        simp add:Kdelta_in_Zinf)
apply (rule allI, rule impI) apply simp
done

lemma (in Corps) mgenerator0_2:"\<lbrakk> 0 < n; distinct_pds K n P; ideal (O\<^bsub>K P n\<^esub>) I; 
 I \<noteq> {\<zero>\<^bsub>(O\<^bsub>K P n\<^esub>)\<^esub>}; I \<noteq> carrier (O\<^bsub>K P n\<^esub>); j \<le> n\<rbrakk>  \<Longrightarrow>
((\<nu>\<^bsub>K (P j)\<^esub>) (mprod_exp K (mL K P I) (Kb\<^bsub>K n P\<^esub>) n)) =  ((\<nu>\<^bsub>K (P j)\<^esub>) (simpadd mprod_expR_def 
apply (cut_tac mgenerator0_1[of  "n - Suc 0" "P" "I" "j"])
 apply simp+
done

lemma (in Corps) mgenerator1:"\<lbrakk  (simp addnpowf_def)
 I \<noteq> {\<zero>\<^bsub>(O\<^bsub>K P n\<^esub>)\<^esub>}; I \<noteq> carrier (O\<^bsub>K P n\<^esub>); j \<le> njava.lang.StringIndexOutOfBoundsException: Index 118 out of bounds for length 0
((\<nu>\<^bsub>K (P j)\<^esub>) (mprod_exp K (mL K P I) (Kb\<^bsub>K n P\<^esub>) n)) = ((\<nu>\<^bsub>K (P j)\<^esub>) (Zl_mI K P I j))"
apply (case_tac "n = 0",
       frule value_Zl_mI[of "n" "P" "I" "j"], assumption+,
       frule
       frule val_LI_pos[of  "n" "P" "I" "j"], assumption+,
       frule apos_neq_minf[of "LI K (\<nu>\<^bsub>K (P j)\<^esub>) I"],
       simp add:distinct_pds_def, erule conjE)  
 apply (cut_tac representative_of_pd_valuation[of "P j"], simp+,
        simp add:mprod_exp_def,
        subst val_exp[THEN sym, of "\<nu>\<^bsub>K (P 0)\<^esub>" "(Kb\<^bsub>K 0 P\<^esub>) 0"], assumption+,
        cut_tac Kbase_hom[of "0" "P"], simp,
        simp add:distinct_pds_def,
         Kbase_nonzeroof 0 P] simp,
        simp add:distinct_pds_def) 
 apply (cut_tac Kbase_nonzero[of "0" "P"], simp add:distinct_pds_def) 
 apply (cut_tac Kbase_Kronecker[of "0" "P"], simp add:distinct_pds_def) 
 apply (simp add:Kronecker_delta_def, simp add:mL_def, simp add:ant_tna)
 apply (simp add:distinct_pds_def)+
apply (cut_tac mgenerator0_2[of "n" "P" "I" "j"], simp+)
 apply (simp add:distinct_pds_def) apply simp+
done
    
lemma (in Corps) mgenerator2Tr1:"\<lbrakk>0 < n; j \<le> n; k \<le> n; distinct_pds K n P\<rbrakk> \<Longrightarrow>
      (\<nu>\<^bsub>K (P j)\<^esub>) (mprod_exp K (\<lambda>l. \<gamma>\<^bsub>k l\<^esub> ) (Kb\<^bsub>K n P\<^esub>) n) = (\<gamma>\<^bsub>k j\<^esub>) *\<^sub>a (\<delta>\<^bsub>j j\<^esub>)"
apply (frule distinct_pds_valuation1[of "n" "j" "P"], assumption+)
apply (frule K_gamma_hom[of k n]) 
apply (subgoal_tac "\<forall>j \<le> n. (Kb\<^bsub>K n P\<^esub>) j \<in> carrier K - {\<zero>}")
apply (simp add:value_mprod_exp[of "\<nu>\<^bsub>K (P j)\<^esub>" n "K_gamma k" "(Kb\<^bsub>K n P\<^esub>)"])
apply (subgoal_tac "ASum (\<lambda>ja. (\<gamma>\<^bsub>k ja\<^esub>) *\<^sub>a (\<nu>\<^bsub>K (P j)\<^esub>) ((Kb\<^bsub>K n P\<^esub>) ja)) n
       = ASum (\<lambda>ja. (((\<gamma>\<^bsub>k ja\<^esub>) *\<^sub>a (\<delta>\<^bsub>j ja\<^esub>)))) n")
 apply simp
 apply (subgoal_tac "\<forall>j \<le> n. (\<lambda>ja. (\<gamma>\<^bsub>k ja\<^esub>) *\<^sub>a (\<delta>\<^bsub>j ja\<^esub>)) j \<in> Z\<^sub>\<infinity>")
 apply (cut_tac eSum_single[of n "\<lambda>ja. ((\<gamma>\<^bsub>k ja\<^esub>) *\<^sub>a (\<delta>\<^bsub>j ja\<^esub>))"  "j"], simp)
 apply (rule allI, rule impI, simp add:Kronecker_delta_def, 
        rule impI, simp add:asprod_n_0 Zero_in_aug_inf, assumption+)
 apply (java.lang.StringIndexOutOfBoundsException: Index 145 out of bounds for length 145
  apply (simp add:K_gamma_def, rule impI, simp add:Kronecker_delta_def) 
  apply (rule allI, rule impI)
  apply (simp add:Kronecker_delta_def, simp add:K_gamma_def)
 apply (simp add:ant_0 Zero_in_aug_inf)
 apply (cut_tac z_in_aug_inf[of 1], simp add:ant_1) 

 apply (rule ASum_eq)
  apply (rule allI, rule impI)
  apply (simp add:K_gamma_def, simp add:Zero_in_aug_inf) 
  apply (rule impI, rule value_in_aug_inf, assumption+, simp)
  apply (simp add:K_gamma_def Zero_in_aug_inf Kdelta_in_Zinf1)
  apply (rule allI, rule impI)
  apply (simp add:Kbase_Kronecker[of "n" "P"])
  apply (rule Kbase_hom1, assumption+)
done

lemma (in Corps) mgenerator2Tr2:"\<lbrakk>0 < n; j \<le> n; k \<le> n; distinct_pds K n P\<rbrakk> \<Longrightarrow>
     (\<nu>\<^bsub>K (P j)\<^esub>) ((mprod_exp K (\<lambda>l. \<gamma>\<^bsub>k l\<^esub> ) (Kb\<^bsub>K n P\<^esub>) n)\<^bsub>K\<^esub>\<^bsup>m\<^esup>)= ant (m * (\<gamma>\<^bsub>k j\<^esub>))"

apply (frule K_gamma_hom[of k n])
apply (frule Kbase_hom1[of "n" "P"])
apply (frule mprod_mem[of n "K_gamma k" "Kb\<^bsub>K n P\<^esub>"], assumption+)
apply (frule distinct_pds_valuation1[of "n" "j" "P"], assumption+)
apply (simp, erule conjE)
apply (simp add:val_exp[THEN sym])
apply (simp add:mgenerator2Tr1)
 apply (simp add:K_gamma_def Kronecker_delta_def)
 apply (rule impI)
 apply (simp add:asprod_def a_z_z)
done

lemma (in Corps) mgenerator2Tr3_1:"\<lbrakk>0 < n; j \<le> n; k \<le> n; j = k; 
      distinct_pds K n P\<rbrakk> \<Longrightarrow>
          (\<nu>\<^bsub>K (P j)\<^esub>) ((mprod_exp K (\<lambda>l. (\<gamma>\<^bsub>k l\<^esub>)) (Kb\<^bsub>K n P\<^esub>) n)\<^bsub>K\<^esub>\<^bsup>m\<^esup>) = 0"
apply (simp add:mgenerator2Tr2) apply (simp add:K_gamma_def)
done

lemma (in Corps) mgenerator2Tr3_2:"\<lbrakk>0 < n; j \<le> n; k \<le> n; j \<noteq> k; 
      distinct_pds K n P\<rbrakk> \<Longrightarrow>
      (\<nu>\<^bsub>K (P j)\<^esub>) ((mprod_exp K (\<lambda>l. (\<gamma>\<^bsub>k l\<^esub>)) (Kb\<^bsub>K n P\<^esub>) n)\<^bsub>K\<^esub>\<^bsup>m\<^esup>) = ant m"
apply (simp add:mgenerator2Tr2) apply (simp add:K_gamma_def)
done

lemma (in Corps) mgeneratorTr4:"\<lbrakk>0 < n; distinct_pds K n P; ideal (O\<^bsub>K P n\<^esub>) I; 
      I \<noteq> {\<zero>\<^bsub>O\<^bsub>K P n\<^esub>\<^esub>}; I \<noteq> carrier (O\<^bsub>K P n\<^esub>)\<rbrakk> \<Longrightarrow> 
       mprod_exp K (mL K P I) (Kb\<^   Kbase_Kronecker"""", add) 
apply (\<nu>\<^bsub>K (P j)\<^esub>) (mprod_exp K (\<lambda>l. \<gamma>\<^bsub>k l\<^esub> ) (Kb\<^bsub>K n P\<^esub>) n) =java.lang.StringIndexOutOfBoundsException: Index 72 out of bounds for length 72
apply (simp add:Sr_def)
 apply (frule mL_hom[of  "n" "P" "I"], assumption+)
 apply (frule mprod_mem[of n "mL K P I" "Kb\<^bsub>K n P\<^esub>"])
 apply (rule Kbase_hom1, assumption+)

 apply (simp add:mprod_mem)

apply (rule allI, rule impI)
 apply (simp add:mgenerator1)
 apply (simp add:value_Zl_mI)
 apply (simp add:val_LI_pos)
done

definition
  m_zmax_pdsI_hom :: "[_, nat \<Rightarrow> ('b \<Rightarrow> ant) set, 'b set] \<Rightarrow> nat \<Rightarrow> int" where
  "m_zmax_pdsI_hom K P I = (\<lambda>j. tna (AMin ((\<nu>\<^bsub>K (P j)\<^esub>) ` I)))"

definition
  m_zmax_pdsI :: "[_, nat, nat \<Rightarrow> ('b \<Rightarrow> ant) set, 'b set] \<Rightarrow> int" where
  "m_zmax_pdsI K n P I = (m_zmax n (m_zmax_pdsI_hom K P I)) + 1"
 
lemma (in Corps) value_Zl_mI_pos:"\<lbrakk>0 < n; distinct_pds K n P; ideal (O\<^bsub>K P n\<^esub>) I;
     I \<noteq> {\<zero>\<^bsub>(O\<^bsub>K P n\<^esub>)\<^esub>}; I \<noteq> carrier (O\<^bsub>K P n\<^esub>); j \<le> n; l \<le> n\<rbrakk> \<Longrightarrow>
     0 \<le> ((\<nu>\<^bsub>K (P j)\<^esub>) (Zl_mI K P I l))"
apply (frule value_Zl_mI[of "n" "P" "I" "l"], assumption+)
apply (erule conjE) 
 apply (frule ring_n_pd[of "n" "P"])
 apply (frule Ring.ideal_subset[of "O\<^bsub>K P n\<^esub>" "I" "Zl_mI K P I l"], assumption+)
 apply (thin_tac "ideal (O\<^bsub>K P n\<^esub>) I")
 apply (thin_tac "I \<noteq> {\<zero>\<^bsub>O\<^bsub>K P n\<^esub>\<^esub>}")
 apply (thin_tac "I \<noteq> carrier (O\<^bsub>K P n\<^esub>)")
 apply (thin_tac "Ring (O\<^bsub>K P n\<^esub>)")
 apply (simp add:ring_n_pd_def Sr_def) 
done

lemma (in Corps) value_mI_genTr1:"\<lbrakk>0 < n; distinct_pds K n P; ideal (O\<^bsub>K P n\<^esub>) I;
 I \<noteq> {\<zero>\<^bsub>O\<^bsub>K P n\<^esub>\<^esub>}; I \<noteq> carrier (O\<^bsub>K P n\<^esub>); j \<le> n\<rbrakk> \<Longrightarrow>
 (mprod_exp K (K_gamma j) (Kb\<^bsub>K n P\<^esub>) n)\<^bsub>K\<^esub>\<^bsup>(m_zmax_pdsI K n P I)\<^esup> \<in> carrier K"
apply (frule K_gamma_hom[of "j" "n"])
apply (frule mprod_mem[of n "K_gamma j" "Kb\<^bsub>K n P\<^esub>"])
 apply (rule Kbase_hom1, assumption+)
apply (rule npowf_mem)
 apply simp+
done

lemma (in Corps) value_mI_genTr1_0:"\<lbrakk>0 < n; distinct_pds K n P; 
 ideal (O\<^bsub>K P n\<^esub>) I; I \<noteq> {\<zero>\<^bsub>O\<^bsub>K P n\<^esub>\<^esub>}; I \<noteq> carrier (O\<^bsub>K P n\<^esub>); j \<le> n\<rbrakk>
 \<Longrightarrow> (mprod_exp K (K_gamma j) (Kb\<^bsub>K n P\<^esub>) n) \<in> carrier K
apply (frule K_gamma_hom[of "j" "n"])
apply (frule mprod_mem[of n "K_gamma j" "Kb\<^bsub>K n P\<^esub>"])
 apply (rule Kbase_hom1, assumption+)
 apply simp
done


lemma (in Corps) value_mI_genTr2:"\<lbrakk>0 < n; distinct_pds K n P; ideal (O\<^bsub>K P n\<^esub>) I;
 I \<noteq> {\<zero>\<^bsub>O\<^bsub>K P n\<^esub>\<^esub>}; I \<noteq> carrier (O\<^bsub>K P n\<^esub>); j \<le> n\<rbrakk> \<Longrightarrow>
 (mprod_exp K (K_gamma j) (Kb\<^bsub>K n P\<^esub>) n)\<^bsub>K\<^esub>\<^bsup>(m_zmax_pdsI K n P I)\<^esup> \<noteq> \<zero>"
 apply (frule K_gamma_hom[of "j" "n"])
 apply (frule mprod_mem[of n "K_gamma j" "Kb\<^bsub>K n P\<^esub>"])
 apply (rule Kbase_hom1, assumption+) apply simp apply (erule conjE)
 apply (simp add: field_potent_nonzero1)
done

lemma (in Corps) value_mI_genTr3:"\<lbrakk>0 < n; distinct_pds K n P; ideal (O\<^bsub>K P n\<^esub>) I;
 I \<noteq> {\<zero>\<^bsub>O\<^bsub>K P n\<^esub>\<^esub>}; I \<noteq> carrier (O\<^bsub>K P n\<^esub>); j \<le> n\<rbrakk> \<Longrightarrow>
 (Zl_mI K P I j) \<cdot>\<^sub>r ((mprod_exp K (K_gamma j) (Kb\<^bsub>K n P\<^esub>) n)\<^bsub>K\<^esub>\<^bsup>(m_zmax_pdsI K n P I)\<^esup>)
  \<in> carrier K"
apply (cut_tac field_is_ring)
apply (rule Ring.ring_tOp_closed, assumption+)
apply (simp add:Zl_mI_mem_K)
apply (simp add:value_mI_genTr1)
done

lemma (in Corps) value_mI_gen:"\<lbrakk>0 < n; distinct_pds K n P; ideal (O\<^bsub>K P n\<^esub>) I;
 I \<noteq> {\<zero>\<^bsub>(O\<^bsub>K P n\<^esub>)\<^esub>}; I \<noteq> carrier (O\<^bsub>K P n\<^esub>); j \<le> n\<rbrakk> \<Longrightarrow>  
(\<nu>\<^bsub>K (P j)\<^esub>) (nsum K (\<lambda>k. ((Zl_mI K P I k) \<cdot>\<^sub>r ((mprod_exp K (\<lambda>l. (\<gamma>\<^bsub>k l\<^esub>)) (Kb\<^bsub>K n P\<^esub>) n)\<^bsub>K\<^esub>\<^bsup>(m_zmax_pdsI K n P I)\<^esup>))) n) = LI K (\<nu>\<^bsub>K (P j)\<^esub>) I"
apply (cut_tac field_is_ring, frule Ring.ring_is_ag[of "K"])
apply (case_tac "j = n", simp) 
 apply (cut_tac nsum_suc[of K "\<lambda>k. Zl_mI K P I k \<cdot>\<^sub>r 
        mprod_exp K (K_gamma k) (Kb\<^bsub>K n P\<^esub>) n\<^bsub>K\<^esub>\<^bsup>m_zmax_pdsI K n P I\<^esup>" "n - Suc 0"], 
        simp,
        thin_tac "\<Sigma>\<^sub>e K (\<lambda>k. Zl_mI K P I k \<cdot>\<^sub>r
               mprod_exp K (K_gamma k) (Kb\<^bsub>K n P\<^esub>) n\<^bsub>K\<^esub>\<^bsup>m_zmax_pdsI K n P I\<^esup>) n =
     \<Sigma>\<^sub>e K (\<lambda>k. Zl_mI K P I k \<cdot>\<^sub>r
               mprod_exp K (K_gamma k) (Kb\<^bsub>K n P\<^esub>)
                n\<^bsub>K\<^esub>\<^bsup>m_zmax_pdsI K n P I\<^esup>) (n - Suc 0\<plusminus>
     Zl_mI K P I n \<cdot>\<^sub>r
     mprod_exp K (K_gamma n) (Kb\<^bsub>K n P\<^esub>) n\<^bsub>K\<^esub>\<^bsup>m_zmax_pdsI K n P I\<^esup>")
 apply (cut_tac distinct_pds_valuation[of "n" "n - Suc 0" "P"])
prefer 2 apply simp 
prefer 2 apply simp 
 apply (subst value_less_eq1[THEN sym, of "\<nu>\<^bsub>K (P n)\<^esub>" 
 "(Zl_mI K P I n)\<cdot>\<^sub>r (mprod_exp K (K_gamma n) (Kb\<^bsub>K n P\<^esub>) n\<^bsub>K\<^esub>\<^bsup>m_zmax_pdsI K n P I\<^esup>)"
 "nsum K (\<lambda>k.(Zl_mI K P I k)\<cdot>\<^sub>r (mprod_exp K (K_gamma k) (Kb\<^bsub>K n P\<^esub>) n\<^bsub>K\<^esub>\<^bsup>m_zmax_pdsI K n P I\<^esup>)) (n - Suc 0)"], assumption+) 

 apply (simp add:value_mI_genTr3)
 apply (frule Ring.ring_is_ag[of K])
 apply (rule aGroup.nsum_mem[of _ "n - Suc 0"], assumption+)
 apply (rule allI, rule impI)
 apply (simp add:value_mI_genTr3) 

 apply (subst val_t2p[of "\<nu>\<^bsub>K (P n)\<^esub>"], assumption+)
 apply (simp add:Zl_mI_mem_K)
 apply (simp add:value_mI_genTr1) 

 apply (simp add:mgenerator2Tr3_1[of "n" "n" "n" "P"])
 apply (simp add:aadd_0_r) 
apply (frule value_Zl_mI[of "n" "P" "I" "n"], assumption+, simp)
 apply (erule conjE) 
 apply (frule_tac f = "\<lambda>k. (Zl_mI K P I k) \<cdot>\<^sub>r 
       (mprod_exp K (K_gamma k) (Kb\<^bsub>K n P\<^esub>) n\<^bsub>K\<^esub>\<^bsup>m_zmax_pdsI K n P I\<^esup>)" in 
       value_ge_add[of "\<nu>\<^bsub>K (P n)\<^esub>" "n - Suc 0" _ 
      "ant (m_zmax_pdsI K n P I)"])
 apply (rule allI, rule impI) 
 apply (rule Ring.ring_tOp_closed, assumption+)
 apply (simp add:Zl_mI_mem_K)
 apply (simp add:value_mI_genTr1)  

 apply (rule allI, rule impI) apply (simp add:cmp_def)
 apply (subst val_t2p [where v="\<nu>\<^bsub>K P n\<^esub>"], assumption+)
 apply (simp add:Zl_mI_mem_K)
 apply (simp add:value_mI_genTr1) 

 apply (cut_tac e = "K_gamma ja" in mprod_mem[of n  _  "Kb\<^bsub>K n P\<^esub>"])
 apply (simp add:Zset_def) apply (rule Kbase_hom1, assumption+)
 apply (subst val_exp[of "\<nu>\<^bsub>K (P n)\<^esub>", THEN sym], assumption+) 
 apply simp+ 

 apply (subst mgenerator2Tr1[of "n" "n" _ "P"], assumption+, simp, simp,
        assumption+) 
 apply (simp add:K_gamma_def Kronecker_delta_def)
 apply (frule_tac l = ja in value_Zl_mI_pos[of "n" "P" "I" "n"],
        assumption+, simp, simp)
 apply (simp add:Nset_preTr1)
 apply (frule_tac y = "(\<nu>\<^bsub>K (P n)\<^esub>) (Zl_mI K P I ja)" in 
  aadd_le_mono[of "0" _ "ant (m_zmax_pdsI K n P I)"]) apply (simp add:aadd_0_l)
 apply (subgoal_tac "LI K (\<nu>\<^bsub>K (P n)\<^esub>) I < ant (m_zmax_pdsI K n P I)")
 apply simp
 apply (rule aless_le_trans[of "LI K (\<nu>\<^bsub>K (P n)\<^esub>) I" 
                           "ant (m_zmax_pdsI K n P I)"])

 apply (simp add:m_zmax_pdsI_def)
 apply (cut_tac aless_zless[of "tna (LI K (\<nu>\<^bsub>K (P n)\<^esub>) I)" 
                   "m_zmax n (m_zmax_pdsI_hom K P I) + 1"])
apply (frule val_LI_noninf[of "n" "P" "I" "n"], assumption+, simp, simp) 
apply (frule val_LI_pos[of "n" "P" "I" "n"], assumption+, simp,
       frule apos_neq_minf[of "LI K (\<nu>\<^bsub>K (P n)\<^esub>) I"], simp add:ant_tna)
 apply (subst m_zmax_pdsI_hom_def)
 apply (subst LI_def)
 apply (cut_tac m_zmax_gt_each[of n "\<lambda>u.(tna (AMin ((\<nu>\<^bsub>K (P u)\<^esub>) ` I)))"])
 apply simp

 apply (rule allI, rule impI)
 apply (simp add:Zset_def, simp) 

 apply (subst val_t2p[of "\<nu>\<^bsub>K (P n)\<^esub>"], assumption+)
 apply (rule Zl_mI_mem_K, assumption+, simp)
 apply (simp add:value_mI_genTr1)
 apply (simp add:mgenerator2Tr3_1[of "n" "n" "n" "P" "m_zmax_pdsI K n P I"])
 apply (simp add:aadd_0_r)
 apply (simp add:value_Zl_mI[of "n" "P" "I" "n"])

(*** case j = n done ***)
 apply (frule aGroup.addition3[of "K" "n - Suc 0" "\<lambda>k. (Zl_mI K P I k) \<cdot>\<^sub>r
((mprod_exp K (K_gamma k) (Kb\<^bsub>K n P\<^esub>) n)\<^bsub>K\<^esub>\<^bsup>(m_zmax_pdsI K n P I)\<^esup>)" "j"])
 
 apply simp
 apply (rule allI, rule impI) 
 apply (simp add:value_mI_genTr3) apply simp+

 apply (thin_tac "\<Sigma>\<^sub>e K (\<lambda>k. Zl_mI K P I k \<cdot>\<^sub>r
     mprod_exp K (K_gamma k) (Kb\<^bsub>K n P\<^esub>) n\<^bsub>K\<^esub>\<^bsup>m_zmax_pdsI K n P I\<^esup>) n =
     \<Sigma>\<^sub>e K (cmp (\<lambda>k. Zl_mI K P I k \<cdot>\<^sub>r
            mprod_exp K (K_gamma k) (Kb\<^bsub>K n P\<^esub>) n\<^bsub>K\<^esub>\<^bsup>m_zmax_pdsI K n P I\<^esup>) (\<tau>\<^bsub>j n\<^esub>)) n")
 apply (cut_tac nsum_suc[of K "cmp (\<lambda>k. Zl_mI K P I k \<cdot>\<^sub>r
     mprod_exp K (K_gamma k) (Kb\<^bsub>K n P\<^esub>) n\<^bsub>K\<^esub>\<^bsup>m_zmax_pdsI K n P I\<^esup>) (\<tau>\<^bsub>j n\<^esub>)" "n - Suc 0"])
 apply (simp del:nsum_suc) apply (
        thin_tac "\<Sigma>\<^sub>e K (cmp (\<lambda>k. Zl_mI K P I k \<cdot>\<^sub>r
         mprod_exp K (K_gamma k) (Kb\<^bsub>K n P\<^esub>) n\<^bsub>K\<^esub>\<^bsup>m_zmax_pdsI K n P I\<^esup>) (\<tau>\<^bsub>j n\<^esub>)) n =
     \<Sigma>\<^sub>e K (cmp (\<lambda>k. Zl_mI K P I k \<cdot>\<^sub>r
        mprod_exp K (K_gamma k) (Kb\<^bsub>K n P\<^esub>) n\<^bsub>K\<^esub>\<^bsup>m_zmax_pdsI K n P I\<^esup>) (\<tau>\<^bsub>j n\<^esub>))
         (n - Suc 0\<plusminus>  (cmp (\<lambda>k. Zl_mI K P I k \<cdot>\<^sub>r
         mprod_exp K (K_gamma k) (Kb\<^bsub>K n P\<^esub>) n\<^bsub>K\<^esub>\<^bsup>m_zmax_pdsI K n P I\<^esup>) (\<tau>\<^bsub>j n\<^esub>)) n")
 apply (cut_tac distinct_pds_valuation[of "j" "n - Suc 0" "P"])
 prefer 2 apply simp prefer 2 apply simp
 apply (simp add:cmp_def)

 apply (cut_tac n_in_Nsetn[of "n"])
 apply (simp add:transpos_ij_2)
 apply (subst value_less_eq1[THEN sym, of "\<nu>\<^bsub>K (P j)\<^esub>"
 "(Zl_mI K P I j) \<cdot>\<^sub>r (mprod_exp K (K_gamma j) (Kb\<^bsub>K n P\<^esub>)
  n\<^bsub>K\<^esub>\<^bsup>m_zmax_pdsI K n P I\<^esup>)" "\<Sigma>\<^sub>e K (\<lambda>x.(Zl_mI K P I ((\<tau>\<^bsub>j n\<^esub>) x)) \<cdot>\<^sub>r
 (mprod_exp K (K_gamma ((\<tau>\<^bsub>j n\<^esub>) x)) (Kb\<^bsub>K n P\<^esub>) n\<^bsub>K\<^esub>\<^bsup>m_zmax_pdsI K n P I\<^esup>)) (n - Suc 0)"], assumption+)
 apply (simp add:value_mI_genTr3)
 apply (rule aGroup.nsum_mem[of "K" "n - Suc 0"], assumption+)
 apply (rule allI, rule impI) 
 apply (frule_tac l = ja in transpos_mem[of "j" "n" "n"], simp+)
 apply (simp add:value_mI_genTr3) 

 apply (subst val_t2p[of "\<nu>\<^bsub>K (P j)\<^esub>"], assumption+)
 apply (simp add:Zl_mI_mem_K) 
 apply (simp add:value_mI_genTr1)

 apply (simp add:mgenerator2Tr3_1[of "n" "j" "j" "P"])

 apply (frule value_Zl_mI[of "n" "P" "I" "j"], assumption+)
 apply (erule conjE)
 apply (simp add:aadd_0_r)
 apply (cut_tac f = "\<lambda>x. (Zl_mI K P I ((\<tau>\<^bsub>j n\<^esub>) x)) \<cdot>\<^sub>r
       (mprod_exp K (K_gamma ((\<tau>\<^bsub>j n\<^esub>) x)) (Kb\<^bsub>K n P\<^esub>) n\<^bsub>K\<^esub>\<^bsup>m_zmax_pdsI K n P I\<^esup>)" in 
        value_ge_add[of "\<nu>\<^bsub>K (P j)\<^esub>"
        "n - Suc 0" _ "ant (m_zmax_pdsI K n P I)"], assumption+)
 apply (rule allI, rule impI) 
 apply (frule_tac l = ja in transpos_mem[of "j" "n" "n"], simp+)
 apply (simp add:value_mI_genTr3)
 apply (rule allI, rule impI) apply (simp add:cmp_def)

 apply (frule_tac l = ja in transpos_mem[of "j" "n" "n"], simp+)

 apply (subst val_t2p [where v="\<nu>\<^bsub>K P j\<^esub>"], assumption+) 
 apply (simp add:Zl_mI_mem_K)
 apply (simp add:value_mI_genTr1)
 apply (cut_tac k = ja in transpos_noteqTr[of "n" _ "j"], simp+) 
 apply (subst mgenerator2Tr3_2[of "n" "j" _ "P"], simp+)
 apply (cut_tac l = "(\<tau>\<^bsub>j n\<^esub>) ja" in value_Zl_mI_pos[of "n" "P" "I" "j"],
        simp+)
 apply (frule_tac y = "(\<nu>\<^bsub>K (P j)\<^esub>) (Zl_mI K P I ((\<tau>\<^bsub>j n\<^esub>) ja))" in 
 aadd_le_mono[of "0"  _ "ant (m_zmax_pdsI K n P I)"])
 apply (simp add:aadd_0_l)
apply (subgoal_tac "LI K (\<nu>\<^bsub>K (P j)\<^esub>) I < ant (m_zmax_pdsI K n P I)")
 apply (rule aless_le_trans[of "LI K (\<nu>\<^bsub>K (P j)\<^esub>) I" 
                           "ant (m_zmax_pdsI K n P I)"], assumption+)

 apply (simp add:m_zmax_pdsI_def)
 apply (cut_tac aless_zless[of "tna (LI K (\<nu>\<^bsub>K (P j)\<^esub>) I)" 
                   "m_zmax n (m_zmax_pdsI_hom K P I) + 1"])
apply (frule val_LI_noninf[of  "n" "P" "I" "j"], assumption+,
       frule val_LI_pos[of  "n" "P" "I" "j"], assumption+,
       frule apos_neq_minf[of "LI K (\<nu>\<^bsub>K (P j)\<^esub>) I"], simp add:ant_tna)
 apply (subst m_zmax_pdsI_hom_def)
 apply (subst LI_def)
 apply (subgoal_tac "\<forall>h \<le> n. (\<lambda>u. (tna (AMin ((\<nu>\<^bsub>K (P u)\<^esub>) ` I)))) h \<in> Zset")
 apply (frule m_zmax_gt_each[of n "\<lambda>u.(tna (AMin ((\<nu>\<^bsub>K (P u)\<^esub>) ` I)))"])
 apply simp
 apply (rule allI, rule impI)
 apply (simp add:Zset_def)
apply (subst val_t2p[of "\<nu>\<^bsub>K (P j)\<^esub>"], assumption+)
 apply (rule Zl_mI_mem_K, assumption+)
 apply (simp add:value_mI_genTr1)
  
 apply (simp add:mgenerator2Tr3_1[of  "n" "j" "j" "P" 
                                         "m_zmax_pdsI K n P I"])
 apply (simp add:aadd_0_r)
 apply (simp add:value_Zl_mI[of "n" "P" "I" "j"])
done

lemma (in Corps) mI_gen_in_I:"\<lbrakk>0 < n; distinct_pds K n P; ideal (O\<^bsub>K P n\<^esub>) I; 
  I \<noteq> {\<zero>\<^bsub>(O\<^bsub>K P n\<^esub>)\<^esub>}; I \<noteq> carrier (O\<^bsub>K P n\<^esub>)\<rbrakk> \<Longrightarrow>
  (nsum K (\<lambda>k. ((Zl_mI K P I k) \<cdot>\<^sub>r 
  ((mprod_exp K (\<lambda>l. (\<gamma>\<^bsub>k l\<^esub>)) (Kb\<^bsub>K n P\<^esub>) n)\<^bsub>K\<^esub>\<^bsup>(m_zmax_pdsI K n P I)\<^esup>))) n) \<in> I"
apply (cut_tac field_is_ring, frule ring_n_pd[of n P])
apply (rule ideal_eSum_closed[of n P I n], assumption+)
apply (rule allI, rule impI)
 apply (frule_tac j = j in value_Zl_mI[of  "n" "P" "I"], assumption+) 
 apply (erule conjE)
 apply (thin_tac "(\<nu>\<^bsub>K (P j)\<^esub>) (Zl_mI K P I j) = LI K (\<nu>\<^bsub>K (P j)\<^esub>) I")
 apply (subgoal_tac "(mprod_exp K (K_gamma j) (Kb\<^bsub>K n P\<^esub>) n)\<^bsub>K\<^esub>\<^bsup>(m_zmax_pdsI K n P I)\<^esup>
 \<in> carrier (O\<^bsub>K P n\<^esub>)") 
 apply (frule_tac x = "Zl_mI K P I j" and 
   r = "(mprod_exp K (K_gamma j) (Kb\<^bsub>K n P\<^esub>) n)\<^bsub>K\<^esub>\<^bsup>(m_zmax_pdsI K n P I)\<^esup>"
   in Ring.ideal_ring_multiple1[of "(O\<^bsub>K P n\<^esub>)" "I"], assumption+) 
 apply (frule_tac h = "Zl_mI K P I j" in 
               Ring.ideal_subset[of "O\<^bsub>K P n\<^esub>" "I"], assumption+)
 apply (simp add:ring_n_pd_tOp_K_tOp[of "n" "P"])
 
apply (subst ring_n_pd_def) apply (simp add:Sr_def)
 apply (simp add:value_mI_genTr1)

 apply (rule allI, rule impI)
 apply (case_tac "j = ja"
 apply (simp add:mgenerator2Tr3_1)

 apply (simp add:mgenerator2Tr3_2)
 apply (simp add:m_zmax_pdsI_def) apply (simp add:m_zmax_pdsI_hom_def)
 apply (simp only:ant_0[THEN sym])
 apply (simp add:aless_zless)
 apply (subgoal_tac "\<forall>l \<le> n. (\<lambda>j. tna (AMin ((\<nu>\<^bsub>K (P j)\<^esub>) ` I))) l \<in> Zset")
 apply (frule m_zmax_gt_each[of n "\<lambda>j. tna (AMin ((\<nu>\<^bsub>K (P j)\<^esub>) ` I))"]) 
 apply (rotate_tac -1, drule_tac a = ja in forall_spec, simp+)
 apply (frule_tac j = ja in val_LI_pos[of  "n" "P" "I"], assumption+) 
 apply (cut_tac j = "tna (LI K (\<nu>\<^bsub>K (P ja)\<^esub>) I)" in ale_zle[of "0"]) 
apply (frule_tac j = ja in val_LI_noninf[of "n" "P" "I"], assumption+,
       frule_tac j = ja in val_LI_pos[of "n" "P" "I"], assumption+,
       frule_tac a = "LI K (\<nu>\<^bsub>K (P ja)\<^esub>) I" in apos_neq_minf, simp add:ant_tna,
       simp add:ant_0) apply (unfold LI_def)
 apply (frule_tac y = "tna (AMin (\<nu>\<^bsub>K (P ja)\<^esub> ` I))" and z = "m_zmax n (\<lambda>j. tna (AMin (\<nu>\<^bsub>K (P j)\<^esub> ` I)))" in order_trans[of "0"], assumption+)
 apply (rule_tac y = "m_zmax n (\<lambda>j. tna (AMin (\<nu>\<^bsub>K (P j)\<^esub> ` I)))" and 
        z = "m_zmax n (\<lambda>j. tna (AMin (\<nu>\<^bsub>K (P j)\<^esub> ` I))) + 1" in order_trans[of "0"],
        assumption+) apply simp

 apply (rule allI, rule impI) apply (simp add:Zset_def)
done


text\<open>We write the element 
        \<open>e\<Sigma> K (\<lambda>k. (Zl_mI K P I k) \<cdot>\<^sub>K ((mprod_exp K (K_gamma k) (Kb\<^bsub>K n P\<^esub>)
                    n)\<^sub>K\<^sup>(m_zmax_pdsI K n P I))) n\<close>
      as \<open>mIg\<^bsub>K G a i n P I\<^esub>\<close>\<close>

definition
  mIg :: "[_, nat, nat \<Rightarrow> ('b \<Rightarrow> ant) set,
             'b set] \<Rightarrow> 'b" (\<open>(4mIg\<^bsub> _ _ _ _\<^esub>)\<close> [82,82,82,83]82) where
  "mIg\<^bsub>K n P I\<^esub> = \<Sigma>\<^sub>e K (\<lambda>k. (Zl_mI K P I k) \<cdot>\<^sub>r\<^bsub>K\<^esub>
             ((mprod_exp K (K_gamma k) (Kb\<^bsub>K n P\<^esub>) n)\<^bsub>K\<^esub>\<^bsup>(m_zmax_pdsI K n P I)\<^esup>)) n"

text\<open>We can rewrite above two lemmas by using \<open>mIg\<^bsub>K G a i n P I\<^esub>\<close>\<close> 

lemma (in Corps) value_mI_gen1:"\<lbrakk>0 < n; distinct_pds K n P; ideal (O\<^bsub>K P n\<^esub>) I;
 I \<noteq> {\<zero>\<^bsub>(O\<^bsub>K P n\<^esub>)\<^esub>}; I \<noteq> carrier (O\<^bsub>K P n\<^esub>)\<rbrakk> \<Longrightarrow> 
                \<forall>j \<le> n.(\<nu>\<^bsub>K (P j)\<^esub>) (mIg\<^bsub>K n P I\<^esub>) = LI K (\<nu>\<^bsub>K (P j)\<^esub>) I
apply (rule allI, rule impI)
 apply (simp add:mIg_def value_mI_gen)
done

lemma (in Corps) mI_gen_in_I1:"\<lbrakk>0 < n; distinct_pds K n P; ideal (O\<^bsub>K P n\<^esub>) I; 
  I \<noteq> {\<zero>\<^bsub>(O\<^bsub>K P n\<^esub>)\<^esub>}; I \<noteq> carrier (O\<^bsub>K P n\<^esub>)\<rbrakk> \<Longrightarrow>  (mIg\<^bsub>K n P I\<^esub>) \<in> I"
apply (simp add:mIg_def mI_gen_in_I)
done

lemma (in Corps) mI_principalTr:"\<lbrakk>0 < n; distinct_pds K n P; ideal (O\<^bsub>K P n\<^esub>) I
  I \<noteq> {\<zero>\<^bsub>(O\<^bsub>K P n\<^esub>)\<^esub>}; I \<noteq> carrier (O\<^bsub>K P n\<^esub>); x \<in> I\<rbrakk> \<Longrightarrow> 
 \<forall>j \<le> n. ((\<nu>\<^bsub>K (P j)\<^esub>) (mIg\<^bsub>K n P I\<^esub>)) \<le> ((\<nu>\<^bsub>K (P j)\<^esub>) x)
apply (simp add:value_mI_gen1)
 apply (rule allI, rule impI)
 apply (rule Zleast_LI, assumption+)
done

lemma  (cut_tac z_in_aug_inf[ ], simp :ant_1
 I \<noteq> {\<zero>\<^bsub>(java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
                                        I = Rxa (O\<^bsub>K P n\<^esub>) (mIg\<^bsub>K n P I\<^esub>)"
apply (frule ring_n_pd[of "n" "P"]) 
apply (rule equalityI)
 apply (rule subsetI)
    (ruleallI,ruleimpI

 apply (frule_tac y = x in n_eq_val_eq_idealTr[of "n" "P" "mIg\<^bsub>K n P I\<^esub>"])
 apply (frule mI_gen_in_I1[of "n" "P" "I"], assumption+)
 apply (simp add:Ring.ideal_subset)+
 apply (thin_tac "\<forall>j\<le>n. (\<nu>\<^bsub>K (P j)\<^esub>) (mIg\<^bsub> K n P I\<^esub>) \<le> (\<nu>\<^bsub>K (P j)\<^esub>) x")
apply frule_tac h  x in Ring.[of "O<bsubK Pn\<^esub>""", assumption
 apply (frule_tac a = x in Ring.a_in_principal[of "O\<^bsub>K P n\<^esub>"], assumption+)
 apply (simp add:subsetD)
 \^] assumption
 apply (rule mI_gen_in_I1[of  "n" "P" "I"], assumption+)
done

subsection \<open>\<open>prime_n_pd\<close>\<close>

lemma (in Corps) prime_n_pd_principal:"\<lbrakk>distinct_pds K n P; j \<le> n\<rbrakk> \<Longrightarrow>  
       (P\<^bsub>K P n\<^esub> j) = Rxa (O\<^bsub>K P n\<^esub>) (((Kb\<^bsub>K n P\<^esub>) j))"
apply (frule ring_n_pd[of "n" "P"])
apply (frule prime_n_pd_prime[of "n" "P" "j"], assumption+)
apply (simp add:prime_ideal_def, frule conjunct1)
 apply (fold prime_ideal_def)
 apply (thin_tac "prime_ideal (O\<^bsub>K P n\<^esub>) (P\<^bsub>K P n\<^esub> j)")
apply (rule equalityI)
 apply (rule subsetI)
 apply (frule_tac y = x in n_eq_val_eq_idealTr[of n P "(Kb\<^bsub>K n P\<^esub>) j"])
 apply (thin_tac "Ring (O\<^bsub>K P n\<^esub>)", thin_tac "ideal (O\<^bsub>K P n\<^esub>) (P\<^bsub>K P n\<^esub> j)")
 apply (simp add:ring_n_pd_def Sr_def)
 apply (frule Kbase_hom[of  "n" "P"], simp)
 apply (rule allI, rule impI)
 apply (frule Kbase_Kronecker[[of "n" "P")
 apply (simp add:Kronecker_delta_def, rule impI)
 apply (simp only:ant_0[THEN sym], simp only:ant_1[THEN sym])
 apply (simp del:ant_1)
 apply (simp add:prime_n_pd_def)


 apply (rule allI, rule impI)
 apply (frule Kbase_Kronecker[of "n" "P"])
 apply simp
 apply (thin_tac "\<forall>j\<le>n. \<forall>l\<le>n. (\<nu>\<^bsub>K (P j)\<^esub>) ((Kb\<^bsub>K n P\<^esub>) l) = \<delta>\<^bsub>j l\<^esub>")
 apply (case_tac "ja = j", simp add:Kronecker_delta_def)
 apply (thin_tac "ideal (O\<^bsub>K P n\<^esub>) (P\<^bsub>K P n\<^esub> j)")
 apply (simp add:prime_n_pd_def, erule conjE)
 apply (frule_tac x = x in  mem_ring_n_pd_mem_K[of "n" "P"],
                                         assumption+)
 apply (case_tac "x = \<zero>\<^bsub>K\<^esub>")
 apply (frule distinct_pds_valuation2[of "j" "n" "P"], assumption+)
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

applysimp :)
 apply (frule_tac j = ja in distinct_pds_valuation2[of  _ "n" "P"],
         assumption+)
 apply (simp add:prime_n_pd_def, erule conjE)
 apply (thin_tac "ideal (O\<^bsub>K P n\<^esub>) {x. x \lemma( Corps) :"lbrakk0 n distinct_pdsKnP idealO<bsubK P \<> I;
 apply (simp add:ring_n_pd_def Sr_def)
 apply (cut_tac h = x in Ring.ideal_subset[of "O\<^bsub>K P n\<^esub>" "P\<^bsub>K P n\<^esub> j"])
 apply(rule_tac a=x  Ring.a_in_principalofO\bsubKP \<esub]java.lang.StringIndexOutOfBoundsException: Index 76 out of bounds for length 76
 apply (simp add:Ring.ideal_subset, assumption+)


apply (rule_tac c = x and A = "(O\<^bsub>K P n\<^esub>) \<diamondsuit>\<^sub>p x" and B = "(O\<^bsub>K P n\<^esub>) \<diamondsuit>\<^sub>p (Kb\<^bsub>K n P\<^esub>) j"
       in subsetD, assumption+)
apply (simp add:Ring.a_in_principal)
 apply (rule Ring.ideal_cont_Rxa[of "O\<^bsub>K P n\<^esub>" "P\<^bsub>K P n\<^esub> j" "(Kb\<^bsub>K n P\<^esub>) j"], assumption+)
 apply (subst prime_n_pd_def, simp)
 apply (frule Kbase_Kronecker[of "n" "P"])
 apply (simp add:Kronecker_delta_def) 
 apply (simp only:ant_1[THEN sym], simp only:ant_0[THEN sym])
 apply (simp del:ant_1 add:aless_zless)
apply (subst ring_n_pd_def, simp add:Sr_def)
 apply (frule Kbase_hom[of "n" "P"])
 apply simp
 apply (rule allI) 
 apply (simp add:ant_0)
 apply (rule impI)
  apply (simp only:ant_1[THEN sym], simp only:ant_0[THEN sym])
  apply (simp del:ant_1)
done

lemma (in Corps) ring_n_prod_primesTr:"\<lbrakk>0 < n; distinct_pds K n P; 
 ideal (O\<^bsub>K P n\<^esub>) I; I \<noteq> {\<zero>\<^bsub>O\<^bsub>K P n\<^esub>\<^esub>}; I \<noteq> carrier (O\<^bsub>K P n\<^esub>)\<rbrakk> \<Longrightarrow>
 \<forall>j \<le> n.(\<nu>\<^bsub>K (P j)\<^esub>) (mprod_exp K (mL K P I) (Kb\<^bsub>K n P\<^esub>) n) = 
                   (\<nu>\<^bsub>K (P j)\<^esub>) (mIg\<^bsub>K n P I\<^esub>)"
apply (rule allI, rule impI)
 apply (simp add:mgenerator1)
 apply (simp add:value_mI_gen1)

 apply (simp add:value_Zl_mI)
done

lemma (in Corps) ring_n_prod_primesTr1:"\<lbrakk>0 < n; distinct_pds K n P;  
      ideal (O\<^bsub>K P n\<^esub>) I; I \<noteq> {\<zero>\<^bsub>O\<^bsub>K P n\<^esub>\<^esub>}; I \<noteq> carrier (O\<^bsub>K P n\<^esub>)\<rbrakk> \<Longrightarrow> 
       I = (O\<^bsub>K P n\<^esub>) \<diamondsuit>\<^sub>p (mprod_exp K (mL K P I) (Kb\<^bsub>K n P\<^esub>) n)"
apply (frule ring_n_pd[of "n" "P"])
apply (subst n_eq_val_eq_ideal[of "n" "P" "mprod_exp K (mL K P I)
       (Kb\<^bsub>K n P\<^esub>) n" "mIg\<^bsub>K n P I\<^esub>"], assumption+)
apply (simp add:mgeneratorTr4) 
apply (frule mI_gen_in_I1[of "n" "P" "I"], assumption+)
apply (simp add:Ring.ideal_subset)
apply (simp add:ring_n_prod_primesTr)
apply (simp add:mI_principal)
done

lemma (in Corps) ring_n_prod_primes:"\<lbrakk>0 < n; distinct_pds K n P;  
      ideal (O\<^bsub>K P n\<^esub>) I; I \<noteq> {\<zero>\<^bsub>O\<^bsub>K P n\<^esub>\<^esub>}; I \<noteq> carrier (O\<^bsub>K P n\<^esub>); 
     \<forall>k \<le> n. J k = (P\<^bsub>K P n\<^esub> k)\<^bsup>\<diamondsuit>(O\<^bsub>K P n\<^esub>) (nat ((mL K P I) k))\<^esup>\<rbrakk> \<Longrightarrow> 
       I = i\<Pi>\<^bsub>(O\<^bsub>K P n\<^esub>),n\<^esub> J
apply (simp add:prime_n_pd_principal[of "n" "P"])
apply (subst ring_n_prod_primesTr1[of "n" "P" "I"], assumption+)
apply (frule ring_n_pd[of "n" "P"])
apply (frule Ring.prod_n_principal_ideal[of "O\<^bsub>K P n\<^esub>" "nat o (mL K P I)" "n" 
       "Kb\<^bsub>K n P\<^esub>" "J"])
 apply (frule Kbase_hom[of "n" "P"])
 apply (simp add:nat_def)
 apply (subst ring_n_pd_def) apply (simp add:Sr_def) 
 apply (rule Pi_I, simp)
 apply (simp add:Kbase_Kronecker[of  "n" "P"])
 apply (simp add:Kronecker_delta_def) 
  apply (simp only:ant_1[THEN sym], simp only:ant_0[THEN sym])
  apply (simp del:ant_1)
  apply (simp add:Kbase_hom) apply simp 

 apply simp
 apply (frule ring_n_mprod_mprodR[of "n" "P" n "mL K P I"  "Kb\<^bsub>K n P\<^esub>"])
  apply (rule allI, rule impI, simp add:Zset_def)
  apply (rule allI, rule impI) 
  apply (simp add: Zleast_in_mI_pos)

 apply (rule allI, rule impI)
 apply (subst ring_n_pd_def) apply (simp add:Sr_def)
 apply (frule Kbase_hom1[of  "n" "P"], simp)
 apply (simp add:zero_in_ring_n_pd_zero_K)
 apply (frule Kbase_Kronecker[of  "n" "P"])
 apply (simp add:Kronecker_delta_def) 
  apply (simp only:ant_1[THEN sym], simp only:ant_0[THEN sym])
  apply (simp del:ant_1)
apply simp
done

end

Messung V0.5 in Prozent
C=93 H=72 G=82
span style='color:green'>apply
 (rule impI) 
 apply simp
 apply (subst Ring.mprodR_Suc, assumption+)
 apply (simp)
 apply (simp)
 apply (rule Ring.ring_tOp_closed[of K], assumption+)
 apply (rule Ring.npClose, assumption+) 
 apply simp 
done

lemma (in Corps) mprod_expR_mem:"\<forall>j \<le> n. f j \<in> carrier K \<Longrightarrow> 
           mprod_expR K e f n \<in> carrier K"
apply (cut_tac field_is_ring) 
apply (cut_tac Ring.mprod_expR_memTr[of K e n f])
applysimp
apply (subgoal_tac "f \<in> {j. j \<le> n} \<rightarrow> carrier K", simp+)
done 

lemma (in Corps) mprod_Suc:"\<lbrakk> \<forall>j\<le>(Suc n). e j \<in> Zset; 
               <forall> \le>Sucn) fj\<> (carrierK-{\ero>}\rbrakk \<> 
 mprod_exp K e f (Suc n) = (mprod_exp K e f n) \<cdot>\<^sub>r ((f (Suc n))\<^bsub>K\<^esub (frulering_n_pd[of n"P")
apply (simp add:mprod_exp_def)
one

lemma (in Corps) mprod_memTr:"
 (\<forall>j \<le> n. e j \<in> Zset) \<and> (\<forall>j \<le> n. f j \<in> ((carrier K) - {\<zero>})) \<longrightarrow> 
       (mprod_exp K e f n) \<in> ((carrier K) - {\<zero>})" 
apply (induct_tac n)
 apply (simp, rule impI, (erule conjE)+,
        simp add:mprod_exp_def, simp add:npowf_mem,
        simp add:field_potent_nonzero1) 
apply (rule impI, simp, erule conjE,
       cut_tac field_is_ring, cut_tac field_is_idom,
eruleconjE,simpadd:)
 apply (rule conjI)
apply( Ring.ring_tOp_closed[of""] assumption+,
        simp add:npowf_mem)
 apply (rule Idomain.idom_tOp_nonzeros, assumption+,
simp:, assumption
simp:) 
done

 thin_tac I\noteq>\zero\^bsub\bsubPn<
apply (cut_tac mprod_memTr[of n e f]) apply simp
done

lemma (in Corps) mprod_mprodR:"\<lbrakk>\<forall>j \<le> n. e j \<in> Zset; \<forall>j \<le> n. 0 \<le> (e j); 
 
              mprod_exp K e f n = mprod_expR K (nat o e) f n"
  )
apply (simp add:mprod_exp_def mprod_expR_def) 
apply (rule Ring.nprod_eq, assumption+)
 apply (rule allI, rule impI, simp add:npowf_mem)
 apply (rule allI, rule impI, rule Ring.npClose, assumption+, simp)
apply (rule allI, rule impI)
 apply (simp add:npowf_def)
done

subsection "Representation of an ideal I as a product of prime ideals"

lemma (in Corps) ring_n_mprod_mprodRTr:"distinct_pds K n P \<Longrightarrow> 
       (\<forall>j \<le> m. e j \<in> Zset) \<and> (\<forall>j \<le> m. 0 \<le> (e j)) \<and> 
       (\<forall>j \<le> m. f j \<in> carrier (O\<^bsub>K P n\<^esub>)-{\<zero>\<^bsub>(O\<^bsub>K P n\<^esub>)\<^esub>}) \<longrightarrow> 
        mprod_exp K e f m = mprod_expR (O\<^bsub>K P n\<^esub>) (nat o e) f m"
apply (frule ring_n_pd[of n P])
apply (induct_tac m) 
 apply (rule impI, (erule conjE)+,
        simp add:mprod_exp_def mprod_expR_def)
 apply (erule conjE, simp add:npowf_def, simp add:ring_n_exp_K_exp) 

apply (rule impI, (erule conjE)+, simp)  
 apply (subst mprod_Suc, assumption+,
        rule allI, rule impI,
        simp add:mem_ring_n_pd_mem_K,
        simp add:zero_in_ring_n_pd_zero_K)
  apply (subst Ring.mprodR_Suc, assumption+,
         simp add:cmp_def,
         simp)
  apply (simp add:ring_n_pd, simp add:npowf_def, 
         simp add:ring_n_exp_K_exp) 
 apply (subst ring_n_tOp_K_tOp, assumption+,
        rule Ring.mprod_expR_mem, simp add:ring_n_pd,
        simp,
        simp)
 apply (rule Ring.npClose, simp add:ring_n_pd, simp, simp)
done

lemma (in Corps) ring_n_mprod_mprodR:"\<lbrakk>distinct_pds K n P; \<forall>j \<le> m. e j \<in> Zset;
 \<forall>j \<le> m. 0 \<le> (e j); \<forall>j \<le> m. f j \<in> carrier (O\<^bsub>K P n\<^esub>)-{\<zero>\<^bsub>(O\<^bsub>K P n\<^esub>)\<^esub>}\<rbrakk> 
 \<Longrightarrow>  mprod_exp K e f m = mprod_expR (O\<^bsub>K P n\<^esub>) (nat o e) f m"
apply (simp add:ring_n_mprod_mprodRTr)
done

lemma (in Corps) value_mprod_expTr:"valuation K v  \<Longrightarrow> 
 (\<forall>j \<le> n. e j \<in> Zset) \<and> (\<forall>j \<le> n. f j \<in> (carrier K - {\<zero>})) \<longrightarrow>
 v (mprod_exp K e f n) =  ASum  (\<lambda>j. (e j) *\<^sub>a (v (f j))) n"  
apply (induct_tac n)
 apply simp
 apply (rule impI, erule conjE)
 apply(simp add:mprod_exp_def val_exp) 

apply (rule impI, erule conjE)
 apply simp
 apply (subst mprod_Suc, assumption+)
 apply (rule allI, rule impI, simp)
 apply (subst val_t2p[of v], assumption+)
 apply (cut_tac n = "n" in mprod_mem[of _ e f],
        (rule allI, rule impI, simp)+, simp)
 apply (simp add:npowf_mem, simp add:field_potent_nonzero1)
 apply (simp add:val_exp[THEN sym, of "v"]) 
done 

lemma (in Corps) value_mprod_exp:"\<lbrakk>valuation K v; \<forall>j \<le> n. e j \<in> Zset; 
       \<forall>j \<le> n. f j \<in> (carrier K - {\<zero>})\<rbrakk> \<Longrightarrow> 
     v (mprod_exp K e f n) = ASum (\<lambda>j. (e j) *\<^sub>a (v (f j))) n"  
apply (simp add:value_mprod_expTr)
done

lemma (in Corps) mgenerator0_1:"\<lbrakk>distinct_pds K (Suc n) P; 
 ideal (O\<^bsub>K P (Suc n)\<^esub>) I; I \<noteq> {\<zero>\<^bsub>(O\<^bsub>K P (Suc n)\<^esub>)\<^esub>}; 
 I \<noteq> carrier (O\<^bsub>K P (Suc n)\<^esub>); j \<le> (Suc n)\<rbrakk> \<Longrightarrow>
((\<nu>\<^bsub>K (P j)\<^esub>) (mprod_exp K (mL K P I) (Kb\<^bsub>K (Suc n) P\<^esub>) (Suc n))) = 
                   ((\<nu>\<^bsub>K (P j)\<^esub>) (Zl_mI K P I j))" 
apply (frule distinct_pds_valuation[of j n P], assumption+)
 apply (frule mL_hom[of "Suc n" "P" "I"], assumption+)
 apply (frule Kbase_hom1[of "Suc n" "P"]) 
 apply (frule value_mprod_exp[of "\<nu>\<^bsub>K (P j)\<^esub>" "Suc n" "mL K P I" 
           "Kb\<^bsub>K (Suc n) P\<^esub>"], assumption+)

 apply (simp del:ASum_Suc)
 apply (thin_tac "(\<nu>\<^bsub>K (P j)\<^esub>) (mprod_exp K (mL K P I) (Kb\<^bsub>K (Suc n) P\<^esub>) (Suc n)) =
     ASum (\<lambda>ja. (mL K P I ja) *\<^sub>a (\<nu>\<^bsub>K (P j)\<^esub>) ((Kb\<^bsub>K (Suc n) P\<^esub>) ja)) (Suc n)")
apply (subgoal_tac "ASum (\<lambda>ja. (mL K P I ja) *\<^sub>a 
      ((\<nu>\<^bsub>K (P j)\<^esub>) ((Kb\<^bsub>K (Suc n) P\<^esub>) ja))) (Suc n) = 
                ASum (\<lambda>ja. (mL K P I ja) *\<^sub>a (\<delta>\<^bsub>j ja\<^esub>)) (Suc n)")
apply (simp del:ASum_Suc)
apply (subgoal_tac "\<forall>h \<le> (Suc n). (\<lambda>ja. (mL K P I ja) *\<^sub>a (\<delta>\<^bsub>j ja\<^esub>)) h \<in> Z\<^sub>\<infinity>")
auto , , , . We demonstratethiswithabenchmarkcontaining 2267methodcalls
 apply simp
 apply (simp add:java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 apply (rotate_tac -1, drule not_sym) 
apply (simp add:mL_def[of "K" "P" "I" "j"])

apply (frule val_LI_noninf[of "Suc n" "P" "I" "j"], assumption+)
 apply (rule not_sym, simp, simp)
apply (frule val_LI_pos[of "Suc n" "P" "I" "j"], assumption+,
       rotate_tac -2, frule not_sym, simp, simp)

apply (frule apos_neq_minf[of "LI K (\<nu>\<^bsub>K (P jjava.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 20
(:) 
apply (simp add:value_Zl_mI[of "Suc n" "P" "I" "j"])
apply (rule allI, rule impI)
 apply (simp add:Kdelta_in_Zinf, simp)
 apply (rule ballI, simp)
apply(simpadd:Kronecker_delta_def, erule conjE)
 apply (simp add:asprod_n_0)

apply (rule allI, rule impI) 
 apply (simp add:Kdelta_in_Zinf)

apply (frule  Kbase_Kronecker[of "Suc n" "P"])
 apply (rule ASum_eq,
        rule allI, rule impI,
        simp add:Kdelta_in_Zinf,
        rule allI, rule impI,
        simp add:Kdelta_in_Zinf)
ruleallI rule )  simp
done

lemma (in Corps) mgenerator0_2:"\<lbrakk> 0 < n; distinct_pds K n P; ideal (O\<^bsub>K P n\<^esub>) I  (simp add:Zl_mI_mem_K)
  \<noteq>{\zero>\<^bsub>(\^bsub> Pn\<esub)\<^esub>} I\noteq>carrier (O\<bsubK  \^esub>);j\<>n<>  <Longrightarrow>
(<>\<^bsubK P )\^esub)(mprod_exp K(mL  P I)(\^bsub>K  P<^esub) n) =((<nu><bsubK( j)\^>) (l_mI K P  j)"
apply (cut_tac mgenerator0_1[of  "n - Suc 0" "P" "I" "j"])
 apply simp+
done

lemma (in Corps) mgenerator1:"\<lbrakk>distinct_pds K n P; ideal (O\<^bsub>K P n\<^esub>) I; 
 I \<noteq> {\<zero>\<^bsub>(O\<^bsub>K P n\<^esub>)\<^esub>}; I \<noteq> carrier (O\<^bsub>K P n\<^esub>); j \<le> n\<rbrakk> \<Longrightarrow>
((\<nu>\<^bsub>K (P j)\<^esub>) (mprod_exp K (mL K P I) (Kb\<^bsub>K n P\<^esub>) n)) = ((\<nu>\<^bsub>K (P j)\<^esub>) (Zl_mI K P I j))"

       frule value_Zl_mI[of "n" "P" "I" "j"], assumption+,
       frule val_LI_noninf[of "n" "P" "I" "j"], assumption+,
       frule val_LI_pos[of  "n" "P" "I" "j"], assumption+,
       frule apos_neq_minf[of "LI K (\<nu>\<^bsub>K (P j)\<apply (fruleval_LI_noninf[of "n" "P"I n],assumption, simp )java.lang.StringIndexOutOfBoundsException: Index 73 out of bounds for length 73
       simp add:distinct_pds_def, erule conjE)  
 apply (cut_tac representative_of_pd_valuation[of "P j"], simp+,
        simp add:mprod_exp_def,
        subst val_exp[THEN sym, of "\<nu>\<^bsub>K (P 0)\<^esub>" "(Kb\<^bsub>K 0 P\<^esub>) 0"], assumption+,
        cut_tac Kbase_hom[of "0" "P"], simp,
        simp add:distinct_pds_def,
        cut_tac Kbase_nonzero[of "0" "P"], simp+,
        simp add:distinct_pds_def) 
 apply (cut_tac Kbase_nonzero[of "0" "P"], simp add:distinct_pds_def) 
 apply (cut_tac Kbase_Kronecker[of "0" "P"], simp add:distinct_pds_def) 
 apply (simp add:Kronecker_delta_def, simp add:mL_def, simp add:ant_tna)
 apply (simp add:distinct_pds_def)+
apply (cut_tac mgenerator0_2[of "n" "P" "I" "j"], simp+)
 apply (simp add:distinct_pds_def) apply simp+
done
    
lemma (in Corps) mgenerator2Tr1:"\<lbrakk>0 < n; j \<le> n; k \<le> n; distinct_pds K napply( "\><sub>K(lambdak Zl_mI KPIk\cdot\^subr
      (\<nu>\<^bsub>K (P j)\<^esub>) (mprod_exp K (\<lambda>l. \<gamma>\<^bsub>k l\<^esub> ) (Kb\<^bsub>K n P\<^esub>) n) = (\<gamma>\<^bsub>k j\<^esub>) *\<^sub>a (\<delta>\<^bsub>j j\<^esub>)"
apply (frule distinct_pds_valuation1[of "n" "j" "P"], assumption+)
apply (frule K_gamma_hom[of k n]) 
apply (subgoal_tac "\<forall>j \<le> n. (Kb\<^bsub>K n P\<^esub>) j \<in> carrier K - {\<zero>}")
apply (simp add:value_mprod_exp[of "\<nu>\<^bsub>K (P j)\<^esub>" n "K_gamma k" "(Kb\<^bsub>K n P\<^esub>)"])
apply (subgoal_tac "ASum (\<lambda>ja. (\<gamma>\
       = ASum (\<lambda>ja. (((\<gamma>\<^bsub>k ja\<^esub>) *\<^sub>a (\<delta>\<^bsub>j ja\<^esub>)))) n")
 apply simp
 apply (subgoal_tac "\<forall>j \<le> n. (\<lambda>ja. (\<gamma>\<^bsub>k ja\<^esub>) *\<^sub>a (\<delta>\<^bsub>j ja\<^esub>)) j \<in> Z\<^sub>\<infinity>")
 apply (cut_tac eSum_single[of n "\<lambda>ja. ((\<gamma>\<^bsub>k ja\<^esub>) *\<^sub>a (\<delta>\<^bsub>j ja\<^esub>))"  "j"], simp)
 apply (rule allI, rule impI, simp add:Kronecker_delta_def, 
        rule impI, simp add:asprod_n_0 Zero_in_aug_inf, assumption+)
 apply (rule ballI, simp)
onecker_delta_def
  apply (rule apply ( add:aadd_0_r)
  apply (simp add:Kronecker_delta_def, simp add:K_gamma_def)
 apply (simp add:ant_0 Zero_in_aug_inf)
 apply (cut_tac lemma( Corps) mI_gen_in_I"\lbrakk0 <n;distinct_pds K nP;ideal (\^bsub> P n\esub> I 

 apply (rule ASum_eq)
  apply(rule allI,rule )
  apply (simp add:K_gamma_def, simp add:Zero_in_aug_inf) 
  apply (rule impI, rule value_in_aug_inf, assumption+, simp)
  apply (simp add:K_gamma_def Zero_in_aug_inf Kdelta_in_Zinf1)
  apply (rule allI, rule impI)
  apply (simp add:Kbase_Kronecker[of "n" "P"])
  apply (rule Kbase_hom1, assumption+)
done

lemma (in Corps) mgenerator2Tr2:"\<lbrakk>0 < n; j \<le> n; k \<le> n; distinct_pds K n P\<rbrakk> \<Longrightarrow>
     (\<nu>\<^bsub>K (P j)\<^esub>) ((mprod_exp K (\<lambda>l. \<gamma>\<^bsub>k 

apply (frule K_gamma_hom[of k n])
apply (frule Kbase_hom1[of "n" "P"])
apply (frule mprod_mem[of n "K_gamma k" "Kb\<^bsub>K n P\<^esub>"], assumption+)
apply (frule distinct_pds_valuation1[of "n" "j" "P"], assumption+)
apply (simp, erule conjE)
apply (simp add:val_exp[THEN sym])
apply (simp add:mgenerator2Tr1)
 apply (simp add:K_gamma_def Kronecker_delta_def)
 apply (rule impI)
 apply (simp add:asprod_def a_z_z)
done

lemma (in Corps) mgenerator2Tr3_1:"\<lbrakk>0 < n; j \<le> n; k \<le> n; j = k; 
      distinct_pds K n P\<rbrakk> \<Longrightarrow>
          \<nu\^bsub> (Pj)\^esub>) (mprod_exp K (<>l \gamma\^> \^>))(\^bsub>KnP<esub) n)\bsubK\esub\^bsup>\^>  0"
  (simp add:mgenerator2Tr2) apply (simp add:K_gamma_def)
 

  (in Corps) mgenerator2Tr3_2:"[0 < n; j n; k n; j k;
 distinct_pds K n P] ==>
 (ν (P j)) ((mprod_exp K (λl. (γ l)) (Kb n P) n)) = ant m"
  (simp add:mgenerator2Tr2) apply (simp add:K_gamma_def)
 

  (in Corps) mgeneratorTr4:"[0 < n; distinct_pds K n P; ideal (O P n) I;
 I {0 P n}; I carrier (O P n)] ==>
 mprod_exp K (mL K P I) (Kb n P) n carrier (O P n)"
  (subst ring_n_pd_def)
  (simp add:Sr_def)
 apply (frule mL_hom[of "n" "P" "I"], assumption+)
 apply (frule mprod_mem[of n "mL K P I" "Kb n P"])
 apply (rule Kbase_hom1, assumption+)

 apply (simp add:mprod_mem)

  (rule allI, rule impI)
 apply (simp add:mgenerator1)
 apply (simp add:value_Zl_mI)
 apply (simp add:val_LI_pos)
 

 
 m_zmax_pdsI_hom :: "[_, nat ==> ('b ==> ant) set, 'b set] ==> nat ==> int" where
 "m_zmax_pdsI_hom K P I = (λj. tna (AMin ((ν (P j)) ` I)))"

 
 m_zmax_pdsI :: "[_, nat, nat ==> ('b ==> ant) set, 'b set] ==> int" where
 "m_zmax_pdsI K n P I = (m_zmax n (m_zmax_pdsI_hom K P I)) + 1"
 
  (in Corps) value_Zl_mI_pos:"[0 < n; distinct_pds K n P; ideal (O P n) I;
 I {0O P n)}; I carrier (O P n); j n; l n] ==>
 0 ((ν (P j)) (Zl_mI K P I l))"
  (frule value_Zl_mI[of "n" "P" "I" "l"], assumption+)
  (erule conjE)
 apply (frule ring_n_pd[of "n" "P"])
 apply (frule Ring.ideal_subset[of "O P n" "I" "Zl_mI K P I l"], assumption+)
 apply (thin_tac "ideal (O P n) I")
 apply (thin_tac "I {0 P n}")
 apply (thin_tac "I carrier (O P n)")
 apply (thin_tac "Ring (O P n)")
 apply (simp add:ring_n_pd_def Sr_def)
 

  (in Corps) value_mI_genTr1:"[0 < n; distinct_pds K n P; ideal (O P n) I;
 I {0 P n}; I carrier (O P n); j n] ==>
 (mprod_exp K (K_gamma j) (Kb n P) n)m_zmax_pdsI K n P I) carrier K"
  (frule K_gamma_hom[of "j" "n"])
  (frule mprod_mem[of n "K_gamma j" "Kb n P"])
 apply (rule Kbase_hom1, assumption+)
  (rule npowf_mem)
 apply simp+
 

  (in Corps) value_mI_genTr1_0:"[0 < n; distinct_pds K n P;
 ideal (O P n) I; I {0 P n}; I carrier (O P n); j n]
 ==> (mprod_exp K (K_gamma j) (Kb n P) n) carrier K"
  (frule K_gamma_hom[of "j" "n"])
  (frule mprod_mem[of n "K_gamma j" "Kb n P"])
 apply (rule Kbase_hom1, assumption+)
 apply simp
 


  (in Corps) value_mI_genTr2:"[0 < n; distinct_pds K n P; ideal (O P n) I;
 I {0 P n}; I carrier (O P n); j n] ==>
 (mprod_exp K (K_gamma j) (Kb n P) n)m_zmax_pdsI K n P I) 0"
 apply (frule K_gamma_hom[of "j" "n"])
 apply (frule mprod_mem[of n "K_gamma j" "Kb n P"])
 apply (rule Kbase_hom1, assumption+) apply simp apply (erule conjE)
 apply (simp add: field_potent_nonzero1)
 

  (in Corps) value_mI_genTr3:"[0 < n; distinct_pds K n P; ideal (O P n) I;
 I {0 P n}; I carrier (O P n); j n] ==>
 (Zl_mI K P I j) r ((mprod_exp K (K_gamma j) (Kb n P) n)m_zmax_pdsI K n P I))
  carrier K"
  (cut_tac field_is_ring)
  (rule Ring.ring_tOp_closed, assumption+)
  (simp add:Zl_mI_mem_K)
  (simp add:value_mI_genTr1)
 

  (in Corps) value_mI_gen:"[0 < n; distinct_pds K n P; ideal (O P n) I;
 I {0O P n)}; I carrier (O P n); j n] ==>
 ν (P j)) (nsum K (λk. ((Zl_mI K P I k) r ((mprod_exp K (λl. (γ l)) (Kb n P) n)m_zmax_pdsI K n P I)))) n) = LI K (ν (P j)) I"
  (cut_tac field_is_ring, frule Ring.ring_is_ag[of "K"])
  (case_tac "j = n", simp)
 apply (cut_tac nsum_suc[of K "λk. Zl_mI K P I k r
 mprod_exp K (K_gamma k) (Kb n P) n K n P I" "n - Suc 0"],
 simp,
 thin_tac "Σe K (λk. Zl_mI K P I k r
 mprod_exp K (K_gamma k) (Kb n P) n K n P I) n =
 Σe K (λk. Zl_mI K P I k r
 mprod_exp K (K_gamma k) (Kb n P)
 n K n P I) (n - Suc 0) ±
 Zl_mI K P I n r
 mprod_exp K (K_gamma n) (Kb n P) n K n P I")
 apply (cut_tac distinct_pds_valuation[of "n" "n - Suc 0" "P"])
  2 apply simp
  2 apply simp
 apply (subst value_less_eq1[THEN sym, of "ν (P n)"
 "(Zl_mI K P I n)r (mprod_exp K (K_gamma n) (Kb n P) n K n P I)"
 "nsum K (λk.(Zl_mI K P I k)r (mprod_exp K (K_gamma k) (Kb n P) n K n P I)) (n - Suc 0)"], assumption+)

 apply (simp add:value_mI_genTr3)
 apply (frule Ring.ring_is_ag[of K])
 apply (rule aGroup.nsum_mem[of _ "n - Suc 0"], assumption+)
 apply (rule allI, rule impI)
 apply (simp add:value_mI_genTr3)

 apply (subst val_t2p[of "ν (P n)"], assumption+)
 apply (simp add:Zl_mI_mem_K)
 apply (simp add:value_mI_genTr1)

 apply (simp add:mgenerator2Tr3_1[of "n" "n" "n" "P"])
 apply (simp add:aadd_0_r)
  (frule value_Zl_mI[of "n" "P" "I" "n"], assumption+, simp)
 apply (erule conjE)
 apply (frule_tac f = "λk. (Zl_mI K P I k) r
 (mprod_exp K (K_gamma k) (Kb n P) n K n P I)" in
 value_ge_add[of "ν (P n)" "n - Suc 0" _
 "ant (m_zmax_pdsI K n P I)"])
 apply (rule allI, rule impI)
 apply (rule Ring.ring_tOp_closed, assumption+)
 apply (simp add:Zl_mI_mem_K)
 apply (simp add:value_mI_genTr1)

 apply (rule allI, rule impI) apply (simp add:cmp_def)
 apply (subst val_t2p [where v="ν P n"], assumption+)
 apply (simp add:Zl_mI_mem_K)
 apply (simp add:value_mI_genTr1)

 apply (cut_tac e = "K_gamma ja" in mprod_mem[of n _ "Kb n P"])
 apply (simp add:Zset_def) apply (rule Kbase_hom1, assumption+)
 apply (subst val_exp[of "ν (P n)", THEN sym], assumption+)
 apply simp+

 apply (subst mgenerator2Tr1[of "n" "n" _ "P"], assumption+, simp,  
 assumption+)
 apply (simp add:K_gamma_def Kronecker_delta_def)
 apply (frule_tac l = ja in value_Zl_mI_pos[of "n" "P" "I" "n"],
 assumption+, simp, simp)
  dNe_per)
 apply (frule_tac y = "(ν (P n)) (Zl_mI K P I ja
 aadd_le_mono[of "0" _ "ant (m_zmax_pdsI K n P I)"]) apply (simp add:aadd_0_l)
 apply (subgoal_tac "LI K (ν (P n)
 apply simp
 apply (rule aless_le_trans[of "LI K (ν I"
 "ant (m_zmax_pdsI K n P I)"])

 _maa_d_f
java.lang.NullPointerException
 "m_zmax n (m_zmax_pdsI_hom K P I) + 1"])
  (frule val_LI_noninf[of "n" "P" "I" "n"], assumption+, simp, simp)
 frule val_LI_pos[of "n" "P" "I" "n"], assumption+, simp,
 frule apos_neq_minf[of "LI K (ν (P n)) I"], simp add:ant_tna)
 apply (subst m_zmax_pdsI_hom_def)
 applyut Ie
 apply (cut_tac m_zmax_gt_each[of n "λu.(tna (AMin ((ν(\^) ` I)))"])
 apply simp

 apply (rule allI, rule impI)
 apply (simp add:Zset_def, simp)

 apply (subst val_t2p[of "νK (P n)

 apply (rule Zl_mI_mem_K, assumption+, simp)
 apply (simp add:value_mI_genTr1)
 apply (simp add:mgenerator2Tr3_1[of "n" "n" "n" "P" "m_zmax_pdsI K n P I"])
 apply (simp add:aadd_0_r)
 apply (simp add:value_Zl_mI[of "n" "P" "I" "n"])

(*** case j = n done ***)

 apply[k. (Zl_mIcdot>java.lang.NullPointerException
((mprod_exp K (K_gamma k) (Kb n P) n)m_zmax_pdsI K n P I))" "j"])
 
 apply simp
 apply (rule allI, rule impI)
 apply (simp add:value_mI_genTr3) apply simp+

 apply (thin_tac "Σe K (λk. Zl_mI K P I k java.lang.StringIndexOutOfBoundsException: Index 42 out of bounds for length 42
     mprod_exp K (K_gamma k) (Kb n P) nring_n_pd_mem_K "n"""
     Σk. Zl_mI java.lang.NullPointerException
            java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 apply (cut_tac nsum_suc[of ,e conjE
     mprod_exp K (K_gamma k)(b<>K
 apply (simp del:nsum_suc) apply (
        thin_tac java.lang.NullPointerException
         mprod_exp K (K_gamma k) (Kb n P) n P nK P n
> (Kb j"
     Σe Kga_in_principal
        mprod_exp K (K_gamma k KbK n P
K
m_zmax_pdsI) (τ
         (n - Suc 0±  (cmp (λk. Zl_mI K P I k 
         mprod_exp K (K_gamma k) (Kb n P) njava.lang.StringIndexOutOfBoundsException: Index 24 out of bounds for length 24
 apply (cut_tac   "
 prefer 2 apply simp prefer 2 apply simp
 

 apply (cut_tac n_in_Nsetn[of "n"])
 apply (simp add:transpos_ij_2)
 apply (subst value_less_eq1[THEN sym, of "ν (P j)"
 "(Zl_mI K P I j) r (mprod_exp K (K_gamma j) (Kb n P)
  n K n P I)" "Σe K (λx.(Zl_mI K P I ((τ n) x)) r
 (mprod_exp K (K_gamma ((τ n) x)) (Kb n P) n K n P I)) (n - Suc 0)"], assumption+)
 apply (simp add:value_mI_genTr3)
 apply (rule aGroup.nsum_mem[of "K" "n - Suc 0"], assumption+)
 apply (rule allI, rule impI)
 apply (frule_tac l = ja in transpos_mem[of "j" "n" "n"], simp+)
 apply (simp add:value_mI_genTr3)

 apply (subst val_t2p[of "ν
 apply (simp add:Zl_mI_mem_K)
 apply (simp add:value_mI_genTr1)

 apply (simp add:mgenerator2Tr3_1[of "n" "j" "j" "P"])

 apply (frule value_Zl_mI[of "n" "P" "I" "j"], assumption+)
 apply (erule conjE)
 apply (simp add:aadd_0_r)
 apply (cut_tac f = "λx. (Zl_mI K P I ((τ n) x)) r
       j nK)" in 
        value_ge_add[of java.lang.NullPointerException
         u0 _ " (m_zmax_pdsInP )" smto+)
 apply ( ultimaell o ma (f ++ g) x = (map_inv f +++ map_inv g) x"
 apply (frule_tac l = ja in transpos_mem[of "j" "n" "n"], simp+)
 applydd
 applyrule, impIapply ( add)

 apply(l = ja[ofj"n"+)

 applyapply simp
   metis)
 apply simp)
 apply (cut_tac k = ja in transpos_noteqTr[of "n" _ "j"], simp+) 
 apply (subst:list_induct2
 apply (cut_tac l = "(\\ggtrrow>v he \<>ome exE)
        +)
 apply (frule_tac y = "
 aadd_le_mono[of "0"  "nt (m_zmax_pdsI K n P I"
 apply (simp (casesh "
apply (subgoal_tac "LI K (java.lang.NullPointerException: Cannot invoke "String.equals(Object)" because "brackoff" is null
 apply (rulemerge  =
                           "ant (m_zmax_pdsI K n P I)"], assumption+)

 apply (simp_ ]map_of_list  .empty
 apply
                   list_of_map_emptyp list_of_map.empty ["
apply
       frule val_LI_pos[of "n" "P" "I" "j"], assumption+,mfrom Fa have "map_of_list < Map.empty"
       frule apos_neq_minf[of "LI K (νK (P j)
 apply (substjava.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
 apply (
 apply (subgoal_tac "\<forall 
 apply (frule m_zmax_gt_each[of n " λ
 apply simp
 apply (rule allI, rule impI)
 
  (subst val -
 apply (rule Zl_mI_mem_K, assumption+)
 apply (simp add:value_mI_genTr1)
 
 apply (simp add:mgenerator2Tr3_1[of "n" "" "j"""
 "m_zmax_pdsI K n P I"])
 apply (simp add:aadd_0_r)
 apply (simp add:value_Zl_mI[of "n" "P" "I" "j"])
 

  (in Corps) mI_gen_in_I:"[0 < n; distinct_pds K n P; ideal (O P n) I;
 I {0O P n)}; I carrier (O P n)] ==>
 (nsum K (λk. ((Zl_mI K P I k) r
 ((mprod_exp K (λl. (γ l)) (Kb n P) n)m_zmax_pdsI K n P I)))) n) I"
  (cut_tac field_is_ring, frule ring_n_pd[of n P])
  (rule ideal_eSum_closed[of n P I n], assumption+)
  (rule allI, rule impI)
 apply (frule_tac j = j in value_Zl_mI[of "n" "P" "I"], assumption+)
 apply (erule conjE)
 apply (thin_tac "(ν (P j)) (Zl_mI K P I j) = LI K (ν (P j)) I")
 apply (subgoal_tac "(mprod_exp K (K_gamma j) (Kb n P) n)m_zmax_pdsI K n P I)
  carrier (O P n)")
 apply (frule_tac x = "Zl_mI K P I j" and
 r = "(mprod_exp K (K_gamma j) (Kb n P) n)m_zmax_pdsI K n P I)"
 in Ring.ideal_ring_multiple1[of "(O P n)" "I"], assumption+)
 apply (frule_tac h = "Zl_mI K P I j" in
 Ring.ideal_subset[of "O P n" "I"], assumption+)
 apply (simp add:ring_n_pd_tOp_K_tOp[of "n" "P"])
 
  (subst ring_n_pd_def) apply (simp add:Sr_def)
 apply (simp add:value_mI_genTr1)

 apply (rule allI, rule impI)
 apply (case_tac "j = ja")
 apply (simp add:mgenerator2Tr3_1)

 apply (simp add:mgenerator2Tr3_2)
 apply (simp add:m_zmax_pdsI_def) apply (simp add:m_zmax_pdsI_hom_def)
 apply (simp only:ant_0[THEN sym])
 apply (simp add:aless_zless)
 apply (subgoal_tac "l n. (λj. tna (AMin ((ν (P j)) ` I))) l Zset")
 apply (frule m_zmax_gt_each[of n "λj. tna (AMin ((ν (P j)) ` I))"])
 apply (rotate_tac -1, drule_tac a = ja in forall_spec, simp+)
 apply (frule_tac j = ja in val_LI_pos[of "n" "P" "I"], assumption+)
 apply (cut_tac j = "tna (LI K (ν (P ja)) I)" in ale_zle[of "0"])
  (frule_tac j = ja in val_LI_noninf[of "n" "P" "I"], assumption+,
 frule_tac j = ja in val_LI_pos[of "n" "P" "I"], assumption+,
 frule_tac a = "LI K (ν (P ja)) I" in apos_neq_minf, simp add:ant_tna,
 simp add:ant_0) apply (unfold LI_def)
 apply (frule_tac y = "tna (AMin (ν (P ja) ` I))" and z = "m_zmax n (λj. tna (AMin (P j) ` I)))" in order_trans[of "0"], assumption+)
 apply (rule_tac y = "m_zmax n (λj. tna (AMin (ν (P j) ` I)))" and
 z = "m_zmax n (λj. tna (AMin (ν (P j) ` I))) + 1" in order_trans[of "0"],
 assumption+) apply simp

 apply (rule allI, rule impI) apply (simp add:Zset_def)
 


 We write the element
 eΣ K (λk. (Zl_mI K P I k) K ((mprod_exp K (K_gamma k) (Kb n P)
 n)K(m_zmax_pdsI K n P I))) n

 as mIg G a i n P I


 
 mIg :: "[_, nat, nat ==> ('b ==> ant) set,
 'b set] ==> 'b" ((4mIg_ _ _ _) [82,82,82,83]82) where
 "mIg n P I = Σe K (λk. (Zl_mI K P I k) r
 ((mprod_exp K (K_gamma k) (Kb n P) n)m_zmax_pdsI K n P I))) n"

 We can rewrite above two lemmas by using mIg G a i n P I

  (in Corps) value_mI_gen1:"[0 < n; distinct_pds K n P; ideal (O P n) I;
 I {0O P n)}; I carrier (O P n)] ==>
 j n.(ν (P j)) (mIg n P I) = LI K (ν (P j)) I"
  (rule allI, rule impI)
 apply (simp add:mIg_def value_mI_gen)
 

  (in Corps) mI_gen_in_I1:"[0 < n; distinct_pds K n P; ideal (O P n) I;
 I {0O P n)}; I carrier (O P n)] ==> (mIg n P I) I"
  (simp add:mIg_def mI_gen_in_I)
 

  (in Corps) mI_principalTr:"[0 < n; distinct_pds K n P; ideal (O P n) I;
 I {0O P n)}; I carrier (O P n); x I] ==>
 j n. ((ν (P j)) (mIg n P I)) ((ν (P j)) x)"
  (simp add:value_mI_gen1)
 apply (rule allI, rule impI)
 apply (rule Zleast_LI, assumption+)
 

  (in Corps) mI_principal:"[0 < n; distinct_pds K n P; ideal (O P n) I;
 I {0O P n)}; I carrier (O P n)] ==>
 I = Rxa (O P n) (mIg n P I)"
  (frule ring_n_pd[of "n" "P"])
  (rule equalityI)
 apply (rule subsetI)
 apply (frule_tac x = x in mI_principalTr[of "n" "P" "I"],
 assumption+)
 apply (frule_tac y = x in n_eq_val_eq_idealTr[of "n" "P" "mIg n P I"])
 apply (frule mI_gen_in_I1[of "n" "P" "I"], assumption+)
 apply (simp add:Ring.ideal_subset)+
 apply (thin_tac "jn. (ν (P j)) (mIgK n P I) (P j)) x")
 apply (frule_tac h = x in Ring.ideal_subset[of "O P n" "I"], assumption+)
 apply (frule_tac a = x in Ring.a_in_principal[of "O P n"], assumption+)
 apply (simp add:subsetD)
 apply (rule Ring.ideal_cont_Rxa[of "O P n" "I" "mIgK n P I"], assumption+)
 apply (rule mI_gen_in_I1[of "n" "P" "I"], assumption+)
 

  prime_n_pd

  (in Corps) prime_n_pd_principal:"[distinct_pds K n P; j n] ==>
 (P P n j) = Rxa (O P n) (((Kb n P) j))"
  (frule ring_n_pd[of "n" "P"])
  (frule prime_n_pd_prime[of "n" "P" "j"], assumption+)
  (simp add:prime_ideal_def, frule conjunct1)
 apply (fold prime_ideal_def)
 apply (thin_tac "prime_ideal (O P n) (P P n j)")
  (rule equalityI)
 apply (rule subsetI)
 apply (frule_tac y = x in n_eq_val_eq_idealTr[of n P "(Kb n P) j"])
 apply (thin_tac "Ring (O P n)", thin_tac "ideal (O P n) (P P n j)")
 apply (simp add:ring_n_pd_def Sr_def)
 apply (frule Kbase_hom[of "n" "P"], simp)
 apply (rule allI, rule impI)
 apply (frule Kbase_Kronecker[of "n" "P"])
 apply (simp add:Kronecker_delta_def, rule impI)
 apply (simp only:ant_0[THEN sym], simp only:ant_1[THEN sym])
 apply (simp del:ant_1)
 apply (simp add:prime_n_pd_def)


 apply (rule allI, rule impI)
 apply (frule Kbase_Kronecker[of "n" "P"])
 apply simp
 apply (thin_tac "jn. ln. (ν (P j)) ((Kb n P) l) = δ l")
 apply (case_tac "ja = j", simp add:Kronecker_delta_def)
 apply (thin_tac "ideal (O P n) (P P n j)")
 apply (simp add:prime_n_pd_def, erule conjE)
 apply (frule_tac x = x in mem_ring_n_pd_mem_K[of "n" "P"],
 assumption+)
 apply (case_tac "x = 0")
 apply (frule distinct_pds_valuation2[of "j" "n" "P"], assumption+)
 apply (rule gt_a0_ge_1, assumption)+

 apply (simp add:Kronecker_delta_def)
 apply (frule_tac j = ja in distinct_pds_valuation2[of _ "n" "P"],
 assumption+)
 apply (simp add:prime_n_pd_def, erule conjE)
 apply (thin_tac "ideal (O P n) {x. x carrier (O P n) 0 < (ν (P j)) x}")
 apply (simp add:ring_n_pd_def Sr_def)
 apply (cut_tac h = x in Ring.ideal_subset[of "O P n" "P P n j"])
 apply (frule_tac a = x in Ring.a_in_principal[of "O P n"])
 apply (simp add:Ring.ideal_subset, assumption+)


  (rule_tac c = x and A = "(O P n) p x" and B = "(O P n) p (Kb n P) j"
 in subsetD, assumption+)
  (simp add:Ring.a_in_principal)
 apply (rule Ring.ideal_cont_Rxa[of "O P n" "P P n j" "(Kb n P) j"], assumption+)
 apply (subst prime_n_pd_def, simp)
 apply (frule Kbase_Kronecker[of "n" "P"])
 apply (simp add:Kronecker_delta_def)
 apply (simp only:ant_1[THEN sym], simp only:ant_0[THEN sym])
 apply (simp del:ant_1 add:aless_zless)
  (subst ring_n_pd_def, simp add:Sr_def)
 apply (frule Kbase_hom[of "n" "P"])
 apply simp
 apply (rule allI)
 apply (simp add:ant_0)
 apply (rule impI)
 apply (simp only:ant_1[THEN sym], simp only:ant_0[THEN sym])
 apply (simp del:ant_1)
 

  (in Corps) ring_n_prod_primesTr:"[0 < n; distinct_pds K n P;
 ideal (O P n) I; I {0 P n}; I carrier (O P n)] ==>
 j n.(ν (P j)) (mprod_exp K (mL K P I) (Kb n P) n) =
 (ν (P j)) (mIg n P I)"
  (rule allI, rule impI)
 apply (simp add:mgenerator1)
 apply (simp add:value_mI_gen1)

 apply (simp add:value_Zl_mI)
 

  (in Corps) ring_n_prod_primesTr1:"[0 < n; distinct_pds K n P;
 ideal (O P n) I; I {0 P n}; I carrier (O P n)] ==>
 I = (O P n) p (mprod_exp K (mL K P I) (Kb n P) n)"
  (frule ring_n_pd[of "n" "P"])
  (subst n_eq_val_eq_ideal[of "n" "P" "mprod_exp K (mL K P I)
 (Kb n P) n" "mIg n P I"], assumption+)
  (simp add:mgeneratorTr4)
  (frule mI_gen_in_I1[of "n" "P" "I"], assumption+)
  (simp add:Ring.ideal_subset)
  (simp add:ring_n_prod_primesTr)
  (simp add:mI_principal)
 

  (in Corps) ring_n_prod_primes:"[0 < n; distinct_pds K n P;
 ideal (O P n) I; I {0 P n}; I carrier (O P n);
 k n. J k = (P P n k)(O P n) (nat ((mL K P I) k))] ==>
 I = iΠO P n),n J"
  (simp add:prime_n_pd_principal[of "n" "P"])
  (subst ring_n_prod_primesTr1[of "n" "P" "I"], assumption+)
  (frule ring_n_pd[of "n" "P"])
  (frule Ring.prod_n_principal_ideal[of "O P n" "nat o (mL K P I)" "n"
 "Kb n P" "J"])
 apply (frule Kbase_hom[of "n" "P"])
 apply (simp add:nat_def)
 apply (subst ring_n_pd_def) apply (simp add:Sr_def)
 apply (rule Pi_I, simp)
 apply (simp add:Kbase_Kronecker[of "n" "P"])
 apply (simp add:Kronecker_delta_def)
 apply (simp only:ant_1[THEN sym], simp only:ant_0[THEN sym])
 apply (simp del:ant_1)
 apply (simp add:Kbase_hom) apply simp

 apply simp
 apply (frule ring_n_mprod_mprodR[of "n" "P" n "mL K P I" "Kb n P"])
 apply (rule allI, rule impI, simp add:Zset_def)
 apply (rule allI, rule impI)
 apply (simp add: Zleast_in_mI_pos)

 apply (rule allI, rule impI)
 apply (subst ring_n_pd_def) apply (simp add:Sr_def)
 apply (frule Kbase_hom1[of "n" "P"], simp)
 apply (simp add:zero_in_ring_n_pd_zero_K)
 apply (frule Kbase_Kronecker[of "n" "P"])
 apply (simp add:Kronecker_delta_def)
 apply (simp only:ant_1[THEN sym], simp only:ant_0[THEN sym])
 apply (simp del:ant_1)
  simp
 

 

Messung V0.5 in Prozent
C=81 H=73 G=76

¤ Dauer der Verarbeitung: 0.191 Sekunden  (vorverarbeitet am  2026-06-13) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen



NIST Cobol Testsuite



Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

      Eigene Quellcodes
      Fremde Quellcodes
     Quellcodebibliothek
      Suchen

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge