# HG changeset patch # User haftmann # Date 1581444236 -3600 # Node ID 4e66867fd63fc23c4bfd5d247134297b291061e2 # Parent 8b0b8b9ea653364a05070eb6ae943947b030b6b5 tuned proof diff -r 8b0b8b9ea653 -r 4e66867fd63f src/HOL/Parity.thy --- a/src/HOL/Parity.thy Wed Feb 12 21:18:04 2020 +0100 +++ b/src/HOL/Parity.thy Tue Feb 11 19:03:56 2020 +0100 @@ -890,17 +890,32 @@ by (cases n, auto simp add: bit_def ac_simps) lemma bit_eq_rec: - \a = b \ (even a \ even b) \ a div 2 = b div 2\ - apply (auto simp add: bit_eq_iff) - using bit_0 apply blast - using bit_0 apply blast - using bit_Suc apply blast - using bit_Suc apply blast - apply (metis bit_eq_iff even_iff_mod_2_eq_zero mod_div_mult_eq) - apply (metis bit_eq_iff even_iff_mod_2_eq_zero mod_div_mult_eq) - apply (metis bit_eq_iff mod2_eq_if mod_div_mult_eq) - apply (metis bit_eq_iff mod2_eq_if mod_div_mult_eq) - done + \a = b \ (even a \ even b) \ a div 2 = b div 2\ (is \?P = ?Q\) +proof + assume ?P + then show ?Q + by simp +next + assume ?Q + then have \even a \ even b\ and \a div 2 = b div 2\ + by simp_all + show ?P + proof (rule bit_eqI) + fix n + show \bit a n \ bit b n\ + proof (cases n) + case 0 + with \even a \ even b\ show ?thesis + by simp + next + case (Suc n) + moreover from \a div 2 = b div 2\ have \bit (a div 2) n = bit (b div 2) n\ + by simp + ultimately show ?thesis + by simp + qed + qed +qed lemma bit_mask_iff: \bit (2 ^ m - 1) n \ 2 ^ n \ 0 \ n < m\