equal
deleted
inserted
replaced
45 show \<open>set_bits (bit k) = k\<close> |
45 show \<open>set_bits (bit k) = k\<close> |
46 apply (simp only: *** set_bits_int_def horner_sum_bit_eq_take_bit l) |
46 apply (simp only: *** set_bits_int_def horner_sum_bit_eq_take_bit l) |
47 apply simp |
47 apply simp |
48 apply (rule bit_eqI) |
48 apply (rule bit_eqI) |
49 apply (simp add: bit_signed_take_bit_iff min_def) |
49 apply (simp add: bit_signed_take_bit_iff min_def) |
50 using "*" by blast |
50 apply (auto simp add: not_le bit_take_bit_iff dest: *) |
|
51 done |
51 qed |
52 qed |
52 |
53 |
53 end |
54 end |
54 |
55 |
55 lemma int_set_bits_K_False [simp]: "(BITS _. False) = (0 :: int)" |
56 lemma int_set_bits_K_False [simp]: "(BITS _. False) = (0 :: int)" |
221 done |
222 done |
222 qed |
223 qed |
223 qed |
224 qed |
224 |
225 |
225 lemma bin_last_set_bits [simp]: |
226 lemma bin_last_set_bits [simp]: |
226 "bin_last (set_bits f) = f 0" |
227 "odd (set_bits f :: int) = f 0" |
227 by (subst int_set_bits_unfold_BIT) simp_all |
228 by (subst int_set_bits_unfold_BIT) simp_all |
228 |
229 |
229 lemma bin_rest_set_bits [simp]: |
230 lemma bin_rest_set_bits [simp]: |
230 "bin_rest (set_bits f) = set_bits (f \<circ> Suc)" |
231 "set_bits f div (2 :: int) = set_bits (f \<circ> Suc)" |
231 by (subst int_set_bits_unfold_BIT) simp_all |
232 by (subst int_set_bits_unfold_BIT) simp_all |
232 |
233 |
233 lemma bin_nth_set_bits [simp]: |
234 lemma bin_nth_set_bits [simp]: |
234 "bin_nth (set_bits f) m = f m" |
235 "bit (set_bits f :: int) m \<longleftrightarrow> f m" |
235 using wff proof (induction m arbitrary: f) |
236 using wff proof (induction m arbitrary: f) |
236 case 0 |
237 case 0 |
237 then show ?case |
238 then show ?case |
238 by (simp add: Bit_Comprehension.bin_last_set_bits) |
239 by (simp add: Bit_Comprehension.bin_last_set_bits) |
239 next |
240 next |