equal
deleted
inserted
replaced
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" |