# HG changeset patch # User haftmann # Date 1592471250 0 # Node ID a9f913d17d00f6aafdef263bcb545a0b9d83a162 # Parent 13bb3f5cdc5b9b11358065f28f63c917c7fdd13d tweak for code generation diff -r 13bb3f5cdc5b -r a9f913d17d00 src/HOL/Word/Word.thy --- a/src/HOL/Word/Word.thy Thu Jun 18 09:07:30 2020 +0000 +++ b/src/HOL/Word/Word.thy Thu Jun 18 09:07:30 2020 +0000 @@ -852,10 +852,22 @@ \w << n = push_bit n w\ for w :: \'a::len word\ by (induction n) (simp_all add: shiftl_def shiftl1_eq_mult_2 push_bit_double) +lemma [code]: + \push_bit n w = w << n\ for w :: \'a::len word\ + by (simp add: shiftl_word_eq) + lemma shiftr_word_eq: \w >> n = drop_bit n w\ for w :: \'a::len word\ by (induction n) (simp_all add: shiftr_def shiftr1_eq_div_2 drop_bit_Suc drop_bit_half) +lemma [code]: + \drop_bit n w = w >> n\ for w :: \'a::len word\ + by (simp add: shiftr_word_eq) + +lemma [code_abbrev]: + \push_bit n 1 = (2 :: 'a::len word) ^ n\ + by (fact push_bit_of_1) + lemma word_msb_def: "msb a \ bin_sign (sint a) = - 1" by (simp add: msb_word_def sint_uint)