src/HOL/Word/Bit_Comprehension.thy
changeset 72488 ee659bca8955
parent 72397 48013583e8e6
equal deleted inserted replaced
72487:ab32922f139b 72488:ee659bca8955
    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