src/HOL/Multivariate_Analysis/Complex_Transcendental.thy
changeset 60141 833adf7db7d8
parent 60020 065ecea354d0
child 60150 bd773c47ad0b
equal deleted inserted replaced
60140:a948ee5fb5f4 60141:833adf7db7d8
  1261 
  1261 
  1262 
  1262 
  1263 
  1263 
  1264 subsection{*Complex Powers*}
  1264 subsection{*Complex Powers*}
  1265 
  1265 
  1266 lemma powr_0 [simp]: "0 powr z = 0"
       
  1267   by (simp add: powr_def)
       
  1268 
       
  1269 lemma powr_to_1 [simp]: "z powr 1 = (z::complex)"
  1266 lemma powr_to_1 [simp]: "z powr 1 = (z::complex)"
  1270   by (simp add: powr_def)
  1267   by (simp add: powr_def)
  1271 
  1268 
  1272 lemma powr_nat:
  1269 lemma powr_nat:
  1273   fixes n::nat and z::complex shows "z powr n = (if z = 0 then 0 else z^n)"
  1270   fixes n::nat and z::complex shows "z powr n = (if z = 0 then 0 else z^n)"
  1524   shows Re_Arctan_bounds: "abs(Re(Arctan z)) < pi/2"
  1521   shows Re_Arctan_bounds: "abs(Re(Arctan z)) < pi/2"
  1525     and has_field_derivative_Arctan: "(Arctan has_field_derivative inverse(1 + z\<^sup>2)) (at z)"
  1522     and has_field_derivative_Arctan: "(Arctan has_field_derivative inverse(1 + z\<^sup>2)) (at z)"
  1526 proof -
  1523 proof -
  1527   have nz0: "1 + \<i>*z \<noteq> 0"
  1524   have nz0: "1 + \<i>*z \<noteq> 0"
  1528     using assms
  1525     using assms
  1529     by (metis abs_one complex_i_mult_minus diff_0_right diff_minus_eq_add ii.simps(1) ii.simps(2) 
  1526     by (metis abs_one complex_i_mult_minus diff_0_right diff_minus_eq_add ii.simps(1) ii.simps(2)
  1530               less_irrefl minus_diff_eq mult.right_neutral right_minus_eq)
  1527               less_irrefl minus_diff_eq mult.right_neutral right_minus_eq)
  1531   have "z \<noteq> -\<i>" using assms
  1528   have "z \<noteq> -\<i>" using assms
  1532     by auto
  1529     by auto
  1533   then have zz: "1 + z * z \<noteq> 0"
  1530   then have zz: "1 + z * z \<noteq> 0"
  1534     by (metis abs_one assms i_squared ii.simps less_irrefl minus_unique square_eq_iff)
  1531     by (metis abs_one assms i_squared ii.simps less_irrefl minus_unique square_eq_iff)
  1769 lemma isCont_Arcsin' [simp]:
  1766 lemma isCont_Arcsin' [simp]:
  1770   shows "isCont f z \<Longrightarrow> (Im (f z) = 0 \<Longrightarrow> \<bar>Re (f z)\<bar> < 1) \<Longrightarrow> isCont (\<lambda>x. Arcsin (f x)) z"
  1767   shows "isCont f z \<Longrightarrow> (Im (f z) = 0 \<Longrightarrow> \<bar>Re (f z)\<bar> < 1) \<Longrightarrow> isCont (\<lambda>x. Arcsin (f x)) z"
  1771   by (blast intro: isCont_o2 [OF _ isCont_Arcsin])
  1768   by (blast intro: isCont_o2 [OF _ isCont_Arcsin])
  1772 
  1769 
  1773 lemma sin_Arcsin [simp]: "sin(Arcsin z) = z"
  1770 lemma sin_Arcsin [simp]: "sin(Arcsin z) = z"
  1774 proof -  
  1771 proof -
  1775   have "\<i>*z*2 + csqrt (1 - z\<^sup>2)*2 = 0 \<longleftrightarrow> (\<i>*z)*2 + csqrt (1 - z\<^sup>2)*2 = 0"
  1772   have "\<i>*z*2 + csqrt (1 - z\<^sup>2)*2 = 0 \<longleftrightarrow> (\<i>*z)*2 + csqrt (1 - z\<^sup>2)*2 = 0"
  1776     by (simp add: algebra_simps)  --{*Cancelling a factor of 2*}
  1773     by (simp add: algebra_simps)  --{*Cancelling a factor of 2*}
  1777   moreover have "... \<longleftrightarrow> (\<i>*z) + csqrt (1 - z\<^sup>2) = 0"
  1774   moreover have "... \<longleftrightarrow> (\<i>*z) + csqrt (1 - z\<^sup>2) = 0"
  1778     by (metis Arcsin_body_lemma distrib_right no_zero_divisors zero_neq_numeral)
  1775     by (metis Arcsin_body_lemma distrib_right no_zero_divisors zero_neq_numeral)
  1779   ultimately show ?thesis
  1776   ultimately show ?thesis
  1901   assumes "(Im z = 0 \<Longrightarrow> \<bar>Re z\<bar> < 1)"  "Im (z + \<i> * csqrt (1 - z\<^sup>2)) = 0"
  1898   assumes "(Im z = 0 \<Longrightarrow> \<bar>Re z\<bar> < 1)"  "Im (z + \<i> * csqrt (1 - z\<^sup>2)) = 0"
  1902     shows "0 < Re (z + \<i> * csqrt (1 - z\<^sup>2))"
  1899     shows "0 < Re (z + \<i> * csqrt (1 - z\<^sup>2))"
  1903 proof (cases "Im z = 0")
  1900 proof (cases "Im z = 0")
  1904   case True
  1901   case True
  1905   then show ?thesis
  1902   then show ?thesis
  1906     using assms 
  1903     using assms
  1907     by (fastforce simp add: cmod_def Re_power2 Im_power2 algebra_simps abs_square_less_1 [symmetric])
  1904     by (fastforce simp add: cmod_def Re_power2 Im_power2 algebra_simps abs_square_less_1 [symmetric])
  1908 next
  1905 next
  1909   case False
  1906   case False
  1910   have Imz: "Im z = - sqrt ((1 + ((Im z)\<^sup>2 + cmod (1 - z\<^sup>2)) - (Re z)\<^sup>2) / 2)"
  1907   have Imz: "Im z = - sqrt ((1 + ((Im z)\<^sup>2 + cmod (1 - z\<^sup>2)) - (Re z)\<^sup>2) / 2)"
  1911     using assms abs_Re_le_cmod [of "1-z\<^sup>2"]
  1908     using assms abs_Re_le_cmod [of "1-z\<^sup>2"]