src/HOL/Word/Word.thy
changeset 72083 3ec876181527
parent 72082 41393ecb57ac
child 72088 a36db1c8238e
equal deleted inserted replaced
72082:41393ecb57ac 72083:3ec876181527
  1162 lemma [code]:
  1162 lemma [code]:
  1163   \<open>drop_bit n w = w >> n\<close> for w :: \<open>'a::len word\<close>
  1163   \<open>drop_bit n w = w >> n\<close> for w :: \<open>'a::len word\<close>
  1164   by (simp add: shiftr_word_eq)
  1164   by (simp add: shiftr_word_eq)
  1165 
  1165 
  1166 lemma [code]:
  1166 lemma [code]:
  1167   \<open>take_bit n a = a AND mask n\<close> for a :: \<open>'a::len word\<close>
  1167   \<open>uint (take_bit n w) = (if n < LENGTH('a::len) then take_bit n (uint w) else uint w)\<close>
  1168   by (fact take_bit_eq_mask)
  1168   for w :: \<open>'a::len word\<close>
       
  1169   by transfer (simp add: min_def)
  1169 
  1170 
  1170 lemma [code]:
  1171 lemma [code]:
  1171   \<open>mask (Suc n) = push_bit n (1 :: 'a word) OR mask n\<close>
  1172   \<open>uint (mask n :: 'a::len word) = mask (min LENGTH('a) n)\<close>
  1172   \<open>mask 0 = (0 :: 'a::len word)\<close>
  1173   by transfer simp
  1173   by (simp_all add: mask_Suc_exp push_bit_of_1)
       
  1174 
  1174 
  1175 lemma [code_abbrev]:
  1175 lemma [code_abbrev]:
  1176   \<open>push_bit n 1 = (2 :: 'a::len word) ^ n\<close>
  1176   \<open>push_bit n 1 = (2 :: 'a::len word) ^ n\<close>
  1177   by (fact push_bit_of_1)
  1177   by (fact push_bit_of_1)
  1178 
  1178