diff -r e4207dfa36b5 -r df5b2785abd6 src/HOL/Bit_Operations.thy --- a/src/HOL/Bit_Operations.thy Fri Apr 18 14:19:41 2025 +0200 +++ b/src/HOL/Bit_Operations.thy Sat Apr 19 17:39:06 2025 +0200 @@ -778,6 +778,14 @@ by (simp add: mask_eq_exp_minus_1) qed +lemma mask_eq_iff_eq_exp: + \mask n = a \ a + 1 = 2 ^ n\ + by (auto simp flip: inc_mask_eq_exp) + +lemma eq_mask_iff_eq_exp: + \a = mask n \ a + 1 = 2 ^ n\ + by (auto simp flip: inc_mask_eq_exp) + lemma mask_Suc_double: \mask (Suc n) = 1 OR 2 * mask n\ proof - @@ -3832,6 +3840,10 @@ using that take_bit_int_less_eq [of \Suc n\ \k + 2 ^ n\] by (simp add: signed_take_bit_eq_take_bit_shift) +lemma signed_take_bit_Suc_sgn_eq [simp]: + \signed_take_bit (Suc n) (sgn k) = sgn k\ for k :: int + by (simp add: sgn_if) + lemma signed_take_bit_Suc_bit0 [simp]: \signed_take_bit (Suc n) (numeral (Num.Bit0 k)) = signed_take_bit n (numeral k) * (2 :: int)\ by (simp add: signed_take_bit_Suc)