1851 using open_subset_interior[of S "- T"] |
1851 using open_subset_interior[of S "- T"] |
1852 using interior_subset[of "- T"] |
1852 using interior_subset[of "- T"] |
1853 unfolding closure_interior |
1853 unfolding closure_interior |
1854 by auto |
1854 by auto |
1855 |
1855 |
1856 lemma open_inter_closure_subset: |
1856 lemma open_Int_closure_subset: |
1857 "open S \<Longrightarrow> (S \<inter> (closure T)) \<subseteq> closure(S \<inter> T)" |
1857 "open S \<Longrightarrow> (S \<inter> (closure T)) \<subseteq> closure(S \<inter> T)" |
1858 proof |
1858 proof |
1859 fix x |
1859 fix x |
1860 assume as: "open S" "x \<in> S \<inter> closure T" |
1860 assume as: "open S" "x \<in> S \<inter> closure T" |
1861 { |
1861 { |
2639 apply (rule Lim_null_comparison [OF _ *]) |
2639 apply (rule Lim_null_comparison [OF _ *]) |
2640 apply (simp add: eventually_mono [OF g] mult_right_mono) |
2640 apply (simp add: eventually_mono [OF g] mult_right_mono) |
2641 done |
2641 done |
2642 then show ?thesis |
2642 then show ?thesis |
2643 by (subst tendsto_norm_zero_iff [symmetric]) (simp add: norm_mult) |
2643 by (subst tendsto_norm_zero_iff [symmetric]) (simp add: norm_mult) |
|
2644 qed |
|
2645 |
|
2646 lemma lim_null_scaleR_bounded: |
|
2647 assumes f: "(f \<longlongrightarrow> 0) net" and gB: "eventually (\<lambda>a. f a = 0 \<or> norm(g a) \<le> B) net" |
|
2648 shows "((\<lambda>n. f n *\<^sub>R g n) \<longlongrightarrow> 0) net" |
|
2649 proof |
|
2650 fix \<epsilon>::real |
|
2651 assume "0 < \<epsilon>" |
|
2652 then have B: "0 < \<epsilon> / (abs B + 1)" by simp |
|
2653 have *: "\<bar>f x\<bar> * norm (g x) < \<epsilon>" if f: "\<bar>f x\<bar> * (\<bar>B\<bar> + 1) < \<epsilon>" and g: "norm (g x) \<le> B" for x |
|
2654 proof - |
|
2655 have "\<bar>f x\<bar> * norm (g x) \<le> \<bar>f x\<bar> * B" |
|
2656 by (simp add: mult_left_mono g) |
|
2657 also have "... \<le> \<bar>f x\<bar> * (\<bar>B\<bar> + 1)" |
|
2658 by (simp add: mult_left_mono) |
|
2659 also have "... < \<epsilon>" |
|
2660 by (rule f) |
|
2661 finally show ?thesis . |
|
2662 qed |
|
2663 show "\<forall>\<^sub>F x in net. dist (f x *\<^sub>R g x) 0 < \<epsilon>" |
|
2664 apply (rule eventually_mono [OF eventually_conj [OF tendstoD [OF f B] gB] ]) |
|
2665 apply (auto simp: \<open>0 < \<epsilon>\<close> divide_simps * split: if_split_asm) |
|
2666 done |
2644 qed |
2667 qed |
2645 |
2668 |
2646 text\<open>Deducing things about the limit from the elements.\<close> |
2669 text\<open>Deducing things about the limit from the elements.\<close> |
2647 |
2670 |
2648 lemma Lim_in_closed_set: |
2671 lemma Lim_in_closed_set: |
3984 then have "x \<notin> closure (-S)" |
4007 then have "x \<notin> closure (-S)" |
3985 by (auto simp: closure_complement subset_eq[symmetric] intro: interiorI) |
4008 by (auto simp: closure_complement subset_eq[symmetric] intro: interiorI) |
3986 with x have "x \<in> closure X - closure (-S)" |
4009 with x have "x \<in> closure X - closure (-S)" |
3987 by auto |
4010 by auto |
3988 also have "\<dots> \<subseteq> closure (X \<inter> S)" |
4011 also have "\<dots> \<subseteq> closure (X \<inter> S)" |
3989 using \<open>open S\<close> open_inter_closure_subset[of S X] by (simp add: closed_Compl ac_simps) |
4012 using \<open>open S\<close> open_Int_closure_subset[of S X] by (simp add: closed_Compl ac_simps) |
3990 finally have "X \<inter> S \<noteq> {}" by auto |
4013 finally have "X \<inter> S \<noteq> {}" by auto |
3991 then show False using \<open>X \<inter> A = {}\<close> \<open>S \<subseteq> A\<close> by auto |
4014 then show False using \<open>X \<inter> A = {}\<close> \<open>S \<subseteq> A\<close> by auto |
3992 next |
4015 next |
3993 assume "\<forall>A S. S \<subseteq> A \<longrightarrow> open S \<longrightarrow> x \<in> S \<longrightarrow> X \<inter> A \<noteq> {}" |
4016 assume "\<forall>A S. S \<subseteq> A \<longrightarrow> open S \<longrightarrow> x \<in> S \<longrightarrow> X \<inter> A \<noteq> {}" |
3994 from this[THEN spec, of "- X", THEN spec, of "- closure X"] |
4017 from this[THEN spec, of "- X", THEN spec, of "- closure X"] |