580 end |
580 end |
581 |
581 |
582 context linordered_idom |
582 context linordered_idom |
583 begin |
583 begin |
584 |
584 |
585 lemma power_abs: "\<bar>a ^ n\<bar> = \<bar>a\<bar> ^ n" |
585 lemma zero_le_power2 [simp]: "0 \<le> a\<^sup>2" |
586 by (induct n) (auto simp add: abs_mult) |
586 by (simp add: power2_eq_square) |
587 |
587 |
588 lemma abs_power_minus [simp]: "\<bar>(-a) ^ n\<bar> = \<bar>a ^ n\<bar>" |
588 lemma zero_less_power2 [simp]: "0 < a\<^sup>2 \<longleftrightarrow> a \<noteq> 0" |
|
589 by (force simp add: power2_eq_square zero_less_mult_iff linorder_neq_iff) |
|
590 |
|
591 lemma power2_less_0 [simp]: "\<not> a\<^sup>2 < 0" |
|
592 by (force simp add: power2_eq_square mult_less_0_iff) |
|
593 |
|
594 lemma power_abs: "\<bar>a ^ n\<bar> = \<bar>a\<bar> ^ n" -- \<open>FIXME simp?\<close> |
|
595 by (induct n) (simp_all add: abs_mult) |
|
596 |
|
597 lemma power_sgn [simp]: "sgn (a ^ n) = sgn a ^ n" |
|
598 by (induct n) (simp_all add: sgn_mult) |
|
599 |
|
600 lemma abs_power_minus [simp]: "\<bar>(- a) ^ n\<bar> = \<bar>a ^ n\<bar>" |
589 by (simp add: power_abs) |
601 by (simp add: power_abs) |
590 |
602 |
591 lemma zero_less_power_abs_iff [simp]: "0 < \<bar>a\<bar> ^ n \<longleftrightarrow> a \<noteq> 0 \<or> n = 0" |
603 lemma zero_less_power_abs_iff [simp]: "0 < \<bar>a\<bar> ^ n \<longleftrightarrow> a \<noteq> 0 \<or> n = 0" |
592 proof (induct n) |
604 proof (induct n) |
593 case 0 |
605 case 0 |
598 qed |
610 qed |
599 |
611 |
600 lemma zero_le_power_abs [simp]: "0 \<le> \<bar>a\<bar> ^ n" |
612 lemma zero_le_power_abs [simp]: "0 \<le> \<bar>a\<bar> ^ n" |
601 by (rule zero_le_power [OF abs_ge_zero]) |
613 by (rule zero_le_power [OF abs_ge_zero]) |
602 |
614 |
603 lemma zero_le_power2 [simp]: "0 \<le> a\<^sup>2" |
|
604 by (simp add: power2_eq_square) |
|
605 |
|
606 lemma zero_less_power2 [simp]: "0 < a\<^sup>2 \<longleftrightarrow> a \<noteq> 0" |
|
607 by (force simp add: power2_eq_square zero_less_mult_iff linorder_neq_iff) |
|
608 |
|
609 lemma power2_less_0 [simp]: "\<not> a\<^sup>2 < 0" |
|
610 by (force simp add: power2_eq_square mult_less_0_iff) |
|
611 |
|
612 lemma power2_less_eq_zero_iff [simp]: "a\<^sup>2 \<le> 0 \<longleftrightarrow> a = 0" |
615 lemma power2_less_eq_zero_iff [simp]: "a\<^sup>2 \<le> 0 \<longleftrightarrow> a = 0" |
613 by (simp add: le_less) |
616 by (simp add: le_less) |
614 |
617 |
615 lemma abs_power2 [simp]: "\<bar>a\<^sup>2\<bar> = a\<^sup>2" |
618 lemma abs_power2 [simp]: "\<bar>a\<^sup>2\<bar> = a\<^sup>2" |
616 by (simp add: power2_eq_square) |
619 by (simp add: power2_eq_square) |
617 |
620 |
618 lemma power2_abs [simp]: "\<bar>a\<bar>\<^sup>2 = a\<^sup>2" |
621 lemma power2_abs [simp]: "\<bar>a\<bar>\<^sup>2 = a\<^sup>2" |
619 by (simp add: power2_eq_square) |
622 by (simp add: power2_eq_square) |
620 |
623 |
621 lemma odd_power_less_zero: "a < 0 \<Longrightarrow> a ^ Suc (2*n) < 0" |
624 lemma odd_power_less_zero: "a < 0 \<Longrightarrow> a ^ Suc (2 * n) < 0" |
622 proof (induct n) |
625 proof (induct n) |
623 case 0 |
626 case 0 |
624 then show ?case by simp |
627 then show ?case by simp |
625 next |
628 next |
626 case (Suc n) |
629 case (Suc n) |
628 by (simp add: ac_simps power_add power2_eq_square) |
631 by (simp add: ac_simps power_add power2_eq_square) |
629 then show ?case |
632 then show ?case |
630 by (simp del: power_Suc add: Suc mult_less_0_iff mult_neg_neg) |
633 by (simp del: power_Suc add: Suc mult_less_0_iff mult_neg_neg) |
631 qed |
634 qed |
632 |
635 |
633 lemma odd_0_le_power_imp_0_le: "0 \<le> a ^ Suc (2*n) \<Longrightarrow> 0 \<le> a" |
636 lemma odd_0_le_power_imp_0_le: "0 \<le> a ^ Suc (2 * n) \<Longrightarrow> 0 \<le> a" |
634 using odd_power_less_zero [of a n] |
637 using odd_power_less_zero [of a n] |
635 by (force simp add: linorder_not_less [symmetric]) |
638 by (force simp add: linorder_not_less [symmetric]) |
636 |
639 |
637 lemma zero_le_even_power'[simp]: "0 \<le> a ^ (2*n)" |
640 lemma zero_le_even_power'[simp]: "0 \<le> a ^ (2 * n)" |
638 proof (induct n) |
641 proof (induct n) |
639 case 0 |
642 case 0 |
640 show ?case by simp |
643 show ?case by simp |
641 next |
644 next |
642 case (Suc n) |
645 case (Suc n) |