# HG changeset patch # User haftmann # Date 1707242923 0 # Node ID dafb3d343cd63c2b131bebf7d9d85e10fa55de10 # Parent 924e487288fb1070cc0d47491046597941c67cc4 more lemmas and more correct lemma names diff -r 924e487288fb -r dafb3d343cd6 src/HOL/Bit_Operations.thy --- a/src/HOL/Bit_Operations.thy Wed Feb 07 11:57:22 2024 +0000 +++ b/src/HOL/Bit_Operations.thy Tue Feb 06 18:08:43 2024 +0000 @@ -17,7 +17,7 @@ assumes half_div_exp_eq: \a div 2 div 2 ^ n = a div 2 ^ Suc n\ and even_double_div_exp_iff: \2 ^ Suc n \ 0 \ even (2 * a div 2 ^ Suc n) \ even (a div 2 ^ n)\ and even_decr_exp_div_exp_iff: \2 ^ n \ 0 \ even ((2 ^ m - 1) div 2 ^ n) \ m \ n\ - and even_mod_exp_diff_exp_iff: \even (a mod 2 ^ m div 2 ^ n) \ m \ n \ even (a div 2 ^ n)\ + and even_mod_exp_div_exp_iff: \even (a mod 2 ^ m div 2 ^ n) \ m \ n \ even (a div 2 ^ n)\ fixes bit :: \'a \ nat \ bool\ assumes bit_iff_odd: \bit a n \ odd (a div 2 ^ n)\ begin @@ -80,7 +80,7 @@ end -lemma bit_iff_idd_imp_stable: +lemma bit_iff_odd_imp_stable: \a div 2 = a\ if \\n. bit a n \ odd a\ using that proof (induction a rule: bit_induct) case (stable a) @@ -182,7 +182,7 @@ from stable(2) [of 0] have **: \even b \ even a\ by (simp add: bit_0) have \b div 2 = b\ - proof (rule bit_iff_idd_imp_stable) + proof (rule bit_iff_odd_imp_stable) fix n from stable have *: \bit b n \ bit a n\ by simp @@ -870,7 +870,7 @@ lemma bit_take_bit_iff [bit_simps]: \bit (take_bit m a) n \ n < m \ bit a n\ - by (simp add: take_bit_eq_mod bit_iff_odd even_mod_exp_diff_exp_iff not_le) + by (simp add: take_bit_eq_mod bit_iff_odd even_mod_exp_div_exp_iff not_le) lemma take_bit_Suc: \take_bit (Suc n) a = take_bit n (a div 2) * 2 + a mod 2\ (is \?lhs = ?rhs\) diff -r 924e487288fb -r dafb3d343cd6 src/HOL/Code_Numeral.thy --- a/src/HOL/Code_Numeral.thy Wed Feb 07 11:57:22 2024 +0000 +++ b/src/HOL/Code_Numeral.thy Tue Feb 06 18:08:43 2024 +0000 @@ -349,7 +349,7 @@ instance by (standard; transfer) (fact bit_induct div_by_0 div_by_1 div_0 even_half_succ_eq - half_div_exp_eq even_double_div_exp_iff even_decr_exp_div_exp_iff even_mod_exp_diff_exp_iff + half_div_exp_eq even_double_div_exp_iff even_decr_exp_div_exp_iff even_mod_exp_div_exp_iff bit_iff_odd push_bit_eq_mult drop_bit_eq_div take_bit_eq_mod and_rec or_rec xor_rec mask_eq_exp_minus_1 set_bit_eq_or unset_bit_eq_or_xor flip_bit_eq_xor not_eq_complement)+ @@ -1109,7 +1109,7 @@ instance by (standard; transfer) (fact bit_induct div_by_0 div_by_1 div_0 even_half_succ_eq - half_div_exp_eq even_double_div_exp_iff even_decr_exp_div_exp_iff even_mod_exp_diff_exp_iff + half_div_exp_eq even_double_div_exp_iff even_decr_exp_div_exp_iff even_mod_exp_div_exp_iff bit_iff_odd push_bit_eq_mult drop_bit_eq_div take_bit_eq_mod and_rec or_rec xor_rec mask_eq_exp_minus_1 set_bit_eq_or unset_bit_eq_or_xor flip_bit_eq_xor not_eq_complement)+ diff -r 924e487288fb -r dafb3d343cd6 src/HOL/Parity.thy --- a/src/HOL/Parity.thy Wed Feb 07 11:57:22 2024 +0000 +++ b/src/HOL/Parity.thy Tue Feb 06 18:08:43 2024 +0000 @@ -192,6 +192,14 @@ \even (prod f A) \ (\a\A. even (f a))\ if \finite A\ using that by (induction A) simp_all +lemma even_half_maybe_succ_eq [simp]: + \even a \ (of_bool b + a) div 2 = a div 2\ + by simp + +lemma even_half_maybe_succ'_eq [simp]: + \even a \ (b mod 2 + a) div 2 = a div 2\ + by (simp add: mod2_eq_if) + lemma mask_eq_sum_exp: \2 ^ n - 1 = (\m\{q. q < n}. 2 ^ m)\ proof -