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 |