src/HOL/Num.thy
changeset 71991 8bff286878bf
parent 71760 e4e05fcd8937
child 74592 3c587b7c3d5c
equal deleted inserted replaced
71990:66beb9d92e43 71991:8bff286878bf
   206 lemma BitM_plus_one: "BitM n + One = Bit0 n"
   206 lemma BitM_plus_one: "BitM n + One = Bit0 n"
   207   by (induct n) simp_all
   207   by (induct n) simp_all
   208 
   208 
   209 lemma one_plus_BitM: "One + BitM n = Bit0 n"
   209 lemma one_plus_BitM: "One + BitM n = Bit0 n"
   210   unfolding add_One_commute BitM_plus_one ..
   210   unfolding add_One_commute BitM_plus_one ..
       
   211 
       
   212 lemma BitM_inc_eq:
       
   213   \<open>Num.BitM (Num.inc n) = Num.Bit1 n\<close>
       
   214   by (induction n) simp_all
       
   215 
       
   216 lemma inc_BitM_eq:
       
   217   \<open>Num.inc (Num.BitM n) = num.Bit0 n\<close>
       
   218   by (simp add: BitM_plus_one[symmetric] add_One)
   211 
   219 
   212 text \<open>Squaring and exponentiation.\<close>
   220 text \<open>Squaring and exponentiation.\<close>
   213 
   221 
   214 primrec sqr :: "num \<Rightarrow> num"
   222 primrec sqr :: "num \<Rightarrow> num"
   215   where
   223   where
   419   where "sub k l = numeral k - numeral l"
   427   where "sub k l = numeral k - numeral l"
   420 
   428 
   421 lemma numeral_BitM: "numeral (BitM n) = numeral (Bit0 n) - 1"
   429 lemma numeral_BitM: "numeral (BitM n) = numeral (Bit0 n) - 1"
   422   by (simp only: BitM_plus_one [symmetric] numeral_add numeral_One eq_diff_eq)
   430   by (simp only: BitM_plus_one [symmetric] numeral_add numeral_One eq_diff_eq)
   423 
   431 
       
   432 lemma sub_inc_One_eq:
       
   433   \<open>Num.sub (Num.inc n) num.One = numeral n\<close>
       
   434   by (simp_all add: sub_def diff_eq_eq numeral_inc numeral.numeral_One)
       
   435 
   424 lemma dbl_simps [simp]:
   436 lemma dbl_simps [simp]:
   425   "dbl (- numeral k) = - dbl (numeral k)"
   437   "dbl (- numeral k) = - dbl (numeral k)"
   426   "dbl 0 = 0"
   438   "dbl 0 = 0"
   427   "dbl 1 = 2"
   439   "dbl 1 = 2"
   428   "dbl (- 1) = - 2"
   440   "dbl (- 1) = - 2"