src/HOL/Transcendental.thy
changeset 77221 0cdb384bf56a
parent 77200 8f2e6186408f
child 77230 2d26af072990
equal deleted inserted replaced
77200:8f2e6186408f 77221:0cdb384bf56a
  6729   by (simp add: cosh_def scaleR_conv_of_real)
  6729   by (simp add: cosh_def scaleR_conv_of_real)
  6730 
  6730 
  6731 
  6731 
  6732 subsubsection \<open>More specific properties of the real functions\<close>
  6732 subsubsection \<open>More specific properties of the real functions\<close>
  6733 
  6733 
  6734 lemma sinh_real_zero_iff [simp]: "sinh (x::real) = 0 \<longleftrightarrow> x = 0"
       
  6735 proof -
       
  6736   have "(-1 :: real) < 0" by simp
       
  6737   also have "0 < exp x" by simp
       
  6738   finally have "exp x \<noteq> -1" by (intro notI) simp
       
  6739   thus ?thesis by (subst sinh_zero_iff) simp
       
  6740 qed
       
  6741 
       
  6742 lemma plus_inverse_ge_2:
  6734 lemma plus_inverse_ge_2:
  6743   fixes x :: real
  6735   fixes x :: real
  6744   assumes "x > 0"
  6736   assumes "x > 0"
  6745   shows   "x + inverse x \<ge> 2"
  6737   shows   "x + inverse x \<ge> 2"
  6746 proof -
  6738 proof -
  6770 lemma cosh_real_nonneg[simp]: "cosh (x :: real) \<ge> 0"
  6762 lemma cosh_real_nonneg[simp]: "cosh (x :: real) \<ge> 0"
  6771   using cosh_real_ge_1[of x] by simp
  6763   using cosh_real_ge_1[of x] by simp
  6772 
  6764 
  6773 lemma cosh_real_nonzero [simp]: "cosh (x :: real) \<noteq> 0"
  6765 lemma cosh_real_nonzero [simp]: "cosh (x :: real) \<noteq> 0"
  6774   using cosh_real_ge_1[of x] by simp
  6766   using cosh_real_ge_1[of x] by simp
  6775 
       
  6776 lemma tanh_real_nonneg_iff [simp]: "tanh (x :: real) \<ge> 0 \<longleftrightarrow> x \<ge> 0"
       
  6777   by (simp add: tanh_def field_simps)
       
  6778 
       
  6779 lemma tanh_real_pos_iff [simp]: "tanh (x :: real) > 0 \<longleftrightarrow> x > 0"
       
  6780   by (simp add: tanh_def field_simps)
       
  6781 
       
  6782 lemma tanh_real_nonpos_iff [simp]: "tanh (x :: real) \<le> 0 \<longleftrightarrow> x \<le> 0"
       
  6783   by (simp add: tanh_def field_simps)
       
  6784 
       
  6785 lemma tanh_real_neg_iff [simp]: "tanh (x :: real) < 0 \<longleftrightarrow> x < 0"
       
  6786   by (simp add: tanh_def field_simps)
       
  6787 
       
  6788 lemma tanh_real_zero_iff [simp]: "tanh (x :: real) = 0 \<longleftrightarrow> x = 0"
       
  6789   by (simp add: tanh_def field_simps)
       
  6790 
  6767 
  6791 lemma arsinh_real_def: "arsinh (x::real) = ln (x + sqrt (x^2 + 1))"
  6768 lemma arsinh_real_def: "arsinh (x::real) = ln (x + sqrt (x^2 + 1))"
  6792   by (simp add: arsinh_def powr_half_sqrt)
  6769   by (simp add: arsinh_def powr_half_sqrt)
  6793 
  6770 
  6794 lemma arcosh_real_def: "x \<ge> 1 \<Longrightarrow> arcosh (x::real) = ln (x + sqrt (x^2 - 1))"
  6771 lemma arcosh_real_def: "x \<ge> 1 \<Longrightarrow> arcosh (x::real) = ln (x + sqrt (x^2 - 1))"
  6858     by (simp add: cosh_plus_sinh cosh_minus_sinh exp_minus field_simps power2_eq_square)
  6835     by (simp add: cosh_plus_sinh cosh_minus_sinh exp_minus field_simps power2_eq_square)
  6859   also have "ln ((exp x)^2) / 2 = x" by (simp add: ln_realpow)
  6836   also have "ln ((exp x)^2) / 2 = x" by (simp add: ln_realpow)
  6860   finally show ?thesis .
  6837   finally show ?thesis .
  6861 qed
  6838 qed
  6862 
  6839 
       
  6840 lemma sinh_real_zero_iff [simp]: "sinh x = 0 \<longleftrightarrow> x = 0"
       
  6841   by (metis arsinh_0 arsinh_sinh_real sinh_0)
       
  6842 
       
  6843 lemma cosh_real_one_iff [simp]: "cosh x = 1 \<longleftrightarrow> x = 0"
       
  6844   by (smt (verit, best) Transcendental.arcosh_cosh_real cosh_0 cosh_minus)
       
  6845 
       
  6846 lemma tanh_real_nonneg_iff [simp]: "tanh x \<ge> 0 \<longleftrightarrow> x \<ge> 0"
       
  6847   by (simp add: tanh_def field_simps)
       
  6848 
       
  6849 lemma tanh_real_pos_iff [simp]: "tanh x > 0 \<longleftrightarrow> x > 0"
       
  6850   by (simp add: tanh_def field_simps)
       
  6851 
       
  6852 lemma tanh_real_nonpos_iff [simp]: "tanh x \<le> 0 \<longleftrightarrow> x \<le> 0"
       
  6853   by (simp add: tanh_def field_simps)
       
  6854 
       
  6855 lemma tanh_real_neg_iff [simp]: "tanh x < 0 \<longleftrightarrow> x < 0"
       
  6856   by (simp add: tanh_def field_simps)
       
  6857 
       
  6858 lemma tanh_real_zero_iff [simp]: "tanh x = 0 \<longleftrightarrow> x = 0"
       
  6859   by (simp add: tanh_def field_simps)
       
  6860 
  6863 end
  6861 end
  6864 
  6862   
  6865 lemma sinh_real_strict_mono: "strict_mono (sinh :: real \<Rightarrow> real)"
  6863 lemma sinh_real_strict_mono: "strict_mono (sinh :: real \<Rightarrow> real)"
  6866   by (rule pos_deriv_imp_strict_mono derivative_intros)+ auto
  6864   by (rule pos_deriv_imp_strict_mono derivative_intros)+ auto
  6867 
  6865 
  6868 lemma cosh_real_strict_mono:
  6866 lemma cosh_real_strict_mono:
  6869   assumes "0 \<le> x" and "x < (y::real)"
  6867   assumes "0 \<le> x" and "x < (y::real)"