src/HOL/Transcendental.thy
changeset 65204 d23eded35a33
parent 65109 a79c1080f1e9
child 65552 f533820e7248
equal deleted inserted replaced
65203:314246c6eeaa 65204:d23eded35a33
  1491   apply (subst suminf_of_real)
  1491   apply (subst suminf_of_real)
  1492    apply (rule summable_exp_generic)
  1492    apply (rule summable_exp_generic)
  1493   apply (simp add: scaleR_conv_of_real)
  1493   apply (simp add: scaleR_conv_of_real)
  1494   done
  1494   done
  1495 
  1495 
       
  1496 lemmas of_real_exp = exp_of_real[symmetric]
       
  1497 
  1496 corollary exp_in_Reals [simp]: "z \<in> \<real> \<Longrightarrow> exp z \<in> \<real>"
  1498 corollary exp_in_Reals [simp]: "z \<in> \<real> \<Longrightarrow> exp z \<in> \<real>"
  1497   by (metis Reals_cases Reals_of_real exp_of_real)
  1499   by (metis Reals_cases Reals_of_real exp_of_real)
  1498 
  1500 
  1499 lemma exp_not_eq_zero [simp]: "exp x \<noteq> 0"
  1501 lemma exp_not_eq_zero [simp]: "exp x \<noteq> 0"
  1500 proof
  1502 proof
  1792   using ln_le_cancel_iff [of 1 x] by simp
  1794   using ln_le_cancel_iff [of 1 x] by simp
  1793 
  1795 
  1794 lemma ln_less_zero_iff [simp]: "0 < x \<Longrightarrow> ln x < 0 \<longleftrightarrow> x < 1"
  1796 lemma ln_less_zero_iff [simp]: "0 < x \<Longrightarrow> ln x < 0 \<longleftrightarrow> x < 1"
  1795   for x :: real
  1797   for x :: real
  1796   using ln_less_cancel_iff [of x 1] by simp
  1798   using ln_less_cancel_iff [of x 1] by simp
       
  1799 
       
  1800 lemma ln_le_zero_iff [simp]: "0 < x \<Longrightarrow> ln x \<le> 0 \<longleftrightarrow> x \<le> 1"
       
  1801   for x :: real
       
  1802   by (metis less_numeral_extra(1) ln_le_cancel_iff ln_one)
  1797 
  1803 
  1798 lemma ln_gt_zero: "1 < x \<Longrightarrow> 0 < ln x"
  1804 lemma ln_gt_zero: "1 < x \<Longrightarrow> 0 < ln x"
  1799   for x :: real
  1805   for x :: real
  1800   using ln_less_cancel_iff [of 1 x] by simp
  1806   using ln_less_cancel_iff [of 1 x] by simp
  1801 
  1807 
  2344   by (intro filtermap_fun_inverse[of exp] exp_at_top ln_at_top) auto
  2350   by (intro filtermap_fun_inverse[of exp] exp_at_top ln_at_top) auto
  2345 
  2351 
  2346 lemma filtermap_exp_at_top: "filtermap (exp::real \<Rightarrow> real) at_top = at_top"
  2352 lemma filtermap_exp_at_top: "filtermap (exp::real \<Rightarrow> real) at_top = at_top"
  2347   by (intro filtermap_fun_inverse[of ln] exp_at_top ln_at_top)
  2353   by (intro filtermap_fun_inverse[of ln] exp_at_top ln_at_top)
  2348      (auto simp: eventually_at_top_dense)
  2354      (auto simp: eventually_at_top_dense)
       
  2355 
       
  2356 lemma filtermap_ln_at_right: "filtermap ln (at_right (0::real)) = at_bot"
       
  2357   by (auto intro!: filtermap_fun_inverse[where g="\<lambda>x. exp x"] ln_at_0
       
  2358       simp: filterlim_at exp_at_bot)
  2349 
  2359 
  2350 lemma tendsto_power_div_exp_0: "((\<lambda>x. x ^ k / exp x) \<longlongrightarrow> (0::real)) at_top"
  2360 lemma tendsto_power_div_exp_0: "((\<lambda>x. x ^ k / exp x) \<longlongrightarrow> (0::real)) at_top"
  2351 proof (induct k)
  2361 proof (induct k)
  2352   case 0
  2362   case 0
  2353   show "((\<lambda>x. x ^ 0 / exp x) \<longlongrightarrow> (0::real)) at_top"
  2363   show "((\<lambda>x. x ^ 0 / exp x) \<longlongrightarrow> (0::real)) at_top"