src/HOL/Word/BinBoolList.thy
changeset 30952 7ab2716dd93b
parent 29668 33ba3faeaa0e
child 30971 7fbebf75b3ef
equal deleted inserted replaced
30951:a6e26a248f03 30952:7ab2716dd93b
    36   Nil: "rbl_mult Nil x = Nil"
    36   Nil: "rbl_mult Nil x = Nil"
    37   | Cons: "rbl_mult (y # ys) x = (let ws = False # rbl_mult ys x in 
    37   | Cons: "rbl_mult (y # ys) x = (let ws = False # rbl_mult ys x in 
    38     if y then rbl_add ws x else ws)"
    38     if y then rbl_add ws x else ws)"
    39 
    39 
    40 lemma butlast_power:
    40 lemma butlast_power:
    41   "(butlast ^ n) bl = take (length bl - n) bl"
    41   "(butlast o^ n) bl = take (length bl - n) bl"
    42   by (induct n) (auto simp: butlast_take)
    42   by (induct n) (auto simp: butlast_take)
    43 
    43 
    44 lemma bin_to_bl_aux_Pls_minus_simp [simp]:
    44 lemma bin_to_bl_aux_Pls_minus_simp [simp]:
    45   "0 < n ==> bin_to_bl_aux n Int.Pls bl = 
    45   "0 < n ==> bin_to_bl_aux n Int.Pls bl = 
    46     bin_to_bl_aux (n - 1) Int.Pls (False # bl)"
    46     bin_to_bl_aux (n - 1) Int.Pls (False # bl)"
   368   apply (cases "k <= length bl")
   368   apply (cases "k <= length bl")
   369    apply auto
   369    apply auto
   370   done
   370   done
   371 
   371 
   372 lemma nth_rest_power_bin [rule_format] :
   372 lemma nth_rest_power_bin [rule_format] :
   373   "ALL n. bin_nth ((bin_rest ^ k) w) n = bin_nth w (n + k)"
   373   "ALL n. bin_nth ((bin_rest o^ k) w) n = bin_nth w (n + k)"
   374   apply (induct k, clarsimp)
   374   apply (induct k, clarsimp)
   375   apply clarsimp
   375   apply clarsimp
   376   apply (simp only: bin_nth.Suc [symmetric] add_Suc)
   376   apply (simp only: bin_nth.Suc [symmetric] add_Suc)
   377   done
   377   done
   378 
   378 
   379 lemma take_rest_power_bin:
   379 lemma take_rest_power_bin:
   380   "m <= n ==> take m (bin_to_bl n w) = bin_to_bl m ((bin_rest ^ (n - m)) w)" 
   380   "m <= n ==> take m (bin_to_bl n w) = bin_to_bl m ((bin_rest o^ (n - m)) w)" 
   381   apply (rule nth_equalityI)
   381   apply (rule nth_equalityI)
   382    apply simp
   382    apply simp
   383   apply (clarsimp simp add: nth_bin_to_bl nth_rest_power_bin)
   383   apply (clarsimp simp add: nth_bin_to_bl nth_rest_power_bin)
   384   done
   384   done
   385 
   385