src/HOL/Word/Bit_Int.thy
changeset 46610 0c3a5e28f425
parent 46609 5cb607cb7651
child 47108 2a1953f0d20d
equal deleted inserted replaced
46609:5cb607cb7651 46610:0c3a5e28f425
   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)