equal
deleted
inserted
replaced
641 |
641 |
642 lemma power_number_of_odd: |
642 lemma power_number_of_odd: |
643 fixes z :: "'a::number_ring" |
643 fixes z :: "'a::number_ring" |
644 shows "z ^ number_of (Int.Bit1 w) = (if (0::int) <= number_of w |
644 shows "z ^ number_of (Int.Bit1 w) = (if (0::int) <= number_of w |
645 then (let w = z ^ (number_of w) in z * w * w) else 1)" |
645 then (let w = z ^ (number_of w) in z * w * w) else 1)" |
646 apply (auto simp add: Let_def Bit1_def nat_number_of_def number_of_is_id |
646 unfolding Let_def Bit1_def nat_number_of_def number_of_is_id |
647 mult_assoc nat_add_distrib power_add not_le simp del: nat_number_of) |
647 apply (cases "0 <= w") |
|
648 apply (simp only: mult_assoc nat_add_distrib power_add, simp) |
648 apply (simp add: not_le mult_2 [symmetric] add_assoc) |
649 apply (simp add: not_le mult_2 [symmetric] add_assoc) |
649 done |
650 done |
650 |
651 |
651 lemmas zpower_number_of_even = power_number_of_even [where 'a=int] |
652 lemmas zpower_number_of_even = power_number_of_even [where 'a=int] |
652 lemmas zpower_number_of_odd = power_number_of_odd [where 'a=int] |
653 lemmas zpower_number_of_odd = power_number_of_odd [where 'a=int] |
671 |
672 |
672 lemma nat_number_of_Bit1: |
673 lemma nat_number_of_Bit1: |
673 "number_of (Int.Bit1 w) = |
674 "number_of (Int.Bit1 w) = |
674 (if neg (number_of w :: int) then 0 |
675 (if neg (number_of w :: int) then 0 |
675 else let n = number_of w in Suc (n + n))" |
676 else let n = number_of w in Suc (n + n))" |
676 apply (auto simp add: Let_def Bit1_def nat_number_of_def number_of_is_id neg_def |
677 unfolding Let_def Bit1_def nat_number_of_def number_of_is_id neg_def |
677 nat_add_distrib simp del: nat_number_of) |
678 apply (cases "w < 0") |
678 apply (simp add: mult_2 [symmetric] add_assoc) |
679 apply (simp add: mult_2 [symmetric] add_assoc) |
|
680 apply (simp only: nat_add_distrib, simp) |
679 done |
681 done |
680 |
682 |
681 lemmas nat_number = |
683 lemmas nat_number = |
682 nat_number_of_Pls nat_number_of_Min |
684 nat_number_of_Pls nat_number_of_Min |
683 nat_number_of_Bit0 nat_number_of_Bit1 |
685 nat_number_of_Bit0 nat_number_of_Bit1 |