src/HOL/Word/Bits_Int.thy
changeset 54874 c55c5dacd6a1
parent 54854 3324a0078636
child 58410 6d46ad54a2ab
equal deleted inserted replaced
54873:c92a0e6ba828 54874:c55c5dacd6a1
   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