src/HOL/Word/Bit_Int.thy
changeset 45956 ae70b6830f15
parent 45955 fc303e8f5c20
child 46001 0b562d564d5f
equal deleted inserted replaced
45955:fc303e8f5c20 45956:ae70b6830f15
   533   "bin_cat x m (bin_cat y n z) = bin_cat (bin_cat x (m - n) y) (min m n) z"
   533   "bin_cat x m (bin_cat y n z) = bin_cat (bin_cat x (m - n) y) (min m n) z"
   534   apply (induct n arbitrary: z m, clarsimp)
   534   apply (induct n arbitrary: z m, clarsimp)
   535   apply (case_tac m, auto)
   535   apply (case_tac m, auto)
   536   done
   536   done
   537 
   537 
       
   538 lemma bin_cat_zero [simp]: "bin_cat 0 n w = bintrunc n w"
       
   539   by (induct n arbitrary: w) (auto simp: Int.Pls_def)
       
   540 
   538 lemma bin_cat_Pls [simp]: "bin_cat Int.Pls n w = bintrunc n w"
   541 lemma bin_cat_Pls [simp]: "bin_cat Int.Pls n w = bintrunc n w"
   539   by (induct n arbitrary: w) auto
   542   unfolding Pls_def by (rule bin_cat_zero)
   540 
   543 
   541 lemma bintr_cat1: 
   544 lemma bintr_cat1: 
   542   "bintrunc (k + n) (bin_cat a n b) = bin_cat (bintrunc k a) n b"
   545   "bintrunc (k + n) (bin_cat a n b) = bin_cat (bintrunc k a) n b"
   543   by (induct n arbitrary: b) auto
   546   by (induct n arbitrary: b) auto
   544     
   547     
   564 
   567 
   565 lemma bin_split_cat:
   568 lemma bin_split_cat:
   566   "bin_split n (bin_cat v n w) = (v, bintrunc n w)"
   569   "bin_split n (bin_cat v n w) = (v, bintrunc n w)"
   567   by (induct n arbitrary: w) auto
   570   by (induct n arbitrary: w) auto
   568 
   571 
       
   572 lemma bin_split_zero [simp]: "bin_split n 0 = (0, 0)"
       
   573   by (induct n) (auto simp: Int.Pls_def)
       
   574 
   569 lemma bin_split_Pls [simp]:
   575 lemma bin_split_Pls [simp]:
   570   "bin_split n Int.Pls = (Int.Pls, Int.Pls)"
   576   "bin_split n Int.Pls = (Int.Pls, Int.Pls)"
   571   by (induct n) (auto simp: Let_def BIT_simps split: ls_splits)
   577   unfolding Pls_def by (rule bin_split_zero)
   572 
   578 
   573 lemma bin_split_Min [simp]:
   579 lemma bin_split_Min [simp]:
   574   "bin_split n Int.Min = (Int.Min, bintrunc n Int.Min)"
   580   "bin_split n Int.Min = (Int.Min, bintrunc n Int.Min)"
   575   by (induct n) (auto simp: Let_def split: ls_splits)
   581   by (induct n) (auto simp: Let_def split: ls_splits)
   576 
   582