src/HOL/Limits.thy
changeset 67958 732c0b059463
parent 67950 99eaa5cedbb7
child 68064 b249fab48c76
equal deleted inserted replaced
67957:55f00429da84 67958:732c0b059463
   173 
   173 
   174 lemma Bseq_eventually_mono:
   174 lemma Bseq_eventually_mono:
   175   assumes "eventually (\<lambda>n. norm (f n) \<le> norm (g n)) sequentially" "Bseq g"
   175   assumes "eventually (\<lambda>n. norm (f n) \<le> norm (g n)) sequentially" "Bseq g"
   176   shows "Bseq f"
   176   shows "Bseq f"
   177 proof -
   177 proof -
   178   from assms(1) obtain N where N: "\<And>n. n \<ge> N \<Longrightarrow> norm (f n) \<le> norm (g n)"
   178   from assms(2) obtain K where "0 < K" and "eventually (\<lambda>n. norm (g n) \<le> K) sequentially"
   179     by (auto simp: eventually_at_top_linorder)
   179     unfolding Bfun_def by fast
   180   moreover from assms(2) obtain K where K: "\<And>n. norm (g n) \<le> K"
   180   with assms(1) have "eventually (\<lambda>n. norm (f n) \<le> K) sequentially"
   181     by (blast elim!: BseqE)
   181     by (fast elim: eventually_elim2 order_trans)
   182   ultimately have "norm (f n) \<le> max K (Max {norm (f n) |n. n < N})" for n
   182   with `0 < K` show "Bseq f"
   183     apply (cases "n < N")
   183     unfolding Bfun_def by fast
   184     subgoal by (rule max.coboundedI2, rule Max.coboundedI) auto
       
   185     subgoal by (rule max.coboundedI1) (force intro: order.trans[OF N K])
       
   186     done
       
   187   then show ?thesis by (blast intro: BseqI')
       
   188 qed
   184 qed
   189 
   185 
   190 lemma lemma_NBseq_def: "(\<exists>K > 0. \<forall>n. norm (X n) \<le> K) \<longleftrightarrow> (\<exists>N. \<forall>n. norm (X n) \<le> real(Suc N))"
   186 lemma lemma_NBseq_def: "(\<exists>K > 0. \<forall>n. norm (X n) \<le> K) \<longleftrightarrow> (\<exists>N. \<forall>n. norm (X n) \<le> real(Suc N))"
   191 proof safe
   187 proof safe
   192   fix K :: real
   188   fix K :: real
  2262 qed
  2258 qed
  2263 
  2259 
  2264 
  2260 
  2265 subsection \<open>Power Sequences\<close>
  2261 subsection \<open>Power Sequences\<close>
  2266 
  2262 
  2267 text \<open>
       
  2268   The sequence @{term "x^n"} tends to 0 if @{term "0\<le>x"} and @{term
       
  2269   "x<1"}.  Proof will use (NS) Cauchy equivalence for convergence and
       
  2270   also fact that bounded and monotonic sequence converges.
       
  2271 \<close>
       
  2272 
       
  2273 lemma Bseq_realpow: "0 \<le> x \<Longrightarrow> x \<le> 1 \<Longrightarrow> Bseq (\<lambda>n. x ^ n)"
  2263 lemma Bseq_realpow: "0 \<le> x \<Longrightarrow> x \<le> 1 \<Longrightarrow> Bseq (\<lambda>n. x ^ n)"
  2274   for x :: real
  2264   for x :: real
  2275   apply (simp add: Bseq_def)
  2265   apply (simp add: Bseq_def)
  2276   apply (rule_tac x = 1 in exI)
  2266   apply (rule_tac x = 1 in exI)
  2277   apply (simp add: power_abs)
  2267   apply (simp add: power_abs)
  2711   then show ?thesis
  2701   then show ?thesis
  2712     by auto
  2702     by auto
  2713 qed
  2703 qed
  2714 
  2704 
  2715 lemma open_Collect_positive:
  2705 lemma open_Collect_positive:
  2716   fixes f :: "'a::t2_space \<Rightarrow> real"
  2706   fixes f :: "'a::topological_space \<Rightarrow> real"
  2717   assumes f: "continuous_on s f"
  2707   assumes f: "continuous_on s f"
  2718   shows "\<exists>A. open A \<and> A \<inter> s = {x\<in>s. 0 < f x}"
  2708   shows "\<exists>A. open A \<and> A \<inter> s = {x\<in>s. 0 < f x}"
  2719   using continuous_on_open_invariant[THEN iffD1, OF f, rule_format, of "{0 <..}"]
  2709   using continuous_on_open_invariant[THEN iffD1, OF f, rule_format, of "{0 <..}"]
  2720   by (auto simp: Int_def field_simps)
  2710   by (auto simp: Int_def field_simps)
  2721 
  2711 
  2722 lemma open_Collect_less_Int:
  2712 lemma open_Collect_less_Int:
  2723   fixes f g :: "'a::t2_space \<Rightarrow> real"
  2713   fixes f g :: "'a::topological_space \<Rightarrow> real"
  2724   assumes f: "continuous_on s f"
  2714   assumes f: "continuous_on s f"
  2725     and g: "continuous_on s g"
  2715     and g: "continuous_on s g"
  2726   shows "\<exists>A. open A \<and> A \<inter> s = {x\<in>s. f x < g x}"
  2716   shows "\<exists>A. open A \<and> A \<inter> s = {x\<in>s. f x < g x}"
  2727   using open_Collect_positive[OF continuous_on_diff[OF g f]] by (simp add: field_simps)
  2717   using open_Collect_positive[OF continuous_on_diff[OF g f]] by (simp add: field_simps)
  2728 
  2718