equal
deleted
inserted
replaced
382 lemmas bin_trunc_and = bin_trunc_ao(1) [THEN bintr_bintr_i] |
382 lemmas bin_trunc_and = bin_trunc_ao(1) [THEN bintr_bintr_i] |
383 lemmas bin_trunc_or = bin_trunc_ao(2) [THEN bintr_bintr_i] |
383 lemmas bin_trunc_or = bin_trunc_ao(2) [THEN bintr_bintr_i] |
384 |
384 |
385 subsection {* Setting and clearing bits *} |
385 subsection {* Setting and clearing bits *} |
386 |
386 |
|
387 (** nth bit, set/clear **) |
|
388 |
387 primrec |
389 primrec |
388 bin_sc :: "nat => bool => int => int" |
390 bin_sc :: "nat => bool => int => int" |
389 where |
391 where |
390 Z: "bin_sc 0 b w = bin_rest w BIT b" |
392 Z: "bin_sc 0 b w = bin_rest w BIT b" |
391 | Suc: "bin_sc (Suc n) b w = bin_sc n b (bin_rest w) BIT bin_last w" |
393 | Suc: "bin_sc (Suc n) b w = bin_sc n b (bin_rest w) BIT bin_last w" |
392 |
|
393 (** nth bit, set/clear **) |
|
394 |
394 |
395 lemma bin_nth_sc [simp]: |
395 lemma bin_nth_sc [simp]: |
396 "bin_nth (bin_sc n b w) n \<longleftrightarrow> b" |
396 "bin_nth (bin_sc n b w) n \<longleftrightarrow> b" |
397 by (induct n arbitrary: w) auto |
397 by (induct n arbitrary: w) auto |
398 |
398 |