src/HOL/Transcendental.thy
changeset 65680 378a2f11bec9
parent 65583 8d53b3bebab4
child 66279 2dba15d3c402
equal deleted inserted replaced
65677:7d25b8dbdbfa 65680:378a2f11bec9
   195                (\<Sum>k\<in>{0<..<2*n}. (2*n) choose k) + (\<Sum>k\<in>{0,2*n}. (2*n) choose k)"
   195                (\<Sum>k\<in>{0<..<2*n}. (2*n) choose k) + (\<Sum>k\<in>{0,2*n}. (2*n) choose k)"
   196     by (subst sum.union_disjoint) auto
   196     by (subst sum.union_disjoint) auto
   197   also have "(\<Sum>k\<in>{0,2*n}. (2*n) choose k) \<le> (\<Sum>k\<le>1. (n choose k)\<^sup>2)"
   197   also have "(\<Sum>k\<in>{0,2*n}. (2*n) choose k) \<le> (\<Sum>k\<le>1. (n choose k)\<^sup>2)"
   198     by (cases n) simp_all
   198     by (cases n) simp_all
   199   also from assms have "\<dots> \<le> (\<Sum>k\<le>n. (n choose k)\<^sup>2)"
   199   also from assms have "\<dots> \<le> (\<Sum>k\<le>n. (n choose k)\<^sup>2)"
   200     by (intro sum_mono3) auto
   200     by (intro sum_mono2) auto
   201   also have "\<dots> = (2*n) choose n" by (rule choose_square_sum)
   201   also have "\<dots> = (2*n) choose n" by (rule choose_square_sum)
   202   also have "(\<Sum>k\<in>{0<..<2*n}. (2*n) choose k) \<le> (\<Sum>k\<in>{0<..<2*n}. (2*n) choose n)"
   202   also have "(\<Sum>k\<in>{0<..<2*n}. (2*n) choose k) \<le> (\<Sum>k\<in>{0<..<2*n}. (2*n) choose n)"
   203     by (intro sum_mono binomial_maximum')
   203     by (intro sum_mono binomial_maximum')
   204   also have "\<dots> = card {0<..<2*n} * ((2*n) choose n)" by simp
   204   also have "\<dots> = card {0<..<2*n} * ((2*n) choose n)" by simp
   205   also have "card {0<..<2*n} \<le> 2*n - 1" by (cases n) simp_all
   205   also have "card {0<..<2*n} \<le> 2*n - 1" by (cases n) simp_all
  1772 
  1772 
  1773 lemma ln_inj_iff [simp]: "0 < x \<Longrightarrow> 0 < y \<Longrightarrow> ln x = ln y \<longleftrightarrow> x = y"
  1773 lemma ln_inj_iff [simp]: "0 < x \<Longrightarrow> 0 < y \<Longrightarrow> ln x = ln y \<longleftrightarrow> x = y"
  1774   for x :: real
  1774   for x :: real
  1775   by (simp add: order_eq_iff)
  1775   by (simp add: order_eq_iff)
  1776 
  1776 
  1777 lemma ln_add_one_self_le_self [simp]: "0 \<le> x \<Longrightarrow> ln (1 + x) \<le> x"
  1777 lemma ln_add_one_self_le_self: "0 \<le> x \<Longrightarrow> ln (1 + x) \<le> x"
  1778   for x :: real
  1778   for x :: real
  1779   by (rule exp_le_cancel_iff [THEN iffD1]) (simp add: exp_ge_add_one_self_aux)
  1779   by (rule exp_le_cancel_iff [THEN iffD1]) (simp add: exp_ge_add_one_self_aux)
  1780 
  1780 
  1781 lemma ln_less_self [simp]: "0 < x \<Longrightarrow> ln x < x"
  1781 lemma ln_less_self [simp]: "0 < x \<Longrightarrow> ln x < x"
  1782   for x :: real
  1782   for x :: real
  1783   by (rule order_less_le_trans [where y = "ln (1 + x)"]) simp_all
  1783   by (rule order_less_le_trans [where y = "ln (1 + x)"]) (simp_all add: ln_add_one_self_le_self)
  1784 
  1784 
  1785 lemma ln_ge_iff: "\<And>x::real. 0 < x \<Longrightarrow> y \<le> ln x \<longleftrightarrow> exp y \<le> x"
  1785 lemma ln_ge_iff: "\<And>x::real. 0 < x \<Longrightarrow> y \<le> ln x \<longleftrightarrow> exp y \<le> x"
  1786   using exp_le_cancel_iff exp_total by force
  1786   using exp_le_cancel_iff exp_total by force
  1787 
  1787 
  1788 lemma ln_ge_zero [simp]: "1 \<le> x \<Longrightarrow> 0 \<le> ln x"
  1788 lemma ln_ge_zero [simp]: "1 \<le> x \<Longrightarrow> 0 \<le> ln x"