equal
deleted
inserted
replaced
1287 definition [iff]: "i !! n \<longleftrightarrow> bin_nth i n" |
1287 definition [iff]: "i !! n \<longleftrightarrow> bin_nth i n" |
1288 |
1288 |
1289 definition "lsb i = i !! 0" for i :: int |
1289 definition "lsb i = i !! 0" for i :: int |
1290 |
1290 |
1291 definition "set_bit i n b = bin_sc n b i" |
1291 definition "set_bit i n b = bin_sc n b i" |
1292 |
|
1293 definition |
|
1294 "set_bits f = |
|
1295 (if \<exists>n. \<forall>n'\<ge>n. \<not> f n' then |
|
1296 let n = LEAST n. \<forall>n'\<ge>n. \<not> f n' |
|
1297 in bl_to_bin (rev (map f [0..<n])) |
|
1298 else if \<exists>n. \<forall>n'\<ge>n. f n' then |
|
1299 let n = LEAST n. \<forall>n'\<ge>n. f n' |
|
1300 in sbintrunc n (bl_to_bin (True # rev (map f [0..<n]))) |
|
1301 else 0 :: int)" |
|
1302 |
1292 |
1303 definition "shiftl x n = x * 2 ^ n" for x :: int |
1293 definition "shiftl x n = x * 2 ^ n" for x :: int |
1304 |
1294 |
1305 definition "shiftr x n = x div 2 ^ n" for x :: int |
1295 definition "shiftr x n = x div 2 ^ n" for x :: int |
1306 |
1296 |
2173 |
2163 |
2174 lemma bin_set_conv_OR: |
2164 lemma bin_set_conv_OR: |
2175 "bin_sc n True i = i OR (1 << n)" |
2165 "bin_sc n True i = i OR (1 << n)" |
2176 by(induct n arbitrary: i)(auto intro: bin_rl_eqI) |
2166 by(induct n arbitrary: i)(auto intro: bin_rl_eqI) |
2177 |
2167 |
2178 lemma int_set_bits_K_True [simp]: "(BITS _. True) = (-1 :: int)" |
|
2179 by (auto simp add: set_bits_int_def bl_to_bin_def) |
|
2180 |
|
2181 lemma int_set_bits_K_False [simp]: "(BITS _. False) = (0 :: int)" |
|
2182 by (simp add: set_bits_int_def) |
|
2183 |
|
2184 lemma msb_conv_bin_sign: "msb x \<longleftrightarrow> bin_sign x = -1" |
2168 lemma msb_conv_bin_sign: "msb x \<longleftrightarrow> bin_sign x = -1" |
2185 by(simp add: bin_sign_def not_le msb_int_def) |
2169 by(simp add: bin_sign_def not_le msb_int_def) |
2186 |
2170 |
2187 lemma msb_BIT [simp]: "msb (x BIT b) = msb x" |
2171 lemma msb_BIT [simp]: "msb (x BIT b) = msb x" |
2188 by(simp add: msb_int_def) |
2172 by(simp add: msb_int_def) |