src/HOL/Transcendental.thy
changeset 80523 532156e8f15f
parent 80521 5c691b178e08
child 80528 6dec6b1f31f5
equal deleted inserted replaced
80522:35442f748ec8 80523:532156e8f15f
  1592   by (simp add: ln_real_def)
  1592   by (simp add: ln_real_def)
  1593 
  1593 
  1594 lemma ln_0 [simp]: "ln (0::real) = 0"
  1594 lemma ln_0 [simp]: "ln (0::real) = 0"
  1595   by (simp add: ln_real_def)
  1595   by (simp add: ln_real_def)
  1596 
  1596 
  1597 lemma ln_minus [simp]: "ln (-x) = ln x"
  1597 lemma ln_minus: "ln (-x) = ln x"
  1598   for x :: real
  1598   for x :: real
  1599   by (simp add: ln_real_def)
  1599   by (simp add: ln_real_def)
  1600 
  1600 
  1601 lemma ln_exp [simp]: "ln (exp x) = x"
  1601 lemma ln_exp [simp]: "ln (exp x) = x"
  1602   for x :: real
  1602   for x :: real
  1724 
  1724 
  1725 lemma ln_less_zero: "0 < x \<Longrightarrow> x < 1 \<Longrightarrow> ln x < 0"
  1725 lemma ln_less_zero: "0 < x \<Longrightarrow> x < 1 \<Longrightarrow> ln x < 0"
  1726   for x :: real
  1726   for x :: real
  1727   by simp
  1727   by simp
  1728 
  1728 
  1729 lemma ln_neg: "ln (-x) = ln x"
       
  1730   for x :: real
       
  1731   by simp
       
  1732 
       
  1733 lemma powr_eq_one_iff [simp]:
  1729 lemma powr_eq_one_iff [simp]:
  1734   "a powr x = 1 \<longleftrightarrow> x = 0" if "a > 1" for a x :: real
  1730   "a powr x = 1 \<longleftrightarrow> x = 0" if "a > 1" for a x :: real
  1735   using that by (auto simp: powr_def split: if_splits)
  1731   using that by (auto simp: powr_def split: if_splits)
  1736 
  1732 
  1737 text \<open>A consequence of our "totalising" of ln\<close>
  1733 text \<open>A consequence of our "totalising" of ln\<close>
  1738 lemma uminus_powr_eq: "(-a) powr x = a powr x" for x::real
  1734 lemma uminus_powr_eq: "(-a) powr x = a powr x" for x::real
  1739   by (simp add: powr_def)
  1735   by (simp add: powr_def ln_minus)
  1740 
  1736 
  1741 lemma isCont_ln_pos:
  1737 lemma isCont_ln_pos:
  1742   fixes x :: real
  1738   fixes x :: real
  1743   assumes "x > 0"
  1739   assumes "x > 0"
  1744   shows "isCont ln x"
  1740   shows "isCont ln x"
  1752   case False
  1748   case False
  1753   then have "isCont (ln o uminus) x"
  1749   then have "isCont (ln o uminus) x"
  1754     using isCont_minus [OF continuous_ident] assms continuous_at_compose isCont_ln_pos 
  1750     using isCont_minus [OF continuous_ident] assms continuous_at_compose isCont_ln_pos 
  1755     by force
  1751     by force
  1756   then show ?thesis
  1752   then show ?thesis
  1757     using isCont_cong by force
  1753     by (simp add: comp_def ln_minus)
  1758 qed (simp add: isCont_ln_pos)
  1754 qed (simp add: isCont_ln_pos)
  1759 
  1755 
  1760 lemma tendsto_ln [tendsto_intros]: "(f \<longlongrightarrow> a) F \<Longrightarrow> a \<noteq> 0 \<Longrightarrow> ((\<lambda>x. ln (f x)) \<longlongrightarrow> ln a) F"
  1756 lemma tendsto_ln [tendsto_intros]: "(f \<longlongrightarrow> a) F \<Longrightarrow> a \<noteq> 0 \<Longrightarrow> ((\<lambda>x. ln (f x)) \<longlongrightarrow> ln a) F"
  1761   for a :: real
  1757   for a :: real
  1762   by (rule isCont_tendsto_compose [OF isCont_ln])
  1758   by (rule isCont_tendsto_compose [OF isCont_ln])