equal
deleted
inserted
replaced
650 |
650 |
651 lemma Min_1_eq [simp, code post]: |
651 lemma Min_1_eq [simp, code post]: |
652 "Min BIT B1 = Min" |
652 "Min BIT B1 = Min" |
653 unfolding numeral_simps by simp |
653 unfolding numeral_simps by simp |
654 |
654 |
|
655 lemmas normalize_bin_simps = |
|
656 Pls_0_eq Min_1_eq |
|
657 |
655 |
658 |
656 subsection {* The Functions @{term succ}, @{term pred} and @{term uminus} *} |
659 subsection {* The Functions @{term succ}, @{term pred} and @{term uminus} *} |
657 |
660 |
658 lemma succ_Pls [simp]: |
661 lemma succ_Pls [simp]: |
659 "succ Pls = Pls BIT B1" |
662 "succ Pls = Pls BIT B1" |
669 |
672 |
670 lemma succ_0 [simp]: |
673 lemma succ_0 [simp]: |
671 "succ (k BIT B0) = k BIT B1" |
674 "succ (k BIT B0) = k BIT B1" |
672 unfolding numeral_simps by simp |
675 unfolding numeral_simps by simp |
673 |
676 |
|
677 lemmas succ_bin_simps = |
|
678 succ_Pls succ_Min succ_1 succ_0 |
|
679 |
674 lemma pred_Pls [simp]: |
680 lemma pred_Pls [simp]: |
675 "pred Pls = Min" |
681 "pred Pls = Min" |
676 unfolding numeral_simps by simp |
682 unfolding numeral_simps by simp |
677 |
683 |
678 lemma pred_Min [simp]: |
684 lemma pred_Min [simp]: |
685 |
691 |
686 lemma pred_0 [simp]: |
692 lemma pred_0 [simp]: |
687 "pred (k BIT B0) = pred k BIT B1" |
693 "pred (k BIT B0) = pred k BIT B1" |
688 unfolding numeral_simps by simp |
694 unfolding numeral_simps by simp |
689 |
695 |
|
696 lemmas pred_bin_simps = |
|
697 pred_Pls pred_Min pred_1 pred_0 |
|
698 |
690 lemma minus_Pls [simp]: |
699 lemma minus_Pls [simp]: |
691 "- Pls = Pls" |
700 "- Pls = Pls" |
692 unfolding numeral_simps by simp |
701 unfolding numeral_simps by simp |
693 |
702 |
694 lemma minus_Min [simp]: |
703 lemma minus_Min [simp]: |
700 unfolding numeral_simps by simp |
709 unfolding numeral_simps by simp |
701 |
710 |
702 lemma minus_0 [simp]: |
711 lemma minus_0 [simp]: |
703 "- (k BIT B0) = (- k) BIT B0" |
712 "- (k BIT B0) = (- k) BIT B0" |
704 unfolding numeral_simps by simp |
713 unfolding numeral_simps by simp |
|
714 |
|
715 lemmas minus_bin_simps = |
|
716 minus_Pls minus_Min minus_1 minus_0 |
705 |
717 |
706 |
718 |
707 subsection {* |
719 subsection {* |
708 Binary Addition and Multiplication: @{term "op + \<Colon> int \<Rightarrow> int \<Rightarrow> int"} |
720 Binary Addition and Multiplication: @{term "op + \<Colon> int \<Rightarrow> int \<Rightarrow> int"} |
709 and @{term "op * \<Colon> int \<Rightarrow> int \<Rightarrow> int"} |
721 and @{term "op * \<Colon> int \<Rightarrow> int \<Rightarrow> int"} |
735 |
747 |
736 lemma add_Min_right [simp]: |
748 lemma add_Min_right [simp]: |
737 "k + Min = pred k" |
749 "k + Min = pred k" |
738 unfolding numeral_simps by simp |
750 unfolding numeral_simps by simp |
739 |
751 |
|
752 lemmas add_bin_simps = |
|
753 add_Pls add_Min add_BIT_0 add_BIT_10 add_BIT_11 |
|
754 add_Pls_right add_Min_right |
|
755 |
740 lemma mult_Pls [simp]: |
756 lemma mult_Pls [simp]: |
741 "Pls * w = Pls" |
757 "Pls * w = Pls" |
742 unfolding numeral_simps by simp |
758 unfolding numeral_simps by simp |
743 |
759 |
744 lemma mult_Min [simp]: |
760 lemma mult_Min [simp]: |
750 unfolding numeral_simps int_distrib by simp |
766 unfolding numeral_simps int_distrib by simp |
751 |
767 |
752 lemma mult_num0 [simp]: |
768 lemma mult_num0 [simp]: |
753 "(k BIT B0) * l = (k * l) BIT B0" |
769 "(k BIT B0) * l = (k * l) BIT B0" |
754 unfolding numeral_simps int_distrib by simp |
770 unfolding numeral_simps int_distrib by simp |
|
771 |
|
772 lemmas mult_bin_simps = |
|
773 mult_Pls mult_Min mult_num1 mult_num0 |
755 |
774 |
756 |
775 |
757 subsection {* Converting Numerals to Rings: @{term number_of} *} |
776 subsection {* Converting Numerals to Rings: @{term number_of} *} |
758 |
777 |
759 class number_ring = number + comm_ring_1 + |
778 class number_ring = number + comm_ring_1 + |
1092 Also include @{text simp_thms}. |
1111 Also include @{text simp_thms}. |
1093 *} |
1112 *} |
1094 |
1113 |
1095 lemmas arith_simps = |
1114 lemmas arith_simps = |
1096 bit.distinct |
1115 bit.distinct |
1097 Pls_0_eq Min_1_eq |
1116 normalize_bin_simps pred_bin_simps succ_bin_simps |
1098 pred_Pls pred_Min pred_1 pred_0 |
1117 add_bin_simps minus_bin_simps mult_bin_simps |
1099 succ_Pls succ_Min succ_1 succ_0 |
|
1100 add_Pls add_Min add_BIT_0 add_BIT_10 add_BIT_11 |
|
1101 minus_Pls minus_Min minus_1 minus_0 |
|
1102 mult_Pls mult_Min mult_num1 mult_num0 |
|
1103 add_Pls_right add_Min_right |
|
1104 abs_zero abs_one arith_extra_simps |
1118 abs_zero abs_one arith_extra_simps |
1105 |
1119 |
1106 text {* Simplification of relational operations *} |
1120 text {* Simplification of relational operations *} |
1107 |
1121 |
1108 lemmas rel_simps [simp] = |
1122 lemmas rel_simps [simp] = |