src/HOL/Int.thy
changeset 26075 815f3ccc0b45
parent 26072 f65a7fa2da6c
child 26086 3c243098b64a
equal deleted inserted replaced
26074:44c5419cd9f1 26075:815f3ccc0b45
   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] =