equal
deleted
inserted
replaced
81 unfolding Bfun_def |
81 unfolding Bfun_def |
82 proof (intro exI conjI allI) |
82 proof (intro exI conjI allI) |
83 show "0 < max K 1" by simp |
83 show "0 < max K 1" by simp |
84 next |
84 next |
85 show "eventually (\<lambda>x. norm (f x) \<le> max K 1) F" |
85 show "eventually (\<lambda>x. norm (f x) \<le> max K 1) F" |
86 using K by (rule eventually_elim1, simp) |
86 using K by (rule eventually_mono, simp) |
87 qed |
87 qed |
88 |
88 |
89 lemma BfunE: |
89 lemma BfunE: |
90 assumes "Bfun f F" |
90 assumes "Bfun f F" |
91 obtains B where "0 < B" and "eventually (\<lambda>x. norm (f x) \<le> B) F" |
91 obtains B where "0 < B" and "eventually (\<lambda>x. norm (f x) \<le> B) F" |
895 proof - |
895 proof - |
896 from a have "0 < norm a" by simp |
896 from a have "0 < norm a" by simp |
897 with f have "eventually (\<lambda>x. dist (f x) a < norm a) F" |
897 with f have "eventually (\<lambda>x. dist (f x) a < norm a) F" |
898 by (rule tendstoD) |
898 by (rule tendstoD) |
899 then have "eventually (\<lambda>x. f x \<noteq> 0) F" |
899 then have "eventually (\<lambda>x. f x \<noteq> 0) F" |
900 unfolding dist_norm by (auto elim!: eventually_elim1) |
900 unfolding dist_norm by (auto elim!: eventually_mono) |
901 with a have "eventually (\<lambda>x. inverse (f x) - inverse a = |
901 with a have "eventually (\<lambda>x. inverse (f x) - inverse a = |
902 - (inverse (f x) * (f x - a) * inverse a)) F" |
902 - (inverse (f x) * (f x - a) * inverse a)) F" |
903 by (auto elim!: eventually_elim1 simp: inverse_diff_inverse) |
903 by (auto elim!: eventually_mono simp: inverse_diff_inverse) |
904 moreover have "Zfun (\<lambda>x. - (inverse (f x) * (f x - a) * inverse a)) F" |
904 moreover have "Zfun (\<lambda>x. - (inverse (f x) * (f x - a) * inverse a)) F" |
905 by (intro Zfun_minus Zfun_mult_left |
905 by (intro Zfun_minus Zfun_mult_left |
906 bounded_bilinear.Bfun_prod_Zfun [OF bounded_bilinear_mult] |
906 bounded_bilinear.Bfun_prod_Zfun [OF bounded_bilinear_mult] |
907 Bfun_inverse [OF f a] f [unfolded tendsto_Zfun_iff]) |
907 Bfun_inverse [OF f a] f [unfolded tendsto_Zfun_iff]) |
908 ultimately show ?thesis |
908 ultimately show ?thesis |
1147 proof safe |
1147 proof safe |
1148 fix Z :: real assume [arith]: "0 < Z" |
1148 fix Z :: real assume [arith]: "0 < Z" |
1149 then have "eventually (\<lambda>x. x < inverse Z) (nhds 0)" |
1149 then have "eventually (\<lambda>x. x < inverse Z) (nhds 0)" |
1150 by (auto simp add: eventually_nhds_metric dist_real_def intro!: exI[of _ "\<bar>inverse Z\<bar>"]) |
1150 by (auto simp add: eventually_nhds_metric dist_real_def intro!: exI[of _ "\<bar>inverse Z\<bar>"]) |
1151 then show "eventually (\<lambda>x. x \<noteq> 0 \<longrightarrow> x \<in> {0<..} \<longrightarrow> Z \<le> inverse x) (nhds 0)" |
1151 then show "eventually (\<lambda>x. x \<noteq> 0 \<longrightarrow> x \<in> {0<..} \<longrightarrow> Z \<le> inverse x) (nhds 0)" |
1152 by (auto elim!: eventually_elim1 simp: inverse_eq_divide field_simps) |
1152 by (auto elim!: eventually_mono simp: inverse_eq_divide field_simps) |
1153 qed |
1153 qed |
1154 |
1154 |
1155 lemma tendsto_inverse_0: |
1155 lemma tendsto_inverse_0: |
1156 fixes x :: "_ \<Rightarrow> 'a::real_normed_div_algebra" |
1156 fixes x :: "_ \<Rightarrow> 'a::real_normed_div_algebra" |
1157 shows "(inverse ---> (0::'a)) at_infinity" |
1157 shows "(inverse ---> (0::'a)) at_infinity" |
1200 (metis tendsto_inverse_0 filterlim_mono at_top_le_at_infinity order_refl) |
1200 (metis tendsto_inverse_0 filterlim_mono at_top_le_at_infinity order_refl) |
1201 |
1201 |
1202 lemma filterlim_inverse_at_top: |
1202 lemma filterlim_inverse_at_top: |
1203 "(f ---> (0 :: real)) F \<Longrightarrow> eventually (\<lambda>x. 0 < f x) F \<Longrightarrow> LIM x F. inverse (f x) :> at_top" |
1203 "(f ---> (0 :: real)) F \<Longrightarrow> eventually (\<lambda>x. 0 < f x) F \<Longrightarrow> LIM x F. inverse (f x) :> at_top" |
1204 by (intro filterlim_compose[OF filterlim_inverse_at_top_right]) |
1204 by (intro filterlim_compose[OF filterlim_inverse_at_top_right]) |
1205 (simp add: filterlim_def eventually_filtermap eventually_elim1 at_within_def le_principal) |
1205 (simp add: filterlim_def eventually_filtermap eventually_mono at_within_def le_principal) |
1206 |
1206 |
1207 lemma filterlim_inverse_at_bot_neg: |
1207 lemma filterlim_inverse_at_bot_neg: |
1208 "LIM x (at_left (0::real)). inverse x :> at_bot" |
1208 "LIM x (at_left (0::real)). inverse x :> at_bot" |
1209 by (simp add: filterlim_inverse_at_top_right filterlim_uminus_at_bot filterlim_at_left_to_right) |
1209 by (simp add: filterlim_inverse_at_top_right filterlim_uminus_at_bot filterlim_at_left_to_right) |
1210 |
1210 |
1333 shows "LIM x F. (f x * g x :: real) :> at_top" |
1333 shows "LIM x F. (f x * g x :: real) :> at_top" |
1334 unfolding filterlim_at_top_gt[where c=0] |
1334 unfolding filterlim_at_top_gt[where c=0] |
1335 proof safe |
1335 proof safe |
1336 fix Z :: real assume "0 < Z" |
1336 fix Z :: real assume "0 < Z" |
1337 from f \<open>0 < c\<close> have "eventually (\<lambda>x. c / 2 < f x) F" |
1337 from f \<open>0 < c\<close> have "eventually (\<lambda>x. c / 2 < f x) F" |
1338 by (auto dest!: tendstoD[where e="c / 2"] elim!: eventually_elim1 |
1338 by (auto dest!: tendstoD[where e="c / 2"] elim!: eventually_mono |
1339 simp: dist_real_def abs_real_def split: split_if_asm) |
1339 simp: dist_real_def abs_real_def split: split_if_asm) |
1340 moreover from g have "eventually (\<lambda>x. (Z / c * 2) \<le> g x) F" |
1340 moreover from g have "eventually (\<lambda>x. (Z / c * 2) \<le> g x) F" |
1341 unfolding filterlim_at_top by auto |
1341 unfolding filterlim_at_top by auto |
1342 ultimately show "eventually (\<lambda>x. Z \<le> f x * g x) F" |
1342 ultimately show "eventually (\<lambda>x. Z \<le> f x * g x) F" |
1343 proof eventually_elim |
1343 proof eventually_elim |
1407 shows "LIM x F. (f x + g x :: real) :> at_top" |
1407 shows "LIM x F. (f x + g x :: real) :> at_top" |
1408 unfolding filterlim_at_top_gt[where c=0] |
1408 unfolding filterlim_at_top_gt[where c=0] |
1409 proof safe |
1409 proof safe |
1410 fix Z :: real assume "0 < Z" |
1410 fix Z :: real assume "0 < Z" |
1411 from f have "eventually (\<lambda>x. c - 1 < f x) F" |
1411 from f have "eventually (\<lambda>x. c - 1 < f x) F" |
1412 by (auto dest!: tendstoD[where e=1] elim!: eventually_elim1 simp: dist_real_def) |
1412 by (auto dest!: tendstoD[where e=1] elim!: eventually_mono simp: dist_real_def) |
1413 moreover from g have "eventually (\<lambda>x. Z - (c - 1) \<le> g x) F" |
1413 moreover from g have "eventually (\<lambda>x. Z - (c - 1) \<le> g x) F" |
1414 unfolding filterlim_at_top by auto |
1414 unfolding filterlim_at_top by auto |
1415 ultimately show "eventually (\<lambda>x. Z \<le> f x + g x) F" |
1415 ultimately show "eventually (\<lambda>x. Z \<le> f x + g x) F" |
1416 by eventually_elim simp |
1416 by eventually_elim simp |
1417 qed |
1417 qed |