equal
deleted
inserted
replaced
1131 apply (rule mult_right_mono [OF \<delta>]) |
1131 apply (rule mult_right_mono [OF \<delta>]) |
1132 apply (auto simp: dist_commute Rings.ordered_semiring_class.mult_right_mono \<delta>) |
1132 apply (auto simp: dist_commute Rings.ordered_semiring_class.mult_right_mono \<delta>) |
1133 done |
1133 done |
1134 with \<open>e>0\<close> show ?thesis by force |
1134 with \<open>e>0\<close> show ?thesis by force |
1135 qed |
1135 qed |
1136 have "inj (( * ) (deriv f \<xi>))" |
1136 have "inj ((*) (deriv f \<xi>))" |
1137 using dnz by simp |
1137 using dnz by simp |
1138 then obtain g' where g': "linear g'" "g' \<circ> ( * ) (deriv f \<xi>) = id" |
1138 then obtain g' where g': "linear g'" "g' \<circ> (*) (deriv f \<xi>) = id" |
1139 using linear_injective_left_inverse [of "( * ) (deriv f \<xi>)"] |
1139 using linear_injective_left_inverse [of "(*) (deriv f \<xi>)"] |
1140 by (auto simp: linear_times) |
1140 by (auto simp: linear_times) |
1141 show ?thesis |
1141 show ?thesis |
1142 apply (rule has_derivative_locally_injective [OF S, where f=f and f' = "\<lambda>z h. deriv f z * h" and g' = g']) |
1142 apply (rule has_derivative_locally_injective [OF S, where f=f and f' = "\<lambda>z h. deriv f z * h" and g' = g']) |
1143 using g' * |
1143 using g' * |
1144 apply (simp_all add: linear_conv_bounded_linear that) |
1144 apply (simp_all add: linear_conv_bounded_linear that) |
2081 apply (rule derivative_eq_intros | simp add: C_def False fo)+ |
2081 apply (rule derivative_eq_intros | simp add: C_def False fo)+ |
2082 using \<open>0 < r\<close> |
2082 using \<open>0 < r\<close> |
2083 apply (simp add: C_def False fo) |
2083 apply (simp add: C_def False fo) |
2084 apply (simp add: derivative_intros dfa complex_derivative_chain) |
2084 apply (simp add: derivative_intros dfa complex_derivative_chain) |
2085 done |
2085 done |
2086 have sb1: "( * ) (C * r) ` (\<lambda>z. f (a + of_real r * z) / (C * r)) ` ball 0 1 |
2086 have sb1: "(*) (C * r) ` (\<lambda>z. f (a + of_real r * z) / (C * r)) ` ball 0 1 |
2087 \<subseteq> f ` ball a r" |
2087 \<subseteq> f ` ball a r" |
2088 using \<open>0 < r\<close> by (auto simp: dist_norm norm_mult C_def False) |
2088 using \<open>0 < r\<close> by (auto simp: dist_norm norm_mult C_def False) |
2089 have sb2: "ball (C * r * b) r' \<subseteq> ( * ) (C * r) ` ball b t" |
2089 have sb2: "ball (C * r * b) r' \<subseteq> (*) (C * r) ` ball b t" |
2090 if "1 / 12 < t" for b t |
2090 if "1 / 12 < t" for b t |
2091 proof - |
2091 proof - |
2092 have *: "r * cmod (deriv f a) / 12 \<le> r * (t * cmod (deriv f a))" |
2092 have *: "r * cmod (deriv f a) / 12 \<le> r * (t * cmod (deriv f a))" |
2093 using that \<open>0 < r\<close> less_eq_real_def mult.commute mult.right_neutral mult_left_mono norm_ge_zero times_divide_eq_right |
2093 using that \<open>0 < r\<close> less_eq_real_def mult.commute mult.right_neutral mult_left_mono norm_ge_zero times_divide_eq_right |
2094 by auto |
2094 by auto |