lemma zmult_pos_bignumTr0:"∃L. ∀m. L < m ⟶ z < x + int m" by (subgoal_tac "∀m. (nat((abs z) + (abs x))) < m ⟶ z < x + int m",
blast, rule allI, rule impI, arith)
lemma zmult_pos_bignumTr:"0 < (a::int) ==> ∃l. ∀m. l < m ⟶ z < x + (int m) * a" apply (cut_tac zmult_pos_bignumTr0[of "z""x"]) apply (erule exE) apply (subgoal_tac "∀m. L < m ⟶ z < x + int m * a", blast) apply (rule allI, rule impI) apply (drule_tac a = m in forall_spec, assumption) apply (subgoal_tac "0 ≤ int m") apply (frule_tac a = "int m"and b = a in pos_zmult_pos, assumption) apply (cut_tac order_refl[of "x"]) apply (frule_tac z' = "int m"and z = "int m * a"in
zadd_zle_mono[of "x""x"], assumption+) apply (rule_tac y = "x + int m"and z = "x + (int m)* a"in
less_le_trans[of "z"], assumption+) apply simp done
lemma ale_shift:"[(x::ant)≤ y; y = z]==> x ≤ z" by simp
lemma aneg_na_0[simp]:"a < 0 ==> na a = 0" by (simp add:na_def)
definition
adiv :: "[ant, ant] ==> ant" (infixl‹adiv›200) where "x adiv y = ant ((tna x) div (tna y))"
definition
amod :: "[ant, ant] ==> ant" (infixl‹amod›200) where "x amod y = ant ((tna x) mod (tna y))"
lemma apos_amod_conj:"0 < ant b ==> 0 ≤ (ant a) amod (ant b) ∧ (ant a) amod (ant b) < (ant b)" by (simp add:amod_def tna_ant, simp only:ant_0[THEN sym],
simp add:aless_zless)
lemma amod_adiv_equality: "(ant a) = (a div b) *a (ant b) + ant (a mod b)" apply (simp add:adiv_def tna_ant a_z_z a_zpz asprod_mult) done
lemma asp_z_Z:"z *a ant x ∈ Z\<infinity>" by (simp add:asprod_mult z_in_aug_inf)
lemma apos_in_aug_inf:"0 ≤ a ==> a ∈ Z\<infinity>" by (simp add:aug_inf_def, rule contrapos_pp, simp+,
cut_tac minf_le_any[of "0"], frule ale_antisym[of "0""-∞"],
assumption+, simp)
lemma amin_le2:"(z::ant) ≤ z' ==> (amin w z) ≤ z'" by (simp add:amin_def, rule impI,
frule ale_trans[of "w""z""z'"], assumption+)
lemma Amin_geTr:"(∀j ≤ n. f j ∈ Z\<infinity>) ∧ (∀j ≤ n. z ≤ (f j)) ⟶ z ≤ (Amin n f)" apply (induct_tac n) apply (rule impI, erule conjE, simp) apply (rule impI, (erule conjE)+,
cut_tac Nsetn_sub_mem1[of n], simp,
drule_tac x = "Suc n"in spec, simp,
rule_tac z = z and x = "Amin n f"and y = "f(Suc n)"in amin_ge1,
simp+) done
lemma Amin_ge:"[∀j ≤ n. f j ∈ Z\<infinity>; ∀j ≤ n. z ≤ (f j)]==> z ≤ (Amin n f)" by (simp add:Amin_geTr)
definition
Abs :: "ant ==> ant"where "Abs z = (if z < 0 then -z else z)"
lemma AinequalityTr0:"x ≠ -∞==>∃L. (∀N. L < N ⟶ (an m) < (x + an N))" apply (case_tac "x = ∞", simp add:an_def) apply (cut_tac mem_ant[of "x"], simp, erule exE, simp add:an_def a_zpz,
simp add:aless_zless,
cut_tac x = z in zmult_pos_bignumTr0[of "int m"], simp) done
lemma AinequalityTr:"[0 < b ∧ b ≠∞; x ≠ -∞]==>∃L. (∀N. L < N ⟶ (an m) < (x + (int N) *a b))" apply (frule_tac AinequalityTr0[of "x""m"],
erule exE,
subgoal_tac "∀N. L < N ⟶ an m < x + (int N) *a b",
blast, rule allI, rule impI) apply (drule_tac a = N in forall_spec, assumption,
erule conjE,
cut_tac N = N in asprod_ge[of "b"], assumption,
thin_tac "x ≠ - ∞", thin_tac "b ≠∞", thin_tac "an m < x + an N",
simp) apply (frule_tac x = "an N"and y = "int N *a b"and z = x in aadd_le_mono,
simp only:aadd_commute[of _ "x"]) done
lemma two_inequalities:"[∀(n::nat). x < n ⟶ P n; ∀(n::nat). y < n ⟶ Q n] ==>∀n. (max x y) < n ⟶ (P n) ∧ (Q n)" by auto
lemma multi_inequalityTr0:"(∀j ≤ (n::nat). (x j) ≠ -∞ ) ⟶ (∃L. (∀N. L < N ⟶ (∀l ≤ n. (an m) < (x l) + (an N))))" apply (induct_tac n) apply (rule impI, simp) apply (rule AinequalityTr0[of "x 0""m"], assumption) (** n **) apply (rule impI) apply (subgoal_tac "∀l. l ≤ n ⟶ l ≤ (Suc n)", simp) apply (erule exE) apply (frule_tac a = "Suc n"in forall_spec, simp)
apply (frule_tac x = "x (Suc n)"in AinequalityTr0[of _ "m"]) apply (erule exE) apply (subgoal_tac "∀N. (max L La) < N ⟶ (∀l ≤ (Suc n). an m < x l + an N)", blast) apply (rule allI, rule impI, rule allI, rule impI) apply (rotate_tac 1) apply (case_tac "l = Suc n", simp,
drule_tac m = l and n = "Suc n"in noteq_le_less, assumption+,
drule_tac x = l and n = "Suc n"in less_le_diff, simp,
simp) done
lemma multi_inequalityTr1:"[∀j ≤ (n::nat). (x j) ≠ - ∞]==> ∃L. (∀N. L < N ⟶ (∀l ≤ n. (an m) < (x l) + (an N)))" by (simp add:multi_inequalityTr0)
lemma gcoeff_multi_inequality:"[∀N. 0 < N ⟶ (∀j ≤ (n::nat). (x j) ≠ -∞∧ 0 < (b N j) ∧ (b N j) ≠∞)]==> \<exists>L. (∀N. L < N ⟶ (∀l ≤ n.(an m) < (x l) + (int N) *a (b N l)))" apply (subgoal_tac "∀j ≤ n. x j ≠ - ∞") apply (frule multi_inequalityTr1[of "n""x""m"]) apply (erule exE) apply (subgoal_tac "∀N. L < N ⟶ (∀l ≤ n. an m < x l + (int N) *a (b N l))") apply blast
apply (rule allI, rule impI, rule allI, rule impI,
drule_tac a = N in forall_spec, simp,
drule_tac a = l in forall_spec, assumption,
drule_tac a = N in forall_spec, assumption,
drule_tac a = l in forall_spec, assumption,
drule_tac a = l in forall_spec, assumption) apply (cut_tac b = "b N l"and N = N in asprod_ge, simp, simp,
(erule conjE)+, simp, thin_tac "x l ≠ - ∞", thin_tac "b N l ≠∞") apply (frule_tac x = "an N"and y = "int N *a b N l"and z = "x l"in
aadd_le_mono, simp add:aadd_commute,
rule allI, rule impI,
cut_tac lessI[of "(0::nat)"],
drule_tac a = "Suc 0"in forall_spec, assumption) apply simp done
primrec m_max :: "[nat, nat ==> nat] ==> nat" where
m_max_0: "m_max 0 f = f 0"
| m_max_Suc: "m_max (Suc n) f = max (m_max n f) (f (Suc n))"
(** maximum value of f **)
lemma m_maxTr:"∀l ≤ n. (f l) ≤ m_max n f" apply (induct_tac n) apply simp
apply (rule allI, rule impI) apply simp apply (case_tac "l = Suc n", simp) apply (cut_tac m = l and n = "Suc n"in noteq_le_less, assumption+,
thin_tac "l ≤ Suc n", thin_tac "l ≠ Suc n",
frule_tac x = l and n = "Suc n"in less_le_diff,
thin_tac "l < Suc n", simp) apply (drule_tac a = l in forall_spec, assumption) apply simp done
lemma m_max_gt:"l ≤ n ==> (f l) ≤ m_max n f" apply (simp add:m_maxTr) done
lemma ASum_zero:" (∀j ≤ n. f j ∈ Z\<infinity>) ∧ (∀l ≤ n. f l = 0) ⟶ ASum f n = 0" apply (induct_tac n) apply (rule impI, erule conjE, simp) apply (rule impI) apply (subgoal_tac "(∀j≤n. f j ∈ Z\<infinity>) ∧ (∀l≤n. f l = 0)", simp) apply (simp add:aadd_0_l, erule conjE,
thin_tac "(∀j≤n. f j ∈ Z\<infinity>) ∧ (∀l≤n. f l = 0) ⟶ ASum f n = 0") apply (rule conjI) apply (rule allI, rule impI,
drule_tac a = j in forall_spec, simp, assumption+) apply (thin_tac "∀j≤Suc n. f j ∈ Z\<infinity>") apply (rule allI, rule impI,
drule_tac a = l in forall_spec, simp+) done
lemma eSum_singleTr:"(∀j ≤ n. f j ∈ Z\<infinity>) ∧ (j ≤ n ∧ (∀l ∈{h. h ≤ n} - {j}. f l = 0)) ⟶ ASum f n = f j" apply (induct_tac n) apply (simp, rule impI, (erule conjE)+) apply (case_tac "j ≤ n") apply simp apply (simp add:aadd_0_r) apply simp apply (simp add:nat_not_le_less[of j]) apply (frule_tac m = n and n = j in Suc_leI) apply (frule_tac m = j and n = "Suc n"in le_antisym, assumption+, simp) apply (cut_tac n = n in ASum_zero [of _ "f"]) apply (subgoal_tac "(∀j≤n. f j ∈ Z\<infinity>) ∧ (∀l≤n. f l = 0)") apply (thin_tac "∀j≤Suc n. f j ∈ Z\<infinity>",
thin_tac "∀l∈{h. h ≤ Suc n} - {Suc n}. f l = 0", simp only:mp) apply (simp add:aadd_0_l)
apply (thin_tac "(∀j≤n. f j ∈ Z\<infinity>) ∧ (∀l≤n. f l = 0) ⟶ ASum f n = 0") apply (rule conjI,
thin_tac "∀l∈{h. h ≤ Suc n} - {Suc n}. f l = 0", simp) apply (thin_tac "∀j≤Suc n. f j ∈ Z\<infinity>", simp) done
lemma eSum_single:"[∀j ≤ n. f j ∈ Z\<infinity> ; j ≤ n; ∀l ∈ {h. h ≤ n} - {j}. f l = 0] ==> ASum f n = f j" apply (simp add:eSum_singleTr) done
lemma ASum_eqTr:"(∀j ≤ n. f j ∈ Z\<infinity>) ∧ (∀j ≤ n. g j ∈ Z\<infinity>) ∧ (∀j ≤ n. f j = g j) ⟶ ASum f n = ASum g n" apply (induct_tac n) apply (rule impI, simp)
apply (rule impI, (erule conjE)+) apply simp done
lemma ASum_eq:"[∀j ≤ n. f j ∈ Z\<infinity>; ∀j ≤ n. g j ∈ Z\<infinity>; ∀j ≤ n. f j = g j]==> ASum f n = ASum g n" by (cut_tac ASum_eqTr[of n f g], simp)
definition
Kronecker_delta :: "[nat, nat] ==> ant"
(‹(δ _)› [70,71]70) where "δ j = (if i = j then 1 else 0)"
definition
K_gamma :: "[nat, nat] ==> int"
(‹(γ _)› [70,71]70) where "γ j = (if i = j then 0 else 1)"
abbreviation
TRANSPOS (‹(τ _)› [90,91]90) where "τ j == transpos i j"
definition
valuation :: "[('b, 'm) Ring_scheme, 'b ==> ant] ==> bool"where "valuation K v ⟷ v ∈ extensional (carrier K) ∧ v ∈ carrier K → Z\<infinity> ∧ v (0) = ∞∧ (∀x∈((carrier K) - {0}). v x ≠∞) ∧ (∀x∈(carrier K). ∀y∈(carrier K). v (x ⋅r y) = (v x) + (v y)) ∧ (∀x∈(carrier K). 0 ≤ (v x) ⟶ 0 ≤ (v (1r± x))) ∧ (∃x. x ∈ carrier K ∧ (v x) ≠∞∧ (v x) ≠ 0)"
lemma (in Corps) invf_closed:"x ∈ carrier K - {0} ==> x<hyphen> K∈ carrier K" by (cut_tac invf_closed1[of x], simp, assumption)
lemma (in Corps) valuation_map:"valuation K v ==> v ∈ carrier K → Z\<infinity>" by (simp add:valuation_def)
lemma (in Corps) value_in_aug_inf:"[valuation K v; x ∈ carrier K]==> v x ∈ Z\<infinity>" by (simp add:valuation_def, (erule conjE)+, simp add:funcset_mem)
lemma (in Corps) value_of_zero:"valuation K v ==> v (0) = ∞" by (simp add:valuation_def)
lemma (in Corps) val_nonzero_noninf:"[valuation K v; x ∈ carrier K; x ≠0] ==> (v x) ≠∞" by (simp add:valuation_def)
lemma (in Corps) value_inf_zero:"[valuation K v; x ∈ carrier K; v x = ∞] ==> x = 0" by (rule contrapos_pp, simp+,
frule val_nonzero_noninf[of v x], assumption+, simp)
lemma (in Corps) val_nonzero_z:"[valuation K v; x ∈ carrier K; x ≠0]==> ∃z. (v x) = ant z" by (frule value_in_aug_inf[of v x], assumption+,
frule val_nonzero_noninf[of v x], assumption+,
cut_tac mem_ant[of "v x"], simp add:aug_inf_def)
lemma (in Corps) val_nonzero_z_unique:"[valuation K v; x ∈ carrier K; x ≠0] ==>∃!z. (v x) = ant z" by (rule ex_ex1I, simp add:val_nonzero_z, simp)
lemma (in Corps) value_noninf_nonzero:"[valuation K v; x ∈ carrier K; v x ≠∞] ==> x ≠0" by (rule contrapos_pp, simp+, simp add:value_of_zero)
lemma (in Corps) val1_neq_0:"[valuation K v; x ∈ carrier K; v x = 1]==> x ≠0" apply (rule contrapos_pp, simp+, simp add:value_of_zero) apply (simp only:ant_1[THEN sym], cut_tac z_neq_inf[THEN not_sym, of 1], simp) done
lemma (in Corps) val_Zmin_sym:"[valuation K v; x ∈ carrier K; y ∈ carrier K] ==> amin (v x) (v y) = amin (v y ) (v x)" by (simp add:amin_commute)
lemma (in Corps) val_t2p:"[valuation K v; x ∈ carrier K; y ∈ carrier K] ==> v (x ⋅r y ) = v x + v y" by (simp add:valuation_def)
lemma (in Corps) val_axiom4:"[valuation K v; x ∈ carrier K; 0 ≤ v x]==> 0 ≤ v (1r± x)" by (simp add:valuation_def)
lemma (in Corps) val_axiom5:"valuation K v ==> ∃x. x ∈ carrier K ∧ v x ≠∞∧ v x ≠ 0" by (simp add:valuation_def)
lemma (in Corps) val_field_nonzero:"valuation K v ==> carrier K ≠ {0}" by (rule contrapos_pp, simp+,
frule val_axiom5[of v],
erule exE, (erule conjE)+, simp add:value_of_zero)
lemma (in Corps) val_field_1_neq_0:"valuation K v ==> 1r≠0" apply (rule contrapos_pp, simp+) apply (frule val_axiom5[of v]) apply (erule exE, (erule conjE)+) apply (cut_tac field_is_ring,
frule_tac t = x in Ring.ring_l_one[THEN sym, of "K"], assumption+,
simp add:Ring.ring_times_0_x, simp add:value_of_zero) done
lemma (in Corps) value_of_one:"valuation K v ==> v (1r) = 0" apply (cut_tac field_is_ring, frule Ring.ring_one[of "K"]) apply (frule val_t2p[of v "1r""1r"], assumption+,
simp add:Ring.ring_l_one, frule val_field_1_neq_0[of v],
frule val_nonzero_z[of v "1r"], assumption+,
erule exE, simp add:a_zpz) done
lemma (in Corps) has_val_one_neq_zero:"valuation K v ==> 1r≠0" by (frule value_of_one[of "v"],
rule contrapos_pp, simp+, simp add:value_of_zero)
lemma (in Corps) val_minus_one:"valuation K v ==> v (-a 1r) = 0" apply (cut_tac field_is_ring, frule Ring.ring_one[of "K"],
frule Ring.ring_is_ag[of "K"],
frule val_field_1_neq_0[of v],
frule aGroup.ag_inv_inj[of "K""1r""0"], assumption+,
simp add:Ring.ring_zero, assumption) apply (frule val_nonzero_z[of v "-a 1r"],
rule aGroup.ag_mOp_closed, assumption+, simp add:aGroup.ag_inv_zero,
erule exE, frule val_t2p [THEN sym, of v "-a 1r""-a 1r"]) apply (simp add:aGroup.ag_mOp_closed[of "K""1r"],
simp add:aGroup.ag_mOp_closed[of "K""1r"],
frule Ring.ring_inv1_3[THEN sym, of "K""1r""1r"], assumption+,
simp add:Ring.ring_l_one, simp add:value_of_one a_zpz) done
lemma (in Corps) val_minus_eq:"[valuation K v; x ∈ carrier K]==> v (-a x) = v x" apply (cut_tac field_is_ring,
simp add:Ring.ring_times_minusl[of K x],
subst val_t2p[of v], assumption+,
frule Ring.ring_is_ag[of "K"], rule aGroup.ag_mOp_closed, assumption+,
simp add:Ring.ring_one, assumption, simp add:val_minus_one,
simp add:aadd_0_l) done
lemma (in Corps) value_of_inv:"[valuation K v; x ∈ carrier K; x ≠0]==> v (x<hyphen>K) = - (v x)" apply (cut_tac invf_inv[of x], erule conjE,
frule val_t2p[of v "x<hyphen>K" x], assumption+,
simp+, simp add:value_of_one, simp add:a_inv) apply simp done
lemma (in Corps) val_exp_ring:"[ valuation K v; x ∈ carrier K; x ≠0] ==> (int n) *a (v x) = v (x^ n)" apply (cut_tac field_is_ring,
induct_tac n, simp add:Ring.ring_r_one, simp add:value_of_one) apply (drule sym, simp) apply (subst val_t2p[of v _ x], assumption+,
rule Ring.npClose, assumption+,
frule val_nonzero_z[of v x], assumption+,
erule exE, simp add:asprod_mult a_zpz,
simp add: distrib_right) done
text‹exponent in a field› lemma (in Corps) val_exp:"[ valuation K v; x ∈ carrier K; x ≠0]==> z *a (v x) = v (x)" apply (simp add:npowf_def) apply (case_tac "0 ≤ z",
simp, frule val_exp_ring [of v x "nat z"], assumption+,
simp, simp) apply (simp add:zle,
cut_tac invf_closed1[of x], simp,
cut_tac val_exp_ring [THEN sym, of v "x<hyphen> K""nat (- z)"], simp,
thin_tac "v (x<hyphen> K^ (nat (- z))) = (- z) *a v (x<hyphen> K)", erule conjE) apply (subst value_of_inv[of v x], assumption+) apply (frule val_nonzero_z[of v x], assumption+, erule exE, simp,
simp add:asprod_mult aminus, simp+) done
lemma (in Corps) value_zero_nonzero:"[valuation K v; x ∈ carrier K; v x = 0] ==> x ≠0" by (frule value_noninf_nonzero[of v x], assumption+, simp,
assumption)
lemma (in Corps) v_ale_diff:"[valuation K v; x ∈ carrier K; y ∈ carrier K; x ≠0; v x ≤ v y ]==> 0 ≤ v(y ⋅r x<hyphen> K)" apply (frule value_in_aug_inf[of v x], simp+,
frule value_in_aug_inf[of v y], simp+,
frule val_nonzero_z[of v x], assumption+,
erule exE) apply (cut_tac invf_closed[of x], simp+,
simp add:val_t2p,
simp add:value_of_inv[of v "x"],
frule_tac x = "ant z"in ale_diff_pos[of _ "v y"],
simp add:diff_ant_def) apply simp done
lemma (in Corps) amin_le_plusTr:"[valuation K v; x ∈ carrier K; y ∈ carrier K; v x ≠∞; v y ≠∞; v x ≤ v y]==> amin (v x) (v y) ≤ v ( x ± y)" apply (cut_tac field_is_ring, frule Ring.ring_is_ag,
frule value_noninf_nonzero[of v x], assumption+,
frule v_ale_diff[of v x y], assumption+,
cut_tac invf_closed1[of x],
frule Ring.ring_tOp_closed[of K y "x<hyphen> K"], assumption+, simp,
frule Ring.ring_one[of "K"],
frule aGroup.ag_pOp_closed[of "K""1r""y ⋅r x<hyphen> K"], assumption+,
frule val_axiom4[of v "y ⋅r ( x<hyphen> K)"], assumption+) apply (frule aadd_le_mono[of "0""v (1r± y ⋅r x<hyphen> K)""v x"],
simp add:aadd_0_l, simp add:aadd_commute[of _ "v x"],
simp add:val_t2p[THEN sym, of v x],
simp add:Ring.ring_distrib1 Ring.ring_r_one,
simp add:Ring.ring_tOp_commute[of "K""x"],
simp add:Ring.ring_tOp_assoc, simp add:linvf,
simp add:Ring.ring_r_one,
cut_tac amin_le_l[of "v x""v y"],
rule ale_trans[of "amin (v x) (v y)""v x""v (x ± y)"], assumption+) apply simp done
lemma (in Corps) amin_le_plus:"[valuation K v; x ∈ carrier K; y ∈ carrier K] ==> (amin (v x) (v y)) ≤ (v (x ± y))" apply (cut_tac field_is_ring, frule Ring.ring_is_ag) apply (case_tac "v x = ∞∨ v y = ∞") apply (erule disjE, simp,
frule value_inf_zero[of v x], assumption+,
simp add:aGroup.ag_l_zero amin_def,
frule value_inf_zero[of v y], assumption+,
simp add:aGroup.ag_r_zero amin_def, simp, erule conjE) apply (cut_tac z = "v x"and w = "v y"in ale_linear,
erule disjE, simp add:amin_le_plusTr,
frule_tac amin_le_plusTr[of v y x], assumption+,
simp add:aGroup.ag_pOp_commute amin_commute) done
lemma (in Corps) value_less_eq:"[ valuation K v; x ∈ carrier K; y ∈ carrier K; (v x) < (v y)]==> (v x) = (v (x ± y))" apply (cut_tac field_is_ring, frule Ring.ring_is_ag[of "K"],
frule amin_le_plus[of v x y], assumption+,
frule aless_imp_le[of "v x""v y"],
simp add: amin_def) apply (frule amin_le_plus[of v "x ± y""-a y"],
rule aGroup.ag_pOp_closed, assumption+,
rule aGroup.ag_mOp_closed, assumption+,
simp add:val_minus_eq,
frule aGroup.ag_mOp_closed[of "K""y"], assumption+,
simp add:aGroup.ag_pOp_assoc[of "K""x""y"],
simp add:aGroup.ag_r_inv1, simp add:aGroup.ag_r_zero,
simp add:amin_def) apply (case_tac "¬ (v (x ± y) ≤ (v y))", simp+) done
lemma (in Corps) value_less_eq1:"[valuation K v; x ∈ carrier K; y ∈ carrier K; (v x) < (v y)]==> v x = v (y ± x)" apply (cut_tac field_is_ring,
frule Ring.ring_is_ag[of "K"],
frule value_less_eq[of v x y], assumption+) apply (subst aGroup.ag_pOp_commute, assumption+) done
lemma (in Corps) val_1px:"[valuation K v; x ∈ carrier K; 0 ≤ (v (1r± x))] ==> 0 ≤ (v x)" apply (cut_tac field_is_ring, frule Ring.ring_is_ag[of "K"],
frule Ring.ring_one[of "K"]) apply (rule contrapos_pp, simp+,
case_tac "x = 0",
simp add:aGroup.ag_r_zero, simp add:value_of_zero,
simp add: aneg_le[of "0""v x"],
frule value_less_eq[of v x "1r"], assumption+,
simp add:value_of_one) apply (drule sym,
simp add:aGroup.ag_pOp_commute[of "K""x"]) done
lemma (in Corps) val_1mx:"[valuation K v; x ∈ carrier K; 0 ≤ (v (1r± (-a x)))]==> 0 ≤ (v x)" by (cut_tac field_is_ring, frule Ring.ring_is_ag[of "K"],
frule val_1px[of v "-a x"],
simp add:aGroup.ag_mOp_closed, assumption, simp add:val_minus_eq)
section"The normal valuation of v"
definition
Lv :: "[('r, 'm) Ring_scheme , 'r ==> ant] ==> ant"(* Least nonnegative value *) where "Lv K v = AMin {x. x ∈ v ` carrier K ∧ 0 < x}"
definition
n_val :: "[('r, 'm) Ring_scheme, 'r ==> ant] ==> ('r ==> ant)"where "n_val K v = (λx∈ carrier K. (THE l. (l * (Lv K v)) = v x))" (* normal valuation *)
definition
Pg :: "[('r, 'm) Ring_scheme, 'r ==> ant] ==> 'r"(* Positive generator *) where "Pg K v = (SOME x. x ∈ carrier K - {0} ∧ v x = Lv K v)"
lemma (in Corps) vals_pos_nonempty:"valuation K v ==> {x. x ∈ v ` carrier K ∧ 0 < x} ≠ {}" using val_axiom5[of v] value_noninf_nonzero[of v] value_of_inv[THEN sym, of v] by (auto simp: ex_image_cong_iff) (metis Ring.ring_is_ag aGroup.ag_mOp_closed aGroup.ag_pOp_closed aGroup.ag_r_inv1 f_is_ring zero_lt_inf)
lemma (in Corps) vals_pos_LBset:"valuation K v ==> {x. x ∈ v ` carrier K ∧ 0 < x} ⊆ LBset 1" by (rule subsetI, simp add:LBset_def, erule conjE,
rule_tac x = x in gt_a0_ge_1, assumption)
lemma (in Corps) Lv_pos:"valuation K v ==> 0 < Lv K v" apply (simp add:Lv_def,
frule vals_pos_nonempty[of v],
frule vals_pos_LBset[of v],
simp only:ant_1[THEN sym],
frule AMin[of "{x. x ∈ v ` carrier K ∧ 0 < x}""1"], assumption+,
erule conjE) apply simp done
lemma (in Corps) AMin_z:"valuation K v ==> ∃a. AMin {x. x ∈ v ` carrier K ∧ 0 < x} = ant a" apply (frule vals_pos_nonempty[of v],
frule vals_pos_LBset[of v],
simp only:ant_1[THEN sym],
frule AMin[of "{x. x ∈ v ` carrier K ∧ 0 < x}""1"], assumption+,
erule conjE) apply (frule val_axiom5[of v],
erule exE, (erule conjE)+,
cut_tac x = "v x"in aless_linear[of _ "0"], simp,
erule disjE,
frule_tac x = x in value_noninf_nonzero[of v], assumption+,
frule_tac x1 = x in value_of_inv[THEN sym, of v], assumption+) apply (frule_tac x = "v x"in aless_minus[of _ "0"], simp,
cut_tac x = x in invf_closed1, simp, erule conjE,
frule valuation_map[of v],
frule_tac a = "x<hyphen> K"in mem_in_image[of "v""carrier K""Z\<infinity>"], simp) apply (drule_tac a = "v (x<hyphen> K)"in forall_spec, simp,
frule_tac x = "x<hyphen> K"in val_nonzero_noninf[of v],
thin_tac "v (x<hyphen> K) ∈ v ` carrier K",
thin_tac "{x ∈ v ` carrier K. 0 < x} ⊆ LBset 1",
thin_tac "AMin {x ∈ v ` carrier K. 0 < x} ∈ v ` carrier K",
thin_tac "0 < AMin {x ∈ v ` carrier K. 0 < x}", simp,
thin_tac "v (x<hyphen> K) ∈ v ` carrier K",
thin_tac "{x ∈ v ` carrier K. 0 < x} ⊆ LBset 1",
thin_tac "AMin {x ∈ v ` carrier K. 0 < x} ∈ v ` carrier K",
thin_tac "0 < AMin {x ∈ v ` carrier K. 0 < x}", simp) apply (rule noninf_mem_Z[of "AMin {x ∈ v ` carrier K. 0 < x}"],
frule image_sub[of v "carrier K""Z\<infinity>""carrier K"],
rule subset_refl) apply (rule subsetD[of "v ` carrier K""Z\<infinity>" "AMin {x ∈ v ` carrier K. 0 < x}"], assumption+) apply auto by (metis (no_types, lifting) aneg_le aug_inf_noninf_is_z image_eqI value_in_aug_inf z_less_i)
lemma (in Corps) Lv_z:"valuation K v ==>∃z. Lv K v = ant z" by (simp add:Lv_def, rule AMin_z, assumption+)
lemma (in Corps) AMin_k:"valuation K v ==> ∃k∈ carrier K - {0}. AMin {x. x ∈ v ` carrier K ∧ 0 < x} = v k"
apply (frule vals_pos_nonempty[of v],
frule vals_pos_LBset[of v],
simp only:ant_1[THEN sym],
frule AMin[of "{x. x ∈ v ` carrier K ∧ 0 < x}""1"], assumption+,
erule conjE) apply (thin_tac "∀x∈{x. x ∈ v ` carrier K ∧ 0 < x}. AMin {x. x ∈ v ` carrier K ∧ 0 < x} ≤ x") apply (simp add:image_def, erule conjE, erule bexE,
thin_tac "{x. (∃xa∈carrier K. x = v xa) ∧ 0 < x} ⊆ LBset 1",
thin_tac "∃x. (∃xa∈carrier K. x = v xa) ∧ 0 < x",
subgoal_tac "x ∈ carrier K - {0}", blast,
frule AMin_z[of v], erule exE, simp) apply (simp add:image_def,
thin_tac "AMin {x. (∃xa∈carrier K. x = v xa) ∧ 0 < x} = ant a",
rule contrapos_pp, simp+, frule sym, thin_tac "v (0) = ant a",
simp add:value_of_zero) done
lemma (in Corps) val_Pg:" valuation K v ==> Pg K v ∈ carrier K - {0} ∧ v (Pg K v) = Lv K v" apply (frule AMin_k[of v], unfold Lv_def, unfold Pg_def) apply (rule someI2_ex) apply (erule bexE, drule sym, unfold Lv_def, blast) apply simp done
lemma (in Corps) amin_generateTr:"valuation K v ==> ∀w∈carrier K - {0}. ∃z. v w = z *a AMin {x. x ∈ v ` carrier K ∧ 0 < x}" apply (frule vals_pos_nonempty[of v],
frule vals_pos_LBset[of v],
simp only:ant_1[THEN sym],
frule AMin[of "{x. x ∈ v ` carrier K ∧ 0 < x}""1"], assumption+,
frule AMin_z[of v], erule exE, simp,
thin_tac "∃x. x ∈ v ` carrier K ∧ 0 < x",
(erule conjE)+, rule ballI, simp, erule conjE,
frule_tac x = w in val_nonzero_noninf[of v], assumption+,
frule_tac x = w in value_in_aug_inf[of v], assumption+,
simp add:aug_inf_def,
cut_tac a = "v w"in mem_ant, simp, erule exE,
cut_tac a = z and b = a in amod_adiv_equality) apply (case_tac "z mod a = 0", simp add:ant_0 aadd_0_r, blast,
thin_tac "{x. x ∈ v ` carrier K ∧ 0 < x} ⊆ LBset 1",
thin_tac "v w ≠∞", thin_tac "v w ≠ - ∞")
apply (cut_tac z = z in z_in_aug_inf,
cut_tac z = "(z div a)"and x = a in asp_z_Z,
cut_tac z = "z mod a"in z_in_aug_inf,
frule_tac a = "ant z"and b = "(z div a) *a ant a"and
c = "ant (z mod a)"in ant_sol, assumption+,
subst asprod_mult, simp, assumption, simp,
frule_tac x = k and z = "z div a"in val_exp[of v],
(erule conjE)+, assumption, simp, simp,
thin_tac "(z div a) *a v k = v (kz div a))",
erule conjE) apply (frule_tac x = k and n = "z div a"in field_potent_nonzero1,
assumption+,
frule_tac a = k and n = "z div a"in npowf_mem, assumption,
frule_tac x1 = "kz div a)"in value_of_inv[THEN sym, of v], assumption+,
simp add:diff_ant_def,
thin_tac "- v (kz div a)) = v ((kz div a))<hyphen> K)",
cut_tac x = "kz div a)"in invf_closed1, simp,
simp, erule conjE,
frule_tac x1 = w and y1 = "(kz div a))<hyphen> K"in
val_t2p[THEN sym, of v], assumption+, simp,
cut_tac field_is_ring,
thin_tac "v w + v ((kz div a))<hyphen> K) = ant (z mod a)",
thin_tac "v (kz div a)) + ant (z mod a) = v w",
frule_tac x = w and y = "(kz div a))<hyphen> K"in
Ring.ring_tOp_closed[of "K"], assumption+) apply (frule valuation_map[of v],
frule_tac a = "w ⋅r (kz div a))<hyphen> K"in mem_in_image[of "v" "carrier K""Z\<infinity>"], assumption+, simp) apply (thin_tac "AMin {x. x ∈ v ` carrier K ∧ 0 < x} = v k",
thin_tac "v ∈ carrier K → Z\<infinity>",
subgoal_tac "0 < v (w ⋅r (kz div a))<hyphen> K )",
drule_tac a = "v (w ⋅r (kz div a))<hyphen> K)"in forall_spec,
simp add:image_def) apply (drule sym, simp) using not_zle pos_mod_bound apply blast using pos_mod_sign zle_imp_zless_or_eq apply (metis Zero_ant_def aless) done
lemma (in Corps) val_principalTr1:"[ valuation K v]==> Lv K v ∈ v ` (carrier K - {0}) ∧ (∀w∈v ` carrier K. ∃a. w = a * Lv K v) ∧ 0 < Lv K v" apply (rule conjI,
frule val_Pg[of v], erule conjE,
simp add:image_def, frule sym, thin_tac "v (Pg K v) = Lv K v",
erule conjE, blast) apply (rule conjI,
rule ballI, simp add:image_def, erule bexE)
apply (
frule_tac x = x in value_in_aug_inf[of v], assumption,
frule sym, thin_tac "w = v x", simp add:aug_inf_def,
cut_tac a = w in mem_ant, simp, erule disjE, erule exE,
frule_tac x = x in value_noninf_nonzero[of v], assumption+,
simp, frule amin_generateTr[of v]) apply (drule_tac x = x in bspec, simp,
erule exE,
frule AMin_z[of v], erule exE, simp add:Lv_def,
simp add:asprod_mult, frule sym, thin_tac "za * a = z",
simp, subst a_z_z[THEN sym], blast)
lemma (in Corps) val_principalTr2:"[valuation K v; c ∈ v ` (carrier K - {0}) ∧ (∀w∈v ` carrier K. ∃a. w = a * c) ∧ 0 < c; d ∈ v ` (carrier K - {0}) ∧ (∀w∈v ` carrier K. ∃a. w = a * d) ∧ 0 < d] ==> c = d" apply ((erule conjE)+,
drule_tac x = d in bspec,
simp add:image_def, erule bexE, blast,
drule_tac x = c in bspec,
simp add:image_def, erule bexE, blast)
apply ((erule exE)+,
drule sym, simp,
simp add:image_def, (erule bexE)+, simp,
(erule conjE)+,
frule_tac x = x in val_nonzero_z[of v], assumption+, erule exE,
frule_tac x = xa in val_nonzero_z[of v], assumption+, erule exE,
simp) apply (
subgoal_tac "a ≠∞∧ a ≠ -∞", subgoal_tac "aa ≠∞∧ aa ≠ -∞",
cut_tac a = a in mem_ant, cut_tac a = aa in mem_ant, simp,
(erule exE)+, simp add:a_z_z,
thin_tac "c = ant z", frule sym, thin_tac "zb * z = za", simp) apply (subgoal_tac "0 < zb",
cut_tac a = zc and b = zb in mult.commute, simp,
simp add:pos_zmult_eq_1_iff,
rule contrapos_pp, simp+,
cut_tac x = 0and y = zb in less_linear, simp,
thin_tac "¬ 0 < zb",
erule disjE, simp,
frule_tac i = 0and j = z and k = zb in zmult_zless_mono_neg,
assumption+, simp add:mult.commute) apply (rule contrapos_pp, simp+, thin_tac "a ≠∞∧ a ≠ - ∞",
erule disjE, simp, rotate_tac 5, drule sym,
simp, simp, rotate_tac 5, drule sym, simp) apply (rule contrapos_pp, simp+,
erule disjE, simp, rotate_tac 4,
drule sym, simp, simp,
rotate_tac 4, drule sym,
simp) done
lemma (in Corps) val_principal:"valuation K v ==> ∃!x0. x0 ∈ v ` (carrier K - {0}) ∧ (∀w ∈ v ` (carrier K). ∃(a::ant). w = a * x0) ∧ 0 < x0" by (rule ex_ex1I,
frule val_principalTr1[of v], blast,
rule_tac c = x0 and d = y in val_principalTr2[of v],
assumption+)
lemma (in Corps) n_val_defTr:"[valuation K v; w ∈ carrier K]==> ∃!a. a * Lv K v = v w" apply (rule ex_ex1I,
frule AMin_k[of v],
frule Lv_pos[of v], simp add:Lv_def,
erule bexE,
frule_tac x = k in val_nonzero_z[of v], simp, simp,
erule exE, simp, (erule conjE)+) apply (case_tac "w = 0", simp add:value_of_zero,
frule_tac m = z in a_i_pos, blast) apply (frule amin_generateTr[of v],
drule_tac x = w in bspec, simp, simp) apply (
erule exE, simp add:asprod_mult,
subst a_z_z[THEN sym], blast) apply (frule AMin_k[of v]) apply (erule bexE,
frule Lv_pos[of v], simp add:Lv_def) apply (
erule conjE,
frule_tac x = k in val_nonzero_z[of v], assumption+,
erule exE, simp) apply (
case_tac "w = 0", simp del:a_i_pos add:value_of_zero,
subgoal_tac "y = ∞", simp, rule contrapos_pp, simp+,
cut_tac a = a in mem_ant, simp,
erule disjE, simp, erule exE, simp add:a_z_z) apply (rule contrapos_pp, simp+,
cut_tac a = y in mem_ant, simp, erule disjE, simp,
erule exE, simp add:a_z_z,
frule_tac x = w in val_nonzero_z[of v], assumption+,
erule exE, simp, cut_tac a = a in mem_ant,
erule disjE, simp, frule sym, thin_tac "- ∞ = ant za", simp,
erule disjE, erule exE, simp add:a_z_z) apply (cut_tac a = y in mem_ant,
erule disjE, simp, rotate_tac 3, drule sym,
simp, erule disjE, erule exE, simp add:a_z_z, frule sym,
thin_tac "zb * z = za", simp, simp,
rotate_tac 3, drule sym,
simp, simp, frule sym, thin_tac "∞ = ant za", simp) done
lemma (in Corps) n_valTr:"[ valuation K v; x ∈ carrier K]==> (THE l. (l * (Lv K v)) = v x)*(Lv K v) = v x" by (rule theI', rule n_val_defTr, assumption+)
lemma (in Corps) n_val:"[valuation K v; x ∈ carrier K]==> (n_val K v x)*(Lv K v) = v x" by (frule n_valTr[of v x], assumption+, simp add:n_val_def)
lemma (in Corps) val_pos_n_val_pos:"[valuation K v; x ∈ carrier K]==> (0 ≤ v x) = (0 ≤ n_val K v x)" apply (frule n_val[of v x], assumption+,
drule sym,
frule Lv_pos[of v],
frule Lv_z[of v], erule exE, simp) apply (frule_tac w = z and x = 0and y = "n_val K v x"in amult_pos_mono_r,
simp add:amult_0_l) done
lemma (in Corps) n_val_in_aug_inf:"[valuation K v; x ∈ carrier K]==> n_val K v x ∈ Z\<infinity>" apply (cut_tac field_is_ring, frule Ring.ring_zero[of "K"],
frule Lv_pos[of v],
frule Lv_z[of v], erule exE,
simp add:aug_inf_def) apply (rule contrapos_pp, simp+) apply (case_tac "x = 0", simp,
frule n_val[of v "0"],
simp add:value_of_zero, simp add:value_of_zero)
apply (frule n_val[of v x], simp,
frule val_nonzero_z[of v x], assumption+,
erule exE, simp, rotate_tac -2, drule sym,
simp) done
lemma (in Corps) n_val_0:"[valuation K v; x ∈ carrier K; v x = 0] ==> n_val K v x = 0" by (frule Lv_z[of v], erule exE,
frule Lv_pos[of v],
frule n_val[of v x], simp, simp,
rule_tac z = z and a = "n_val K v x"in a_a_z_0, assumption+)
lemma (in Corps) value_n0_n_val_n0:"[valuation K v; x ∈ carrier K; v x ≠ 0]==> n_val K v x ≠ 0" apply (frule n_val[of v x],
rule contrapos_pp, simp+, frule Lv_z[of v],
erule exE, simp, simp only:ant_0[THEN sym]) apply (rule contrapos_pp, simp+,
simp add:a_z_z) done
lemma (in Corps) val_0_n_val_0:"[valuation K v; x ∈ carrier K]==> (v x = 0) = (n_val K v x = 0)" apply (rule iffI,
simp add:n_val_0) apply (rule contrapos_pp, simp+,
frule value_n0_n_val_n0[of v x], assumption+) apply simp done
lemma (in Corps) val_noninf_n_val_noninf:"[valuation K v; x ∈ carrier K]==> (v x ≠∞) = (n_val K v x ≠∞)" by (frule Lv_z[of v], erule exE,
frule Lv_pos[of v], simp,
frule n_val[THEN sym, of v x],simp, simp,
thin_tac "v x = n_val K v x * ant z",
rule iffI, rule contrapos_pp, simp+,
cut_tac mem_ant[of "n_val K v x"], erule disjE, simp,
erule disjE, erule exE, simp add:a_z_z, simp, simp)
lemma (in Corps) val_inf_n_val_inf:"[valuation K v; x ∈ carrier K]==> (v x = ∞) = (n_val K v x = ∞)" by (cut_tac val_noninf_n_val_noninf[of v x], simp, assumption+)
lemma (in Corps) val_eq_n_val_eq:"[valuation K v; x ∈ carrier K; y ∈ carrier K] ==> (v x = v y) = (n_val K v x = n_val K v y)" apply (subst n_val[THEN sym, of v x], assumption+,
subst n_val[THEN sym, of v y], assumption+,
frule Lv_pos[of v], frule Lv_z[of v], erule exE, simp,
frule_tac s = z in zless_neq[THEN not_sym, of "0"]) apply (rule iffI) apply (rule_tac z = z in amult_eq_eq_r[of _ "n_val K v x""n_val K v y"],
assumption+) apply simp done
lemma (in Corps) val_poss_n_val_poss:"[valuation K v; x ∈ carrier K]==> (0 < v x) = (0 < n_val K v x)" apply (simp add:less_le,
frule val_pos_n_val_pos[of v x], assumption+,
rule iffI, erule conjE, simp,
simp add:value_n0_n_val_n0[of v x]) apply (drule sym,
erule conjE, simp,
frule_tac val_0_n_val_0[THEN sym, of v x], assumption+,
simp) done
lemma (in Corps) n_val_Pg:"valuation K v ==> n_val K v (Pg K v) = 1" apply (frule val_Pg[of v], simp, (erule conjE)+,
frule n_val[of v "Pg K v"], simp, frule Lv_z[of v], erule exE, simp,
frule Lv_pos[of v], simp, frule_tac i = 0and j = z in zless_neq) apply (rotate_tac -1, frule not_sym, thin_tac "0 ≠ z",
subgoal_tac "n_val K v (Pg K v) * ant z = 1 * ant z",
rule_tac z = z in adiv_eq[of _ "n_val K v (Pg K v)""1"], assumption+,
simp add:amult_one_l) done
lemma (in Corps) n_val_valuationTr1:"valuation K v ==> ∀x∈carrier K. n_val K v x ∈ Z\<infinity>" by (rule ballI,
frule n_val[of v], assumption,
frule_tac x = x in value_in_aug_inf[of v], assumption,
frule Lv_pos[of v], simp add:aug_inf_def,
frule Lv_z[of v], erule exE, simp,
rule contrapos_pp, simp+)
lemma (in Corps) n_val_t2p:"[valuation K v; x ∈ carrier K; y ∈ carrier K]==> n_val K v (x ⋅r y) = n_val K v x + (n_val K v y)" apply (cut_tac field_is_ring,
frule Ring.ring_tOp_closed[of K x y], assumption+,
frule n_val[of v "x ⋅r y"], assumption+,
frule Lv_pos[of "v"],
simp add:val_t2p,
frule n_val[THEN sym, of v x], assumption+,
frule n_val[THEN sym, of v y], assumption+, simp,
frule Lv_z[of v], erule exE, simp) apply (subgoal_tac "ant z ≠ 0") apply (frule_tac z1 = z in amult_distrib1[THEN sym, of _ "n_val K v x" "n_val K v y"], simp,
thin_tac "n_val K v x * ant z + n_val K v y * ant z = (n_val K v x + n_val K v y) * ant z",
rule_tac z = z and a = "n_val K v (x ⋅r y)"and
b = "n_val K v x + n_val K v y"in adiv_eq, simp, assumption+, simp) done
lemma (in Corps) n_val_valuationTr2:"[ valuation K v; x ∈ carrier K; y ∈ carrier K]==> amin (n_val K v x) (n_val K v y) ≤ (n_val K v ( x ± y))" apply (frule n_val[THEN sym, of v x], assumption+,
frule n_val[THEN sym, of v y], assumption+,
frule n_val[THEN sym, of v "x ± y"],
cut_tac field_is_ring, frule Ring.ring_is_ag[of "K"],
rule aGroup.ag_pOp_closed, assumption+) apply (frule amin_le_plus[of v x y], assumption+, simp,
simp add:amult_commute[of _ "Lv K v"],
frule Lv_z[of v], erule exE, simp,
frule Lv_pos[of v], simp,
simp add:amin_amult_pos, simp add:amult_pos_mono_l) done
lemma (in Corps) n_val_valuation:"valuation K v ==> valuation K (n_val K v)" apply (cut_tac field_is_ring, frule Ring.ring_is_ag) apply (frule Lv_z[of v], erule exE, frule Lv_pos[of v], simp,
subst valuation_def) apply (rule conjI, simp add:n_val_def restrict_def extensional_def) apply (rule conjI, simp add:n_val_valuationTr1) apply (rule conjI, frule n_val[of v 0],
simp add:Ring.ring_zero,
frule Lv_z[of v], erule exE, frule Lv_pos[of v],
cut_tac mem_ant[of "n_val K v (0)"], erule disjE,
simp add:value_of_zero,
erule disjE, erule exE, simp add:a_z_z value_of_zero, assumption+) apply (rule conjI, rule ballI,
frule_tac x = x in val_nonzero_noninf[of v], simp+,
simp add:val_noninf_n_val_noninf) apply (rule conjI, (rule ballI)+, simp add:n_val_t2p,
rule conjI, rule ballI, rule impI,
frule Lv_z[of v], erule exE,
frule Lv_pos[of v], simp,
frule_tac x = x in n_val[of v], simp,
frule_tac w1 = z and x1 = 0and y1 = "n_val K v x"in
amult_pos_mono_r[THEN sym], simp add:amult_0_l,
frule_tac x = x in val_axiom4[of v], assumption+,
frule_tac x1 = "1r± x"in n_val[THEN sym, of v],
frule Ring.ring_is_ag[of "K"],
rule aGroup.ag_pOp_closed, assumption+, simp add:Ring.ring_one,
assumption,
frule_tac w = z and x = 0and y = "n_val K v (1r± x)" in amult_pos_mono_r,
simp add:amult_0_l)
apply (frule val_axiom5[of v], erule exE,
(erule conjE)+,
frule_tac x = x in value_n0_n_val_n0[of v], assumption+,
frule_tac x = x in val_noninf_n_val_noninf, simp,
blast) done
lemma (in Corps) n_val_le_val:"[valuation K v; x ∈ carrier K; 0 ≤ (v x)]==> (n_val K v x) ≤(v x)" by (subst n_val[THEN sym, of v x], assumption+,
frule Lv_pos[of v],
simp add:val_pos_n_val_pos[of v x],
frule Lv_z[of v], erule exE,
cut_tac b = z and x = "n_val K v x"in amult_pos, simp+,
simp add:asprod_amult, simp add:amult_commute)
lemma (in Corps) n_val_surj:"valuation K v ==> ∃x∈ carrier K. n_val K v x = 1" apply (frule Lv_z[of v], erule exE,
frule Lv_pos[of v],
frule AMin_k[of v], erule bexE, frule_tac x = k in n_val[of v], simp,
simp add:Lv_def) apply (subgoal_tac "n_val K v k * ant z = 1 * ant z",
subgoal_tac "z ≠ 0",
frule_tac z = z and a = "n_val K v k"and b = 1in amult_eq_eq_r,
assumption, blast, simp, simp add:amult_one_l) done
lemma (in Corps) n_value_in_aug_inf:"[valuation K v; x ∈ carrier K]==> n_val K v x ∈ Z\<infinity>" by (frule n_val[of v x], assumption,
simp add:aug_inf_def, rule contrapos_pp, simp+,
frule Lv_pos[of v], frule Lv_z[of v], erule exE, simp,
frule value_in_aug_inf[of v x], assumption+, simp add:aug_inf_def)
lemma (in Corps) val_surj_n_valTr:"[valuation K v; ∃x ∈ carrier K. v x = 1] ==> Lv K v = 1" apply (erule bexE,
frule_tac x = x in n_val[of v],
simp, frule Lv_pos[of v]) apply (frule_tac w = "Lv K v"and x = "n_val K v x"in amult_1_both) apply simp+ done
lemma (in Corps) val_surj_n_val:"[valuation K v; ∃x ∈ carrier K. v x = 1]==> (n_val K v) = v" apply (rule funcset_eq[of _ "carrier K"],
simp add:n_val_def restrict_def extensional_def,
simp add:valuation_def) apply (rule ballI,
frule val_surj_n_valTr[of v], assumption+,
frule_tac x = x in n_val[of v], assumption+,
simp add:amult_one_r) done
lemma (in Corps) n_val_n_val:"valuation K v ==> n_val K (n_val K v) = n_val K v" by (frule n_val_valuation[of v],
frule n_val_surj[of v],
simp add:val_surj_n_val)
lemma nnonzero_annonzero:"0 < N ==> an N ≠ 0" apply (simp only:an_0[THEN sym]) apply (subst aneq_natneq, simp) done
section"Valuation ring"
definition
Vr :: "[('r, 'm) Ring_scheme, 'r ==> ant] ==> ('r, 'm) Ring_scheme"where "Vr K v = Sr K ({x. x ∈ carrier K ∧ 0 ≤ (v x)})"
definition
vp :: "[('r, 'm) Ring_scheme, 'r ==> ant] ==> 'r set"where "vp K v = {x. x ∈ carrier (Vr K v) ∧ 0 < (v x)}"
definition
r_apow :: "[('r, 'm) Ring_scheme, 'r set, ant] ==> 'r set"where "r_apow R I a = (if a = ∞ then {0} else (if a = 0 then carrier R else I<diamondsuit>R (na a)))" (** 0 \<le> a and a \<noteq> -\<infinity> **)
abbreviation
RAPOW (‹(3__ _)› [62,62,63]62) where "I a == r_apow R I a"
lemma (in Ring) ring_pow_apow:"ideal R I ==> I<diamondsuit>R n = I (an n)" apply (simp add:r_apow_def) apply (case_tac "n = 0", simp) apply (simp add:nnonzero_annonzero) apply (simp add:an_neq_inf na_an) done
lemma (in Ring) r_apow_Suc:"ideal R I ==> I (an (Suc 0)) = I" apply (cut_tac an_1, simp add:r_apow_def) apply (simp add:a0_neq_1[THEN not_sym]) apply (simp only:ant_1[THEN sym]) apply (simp del:ant_1 add:z_neq_inf[of 1, THEN not_sym]) apply (simp add:na_1) apply (simp add:idealprod_whole_r) done
lemma (in Ring) apow_ring_pow:"ideal R I ==> I<diamondsuit>R n = I (an n)" apply (simp add:r_apow_def) apply (case_tac "n = 0", simp add:an_0) apply (simp add: aless_nat_less[THEN sym],
cut_tac an_neq_inf[of n],
simp add: less_le[of 0"an n"] na_an) done
lemma (in Corps) Vr_ring:"valuation K v ==> Ring (Vr K v)" apply (cut_tac field_is_ring, frule Ring.ring_is_ag[of "K"],
simp add:Vr_def, rule Ring.Sr_ring, assumption+) apply (simp add:sr_def) apply (intro conjI subsetI) apply (simp_all add: value_of_one Ring.ring_one[of "K"]) apply ((rule allI, rule impI)+,
(erule conjE)+, rule conjI, rule aGroup.ag_pOp_closed, assumption+,
rule aGroup.ag_mOp_closed, assumption+) apply (frule_tac x = x and y = "-a y"in amin_le_plus[of v], assumption+,
rule aGroup.ag_mOp_closed, assumption+,
simp add:val_minus_eq[of v]) apply (
frule_tac z = 0and x = "v x"and y = "v y"in amin_ge1, assumption+,
frule_tac i = 0and j = "amin (v x) (v y)"and k = "v (x ± -a y)"in
ale_trans, assumption+, simp) by (simp add: Ring.ring_tOp_closed aadd_two_pos val_t2p)
lemma (in Corps) val_pos_mem_Vr:"[valuation K v; x ∈ carrier K]==> (0 ≤ (v x)) = (x ∈ carrier (Vr K v))" by (rule iffI, (simp add:Vr_def Sr_def)+)
lemma (in Corps) val_poss_mem_Vr:"[valuation K v; x ∈ carrier K; 0 < (v x)] ==> x ∈ carrier (Vr K v)" by (frule aless_imp_le[of "0""v x"], simp add:val_pos_mem_Vr)
lemma (in Corps) Vr_one:"valuation K v ==> 1r∈ carrier (Vr K v)" by (cut_tac field_is_ring, frule Ring.ring_one[of "K"],
frule val_pos_mem_Vr[of v "1r"], assumption+,
simp add:value_of_one)
lemma (in Corps) Vr_mem_f_mem:"[valuation K v; x ∈ carrier (Vr K v)] ==> x ∈ carrier K" by (simp add:Vr_def Sr_def)
lemma (in Corps) Vr_0_f_0:"valuation K v ==>0 K v = 0" by (simp add:Vr_def Sr_def)
lemma (in Corps) Vr_1_f_1:"valuation K v ==> 1rVr K v) = 1r" by (simp add:Vr_def Sr_def)
lemma (in Corps) Vr_pOp_f_pOp:"[valuation K v; x ∈ carrier (Vr K v); y ∈ carrier (Vr K v)]==> x ± K v y = x ± y" by (simp add:Vr_def Sr_def)
lemma (in Corps) Vr_mOp_f_mOp:"[valuation K v; x ∈ carrier (Vr K v)] ==> -aVr K v) x = -a x" by (simp add:Vr_def Sr_def)
lemma (in Corps) Vr_tOp_f_tOp:"[valuation K v; x ∈ carrier (Vr K v); y ∈ carrier(Vr K v)]==> x ⋅rVr K v) y = x ⋅r y" by (simp add:Vr_def Sr_def)
lemma (in Corps) Vr_pOp_le:"[valuation K v; x ∈ carrier K; y ∈ carrier (Vr K v)]==> v x ≤ (v x + (v y))" apply (frule val_pos_mem_Vr[THEN sym, of v y],
simp add:Vr_mem_f_mem, simp, frule aadd_pos_le[of "v y""v x"],
simp add:aadd_commute) done
lemma (in Corps) Vr_integral:"valuation K v ==> Idomain (Vr K v)" apply (simp add:Idomain_def,
simp add:Vr_ring, simp add:Idomain_axioms_def,
rule allI, rule impI, rule allI, (rule impI)+,
simp add:Vr_tOp_f_tOp, simp add:Vr_0_f_0) apply (rule contrapos_pp, simp+, erule conjE,
cut_tac field_is_idom,
frule_tac x = a in Vr_mem_f_mem[of v], assumption,
frule_tac x = b in Vr_mem_f_mem[of v], assumption,
frule_tac x = a and y = b in Idomain.idom_tOp_nonzeros[of "K"],
assumption+, simp) done
lemma (in Corps) Vr_exp_mem:"[valuation K v; x ∈ carrier (Vr K v)] ==> x^ n∈ carrier (Vr K v)" by (frule Vr_ring[of v],
induct_tac n, simp add:Vr_one,
simp add:Vr_tOp_f_tOp[THEN sym, of v],
simp add:Ring.ring_tOp_closed)
lemma (in Corps) Vr_exp_f_exp:"[valuation K v; x ∈ carrier (Vr K v)]==> x^Vr K v) n = x^ n" apply (induct_tac n,
simp, simp add:Vr_1_f_1, simp,
thin_tac "x^Vr K v) n = x^ n") apply (rule Vr_tOp_f_tOp, assumption+,
simp add:Vr_exp_mem, assumption) done
lemma (in Corps) Vr_potent_nonzero:"[valuation K v; x ∈ carrier (Vr K v) - {0 K v}]==> x^ n≠0 K v" apply (frule Vr_mem_f_mem[of v x], simp,
simp add:Vr_0_f_0, erule conjE) apply (frule Vr_mem_f_mem[of v x], assumption+,
simp add:field_potent_nonzero) done
lemma (in Corps) elem_0_val_if:"[valuation K v; x ∈ carrier K; v x = 0] ==> x ∈ carrier (Vr K v) ∧ x<hyphen> K∈ carrier (Vr K v)" apply (frule val_pos_mem_Vr[of v x], assumption, simp) apply (frule value_zero_nonzero[of "v""x"], simp add:Vr_mem_f_mem, simp) apply (frule value_of_inv[of v x], assumption+,
simp, subst val_pos_mem_Vr[THEN sym, of v "x<hyphen>K"], assumption+,
cut_tac invf_closed[of x], simp+) done
lemma (in Corps) elem0val:"[valuation K v; x ∈ carrier K; x ≠0]==> (v x = 0) = ( x ∈ carrier (Vr K v) ∧ x<hyphen> K∈ carrier (Vr K v))" apply (rule iffI, rule elem_0_val_if[of v], assumption+,
erule conjE) apply (simp add:val_pos_mem_Vr[THEN sym, of v x],
frule Vr_mem_f_mem[of v "x<hyphen>K"], assumption+,
simp add:val_pos_mem_Vr[THEN sym, of v "x<hyphen>K"],
simp add:value_of_inv, frule ale_minus[of "0""- v x"],
simp add:a_minus_minus) done
lemma (in Corps) ideal_inc_elem0val_whole:"[ valuation K v; x ∈ carrier K; v x = 0; ideal (Vr K v) I; x ∈ I]==> I = carrier (Vr K v)" apply (frule elem_0_val_if[of v x], assumption+, erule conjE,
frule value_zero_nonzero[of v x], assumption+,
frule Vr_ring[of v],
frule_tac I = I and x = x and r = "x<hyphen>K"in
Ring.ideal_ring_multiple[of "Vr K v"], assumption+,
cut_tac invf_closed1[of x], simp+, (erule conjE)+) apply (simp add:Vr_tOp_f_tOp, cut_tac invf_inv[of x], simp+,
simp add: Vr_1_f_1[THEN sym, of v],
simp add:Ring.ideal_inc_one, simp+) done
lemma (in Corps) vp_mem_Vr_mem:"[valuation K v; x ∈ (vp K v)]==> x ∈ carrier (Vr K v)" by (rule val_poss_mem_Vr[of v x], assumption+, (simp add:vp_def
Vr_def Sr_def)+)
lemma (in Corps) vp_mem_val_poss:"[ valuation K v; x ∈ carrier K]==> (x ∈ vp K v) = (0 < (v x))" by (simp add:vp_def, simp add:Vr_def Sr_def less_ant_def)
lemma (in Corps) Pg_in_Vr:"valuation K v ==> Pg K v ∈ carrier (Vr K v)" by (frule val_Pg[of v], erule conjE,
frule Lv_pos[of v], drule sym,
simp, erule conjE,
simp add:val_poss_mem_Vr)
lemma (in Corps) vp_ideal:"valuation K v ==> ideal (Vr K v) (vp K v)" apply (cut_tac field_is_ring,
frule Vr_ring[of v],
rule Ring.ideal_condition1, assumption+,
rule subsetI, simp add:vp_mem_Vr_mem,
simp add:vp_def) apply (frule val_Pg[of v],
frule Lv_pos[of v], simp, (erule conjE)+,
drule sym, simp,
frule val_poss_mem_Vr[of v "Pg K v"], assumption+, blast)
apply ((rule ballI)+,
frule_tac x = x in vp_mem_Vr_mem[of v], assumption) apply (
frule_tac x = y in vp_mem_Vr_mem[of v], assumption,
simp add:vp_def,
frule Ring.ring_is_ag[of "Vr K v"],
frule_tac x = x and y = y in aGroup.ag_pOp_closed, assumption+, simp) apply (simp add:Vr_pOp_f_pOp,
cut_tac x = "v x"and y = "v y"in amin_le_l,
frule_tac x = x and y = y in amin_le_plus,
(simp add:Vr_mem_f_mem)+,
(frule_tac z = 0and x = "v x"and y = "v y"in amin_gt, assumption+),
rule_tac x = 0and y = "amin (v x) (v y)"and z = "v (x ± y)"in
less_le_trans, assumption+) apply ((rule ballI)+,
frule_tac x1 = r in val_pos_mem_Vr[THEN sym, of v],
simp add:Vr_mem_f_mem, simp,
frule_tac x = x in vp_mem_Vr_mem[of v], simp add:Vr_pOp_f_pOp,
simp add:vp_def, simp add:Ring.ring_tOp_closed,
simp add:Vr_tOp_f_tOp) apply (frule_tac x = r in Vr_mem_f_mem[of v], assumption+,
frule_tac x = x in Vr_mem_f_mem[of v], assumption+,
simp add:val_t2p, simp add:aadd_pos_poss) done
lemma (in Corps) vp_not_whole:"valuation K v ==> (vp K v) ≠ carrier (Vr K v)" apply (cut_tac field_is_ring, frule Ring.ring_is_ag[of "K"],
frule Vr_ring[of v]) apply (rule contrapos_pp, simp+,
drule sym,
frule Ring.ring_one[of "Vr K v"], simp,
simp add:Vr_1_f_1,
frule Ring.ring_one[of "K"]) apply (simp only:vp_mem_val_poss[of v "1r"],
simp add:value_of_one) done
lemma (in Ring) elem_out_ideal_nonzero:"[ideal R I; x ∈ carrier R; x ∉ I]==> x ≠0" by (rule contrapos_pp, simp+, frule ideal_zero[of I],
simp)
lemma (in Corps) vp_prime:"valuation K v ==> prime_ideal (Vr K v) (vp K v)" apply (simp add:prime_ideal_def, simp add:vp_ideal) apply (rule conjI) (** if the unit is contained in (vp K v), then (vp K v) is
the whole ideal, this contradicts vp_not_whole **) apply (rule contrapos_pp, simp+,
frule Vr_ring[of v],
frule vp_ideal[of v],
frule Ring.ideal_inc_one[of "Vr K v""vp K v"], assumption+,
simp add:vp_not_whole[of v]) (* done*)
(** if x \<cdot>\<^bsub>(Vr K v)\<^esub> y is in (vp K v), then 0 < v (x \<cdot>\<^sub>K y). We have 0\<le>(vx)and0\<le>(vy),becausexandyareelementsofVrKv. Sincev(x\<cdot>\<^sub>Ky)=(vx)+(vy),wehave0<(vx)or0<(vy). Toobtainthefinalconclusion,wesuppose\<not>(x\<in>vpKv\<or>y\<in>vpKv) then,wehave(vx)=0and(vy)=0.Fromethis,wehavev(x\<cdot>\<^sub>Ky)=
0. Contradiction. *) apply ((rule ballI)+, rule impI, rule contrapos_pp, simp+, (erule conjE)+,
frule Vr_ring[of v]) apply (
frule_tac x = x in Vr_mem_f_mem[of v], assumption) apply (
frule_tac x = y in Vr_mem_f_mem[of v], assumption) apply (
frule vp_ideal[of v],
frule_tac x = x in Ring.elem_out_ideal_nonzero[of "Vr K v""vp K v"],
assumption+) apply (
frule_tac x = y in Ring.elem_out_ideal_nonzero[of "Vr K v""vp K v"],
assumption+, simp add:Vr_0_f_0,
simp add:Vr_tOp_f_tOp) apply (
frule_tac x = "x ⋅r y"in vp_mem_val_poss[of v],
cut_tac field_is_ring, simp add:Ring.ring_tOp_closed, simp) apply (cut_tac field_is_ring,
frule_tac x = x and y = y in Ring.ring_tOp_closed, assumption+,
simp add:Ring.ring_tOp_closed[of "Vr K v"],
simp add:vp_def, simp add:aneg_less,
frule_tac x1 = x in val_pos_mem_Vr[THEN sym, of v], assumption+,
frule_tac x1 = y in val_pos_mem_Vr[THEN sym, of v], assumption+,
frule_tac P = "x ∈ carrier (Vr K v)"and Q = "0 ≤ v x"in eq_prop,
assumption,
frule_tac P = "y ∈ carrier (Vr K v)"and Q = "0 ≤ v y"in eq_prop,
assumption,
frule_tac x = "v x"and y = 0in ale_antisym, assumption+,
frule_tac x = "v y"and y = 0in ale_antisym, assumption+,
simp add:val_t2p aadd_0_l) done
lemma (in Corps) vp_pow_ideal:"valuation K v ==> ideal (Vr K v) ((vp K v)<diamondsuit>(Vr K v) n)" by (frule Vr_ring[of v], frule vp_ideal[of v],
simp add:Ring.ideal_pow_ideal)
lemma (in Corps) vp_apow_ideal:"[valuation K v; 0 ≤ n]==> ideal (Vr K v) ((vp K v)Vr K v) n)" apply (frule Vr_ring[of v]) apply (case_tac "n = 0",
simp add:r_apow_def, simp add:Ring.whole_ideal[of "Vr K v"]) apply (case_tac "n = ∞",
simp add:r_apow_def, simp add:Ring.zero_ideal) apply (simp add:r_apow_def, simp add:vp_pow_ideal) done
lemma (in Corps) mem_vp_apow_mem_Vr:"[valuation K v; 0 ≤ N; x ∈ vp K v Vr K v) N]==> x ∈ carrier (Vr K v)" by (frule Vr_ring[of v], frule vp_apow_ideal[of v N], assumption,
simp add:Ring.ideal_subset)
lemma (in Corps) elem_out_vp_unit:"[valuation K v; x ∈ carrier (Vr K v); x ∉ vp K v]==> v x = 0" by (metis Vr_mem_f_mem ale_antisym aneg_le val_pos_mem_Vr vp_mem_val_poss)
lemma (in Corps) vp_maximal:"valuation K v ==> maximal_ideal (Vr K v) (vp K v)" apply (frule Vr_ring[of v],
simp add:maximal_ideal_def, simp add:vp_ideal) (** we know that vp is not a whole ideal, and so vp does not include 1 **) apply (frule vp_not_whole[of v],
rule conjI, rule contrapos_pp, simp+, frule vp_ideal[of v],
frule Ring.ideal_inc_one[of "Vr K v""vp K v"], assumption+) apply simp (** onemore condition of maximal ideal **) apply (rule equalityI,
rule subsetI, simp, erule conjE,
case_tac "x = vp K v", simp, simp, rename_tac X) (** show exists a unit contained in X **) apply (frule_tac A = X in sets_not_eq[of _ "vp K v"], assumption+,
erule bexE,
frule_tac I = X and h = a in Ring.ideal_subset[of "Vr K v"],
assumption+,
frule_tac x = a in elem_out_vp_unit[of v], assumption+) (** since v a = 0, we see a is a unit **) apply (frule_tac x = a and I = X in ideal_inc_elem0val_whole [of v],
simp add:Vr_mem_f_mem, assumption+)
lemma (in Corps) ideal_sub_vp:"[ valuation K v; ideal (Vr K v) I; I ≠ carrier (Vr K v)]==> I ⊆ (vp K v)" apply (frule Vr_ring[of v], rule contrapos_pp, simp+) apply (simp add:subset_eq,
erule bexE) apply (frule_tac h = x in Ring.ideal_subset[of "Vr K v" I], assumption+,
frule_tac x = x in elem_out_vp_unit[of v], assumption+,
frule_tac x = x in ideal_inc_elem0val_whole[of v _ I],
simp add:Vr_mem_f_mem, assumption+, simp) done
lemma (in Corps) Vr_local:"[valuation K v; maximal_ideal (Vr K v) I]==> (vp K v) = I" apply (frule Vr_ring[of v],
frule ideal_sub_vp[of v I], simp add:Ring.maximal_ideal_ideal) apply (simp add:maximal_ideal_def,
frule conjunct2, fold maximal_ideal_def, frule conjunct1,
rule Ring.proper_ideal, assumption+,simp add:maximal_ideal_def, assumption) apply (rule equalityI) prefer2apply assumption apply (rule contrapos_pp, simp+,
frule sets_not_eq[of "vp K v" I], assumption+, erule bexE) apply (frule_tac x = a in vp_mem_Vr_mem[of v],
frule Ring.maximal_ideal_ideal[of "Vr K v""I"], assumption,
frule_tac x = a in Ring.elem_out_ideal_nonzero[of "Vr K v""I"],
assumption+,
frule vp_ideal[of v], rule Ring.ideal_subset[of "Vr K v""vp K v"],
assumption+)
apply (frule_tac a = a in Ring.principal_ideal[of "Vr K v"], assumption+,
frule Ring.maximal_ideal_ideal[of "Vr K v" I], assumption+,
frule_tac ?I2.0 = "Vr K v ♢p a"in Ring.sum_ideals[of "Vr K v""I"],
simp add:Ring.maximal_ideal_ideal, assumption,
frule_tac ?I2.0 = "Vr K v ♢p a"in Ring.sum_ideals_la1[of "Vr K v""I"],
assumption+,
frule_tac ?I2.0 = "Vr K v ♢p a"in Ring.sum_ideals_la2[of "Vr K v""I"],
assumption+,
frule_tac a = a in Ring.a_in_principal[of "Vr K v"], assumption+,
frule_tac A = "Vr K v ♢p a"and B = "I ∓Vr K v) (Vr K v ♢p a)" and c = a in subsetD, assumption+) thm Ring.sum_ideals_cont[of "Vr K v""vp K v" I ] apply (frule_tac B = "Vr K v ♢p a"in Ring.sum_ideals_cont[of "Vr K v" "vp K v" I], simp add:vp_ideal, assumption) apply (frule_tac a = a in Ring.ideal_cont_Rxa[of "Vr K v""vp K v"],
simp add:vp_ideal, assumption+) apply (simp add:maximal_ideal_def, (erule conjE)+,
subgoal_tac "I ∓Vr K v) (Vr K v ♢p a) ∈ {J. ideal (Vr K v) J ∧ I ⊆ J}",
simp, thin_tac "{J. ideal (Vr K v) J ∧ I ⊆ J} = {I, carrier (Vr K v)}") apply (erule disjE, simp) apply (cut_tac A = "carrier (Vr K v)"and B = "I ∓ K v Vr K v ♢p a"and
C = "vp K v"in subset_trans, simp, assumption,
frule Ring.ideal_subset1[of "Vr K v""vp K v"], simp add:vp_ideal,
frule equalityI[of "vp K v""carrier (Vr K v)"], assumption+,
frule vp_not_whole[of v], simp) apply blast done
lemma (in Corps) v_residue_field:"valuation K v ==> Corps ((Vr K v) /r (vp K v))" by (frule Vr_ring[of v],
rule Ring.residue_field_cd [of "Vr K v""vp K v"], assumption+,
simp add:vp_maximal)
lemma (in Corps) Vr_n_val_Vr:"valuation K v ==> carrier (Vr K v) = carrier (Vr K (n_val K v))" by (simp add:Vr_def Sr_def,
rule equalityI,
(rule subsetI, simp, erule conjE, simp add:val_pos_n_val_pos),
(rule subsetI, simp, erule conjE, simp add:val_pos_n_val_pos[THEN sym]))
section"Ideals in a valuation ring"
lemma (in Corps) Vr_has_poss_elem:"valuation K v ==> ∃x∈carrier (Vr K v) - {0 K v}. 0 < v x" apply (frule val_Pg[of v], erule conjE,
frule Lv_pos[of v], drule sym,
subst Vr_0_f_0, assumption+) apply (frule aeq_ale[of "Lv K v""v (Pg K v)"],
frule aless_le_trans[of "0""Lv K v""v (Pg K v)"], assumption+,
frule val_poss_mem_Vr[of v "Pg K v"],
simp, assumption, blast) done
lemma (in Corps) vp_nonzero:"valuation K v ==> vp K v ≠ {0 K v}" apply (frule Vr_has_poss_elem[of v], erule bexE,
simp, erule conjE,
frule_tac x1 = x in vp_mem_val_poss[THEN sym, of v],
simp add:Vr_mem_f_mem, simp, rule contrapos_pp, simp+) done
lemma (in Corps) field_frac_mul:"[x ∈ carrier K; y ∈ carrier K; y ≠0] ==> x = (x ⋅r (y<hyphen>K)) ⋅r y" apply (cut_tac invf_closed[of y],
cut_tac field_is_ring,
simp add:Ring.ring_tOp_assoc,
subst linvf[of y], simp, simp add:Ring.ring_r_one[of K], simp) done
lemma (in Corps) elems_le_val:"[valuation K v; x ∈ carrier K; y ∈ carrier K; x ≠0; v x ≤ (v y)]==>∃r∈carrier (Vr K v). y = r ⋅r x" apply (frule ale_diff_pos[of "v x""v y"], simp add:diff_ant_def,
simp add:value_of_inv[THEN sym, of v x],
cut_tac invf_closed[of "x"],
simp only:val_t2p[THEN sym, of v y "x<hyphen>K"]) apply (cut_tac field_is_ring,
frule_tac x = y and y = "x<hyphen>K"in Ring.ring_tOp_closed[of "K"],
assumption+,
simp add:val_pos_mem_Vr[of v "y ⋅r (x<hyphen>K)"],
frule field_frac_mul[of y x], assumption+, blast) apply simp done
lemma (in Corps) val_Rxa_gt_a:"[valuation K v; x ∈ carrier (Vr K v) - {0}; y ∈ carrier (Vr K v); y ∈ Rxa (Vr K v) x]==> v x ≤ (v y)" apply (simp add:Rxa_def,
erule bexE,
simp add:Vr_tOp_f_tOp, (erule conjE)+,
frule_tac x = r in Vr_mem_f_mem[of v], assumption+,
frule_tac x = x in Vr_mem_f_mem[of v], assumption+) apply (subst val_t2p, assumption+,
simp add:val_pos_mem_Vr[THEN sym, of v],
frule_tac y = "v r"in aadd_le_mono[of "0" _ "v x"],
simp add:aadd_0_l) done
lemma (in Corps) val_Rxa_gt_a_1:"[valuation K v; x ∈ carrier (Vr K v); y ∈ carrier (Vr K v); x ≠0; v x ≤ (v y)]==> y ∈ Rxa (Vr K v) x" apply (frule_tac x = x in Vr_mem_f_mem[of v], assumption+,
frule_tac x = y in Vr_mem_f_mem[of v], assumption+,
frule v_ale_diff[of v x y], assumption+,
cut_tac invf_closed[of x],
cut_tac field_is_ring, frule Ring.ring_tOp_closed[of K y "x<hyphen>K"],
assumption+) apply (simp add:val_pos_mem_Vr[of "v""y ⋅r (x<hyphen>K)"],
frule field_frac_mul[of "y""x"], assumption+,
simp add:Rxa_def, simp add:Vr_tOp_f_tOp, blast, simp) done
lemma (in Corps) eqval_inv:"[valuation K v; x ∈ carrier K; y ∈ carrier K; y ≠0; v x = v y]==> 0 = v (x ⋅r (y<hyphen>K))" by (cut_tac invf_closed[of y],
simp add:val_t2p value_of_inv, simp add:aadd_minus_r,
simp)
lemma (in Corps) eq_val_eq_idealTr:"[valuation K v; x ∈ carrier (Vr K v) - {0}; y ∈ carrier (Vr K v); v x ≤ (v y)]==> Rxa (Vr K v) y ⊆ Rxa (Vr K v) x" apply (frule val_Rxa_gt_a_1[of v x y], simp+,
erule conjE) apply (frule_tac x = x in Vr_mem_f_mem[of v], assumption+,
frule Vr_ring[of v],
frule Ring.principal_ideal[of "Vr K v""x"], assumption,
frule Ring.ideal_cont_Rxa[of "Vr K v""(Vr K v) ♢p x""y"],
assumption+) done
lemma (in Corps) eq_val_eq_ideal:"[valuation K v; x ∈ carrier (Vr K v); y ∈ carrier (Vr K v); v x = v y] ==> Rxa (Vr K v) x = Rxa (Vr K v) y" apply (case_tac "x = 0",
simp add:value_of_zero,
frule value_inf_zero[of v y],
simp add:Vr_mem_f_mem, rule sym, assumption, simp) apply (rule equalityI,
rule eq_val_eq_idealTr[of v y x], assumption+,
drule sym, simp,
rule contrapos_pp, simp+, simp add:value_of_zero,
frule Vr_mem_f_mem[of v x], assumption+,
frule value_inf_zero[of v x], assumption+,
rule sym, assumption, simp, simp, simp) apply (rule eq_val_eq_idealTr[of v x y], assumption+, simp,
assumption, rule aeq_ale, assumption+) done
lemma (in Corps) eq_ideal_eq_val:"[valuation K v; x ∈ carrier (Vr K v); y ∈ carrier (Vr K v); Rxa (Vr K v) x = Rxa (Vr K v) y]==> v x = v y" apply (case_tac "x = 0", simp,
drule sym,
frule Vr_ring[of v],
frule Ring.a_in_principal[of "Vr K v" y], assumption+, simp,
thin_tac "Vr K v ♢p y = Vr K v ♢p (0)", simp add:Rxa_def,
erule bexE, simp add:Vr_0_f_0[of v, THEN sym]) apply (simp add:Vr_tOp_f_tOp, simp add:Vr_0_f_0,
frule_tac x = r in Vr_mem_f_mem[of v], assumption+,
cut_tac field_is_ring, simp add:Ring.ring_times_x_0) apply (frule Vr_ring[of v],
frule val_Rxa_gt_a[of v x y], simp,
simp) apply (drule sym,
frule Ring.a_in_principal[of "Vr K v""y"], simp, simp) apply (frule val_Rxa_gt_a[of v y x],
simp, rule contrapos_pp, simp+,
frule Ring.a_in_principal[of "Vr K v""x"], assumption+,
simp add:Rxa_def,
erule bexE, simp add:Vr_tOp_f_tOp, cut_tac field_is_ring,
frule_tac x = r in Vr_mem_f_mem[of v], assumption+,
simp add:Ring.ring_times_x_0, simp,
frule Ring.a_in_principal[of "Vr K v""x"], assumption+, simp,
rule ale_antisym, assumption+) done
lemma (in Corps) zero_val_gen_whole: "[valuation K v; x ∈ carrier (Vr K v)]==> (v x = 0) = (Rxa (Vr K v) x = carrier (Vr K v))" apply (frule Vr_mem_f_mem[of v x], assumption,
frule Vr_ring[of v]) apply (rule iffI,
frule Ring.principal_ideal[of "Vr K v""x"], assumption+,
frule Ring.a_in_principal[of "Vr K v""x"], assumption+,
rule ideal_inc_elem0val_whole[of v x "Vr K v ♢p x"], assumption+,
frule Ring.ring_one[of "Vr K v"],
frule eq_set_inc[of "1rVr K v)" "carrier (Vr K v)""Vr K v ♢p x"], drule sym, assumption,
thin_tac "1rVr K v)∈ carrier (Vr K v)",
thin_tac "Vr K v ♢p x = carrier (Vr K v)") apply (simp add:Rxa_def, erule bexE,
simp add:Vr_1_f_1, simp add:Vr_tOp_f_tOp,
frule value_of_one[of v], simp,
frule_tac x = r in Vr_mem_f_mem[of v], assumption+,
cut_tac field_is_ring, simp add:val_t2p,
simp add:val_pos_mem_Vr[THEN sym, of v],
rule contrapos_pp, simp+,
cut_tac less_le[THEN sym, of "0""v x"], drule not_sym, simp,
frule_tac x = "v r"and y = "v x"in aadd_pos_poss, assumption+,
simp) done
lemma (in Corps) elem_nonzeroval_gen_proper:"[ valuation K v; x ∈ carrier (Vr K v); v x ≠ 0]==> Rxa (Vr K v) x ≠ carrier (Vr K v)" apply (rule contrapos_pp, simp+) apply (simp add: zero_val_gen_whole[THEN sym]) done
text‹We prove that Vr K v is a principal ideal ring›
definition
LI :: "[('r, 'm) Ring_scheme, 'r ==> ant, 'r set] ==> ant"where (** The least nonzero value of I **) "LI K v I = AMin (v ` I)"
definition
Ig :: "[('r, 'm) Ring_scheme, 'r ==> ant, 'r set] ==> 'r"where (** Generator of I **) "Ig K v I = (SOME x. x ∈ I ∧ v x = LI K v I)"
lemma (in Corps) val_in_image:"[valuation K v; ideal (Vr K v) I; x ∈ I]==> v x ∈ v ` I" by (simp add:image_def, blast)
lemma (in Corps) I_vals_nonempty:"[valuation K v; ideal (Vr K v) I]==> v ` I ≠ {}" by (frule Vr_ring[of v],
frule Ring.ideal_zero[of "Vr K v""I"],
assumption+, rule contrapos_pp, simp+)
lemma (in Corps) I_vals_LBset:"[ valuation K v; ideal (Vr K v) I]==> v ` I ⊆ LBset 0" apply (frule Vr_ring[of v],
rule subsetI, simp add:LBset_def, simp add:image_def) apply (erule bexE,
frule_tac h = xa in Ring.ideal_subset[of "Vr K v""I"], assumption+) apply (frule_tac x1 = xa in val_pos_mem_Vr[THEN sym, of v],
simp add:Vr_mem_f_mem, simp) done
lemma (in Corps) LI_pos:"[valuation K v; ideal (Vr K v) I]==> 0 ≤ LI K v I" apply (simp add:LI_def,
frule I_vals_LBset[of v],
simp add:ant_0[THEN sym],
frule I_vals_nonempty[of v], simp only:ant_0)
lemma (in Corps) LI_poss:"[valuation K v; ideal (Vr K v) I; I ≠ carrier (Vr K v)]==> 0 < LI K v I" apply (subst less_le) apply (simp add:LI_pos) apply (rule contrapos_pp, simp+)
apply (thin_tac "∀x∈I. ant 0 ≤ v x",
thin_tac "v ` I ⊆ {x. ant 0 ≤ x}", simp add:image_def,
erule bexE, simp add:ant_0) apply (frule Vr_ring[of v],
frule_tac h = x in Ring.ideal_subset[of "Vr K v""I"], assumption+,
frule_tac x = x in zero_val_gen_whole[of v], assumption+,
simp,
frule_tac a = x in Ring.ideal_cont_Rxa[of "Vr K v""I"], assumption+,
simp, frule Ring.ideal_subset1[of "Vr K v""I"], assumption+) apply (frule equalityI[of "I""carrier (Vr K v)"], assumption+, simp) done
lemma (in Corps) LI_z:"[valuation K v; ideal (Vr K v) I; I ≠ {0 K v}]==> ∃z. LI K v I = ant z" apply (frule Vr_ring[of v],
frule Ring.ideal_zero[of "Vr K v""I"], assumption+,
cut_tac mem_ant[of "LI K v I"],
frule LI_pos[of v I], assumption,
erule disjE, simp,
cut_tac minf_le_any[of "0"],
frule ale_antisym[of "0""-∞"], assumption+, simp) apply (erule disjE, simp,
frule singleton_sub[of "0 K v""I"],
frule sets_not_eq[of "I""{0 K v}"], assumption+,
erule bexE, simp)
apply (simp add:LI_def,
frule I_vals_LBset[of v], assumption+,
simp only:ant_0[THEN sym],
frule I_vals_nonempty[of v], assumption+,
frule AMin[of "v ` I""0"], assumption, erule conjE) apply (frule_tac x = a in val_in_image[of v I], assumption+,
drule_tac x = "v a"in bspec, simp,
simp add:Vr_0_f_0,
frule_tac x = a in val_nonzero_z[of v],
simp add:Ring.ideal_subset Vr_mem_f_mem, assumption+,
erule exE, simp,
cut_tac x = "ant z"in inf_ge_any, frule_tac x = "ant z"in
ale_antisym[of _ "∞"], assumption+, simp) done
lemma (in Corps) LI_k:"[valuation K v; ideal (Vr K v) I]==> ∃k∈ I. LI K v I = v k" by (simp add:LI_def,
frule I_vals_LBset[of v], assumption+,
simp only:ant_0[THEN sym],
frule I_vals_nonempty[of v], assumption+,
frule AMin[of "v ` I""0"], assumption, erule conjE,
thin_tac "∀x∈v ` I. AMin (v ` I) ≤ x", simp add:image_def)
lemma (in Corps) LI_infinity:"[valuation K v; ideal (Vr K v) I]==> (LI K v I = ∞) = (I = {0 K v})" apply (frule Vr_ring[of v]) apply (rule iffI) apply (rule contrapos_pp, simp+,
frule Ring.ideal_zero[of "Vr K v""I"], assumption+,
frule singleton_sub[of "0 K v""I"],
frule sets_not_eq[of "I""{0 K v}"], assumption+,
erule bexE,
frule_tac h = a in Ring.ideal_subset[of "Vr K v""I"], assumption+,
simp add:Vr_0_f_0,
frule_tac x = a in Vr_mem_f_mem[of v], assumption+,
frule_tac x = a in val_nonzero_z[of v], assumption+,
erule exE,
simp add:LI_def,
frule I_vals_LBset[of v], assumption+,
simp only:ant_0[THEN sym],
frule I_vals_nonempty[of v], assumption+,
frule AMin[of "v ` I""0"], assumption, erule conjE) apply (frule_tac h = a in Ring.ideal_subset[of "Vr K v""I"], assumption+,
frule_tac x = a in val_in_image[of v I], assumption+,
drule_tac x = "v a"in bspec, simp) apply (frule_tac x = a in val_nonzero_z[of v], assumption+,
erule exE, simp,
cut_tac x = "ant z"in inf_ge_any, frule_tac x = "ant z"in
ale_antisym[of _ "∞"], assumption+, simp)
lemma (in Corps) val_Ig:"[valuation K v; ideal (Vr K v) I]==> (Ig K v I) ∈ I ∧ v (Ig K v I) = LI K v I" by (simp add:Ig_def, rule someI2_ex,
frule LI_k[of v I], assumption+, erule bexE,
drule sym, blast, assumption)
lemma (in Corps) Ig_nonzero:"[valuation K v; ideal (Vr K v) I; I ≠ {0 K v}] ==> (Ig K v I) ≠0" by (rule contrapos_pp, simp+,
frule LI_infinity[of v I], assumption+,
frule val_Ig[of v I], assumption+, erule conjE,
simp add:value_of_zero)
lemma (in Corps) Vr_ideal_npowf_closed:"[valuation K v; ideal (Vr K v) I; x ∈ I; 0 < n]==> x∈ I" by (simp add:npowf_def, frule Vr_ring[of v],
frule Ring.ideal_npow_closed[of "Vr K v""I""x""nat n"], assumption+,
simp, frule Ring.ideal_subset[of "Vr K v""I""x"], assumption+,
simp add:Vr_exp_f_exp)
lemma (in Corps) Ig_generate_I:"[valuation K v; ideal (Vr K v) I]==> (Vr K v) ♢p (Ig K v I) = I" apply (frule Vr_ring[of v]) apply (case_tac "I = carrier (Vr K v)",
frule sym, thin_tac "I = carrier (Vr K v)",
frule Ring.ring_one[of "Vr K v"],
simp, simp add: Vr_1_f_1,
frule val_Ig[of v I], assumption+, erule conjE,
frule LI_pos[of v I], assumption+,
frule val_in_image[of v I "1r"], assumption+,
drule_tac x = "v (1r)"in bspec, assumption+,
simp add: value_of_one ant_0 cong del: image_cong_simp,
simp add: zero_val_gen_whole[of v "Ig K v I"])
apply (frule val_Ig[of v I], assumption+, (erule conjE)+,
frule Ring.ideal_cont_Rxa[of "Vr K v""I""Ig K v I"], assumption+,
rule equalityI, assumption+)
apply (case_tac "LI K v I = ∞",
frule LI_infinity[of v I], simp,
simp add:Rxa_def, simp add:Ring.ring_times_x_0,
frule Ring.ring_zero, blast)
apply (rule subsetI,
case_tac "v x = 0",
frule_tac x = x in Vr_mem_f_mem[of v],
simp add:Ring.ideal_subset,
frule_tac x = x in zero_val_gen_whole[of v],
simp add:Ring.ideal_subset, simp,
frule_tac a = x in Ring.ideal_cont_Rxa[of "Vr K v""I"], assumption+,
simp, frule Ring.ideal_subset1[of "Vr K v""I"], assumption,
frule equalityI[of "I""carrier (Vr K v)"], assumption+, simp) apply (simp add:LI_def,
frule I_vals_LBset[of v], assumption+,
simp only:ant_0[THEN sym],
frule I_vals_nonempty[of v], assumption+,
frule AMin[of "v ` I""0"], assumption, erule conjE,
frule_tac x = "v x"in bspec,
frule_tac x = x in val_in_image[of v I], assumption+,
simp) apply (drule_tac x = x in bspec, assumption,
frule_tac y = x in eq_val_eq_idealTr[of v "Ig K v I"],
simp add:Ring.ideal_subset,
rule contrapos_pp, simp+, simp add:value_of_zero,
simp add:Ring.ideal_subset, simp)
apply (frule_tac a = x in Ring.a_in_principal[of "Vr K v"],
simp add:Ring.ideal_subset, rule subsetD, assumption+) done
lemma (in Corps) Pg_gen_vp:"valuation K v ==> (Vr K v) ♢p (Pg K v) = vp K v" apply (frule vp_ideal[of v],
frule Ig_generate_I[of v "vp K v"], assumption+,
frule vp_not_whole[of v],
frule eq_val_eq_ideal[of v "Ig K v (vp K v)""Pg K v"],
frule val_Ig [of v "vp K v"], assumption+, erule conjE,
simp add:vp_mem_Vr_mem)
apply (thin_tac "Vr K v ♢p Ig K v (vp K v) = vp K v",
frule val_Pg[of v], erule conjE,
simp, frule val_Ig[of v "vp K v"], assumption+, erule conjE,
simp, thin_tac "v (Pg K v) = Lv K v",
thin_tac "Ig K v (vp K v) ∈ vp K v ∧ v (Ig K v (vp K v)) = LI K v (vp K v)", simp add:LI_def Lv_def,
subgoal_tac "v ` vp K v = {x. x ∈ v ` carrier K ∧ 0 < x}",
simp)
apply (thin_tac "ideal (Vr K v) (vp K v)", thin_tac "Pg K v ∈ carrier K",
thin_tac "Pg K v ≠0",
rule equalityI, rule subsetI,
simp add:image_def vp_def, erule exE, erule conjE,
(erule conjE)+,
frule_tac x = xa in Vr_mem_f_mem[of v], assumption+, simp, blast)
apply (rule subsetI, simp add:image_def vp_def, erule conjE, erule bexE, simp,
frule_tac x = xa in val_poss_mem_Vr[of v], assumption+,
cut_tac y = "v xa"in less_le[of "0"], simp, blast, simp) done
lemma (in Corps) vp_gen_t:"valuation K v ==> ∃t∈carrier (Vr K v). vp K v = (Vr K v) ♢p t" by (frule Pg_gen_vp[of v], frule Pg_in_Vr[of v], blast)
lemma (in Corps) vp_gen_nonzero:"[valuation K v; vp K v = (Vr K v) ♢p t]==> t ≠0 K v" apply (rule contrapos_pp, simp+,
cut_tac Ring.Rxa_zero[of "Vr K v"], drule sym, simp,
simp add:vp_nonzero) apply (simp add:Vr_ring) done
lemma (in Corps) n_value_idealTr:"[valuation K v; 0 ≤ n]==> (vp K v) <diamondsuit>(Vr K v) n = Vr K v ♢p ((Pg K v)^Vr K v) n)" apply (frule Vr_ring[of v],
frule Pg_gen_vp[THEN sym, of v],
simp add:vp_ideal,
frule val_Pg[of v], simp, (erule conjE)+) apply (subst Ring.principal_ideal_n_pow[of "Vr K v""Pg K v" "Vr K v ♢p Pg K v"], assumption+,
frule Lv_pos[of v], rotate_tac -2, frule sym,
thin_tac "v (Pg K v) = Lv K v", simp, simp add:val_poss_mem_Vr,
simp+) done
lemma (in Corps) ideal_pow_vp:"[valuation K v; ideal (Vr K v) I; I ≠ carrier (Vr K v); I ≠ {0 K v}]==> I = (vp K v)<diamondsuit> (Vr K v) (na (n_val K v (Ig K v I)))" apply (frule Vr_ring[of v],
frule Ig_generate_I[of v I], assumption+)
apply (frule n_val[of v "Ig K v I"],
frule val_Ig[of v I], assumption+, erule conjE,
simp add:Ring.ideal_subset[of "Vr K v""I""Ig K v I"] Vr_mem_f_mem)
apply (frule val_Pg[of v], erule conjE,
rotate_tac -1, drule sym, simp,
frule Ig_nonzero[of v I], assumption+,
frule LI_pos[of v I], assumption+,
frule Lv_pos[of v],
frule val_Ig[of v I], assumption+, (erule conjE)+,
rotate_tac -1, drule sym, simp,
frule val_pos_n_val_pos[of v "Ig K v I"],
simp add:Ring.ideal_subset Vr_mem_f_mem,
simp) apply (frule zero_val_gen_whole[THEN sym, of v "Ig K v I"],
simp add:Ring.ideal_subset,
simp, rotate_tac -1, drule not_sym,
cut_tac less_le[THEN sym, of "0""v (Ig K v I)"], simp,
thin_tac "0 ≤ v (Ig K v I)",
frule Ring.ideal_subset[of "Vr K v" I "Ig K v I"], assumption+,
frule Vr_mem_f_mem[of v "Ig K v I"], assumption+,
frule val_poss_n_val_poss[of v "Ig K v I"], assumption+, simp) apply (frule Ig_nonzero[of v I],
frule val_nonzero_noninf[of v "Ig K v I"], assumption+,
simp add:val_noninf_n_val_noninf[of v "Ig K v I"],
frule val_poss_mem_Vr[of v "Pg K v"], assumption+,
subst n_value_idealTr[of v "na (n_val K v (Ig K v I))"],
assumption+, simp add:na_def)
apply (frule eq_val_eq_ideal[of v "Ig K v I" "(Pg K v)^Vr K v) (na (n_val K v (Ig K v I)))"], assumption+,
rule Ring.npClose, assumption+,
simp add:Vr_exp_f_exp[of v "Pg K v"],
subst val_exp_ring[THEN sym, of v "Pg K v" "na (n_val K v (Ig K v I))"], assumption+) apply (frule Lv_z[of v], erule exE, simp,
rotate_tac 6, drule sym, simp,
subst asprod_amult,
simp add:val_poss_n_val_poss[of v "Ig K v I"],
frule val_nonzero_noninf[of v "Ig K v I"], assumption+,
frule val_noninf_n_val_noninf[of v "Ig K v I"], assumption+, simp,
rule aposs_na_poss[of "n_val K v (Ig K v I)"], assumption+) apply (fold an_def) apply (subst an_na[THEN sym, of "n_val K v (Ig K v I)"],
frule val_nonzero_noninf[of v "Ig K v I"], assumption+,
frule val_noninf_n_val_noninf[of v "Ig K v I"], assumption+, simp,
simp add:aless_imp_le, simp) apply simp done
lemma (in Corps) ideal_apow_vp:"[valuation K v; ideal (Vr K v) I]==> I = (vp K v)(Vr K v) (n_val K v (Ig K v I))" apply (frule Vr_ring[of v]) apply (case_tac "v (Ig K v I) = ∞",
frule val_Ig[of v I], assumption,
frule val_inf_n_val_inf[of v "Ig K v I"],
simp add:Ring.ideal_subset Vr_mem_f_mem, simp, simp add:r_apow_def,
simp add:LI_infinity[of v I])
apply (case_tac "v (Ig K v I) = 0",
frule val_0_n_val_0[of v "Ig K v I"],
frule val_Ig[of v I], assumption+, erule conjE,
simp add:Ring.ideal_subset Vr_mem_f_mem, simp,
frule val_Ig[of v I], assumption,
frule zero_val_gen_whole[of v "Ig K v I"],
simp add:Ring.ideal_subset, (erule conjE)+, simp,
frule Ring.ideal_cont_Rxa[of "Vr K v""I""Ig K v I"], assumption+) apply (simp,
frule Ring.ideal_subset1[of "Vr K v""I"], assumption+,
frule equalityI[of "I""carrier (Vr K v)"], assumption+,
simp add:r_apow_def) apply (frule val_noninf_n_val_noninf[of v "Ig K v I"],
frule val_Ig[of v I], assumption,
simp add:Ring.ideal_subset Vr_mem_f_mem, simp,
frule value_n0_n_val_n0[of v "Ig K v I"],
frule val_Ig[of v I], assumption,
simp add:Ring.ideal_subset Vr_mem_f_mem, assumption)
apply (simp add:r_apow_def,
rule ideal_pow_vp, assumption+,
frule elem_nonzeroval_gen_proper[of v "Ig K v I"],
frule val_Ig[of v I], assumption+, erule conjE,
simp add:Ring.ideal_subset, assumption, simp add:Ig_generate_I)
apply (frule val_Ig[of v I], assumption+, erule conjE, simp,
simp add:LI_infinity[of v I]) done
(* A note to the above lemma (in Corps). LetKbeafieldandvbeavaluation.LetRbethevaluaitonringofv, andletPbethemaximalidealofR.IfIisanidealofRsuchthatI\<noteq>0 andI\<noteq>R,thenI=P^n.Heren=natzntn_valuationKGaiv(I_gen KvI))whichisnatoftheintegerpartofthenormalvalueof (I_genKvI).LetbbeageneratorofI,thenn=v(b)/v(p),where pisageneratorofPinR: I=P\<^bsup>\<diamondsuit>Rn\<^esup>
Here P=vpKv, R=VrKv, b=IgKvI,, n=natn_valKv(IgKvI). Itiseasytoseethatn=v\<^sup>*b.Herev\<^sup>*isthenormalvaluationderivedfrom
v. *)
lemma (in Corps) ideal_apow_n_val:"[valuation K v; x ∈ carrier (Vr K v)]==> (Vr K v) ♢p x = (vp K v)Vr K v) (n_val K v x)" apply (frule Vr_ring[of v],
frule Ring.principal_ideal[of "Vr K v""x"], assumption+,
frule ideal_apow_vp[of v "Vr K v ♢p x"], assumption+) apply (frule val_Ig[of v "Vr K v ♢p x"], assumption+, erule conjE,
frule Ring.ideal_subset[of "Vr K v""Vr K v ♢p x" "Ig K v (Vr K v ♢p x)"], assumption+,
frule Ig_generate_I[of v "Vr K v ♢p x"], assumption+) apply (frule eq_ideal_eq_val[of v "Ig K v (Vr K v ♢p x)" x],
assumption+,
thin_tac "Vr K v ♢p Ig K v (Vr K v ♢p x) = Vr K v ♢p x",
thin_tac "v (Ig K v (Vr K v ♢p x)) = LI K v (Vr K v ♢p x)",
frule n_val[THEN sym, of v x],
simp add:Vr_mem_f_mem, simp,
thin_tac "v x = n_val K v x * Lv K v",
frule n_val[THEN sym, of v "Ig K v (Vr K v ♢p x)"],
simp add:Vr_mem_f_mem, simp,
thin_tac "v (Ig K v (Vr K v ♢p x)) = n_val K v x * Lv K v") apply (frule Lv_pos[of v],
frule Lv_z[of v], erule exE, simp,
frule_tac s = z in zless_neq[THEN not_sym, of "0"],
frule_tac z = z in adiv_eq[of _ "n_val K v (Ig K v (Vr K v ♢p x))" "n_val K v x"], assumption+, simp) done
lemma (in Corps) t_gen_vp:"[valuation K v; t ∈ carrier K; v t = 1]==> (Vr K v) ♢p t = vp K v" (* apply(fruleval_surj_n_val[ofv],blast) apply(fruleideal_apow_n_val[ofvt]) apply(cut_taca0_less_1) apply(ruleval_poss_mem_Vr[ofvt],assumption+,simp) apply(simpadd:r_apow_def) apply(simponly:ant_1[THENsym],simponly:ant_0[THENsym]) apply(simponly:aeq_zeq,simp) apply(cut_tacz_neq_inf[THENnot_sym,of"1"],simp) apply(simponly:an_1[THENsym])apply(simpadd:na_an) apply(ruleRing.idealprod_whole_r[of"VrKv""vpKv"]) apply(simpadd:Vr_ring) apply(simpadd:vp_ideal)
done *)
proof - assume a1:"valuation K v"and
a2:"t ∈ carrier K"and
a3:"v t = 1" from a1 and a2 and a3 have h1:"t ∈ carrier (Vr K v)" apply (cut_tac a0_less_1) apply (rule val_poss_mem_Vr[of v t], assumption+, simp) done from a1 and a2 and a3 have h2:"n_val K v = v" apply (subst val_surj_n_val[of v]) apply assumption apply blast apply simp done from a1 and h1 have h3:"Vr K v ♢p t = vp K v(Vr K v) (n_val K v t)" apply (simp add:ideal_apow_n_val[of v t]) done from a1 and a3 and h2 and h3 show ?thesis apply (simp add:r_apow_def) apply (simp only:ant_1[THEN sym], simp only:ant_0[THEN sym]) apply (simp only:aeq_zeq, simp) apply (cut_tac z_neq_inf[THEN not_sym, of "1"], simp) apply (simp only:an_1[THEN sym]) apply (simp add:na_an) apply (rule Ring.idealprod_whole_r[of "Vr K v""vp K v"]) apply (simp add:Vr_ring) apply (simp add:vp_ideal) done qed
lemma (in Corps) t_vp_apow:"[valuation K v; t ∈ carrier K; v t = 1]==> (Vr K v) ♢p (t^Vr K v) n) = (vp K v)Vr K v) (an n)" (* apply(fruleVr_ring[ofv], substRing.principal_ideal_n_pow[THENsym,of"VrKv"t"vpKv"n], assumption+) apply(cut_taca0_less_1,ruleval_poss_mem_Vr[ofv],assumption+) apply(simp,simpadd:t_gen_vp, simpadd:r_apow_def) apply(ruleconjI,ruleimpI, simponly:an_0[THENsym],frulean_inj[ofn0],simp) apply(ruleimpI) apply(ruleconjI,ruleimpI) apply(simpadd:an_def) apply(ruleimpI,cut_tacan_nat_pos[ofn],simpadd:na_an)
done *)
proof - assume a1:"valuation K v"and
a2:"t ∈ carrier K"and
a3:"v t = 1" from a1 have h1:"Ring (Vr K v)"by (simp add:Vr_ring[of v]) from a1 and a2 and a3 have h2:"t ∈ carrier (Vr K v)" apply (cut_tac a0_less_1) apply (rule val_poss_mem_Vr) apply assumption+ apply simp done from a1 and a2 and a3 and h1 and h2 show ?thesis apply (subst Ring.principal_ideal_n_pow[THEN sym, of "Vr K v" t "vp K v" n]) apply assumption+ apply (simp add:t_gen_vp) apply (simp add:r_apow_def) apply (rule conjI, rule impI,
simp only:an_0[THEN sym], frule an_inj[of n 0], simp) apply (rule impI) apply (rule conjI, rule impI) apply (simp add:an_def) apply (rule impI, cut_tac an_nat_pos[of n], simp add:na_an) done qed
lemma (in Corps) nonzeroelem_gen_nonzero:"[valuation K v; x ≠0; x ∈ carrier (Vr K v)]==> Vr K v ♢p x ≠ {0 K v}" by (frule Vr_ring[of v],
frule_tac a = x in Ring.a_in_principal[of "Vr K v"], assumption+,
rule contrapos_pp, simp+, simp add:Vr_0_f_0)
subsection"Amin lemma (in Corps)s "
lemma (in Corps) Amin_le_addTr:"valuation K v ==> (∀j ≤ n. f j ∈ carrier K) ⟶ Amin n (v ∘ f) ≤ (v (nsum K f n))" apply (induct_tac n) apply (rule impI, simp)
apply (rule impI,
simp,
frule_tac x = "Σe K f n"and y = "f (Suc n)"in amin_le_plus[of v],
cut_tac field_is_ring, frule Ring.ring_is_ag[of "K"],
cut_tac n = n in aGroup.nsum_mem[of K _ f], assumption,
rule allI, simp add:funcset_mem, assumption, simp) apply (frule_tac z = "Amin n (λu. v (f u))"and z' = "v (Σe K f n)"and
w = "v (f (Suc n))"in amin_aminTr,
rule_tac i = "amin (Amin n (λu. v (f u))) (v (f (Suc n)))"and
j = "amin (v (Σe K f n)) (v (f (Suc n)))"and
k = "v (Σe K f n ± (f (Suc n)))"in ale_trans, assumption+) done
lemma (in Corps) Amin_le_add:"[valuation K v; ∀j ≤ n. f j ∈ carrier K]==> Amin n (v ∘ f) ≤ (v (nsum K f n))" by (frule Amin_le_addTr[of v n f], simp)
lemma (in Corps) value_ge_add:"[valuation K v; ∀j ≤ n. f j ∈ carrier K; ∀j ≤ n. z ≤ ((v ∘ f) j)]==> z ≤ (v (Σe K f n))" apply (frule Amin_le_add[of v n f], assumption+,
cut_tac Amin_ge[of n "v ∘ f" z],
rule ale_trans, assumption+) apply (rule allI, rule impI,
simp add:comp_def Zset_def,
rule value_in_aug_inf[of v], assumption+, simp+) done
lemma (in Corps) Vr_ideal_powTr1:"[valuation K v; ideal (Vr K v) I; I ≠ carrier (Vr K v); b ∈ I]==> b ∈ (vp K v)" by (frule ideal_sub_vp[of v I], assumption+, simp add:subsetD)
section‹pow of vp and ‹n_value› -- convergence --›
lemma (in Corps) n_value_x_1:"[valuation K v; 0 ≤ n; x ∈ (vp K v) Vr K v) n]==> n ≤ (n_val K v x)" (* 1. prove that x \<in> carrier (Vr K v) and that x \<in> carrier K *) apply ((case_tac "n = ∞", simp add:r_apow_def,
simp add:Vr_0_f_0, cut_tac field_is_ring,
frule Ring.ring_zero[of "K"], frule val_inf_n_val_inf[of v 0],
assumption+, simp add:value_of_zero),
(case_tac "n = 0", simp add:r_apow_def,
subst val_pos_n_val_pos[THEN sym, of v x], assumption+,
simp add:Vr_mem_f_mem,
subst val_pos_mem_Vr[of v x], assumption+,
simp add:Vr_mem_f_mem, assumption,
simp add:r_apow_def, frule Vr_ring[of v],
frule vp_pow_ideal[of v "na n"],
frule Ring.ideal_subset[of "Vr K v""(vp K v) <diamondsuit>(Vr K v) (na n)" x],
assumption+, frule Vr_mem_f_mem[of v x], assumption+)) (* 1. done *)
(** 2. Show that v(I_genKv(vprKv)^\<^sup>VrKv\<^sup>\<^sup>natn)\<le>vx.thekeylemma(inCorps)is
"val_Rxa_gt_a" **)
frule val_Pg[of v], erule conjE, simp, erule conjE,
frule Lv_pos[of v],
rotate_tac -4, frule sym, thin_tac "v (Pg K v) = Lv K v", simp,
frule val_poss_mem_Vr[of v "Pg K v"], assumption+,
frule val_Rxa_gt_a[of v "Pg K v^Vr K v) (na n)" x],
frule Vr_integral[of v],
simp only:Vr_0_f_0[of v, THEN sym],
frule Idomain.idom_potent_nonzero[of "Vr K v""Pg K v""na n"],
assumption+, simp, simp add:Ring.npClose, assumption+)
apply (thin_tac "x ∈ Vr K v ♢p (Pg K v^Vr K v) (na n))",
thin_tac "ideal (Vr K v) (Vr K v ♢p (Pg K v^Vr K v) (na n)))")
apply (simp add:Vr_exp_f_exp[of v "Pg K v"],
simp add:val_exp_ring[THEN sym, of v "Pg K v"],
simp add:n_val[THEN sym, of v x],
frule val_nonzero_z[of v "Pg K v"], assumption+,
erule exE, simp,
frule aposs_na_poss[of "n"], simp add: less_le,
simp add:asprod_amult,
frule_tac w = z in amult_pos_mono_r[of _ "ant (int (na n))" "n_val K v x"], simp,
cut_tac an_na[of "n"], simp add:an_def, assumption+) done
lemma (in Corps) n_value_x_1_nat:"[valuation K v; x ∈ (vp K v)<diamondsuit>(Vr K v) n]==> (an n) ≤ (n_val K v x)" apply (cut_tac an_nat_pos[of "n"]) apply( frule n_value_x_1[of "v""an n""x"], assumption+) apply (simp add:r_apow_def) apply (case_tac "n = 0", simp, simp) apply (cut_tac aless_nat_less[THEN sym, of "0""n"]) apply simp unfolding less_le apply simp apply (cut_tac an_neq_inf [of "n"]) apply simp apply (simp add: na_an) apply assumption done
lemma (in Corps) n_value_x_2:"[valuation K v; x ∈ carrier (Vr K v); n ≤ (n_val K v x); 0 ≤ n]==> x ∈ (vp K v) Vr K v) n" apply (frule Vr_ring[of v],
frule val_Pg[of v], erule conjE,
simp, erule conjE, drule sym,
frule Lv_pos[of v], simp,
frule val_poss_mem_Vr[of v "Pg K v"], assumption+)
apply (case_tac "n = ∞",
simp add:r_apow_def, cut_tac inf_ge_any[of "n_val K v x"],
frule ale_antisym[of "n_val K v x""∞"], assumption+,
frule val_inf_n_val_inf[THEN sym, of v "x"],
simp add:Vr_mem_f_mem, simp,
frule value_inf_zero[of v x],
simp add:Vr_mem_f_mem, simp+, simp add:Vr_0_f_0)
apply (case_tac "n = 0",
simp add:r_apow_def,
simp add:r_apow_def,
subst n_value_idealTr[of v "na n"], assumption+,
simp add:apos_na_pos) apply (rule val_Rxa_gt_a_1[of v "Pg K v^Vr K v) (na n)" x],
assumption+,
rule Ring.npClose, assumption+,
simp add:Vr_0_f_0[THEN sym, of v],
frule Vr_integral[of v],
frule val_poss_mem_Vr[of v "Pg K v"], assumption+,
simp add:Idomain.idom_potent_nonzero)
apply (simp add:Vr_exp_f_exp,
simp add:val_exp_ring[THEN sym, of v],
rotate_tac -5, drule sym,
frule Lv_z[of v], erule exE, simp,
frule aposs_na_poss[of "n"], simp add: less_le,
simp add:asprod_amult, subst n_val[THEN sym, of v x],
assumption+,
simp add:Vr_mem_f_mem, simp,
subst amult_pos_mono_r[of _ "ant (int (na n))""n_val K v x"],
assumption,
cut_tac an_na[of "n"], simp add:an_def, assumption+) done
lemma (in Corps) n_value_x_2_nat:"[valuation K v; x ∈ carrier (Vr K v); (an n) ≤ ((n_val K v) x)]==> x ∈ (vp K v)<diamondsuit>(Vr K v) n" by (frule n_value_x_2[of v x "an n"], assumption+,
simp, simp add:r_apow_def,
case_tac "an n = ∞", simp add:an_def, simp,
case_tac "n = 0", simp,
subgoal_tac "an n ≠ 0", simp, simp add:na_an,
rule contrapos_pp, simp+, simp add:an_def)
lemma (in Corps) n_val_n_pow:"[valuation K v; x ∈ carrier (Vr K v); 0 ≤ n]==> (n ≤ (n_val K v x)) = (x ∈ (vp K v) Vr K v) n)" by (rule iffI, simp add:n_value_x_2, simp add:n_value_x_1)
lemma (in Corps) eqval_in_vpr_apow:"[valuation K v; x ∈ carrier K; 0 ≤ n; y ∈ carrier K; n_val K v x = n_val K v y; x ∈ (vp K v)Vr K v) n]==> y ∈ (vp K v) Vr K v) n" apply (frule n_value_x_1[of v n x], assumption+, simp,
rule n_value_x_2[of v y n], assumption+,
frule mem_vp_apow_mem_Vr[of v n x], assumption+) apply (frule val_pos_mem_Vr[THEN sym, of v x], assumption+, simp,
simp add:val_pos_n_val_pos[of v x],
simp add:val_pos_n_val_pos[THEN sym, of v y],
simp add:val_pos_mem_Vr, assumption+) done
lemma (in Corps) convergenceTr:"[valuation K v; x ∈ carrier K; b ∈ carrier K; b ∈ (vp K v)Vr K v) n; (Abs (n_val K v x)) ≤ n]==> x ⋅r b ∈ (vp K v)Vr K v) (n + (n_val K v x))" (** Valuation ring is a ring **) apply (cut_tac Abs_pos[of "n_val K v x"],
frule ale_trans[of "0""Abs (n_val K v x)""n"], assumption+,
thin_tac "0 ≤ Abs (n_val K v x)") apply (frule Vr_ring[of v],
frule_tac aadd_le_mono[of "Abs (n_val K v x)""n""n_val K v x"],
cut_tac Abs_x_plus_x_pos[of "n_val K v x"],
frule ale_trans[of "0""Abs (n_val K v x) + n_val K v x" "n + n_val K v x"], assumption+,
thin_tac "0 ≤ Abs (n_val K v x) + n_val K v x",
thin_tac "Abs (n_val K v x) + n_val K v x ≤ n + n_val K v x",
rule n_value_x_2[of v "x ⋅r b""n + n_val K v x"], assumption+) apply (frule n_value_x_1[of v n b], assumption+) apply (frule aadd_le_mono[of "n""n_val K v b""n_val K v x"],
frule ale_trans[of "0""n + n_val K v x""n_val K v b + n_val K v x"],
assumption) apply (thin_tac "0 ≤ n + n_val K v x",
thin_tac "n ≤ n_val K v b",
thin_tac "n + n_val K v x ≤ n_val K v b + n_val K v x",
simp add:aadd_commute[of "n_val K v b""n_val K v x"]) apply (frule n_val_valuation[of v],
simp add:val_t2p[THEN sym, of "n_val K v" x b],
cut_tac field_is_ring,
frule Ring.ring_tOp_closed[of "K""x""b"], assumption+,
simp add:val_pos_n_val_pos[THEN sym, of v "x ⋅r b"],
simp add:val_pos_mem_Vr,
frule n_val_valuation[of v],
subst val_t2p[of "n_val K v"], assumption+,
frule n_value_x_1[of v n b], assumption+,
simp add:aadd_commute[of "n_val K v x""n_val K v b"],
rule aadd_le_mono[of n "n_val K v b""n_val K v x"], assumption+) done
lemma (in Corps) convergenceTr1:"\A Coxeter system is a group that affrds eetaio,weeec eeaori fore w, <> (vp K v)\^es>; 0≤==> x ⋅(vp K v) s_ring frule Vr_ringo ] e p_ao_da[fv"AbsK )
cut_tac
rule aadd_two_pos n"Abs nval K )] supin)
apply (rueRn.da_ustof"Kv"vpK \^>(Vr K v) (n + Abs (n_val K v x))\open "b"], assumption+, frule Vr_mem_f_mem[of v b], assumption, frule convergenceTr[of v x b "n + Abs (n_val K v x)"], assumption+, rule aadd_pos_le[of "n" "Abs (n_val K v x)"], assumption)
apply (frule apos_in_aug_inf[of "n"], cut_tac Abs_pos[of "n_val K v x"], frule apos_in_aug_inf[of "Abs (n_val K v x)"], rule nvlei_gifo x], supin frule aadd_assoc_i[of " bsn_val ""java.lang.StringIndexOutOfBoundsException: Index 8 out of bounds for length 8
assumption+,
cut_tacAbs_x_plus_x_pos[of "n_val K v x"])
apply (frule_tac Ring.ring_tOp_closed[of K x b], assumption+,
rule n_value_x_2[of v java.lang.NullPointerException
apply(subval_posmemVr[THEN sym, of v "x \cdot><sub b", a+, subst val_pos_n_val_pos[of v "x ⋅r b"], assumption+)
apply(ffr n_valuex_1o "v" "n Abs K v x) +n_valv x"" P fas subst aadd_assoc_iasupin, ruleaadd_two_pos[of n], assumption+, ruleale_trans[of "0" + As (n_vl K x) + n_v K v x" "n_val K v (x ⋅ ,sm d:a_w_o,asmtn, frule n_value_x_1[of "v" "n + Abs (n_val K v x)" " b"], cut_tac Abs_pos[of "n_val K v x"], rule aadd_two_pos[of""bs(_a Kv )] supin)
applyinduced_idudi <> GoWthGnrtrRlatr.nue_dSR subst val_t2p[of "n_val K ]assumption) applyruleono" +As(na x""_a b imp d:ad_mueo "al vb""_al
rule
n_val val ", frulead_o_e[f"bs valn" simp add:aadd_commute[of "n"], assumption+) done
lemma (in Corps) vp_potent_zero:"[rex bs_freelist(lternating_listlist t
(n eeletter_in_FreeGroup_iff apply (rule_reelistfstistfstin Q" pply(sim d:_pwdf rl conraps_p,sm+ frule apos_neq_minf[of "n"], Q"
simpnt_0sym"ntz)
apply "" s add:ant_0s add:r_apow_d, Vr_ring[o v], frule Ring.ring_oeoVr Kv" ,
simp add:Vr_0_f_0
frule value_of_one[of flip_altsublist_adjacent_def by
cut_tac "ss<>li S"" ss ts" apply ts
frule_tac n = st"ulecs2 simp add:na_def, simp, thin_tac "vp K v <diamondsuit>(Vr K v) (na (anttsublist_adjacent_set
frule Vr_ring ]
frulein lists S ==> ts < lists S" frule_tac n = " (antinVrPg ", assumption) apply (frule_tac a = "(Pg K v)^Vr K v) (na (ant z))
Ringflip_altsublist_chain_funcong_Cons_snoc[
, frule
frule ,
frule_tacts pair_relator_halflist" "Pg K v"], assumption+, simp add:Vr_0_f_0, simp) done
Corps) Vr:"<valuation K v; 0≤ n; 0≤ m;
(vp K v) VrK v)) n\^> =(vp K v) \bsup>Vr)m<esup\rbrakk <Longrightarrown =m (*** compare the value of the generator of each ideal ***) (** express each ideal as a principal ideal **) apply ( Vr_ring
simp add:r_apow_defAxs"Abs_freelists<> Q"
case_tac "n = 0", simp,
case_tac", simp, al_Pg ul nEsp eruleE -3, drule sym, frule u have val_poss_of v" K"umption drule sym, simp, simp add:Vr_0_f_0)
apply (simp, sy, Ring.ring_one[of " K" p
frule n_value_x_1_nat[of v "1<^ xs
simp
le
simp add:value_of_one[of "n_val K v"]) done
lemmain) Vr_potent_eqTr2:[
(vp(1,) sum_list
(** 1. express each ideal as a principal ideal **) simp) apply (frulernating_list
[ v,simpconjE
rotate_tac( K v)=Lvjava.lang.StringIndexOutOfBoundsException: Index 64 out of bounds for length 64
frule v] )
apply reduced_word_for_sum_list (3
frule n_value_idealTr[of "v next apply Nil1() assms(4) altnks a have "ys @" by auto thin_tac "vp K v <^ reduced_word_for_imp_reduced_word
((1 False
thin_tac "reduced_word_for_imp_reduced_word[OF 1()] frule val_poss_mem_Vr[of "v" "Pg K v"], assumption+)
(** 2. the value of generators should coincide **) apply(rul Lv_z[of v], eru exE, rotate_tac -4, drule sym, simp, frule eq_ideal_eq_val[of "v" "Pg K v^<words yss apply (rule Ring.npClose<rbrakk<ltsublist_chainchain] applyVr_exp_f_exp
simpsublist_adjacent_reflt_refl
thin_tac "withe_ a Srddfys
lemma (in Corps) r_ptneq"lbrakkvaluation K v; 0<le n; 0≤
p)^bsup(Vr K v) n(Vr K v) m] n = m" apply (frule n_val_valuation[of v], case_tac "m = 0", _potent_eqTr1) apply (case_tac "n = 0", frule sym, thin_tac "vp K vjava.lang.NullPointerException
frule Vr_potent_eqTr1\a b as bs cs. ss = as @ [a] @ bs @ [b] @ cs ∧
ymsumption
frule vp_potent_zero "distinct lconjseq ss)") applycase_tac =infinity,
thin_tac "vp K v ext frule" () =sum_list @bs )" simp, frule vp_potent_zero[THEN sym, of v "m"], assumption+, simp, thin_tac "vp K v(Vr K v) m≠
poss]substless_le ,
frule uced_word_for_minimal[of _ss@bs]by
simp add:r_apow_def,
frule Vr_potent_eqTr2[of "v""na n""na m"], assumption lift_signed_lconjperm
thin_tac "vp K v \<^>< = vp K v Vr K v) (na m) mpa:eqna_eqTE y] done
lemma (in Corps) Vr_prime_maximalTr2:"[ valuation K v; x ∈ vp K v; x ≠0; Suc 0 < n]Consequences of the deletion condition› apply rue rringo ]) apply <ts. ts ∈ reduced_wrsf (umit "
frule Ring.npClosets. ts \> ssubseqs ss ∩
simp nlyp apply (cut_tac field_is_ring,
cut_tac
frule Vr_mem_f_mem">ts. ts \in ss xs ∩ reduced_words_for S (sum_list xs)"
frule Idomain.moreover apply(njI apply (rule contrapos_pp, simp+) apply (frule val_Rxa_gt_a
simp apply (simp add:val_exp_ring[THENnjava.lang.StringIndexOutOfBoundsException: Index 50 out of bounds for length 50 apply (frule ionors
simppresented apply (simp apply (rule contrapos_pp, simp+) apply (frule val_Rxa_gt_a[of v java.lang.NullPointerException apply (simp, frule Ring.npClose[of "Vr K v" "x" "n - Suc 0"], assumption+) apply (simp add:Vr_exp_f_exp) apply (frule Ring.npClose[of "Vr K v" "x" "n - Suc 0"], assuusing reduced_woradd.assoc[of s s w gensss_li simp add:Vr_exp_f_exp, assumption) apply (simp add:val_exp_ring[THEN sym, of v x]) apply (simp add:vp_mem_val_poss[of "v" "x"]) apply (frule val_nonzero_z[of "v" "x"], assumption+, erueex simp add:asprod_amult a_z_z)
java.lang.StringIndexOutOfBoundsException: Index 4 out of bounds for length 4
lemma (in Corps) Vring_prime_maximal:"<>valuation (Vr) ;
I ≠ apply (frule Vr_ring[of v],
frule Ring.prime_ideal_proper[ofrds.
frule Ring.prime_ideal_ideal[of "Vr K v""I"], assumption
frule ideal_pow_vp[of v I],
frule
simp,+)
apply (case_tac " ured[of S w "scsjava.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 52
simp = (Sucds" frule S y (fastforce simp add: lengt) thin_tac "0 < na (n_val K v (Ig applycase_tac "na (n_val K v (Ig K v I)) = Suc 0", simp,
frule Pg_in_Vr[of v]) apply (frule vp_maximal[of v],
frule Ring.maximal_ideal_ideal[of "Vr K v""vp K v"], assumption+,
subst Ring
apply altst
frule le_neq_implies_less[of cst s\or
assumption
thin_tac "Suc 0 ≤[OF a(3)] thin_tac "Suc 0≠<. reduced_word_for S w (altstcs
thin_tac "Vr K v ♢ 0" apply (frule val_Pg[of v], simp = alternating_list (S_length
frule Lv_pos[of -2, drule) apply (frule val_poss_mem_Vr[of "v""Pg K v"],
frule vp_mem_val_poss[THEN sym, of have"ength alt s)>S_enhw
apply (frule Vr_prime_maximalTr2[ "na (n_val K v (Ig K v I))"], simp add:vp_mem_val_poss[of v " K v" asspin,uecn) apply (frule Ring.npMulDistr[of "Vr K v" "
apply (rotate_tac 8, drule sym) apply (frule Ring.a_in_principal[of "Vr K v" "Pg K v^"
apply (simptwo_reduced_heads_imp_reduced_alt apply (simp add:Ring.ring_l_one[of assms a_S\inS" and b_S: "b∈ apply (frule n_value_idealTr[THEN symrs_def have: "flip_altsublist_adjacent rs us"
of v "na (n_val K u two_reduced_h by fas apply (simp add:Vr_exp_f_exp) apply (rotate_tac 6, drule sym, simp) apply (thin_tac wh "qsalternating_lista@" thin_tac "I = vp K v <^using
thin_tac "v (Pg K v) = Lv K v",
thin_tac "(Vr K v) \<diamondsuitproof
java.lang.NullPointerException I",
thin_tac java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
thin_tac "Pg K v ≠ thin_tac "Pg K v^java.lang.NullPointerException
Pg K v ⋅
apply (simp add:prime_ideal_def, erule conjE,
drule_tac x = "Pg K v"in ( w)
drule_taccaseNil1 from Nil11)less(3) ?thesis apply(impVr_exp_f_exp, ] apply ( (onsCons) apply simp with ConsCons done
lemma(inCorps)val_nonpos_inv_pos:"\<lbrakk>valuation \<not>0\<le>(vx)\<rbrakk>\<Longrightarrow>0<(v(x\<^bsup>\<hyphen>K\<^esup>))" by(case_tac"\zero\^bsub>K\<^esub>",simpadd:value_of_zero, fruleVr_ring[ofv], simpwithno_zero_gensetts)avelengthjava.lang.StringIndexOutOfBoundsException: Index 52 out of bounds for length 52 frulevalue_of_inv[THENsym,ofvx],assumption+, frulealess_minus[of"vx""0"],simp)
(* \<forall>x\<in>carrier K. 0 \<le> (v x) \<longrightarrow> 0 \<le> (v' x) *) lemmavaluation K v; '
x ∈ carrier K; 0 < (proof
< 0≤ apply (rulepp
frule val_nonpos_inv_pos[of "v"byto
case_tac "x = 0 usingue_gbn_n_olostsf[ o x frule aless_imp_le[of "0" " apply (simp add:val_pos_mem_Vr[of v java.lang.NullPointerException frule subsetD[of "carrier (Vr K v)" "carrier (Vr K v')" "x<hyphen>K
assumption+,
frule val_pos_mem_Vr[THEN sym, of "v'" java.lang.NullPointerException apply (< cut_tac ale_minus[of "0" "- v' x"], thin_tac "0≤for
simp only:a_minus_minus,
tacneg_less" 0im assumption, simp) done
lemma (in Corps) contract_maximal:"[valuation K v; valuation K v';
carrier (Vr K v) ⊆ carrier (java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
maximal_ideal (Vr K v) (carrier (Vr K v) ∩ vp ) apply (fruled_id_sum_list_S
frule Vr_ring[of "v'"
rule Vring_prime_maximal, assumption+,
simp add:contract_prime) apply (frule vp_nonzero[of "v'"],
rule]
frule Ring.ideal_zero[of "Vr K v'""vp K v'"], assumption+,
frule sets_not_eq[of "vp K v'" java.lang.NullPointerException: Cannot invoke "String.equals(Object)" because "brackoff" is null simp add: singleton_sub[of "0
erule bexE, simp add:Vr_0_f_0
apply (case_tac "a ∈ carrier (Vr K v)", blast,
frule_tac x = a in vp_mem_Vr_mem[of "v'"], assumption+,
frule_tac x = a in Vr_mem_f_mem[of "v'"], assumption+,
subgoal_tac "a ∈ carrier (Vr K v)",thusbyfastforce
frule_tac x1 = a in val_pos_mem_Vr[THEN sym, of "v"], assumption+,
simp, frule val_nonpos_inv_pos[ usinginduced_signed_lconjperm_inv_induced_id_sum_listof "#]
apply (frule_tac y = "v (a<permutationced_idsum_list
cut_tac x = a in invf_closed1, with Cons showcase
frule_tac x = "a<hyphen>K"inusing[of by fastforce apply (frule_tac c = java.lang.NullPointerException "carrier (Vr K v')"], assumption+) apply ( frule_tac x = "a<hyphen>K" in val_pos_mem_Vr[of "v'"], simp, simp only:value_of_inv[of "v'"], simp, simp add:value_of_inv[of "v'"]) apply (frule_tac y = "- v' ultimatelyshow t\inH. ddseq
frule_tac x = a in vp_mem_val_poss[of "v'"], assumption+,
simp) done
section"Equivalent valuations"
definition
v_equiv :: "v_equiv K v1 v2 ⟷
lemma (in Corps) valuation_equivTr1:"[valuation K v; valuation K v'; ∀x∈lists S" "distinctjseq
carrier (Vr K v) ⊆ carrierassms1show)<>setseq apply (frule Vr_ring[of "v"],
frule Vr_ring[of "v'"] moreoverwith(2havecount_list apply (rule subsetI,
case_tac "x = 0 frule_tac x1 = x in val_pos_mem_Vr[THEN sym, of "v"], frule_tac x = x in Vr_mem_f_mem[of "v"], simp, frule_tac x = x in Vr_mem_f_mem[of "v"], assumption+) apply (drule_tac x = x in bspec, simp add:Vr_mem_f_mem) apply simp apply (subst val_pos_mem_Vr[THEN sym, of v'], assumption+, simp add:Vr_mem_f_mem, assumption+) done
lemma (in Corps) valuation_equivTr2:"[valuation K v; valuation K v';
carrier (Vr K v) ⊆ carrier (Vr K v'); vp K v = carrier (Vr K v) ∩ ==> carrier (Vr K v') ⊆ PreCoxeterSystemWithDeletion
pplyng"] frule Vr_ring[of "v']java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 53 apply(rule subsetI) apply (case_tac "x = 0Vr K v')", simp,
Vr_0_f_0[f
subst Vr_0_f_0[of "v", THEN symlength_lconjseq
simp add:Ring.ring_zero) apply (rule contrapos_pp, simp+) apply (frule_tac w_def ss apply (simp add:val_pos_mem_Vr[THEN sym, of "v"]) apply (cut_tac y = "v x"in aneg_le[of "0"], simpqed apply (simp add:Vr_0_f_0[of "v'"]) apply (frule_tac x = "v x"in aless_minus[of _ "0"], simp,
thin_tac "v x < 0", thin_tac "¬ apply (simp add:value_of_inv[THEN sym, of "v"]) apply (cut_tac x = x in invf_closed1, simp, simp, erule conjE) apply (frule_tac x1 = "xlists S \Longrightarrow>S_reduced ss ==>
assumption Cons apply (frule vp_ideal [of "v'"]) apply (frule_tac x = "x<hyphen>K\ from C(2) have "s<>"by sim "vp K v'"], assumption+) with asbs ?thesi apply (frule_tac x = x and y = "xjava.lang.NullPointerException
assumption+, simphence
thin_tac java.lang.NullPointerException apply (simp add:Vr_tOp_f_tOp) apply (cut_tac x = x in linvf, simp, simp) apply (cut_tac field_is_ring, frule Ring.ring_one[of "K" whwhere "flip_altsublist_chain apply (fruleblist_chain_map_Cons_grow
assumption+, simp add:value_of_one, assumption+) apply (frule vp_not_whole[of "v'"], simp) done
lemma (in Corps) eq_carr_eq_Vring:" [ Q"
carrier (Vr K v) = carrier (usingofw∈ apply add done
lemma (in Corps as ∀carrier\le (v )\longrightarrow0\le (v' x)]==> v_equiv K v v'" (** step0. preliminaries. **) apply (rule Vr[of "v"],frule Vr_ring[o "v')
(** step1. show carrier (Vr K v) \<subseteq> carrier (Vr K v') **) apply (frule haveAbs_freelistas\in> Qsing
(** step2. maximal_ideal (Vr K v) (carrier (Vr K v) \<inter> (vp K v')).
contract of the maximal ideal is prime, and a prime is maximal **) apply (frule contract_maximal [of "v" Abs_freelist_append_append as[,"bs]
(** step3. Vring is a local ring, we have (vp K v) = (carrier (Vr K v) ∩ FreeGroup S""freeliftid c = 0" apply (frule Vr_local[of "v""(car from asm(2hav"eliftidrd
assumption+)
(** step4. show carrier (Vr K v') \<subseteq> carrier (Vr K v) **)Q_freelist_freeword apply (frule valuation_equivTr2[of "v""v'"], assumption+,
frule equalityI[of"arrierV K v""carrier (Vr K v')"],
assumption+,
thin_tac "carrier (Vr K v) ⊆ fix x a x: "\inG" "induced_id x = 0" (** step5. vp K v' = vp K v **) apply (frule vp_ideal[of "v'"], fruleRi.ideal_sub[of "Vr Kv" assumption, simp add:Int_absorb1, thin_tac "∀
thin_tac "vp K v' ⊆ carrier (Vr K v')",
cideal )
thin_tac \close (** step6. to show v_equiv K v v', we check whether the normal valuations derivedfromthevaluationshavethesamevalueornot.if(VrK aluationKv))=(VrK(n_valuationKv')),thenwehaveonlyto checkthevaluesoftheelementsinthisuationngjava.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 56
We see (Vr K v) = (Vr K (n_valuation K G a i v)). **) apply (simp add:v_equiv_def,
rule valuations_eqTr1[of "n_val K v""n_val K v'"],
(simp add:n_val_valuation)+,
rule eq_carr_eq_Vring[of "n_val K v""n_val K v'"],
(simp add:n_val_valuation)+,
subst Vr_n_val_Vr[THEN sym, of "v"], assumption+,
subst apply (rule ballI,
frule n_val_valuation[of "v"],
frule n_val_valuation[of "v'"],
_1nval_pos_mem_Vr sym n_val
simp add:Vr_mem_f_mem, simp,
byop s_snocpermutation
thin_tac "carrier frule_tac x1 = x in val_pos_mem_Vr[THEN sym, of "v'"], simp add:Vr_mem_f_mem, simp, frule_tac x = x in val_pos_n_val_pos[of "v'"], simp add:Vr_mem_f_mem, simp, frule_tac x = x in ideal_apow_n_val[of "v
r_n_val_Vr apply (frule eq_carr_eq_Vring[of "v""v'"], assumption+,
frule_tacideal_apow_n_valion
simp add:Vr_n_val_Vr[THEN sym, of "v"],
thin_tac "Vr K v' ♢ _=" xd"al v"
Vr_potent_eq[of "v'"], assumption+,
ym done
java.lang.StringIndexOutOfBoundsException: Index 133 out of bounds for length 81 apply (simp add:v_equiv_def) done
lemma (incaseFalse
v_equiv K v v']==> v_equiv K v' v um_lists@t\rightarrow> C0" apply (simp add:v_equiv_def) done
lemma (in Corps) val_equiv_axiom3:"[
valuation K v'; v_equiv K v v'; v_equiv K v' v'']==> apply (simp add:v_equiv_def) done
lemma (inllbrakk valuation K v]
v_equiv K v n_val apply (frule ` _as `→" apply (rule ballI, rule impI, simp add:val_pos_n_val_pos, assumption) done
section "Prime divisors"
definition prime_divisor :: "[_, 'b ==>
Rightarrow ant(2P_ _ [96,96 e "P v
lemma (in Corps) val_in_P_valuation:"[OpposedThinChamberComplexFoldings
valuation K v'" apply (simp add:prime_divisor_def)using su(,4 done
lemma (in Corps) vals_in_P_equiv:"lemma Bs1nt
W_endomorphism apply ( .et_map done
java.lang.StringIndexOutOfBoundsException: Index 13 out of bounds for length 13 lemma (in Corps) v_in_prime_v:"valuation K v ==> apply (simp add:prime_divisor_def, frule val_equiv_axiom1[of "v"], assumption+) done
lemma (in Corps) some_in_prime_divisor:"valuation K vlemma
>P <in K v apply (subgoal_tac java.lang.NullPointerException rule nonempty_some[of "Pmption
frulevf" apply blast done
lemma (in Corps) valuation_some_in_prime_divisor:"valuation K v ==> valuation K (SOME w. w ∈ OpposedThinChamberComplexFoldings apply (frule some_in_prime_divisor<> foldpairs
simp add:prime_divisor_def) done
lemma (in Corps) valuation_some_in_prime_divisor1:"P ∈ Pds ==> valuation K (SOME w. w ∈ P)" applyfrom apply (simp add:valuation_some_in_prime_divisorby st done
lemma (in Corps) representative_of_pd_valuation: "P ∈ Pds ==> valuation K (ν\ apply d:pime_dviosde, erule exE, erule conjE, simp add:normal_valuation_belonging_to_prime_divisor_def, tn_oe_piedvsr
apply (rule n_val_valuation, assumption+) done
lemma (in Corps) some_in_P_equiv:"valuation
v_equiv K v (SOME sum_list ss = sum_listcs apply (frule some_in_prime_divisorthDeletiontemWithDeletion apply (rule vals_in_P_equiv, assumption+) done
lemma (in Corps) n_val_n_val1:"P ∈Locale and complex definitions› apply (simp add: normal_valuation_belonging_to_prime_divisor_def, frule va apply (rule n_val_n_val[of "SOME v. v ∈ done
lemma (in Corps) P_eq_val_equiv:"[valuation K v; valuation K v']==> (v_equiv K v v') = (P v apply (rule iffI, rule equalty, rule subsetI, simp add:prime_divisor_def, erule conjE, frule val_equiv_axiom2[of "v" "v'"], assumption+, rule val_equiv_axiom3[of "v'" "v"], assumption+, rule subsetI, simp add:prime_divisor_def, erule conjE) apply (rule val_equiv_axiom3[of "v" "v'"], assumption+, frule v_in_prime_v[of "v"], simp, thin_tac "P v = P v'
simp add:prime_divisor_def,
rule val_equiv_axiom2[of "v'""v"], assumption+) done
lemma
(P = P') = (ν P apply (rule iffI, simp) apply (simp add:prime_divisors_def,
(erule exE)+, (erule conjE)+) apply (simp add:normal_valuation_belonging_to_prime_divisor_def,
frule_tac v = v in some_in_P_equiv,
frule_tac v = va in some_in_P_equiv,
subgoal_tac java.lang.NullPointerException: Cannot invoke "String.equals(Object)" because "macro" is null ( v= v in some_in_prime_di, frule_tac somi_redvio, frule_tac v = v and v' = "SOME w. w ∈ Pjava.lang.NullPointerException "SOME w. w ∈ P va"in val_equiv_axiom3) apply (simp add:prime_divisor_def,
simp add, assumption
frule_tac v = va and v' = "SOME w. w ∈ P va(w +o ⟨{s}⟩)""w +o ⟨"]
val_equiv_axiom2,
simp apply (frule_tac v' = "SOME w. w ∈K va equiv_axiom3 simpe_divisor_defe simp add:prime_diviso, assumpt, frule_tac nd ' =vainP_q_a_equiv, sumtion) apply simp apply (simp add:v_equiv_def) done
lemma (in Corps) n_val_representative:"P ∈ Pds ==> (ν P) ∈ P" apply (simp add:prime_divisors_def, erule exE, erule assum "SimplicialComplex <> w∈
simp add:normal_valuation_belonging_to_prime_divisor_def,
frule_tac
frule_tac v = "SOME w. w ∈ P v"inspecial_cosets_defef
n_val_equiv_val,
frule_tac v = v in some_in_P_equiv,
frule_tac v = v and v' = java.lang.NullPointerException "n_val K (SOME w. w ∈ P v)" in val_equiv_axiom3, assumption+, frule_tac v = v in n_val_valuation, simp add:prime_divisor_def, simp add:n_val_valuation) done
lemma (in Corps) val_equiv_eq_pdiv:"[ P ∈ Pdsjava.lang.NullPointerException
valuation K v'; v_equiv K v v'; v ∈ P; v' ∈s. ⟨) ` S" apply (simp add:prime_divisors_def, (erule exE)+, (erule conjE)+) apply (rename_tac w w', frule_tac v = w in vals_in_P_equiv[of _ "v"], simp, v =w' in al[of _ ',sm, frule_tac v = w and v' = v and v'' = v' in val_equiv_axiom3, assumption+, frule_tac v = w' in val_equiv_axiom2[of _ "v'"], assumption+, frule_tacmaxsimp_ver assumption+) apply simp+ apply (simp add:P_eq_val_equiv) done
definition
valuations :: "[_ , nat, nat ==> ('r ==> ant)] ==> usinusing genby_lcose specia_coses[of"] special_coset_singleton "valuations K n vv ⟷ (∀by fast
definition vals_nonequiv :: "[_, nat, nat ==> ('r ==> ant)] ==> bool" where using facets by (sby (si add: enset_genby_lcoset_order2) vals_nonequiv K n vv \longleftrightarrowvaluat K n vv \and> (∀j≤n. ∀ "ws"s]
definition Ostrowski_elem :: "[_, nat, nat ==> ('b ==> ant), 'b] ==> bool" where "Ostrowski_elem K n vv x ⟷
(0 < (vv 0 (1As a chamber complex›
(** vv 0, vv 1, vv 2,\<dots>, vv n are valuations **)
lemma (in Corps) Ostrowski_elem_0:"[vals_nonequiv K n vv; x ∈ carrier K;
java.lang.NullPointerException apply (simp add:Ostrowski_elem_def) done
lemma (in Corps) Ostrowski_elem_Suc:"[vals_nonequiv K n vv; x ∈
Ostrowski_elem K n vv x; j ∈ gallery_CConsI apply (simp add:Ostrowski_elem_def) done
lemmanonequiv_valuationvals_nonequiv K n vv; m ≤==>
valuation K (vv m)" apply (simp add:vals_nonequiv_def, erule conjE) apply (thin_tac "∀j≤n. ∀ (t ule apply (simp add:valuations_def) done
lemma (in Corps) vals_nonequiv:"[ i ≤ ¬ (v_equiv K (vv i) (vv j))" apply (simp add:vals_nonequiv_def) done
lemma (in Corps) skip_vals_nonequiv:"vals_nonequiv K (Suc (Suc n)) vv ==> vals_nonequiv K (Suc n) (compose {l. l ≤ (Suc n)} vv (skip j))" apply (subst vals_nonequiv_deffrommswhere> S" "w = sum_list ss" apply (rule conjI) apply (subst valuations_def, rule allI, rule impI, simp dd:opoedf) apply (cut_tac l = ja and n = "Suc n" in skip_mem[of _ _ "j"], simp, frule_tac m = "skip j ja" in vals_nonequiv_valuation[of "Suc (Suc n)" "vv"], simp, assumption) apply ((rule allI, rule impI)+, rule impI, cut_tac l = ja and n = "Suc n" in skip_mem[of _ _ "j"], simp, cut_tac l = l and n = "Suc n" in skip_mem[of _ _ "j"], simp+) apply (cut_tac i = ja and j = l in skip_inj[of _ "Suc n" _ "j"], simp+, simp add:compose_def, rule_tac i = "skip j ja" and j = "skip j l" in vals_nonequiv[of "n"], assumption+) done
lemma (in Corps) not_v_equiv_reflex:"[valuation K v;using ¬ apply (simp add:v_equiv_def) done
lemma (in Corps) nonequiv_ex_Ostrowski_elem:"[valuation K v; valuation K v'; ¬ v_equiv K v v']==>∃lemma card_chamber: "amber card x = card S" apply (subgoal_tac "¬ (∀x∈, of "smap 0 prefer 2 apply (rule contrapos_pp, simp+, frule valuations_equiv[of "v" "v'"], assumption+, simp add:val_equiv_axiom2[of v v']) apply (simp, erule bexE, erule conjE, simp add:aneg_le) apply blast done
lemma (in Corps) field_op_minus:"[a ∈
-a (a ⋅r (bsm apply (cut_tac invf_closed1[of "b"], simp,
erule conjE, cut_tac field_is_ring,
simp add:Ring.ring_inv1 done
lemma (in Corps) OstrowskiTr1:"[ valuationspecial_coset1phi w0 s] 0≤ (v s); v t < 0]==> s ± apply (rule contrapos_pp, simp+,
cut_tac field_is_ring, frule Ring.ring_is_ag[of ""java.lang.StringIndexOutOfBoundsException: Index 60 out of bounds for length 60
simp only:aGroup.ag_plus_zero[THEN sym, of "K""s""t"]) apply (simp add:val_minus_eq[of "v""t"]) done
lemma (in Corps) OstrowskiTr2:"[valuation K v; s ∈ carrier K; t ∈ CoxeterComplex.smap S {w0} ==> ψC0)" 0≤ (v s); v t < 0]==> apply (cut_tac field_is_ring, frule Ring.ring_is_ag[of "K"],
frule OstrowskiTr1[ofv"" t"] as, frule field_one_plus_frac2[of "t" "s"], assumption+, simp add:aGroup.ag_pOp_commute) apply (subst aGroup.ag_pOp_commute[of "K" "s" "t"], assumption+, simp, simp add:aGroup.ag_pOp_commute[of "K" "t" "s"], thin_tac "1r±
frule aGroup.ag_pOp_closed C:"chamber cut_tac invf_closed1[of "s ± t"], simp, erule conjE) apply (simp add:val_t2p, simp add:value_of_inv, frule aless_le_trans[of ""0"" s" umption
frule value_less_eq[THEN sym, of v t s], assumption+,
simp add:aGroup.ag_pOp_commute
fruleof] add, simp done
lemma (in Corps) OstrowskiTr3:"[valuation K v; s ∈ v(1,2) havφ v1 ∈ C0" 0≤\Longrightarrow <vt\cdot>\<hyphen>K apply (frule aless_le_trans[of "v s""0""v t"], assumption+,
cut_tac, frule.ring_is_ag[of"K"],
aGroup[ofK " "", ssumptio+, frule OstrowskiTr1[of v t s], assmpo+ frule value_less_eq[THEN sym, of v s t], assumption+) apply (simp add:aGroup.ag_pOp_commute[of K t s], cut_tac invf_closed1[of "s ±
erule conjE, simp add:val_t2p[of v], simp add:value_of_inv) apply (cut_tac aless_diff_poss[of "v s""v t"],
simp add:diff_ant_def, simp+) done
lemma (in Corps) restrict_Ostrowski_elem x ∈
Ostrowski_elem ( n vv ==> x applysimpOstrowski_elem_def
erule conjE, rule ballI, simp add:nset_def,
nsertSuc done
lemma (in Corps.vertex_map
vals_nonequiv K (Suc n) vv apply (simp "label_wrt C0 \\phi""fixespointwise φ C0"
erule conjE, simp add:valuations_def) done
apply (frule val_t2p[of v x "1r± (-a x)"], assumption+,
frule val_neg_nonzero[of v x], assumption+,
frule val_nonzero_z[of v x], assumption+, erule exE,
frule_tac z = z in aadd_less_mono_z[of "v (1r± (-a x))""0"],
simp add:aadd_0_l,
simp only:aadd_commute[of "v (1r± -a x)"],
frule_tac x = "ant z + v (1r± -a x)"and y ="ant z"in
aless_trans[of _ _ "0"], assumption,
drule sym, simp)
apply (frule_tac x = x and y = "1r± -a x"in Ring.ring_tOp_closed[of "K"],
assumption+,
frule one_plus_x_nonzero[of v "x ⋅r (1r± (-a x))"],
assumption+, erule conjE,
rule val_neg_nonzero[of v], assumption+) done
lemma (in Corps) OstrowskiTr7:"[valuation K v; x ∈ carrier K; ¬ 0 ≤ (v x)]==> 1r± -a (x ⋅r ((1r± x ⋅r (1r± -a x))<hyphen>K)) = (1r± -a x ± x ⋅r (1r± -a x)) ⋅r ((1r± x ⋅r (1r± -a x))<hyphen>K)" apply (cut_tac field_is_ring,
frule OstrowskiTr6[of v x], assumption+, simp, erule conjE,
cut_tac field_is_idom,
cut_tac invf_closed1[of "1r± x ⋅r (1r± -a x)"], simp,
frule Ring.ring_is_ag[of "K"],
frule aGroup.ag_mOp_closed[of "K""x"], assumption+,
frule Ring.ring_one[of "K"],
frule aGroup.ag_pOp_closed[of "K""1r""-a x"], assumption+,
rule Idomain.idom_mult_cancel_r[of K "1r± -a (x ⋅r ((1r± x ⋅r (1r± -a x))<hyphen>K))""(1r± -a x ± x ⋅r (1r± -a x)) ⋅r ((1r± x ⋅r (1r± -a x))<hyphen>K)""(1r± x ⋅r (1r± -a x))"],
assumption+) apply (rule aGroup.ag_pOp_closed, assumption+, rule aGroup.ag_mOp_closed,
assumption+,
rule Ring.ring_tOp_closed, assumption+, simp, rule Ring.ring_tOp_closed,
assumption+,
(rule aGroup.ag_pOp_closed, assumption+)+,
rule Ring.ring_tOp_closed, assumption+, simp, assumption+,
subst Ring.ring_tOp_assoc, assumption+,
rule aGroup.ag_pOp_closed, assumption+,
simp add:Ring.ring_tOp_closed, simp, simp) apply (subst linvf[of "1r± x ⋅r (1r± -a x)"], simp,
(subst Ring.ring_distrib2, assumption+)+, erule conjE) apply (rule aGroup.ag_mOp_closed, assumption,
rule Ring.ring_tOp_closed, assumption+,
subst Ring.ring_r_one, assumption+) apply (rule aGroup.ag_pOp_closed, assumption+,
rule Ring.ring_tOp_closed, assumption+,
erule conjE,
simp add:Ring.ring_inv1_1,
simp add:Ring.ring_tOp_assoc[of K "-a x""(1r± x ⋅r (1r± -a x))<hyphen> K"],
simp add:linvf, simp add:Ring.ring_r_one Ring.ring_l_one,
frule Ring.ring_tOp_closed[of K x "1r± -a x"], assumption+,
simp add:aGroup.ag_pOp_assoc, simp add:aGroup.ag_pOp_commute) apply simp done
lemma (in Corps) val_unit_cond:"[ valuation K v; x ∈ carrier K; 0 < (v (1r± -a x))]==> v x = 0" apply (cut_tac field_is_ring, frule Ring.ring_is_ag[of "K"],
frule Ring.ring_one[of "K"])
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.