src/HOL/NthRoot.thy
changeset 54413 88a036a95967
parent 53594 8a9fb53294f4
child 55967 5dadc93ff3df
equal deleted inserted replaced
54412:900c6d724250 54413:88a036a95967
   408 unfolding sqrt_def by (rule real_root_le_iff [OF pos2])
   408 unfolding sqrt_def by (rule real_root_le_iff [OF pos2])
   409 
   409 
   410 lemma real_sqrt_eq_iff [simp]: "(sqrt x = sqrt y) = (x = y)"
   410 lemma real_sqrt_eq_iff [simp]: "(sqrt x = sqrt y) = (x = y)"
   411 unfolding sqrt_def by (rule real_root_eq_iff [OF pos2])
   411 unfolding sqrt_def by (rule real_root_eq_iff [OF pos2])
   412 
   412 
       
   413 lemma real_le_lsqrt: "0 \<le> x \<Longrightarrow> 0 \<le> y \<Longrightarrow> x \<le> y\<^sup>2 \<Longrightarrow> sqrt x \<le> y"
       
   414   using real_sqrt_le_iff[of x "y\<^sup>2"] by simp
       
   415 
       
   416 lemma real_le_rsqrt: "x\<^sup>2 \<le> y \<Longrightarrow> x \<le> sqrt y"
       
   417   using real_sqrt_le_mono[of "x\<^sup>2" y] by simp
       
   418 
       
   419 lemma real_less_rsqrt: "x\<^sup>2 < y \<Longrightarrow> x < sqrt y"
       
   420   using real_sqrt_less_mono[of "x\<^sup>2" y] by simp
       
   421 
       
   422 lemma sqrt_even_pow2:
       
   423   assumes n: "even n"
       
   424   shows "sqrt (2 ^ n) = 2 ^ (n div 2)"
       
   425 proof -
       
   426   from n obtain m where m: "n = 2 * m"
       
   427     unfolding even_mult_two_ex ..
       
   428   from m have "sqrt (2 ^ n) = sqrt ((2 ^ m)\<^sup>2)"
       
   429     by (simp only: power_mult[symmetric] mult_commute)
       
   430   then show ?thesis
       
   431     using m by simp
       
   432 qed
       
   433 
   413 lemmas real_sqrt_gt_0_iff [simp] = real_sqrt_less_iff [where x=0, unfolded real_sqrt_zero]
   434 lemmas real_sqrt_gt_0_iff [simp] = real_sqrt_less_iff [where x=0, unfolded real_sqrt_zero]
   414 lemmas real_sqrt_lt_0_iff [simp] = real_sqrt_less_iff [where y=0, unfolded real_sqrt_zero]
   435 lemmas real_sqrt_lt_0_iff [simp] = real_sqrt_less_iff [where y=0, unfolded real_sqrt_zero]
   415 lemmas real_sqrt_ge_0_iff [simp] = real_sqrt_le_iff [where x=0, unfolded real_sqrt_zero]
   436 lemmas real_sqrt_ge_0_iff [simp] = real_sqrt_le_iff [where x=0, unfolded real_sqrt_zero]
   416 lemmas real_sqrt_le_0_iff [simp] = real_sqrt_le_iff [where y=0, unfolded real_sqrt_zero]
   437 lemmas real_sqrt_le_0_iff [simp] = real_sqrt_le_iff [where y=0, unfolded real_sqrt_zero]
   417 lemmas real_sqrt_eq_0_iff [simp] = real_sqrt_eq_iff [where y=0, unfolded real_sqrt_zero]
   438 lemmas real_sqrt_eq_0_iff [simp] = real_sqrt_eq_iff [where y=0, unfolded real_sqrt_zero]
   488       by (simp add: divide_inverse mult_assoc [symmetric] 
   509       by (simp add: divide_inverse mult_assoc [symmetric] 
   489                   power2_eq_square [symmetric] real_inv_sqrt_pow2 pos nz) 
   510                   power2_eq_square [symmetric] real_inv_sqrt_pow2 pos nz) 
   490   qed
   511   qed
   491 qed
   512 qed
   492 
   513 
       
   514 lemma real_div_sqrt: "0 \<le> x \<Longrightarrow> x / sqrt x = sqrt x"
       
   515   apply (cases "x = 0")
       
   516   apply simp_all
       
   517   using sqrt_divide_self_eq[of x]
       
   518   apply (simp add: inverse_eq_divide field_simps)
       
   519   done
       
   520 
   493 lemma real_divide_square_eq [simp]: "(((r::real) * a) / (r * r)) = a / r"
   521 lemma real_divide_square_eq [simp]: "(((r::real) * a) / (r * r)) = a / r"
   494 apply (simp add: divide_inverse)
   522 apply (simp add: divide_inverse)
   495 apply (case_tac "r=0")
   523 apply (case_tac "r=0")
   496 apply (auto simp add: mult_ac)
   524 apply (auto simp add: mult_ac)
   497 done
   525 done