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)" |