equal
deleted
inserted
replaced
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" |