equal
deleted
inserted
replaced
517 by (induct n arbitrary: w) auto |
517 by (induct n arbitrary: w) auto |
518 |
518 |
519 lemma bin_split_zero [simp]: "bin_split n 0 = (0, 0)" |
519 lemma bin_split_zero [simp]: "bin_split n 0 = (0, 0)" |
520 by (induct n) auto |
520 by (induct n) auto |
521 |
521 |
522 lemma bin_split_Pls [simp]: |
522 lemma bin_split_minus1 [simp]: |
523 "bin_split n Int.Pls = (Int.Pls, Int.Pls)" |
523 "bin_split n -1 = (-1, bintrunc n -1)" |
524 unfolding Pls_def by (rule bin_split_zero) |
524 by (induct n) auto |
525 |
|
526 lemma bin_split_Min [simp]: |
|
527 "bin_split n Int.Min = (Int.Min, bintrunc n Int.Min)" |
|
528 by (induct n) (auto simp: Let_def split: ls_splits) |
|
529 |
525 |
530 lemma bin_split_trunc: |
526 lemma bin_split_trunc: |
531 "bin_split (min m n) c = (a, b) ==> |
527 "bin_split (min m n) c = (a, b) ==> |
532 bin_split n (bintrunc m c) = (bintrunc (m - n) a, b)" |
528 bin_split n (bintrunc m c) = (bintrunc (m - n) a, b)" |
533 apply (induct n arbitrary: m b c, clarsimp) |
529 apply (induct n arbitrary: m b c, clarsimp) |
551 apply (simp add: Bit_def) |
547 apply (simp add: Bit_def) |
552 done |
548 done |
553 |
549 |
554 lemma bin_split_num: |
550 lemma bin_split_num: |
555 "bin_split n b = (b div 2 ^ n, b mod 2 ^ n)" |
551 "bin_split n b = (b div 2 ^ n, b mod 2 ^ n)" |
556 apply (induct n arbitrary: b, simp add: Pls_def) |
552 apply (induct n arbitrary: b, simp) |
557 apply (simp add: bin_rest_def zdiv_zmult2_eq) |
553 apply (simp add: bin_rest_def zdiv_zmult2_eq) |
558 apply (case_tac b rule: bin_exhaust) |
554 apply (case_tac b rule: bin_exhaust) |
559 apply simp |
555 apply simp |
560 apply (simp add: Bit_def mod_mult_mult1 p1mod22k bitval_def |
556 apply (simp add: Bit_def mod_mult_mult1 p1mod22k bitval_def |
561 split: bit.split) |
557 split: bit.split) |