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