diff -r 235173749448 -r d45f5d4c41bd src/HOL/Library/Bit_Operations.thy --- a/src/HOL/Library/Bit_Operations.thy Fri Jun 19 18:44:36 2020 +0200 +++ b/src/HOL/Library/Bit_Operations.thy Sat Jun 20 05:56:28 2020 +0000 @@ -123,7 +123,7 @@ (simp_all add: even_mask_iff even_or_iff bit_or_iff bit_mask_iff bit_exp_iff bit_double_iff not_less le_less_Suc_eq bit_1_iff, auto simp add: mult_2) qed -lemma take_bit_eq_mask [code]: +lemma take_bit_eq_mask: \take_bit n a = a AND mask n\ by (rule bit_eqI) (auto simp add: bit_take_bit_iff bit_and_iff bit_mask_iff) @@ -194,16 +194,14 @@ proof - interpret bit: boolean_algebra \(AND)\ \(OR)\ NOT 0 \- 1\ apply standard - apply (simp_all add: bit_eq_iff bit_and_iff bit_or_iff bit_not_iff) - apply (auto simp add: exp_eq_0_imp_not_bit bit_exp_iff) + apply (simp_all add: bit_eq_iff) + apply (auto simp add: bit_and_iff bit_or_iff bit_not_iff bit_exp_iff exp_eq_0_imp_not_bit) done show \boolean_algebra (AND) (OR) NOT 0 (- 1)\ by standard show \boolean_algebra.xor (AND) (OR) NOT = (XOR)\ - apply (auto simp add: fun_eq_iff bit.xor_def bit_eq_iff bit_and_iff bit_or_iff bit_not_iff bit_xor_iff) - apply (simp_all add: bit_exp_iff, simp_all add: bit_def) - apply (metis local.bit_exp_iff local.bits_div_by_0) - apply (metis local.bit_exp_iff local.bits_div_by_0) + apply (simp add: fun_eq_iff bit_eq_iff bit.xor_def) + apply (auto simp add: bit_and_iff bit_or_iff bit_not_iff bit_xor_iff exp_eq_0_imp_not_bit) done qed @@ -636,20 +634,6 @@ unbundle integer.lifting natural.lifting -context - includes lifting_syntax -begin - -lemma transfer_rule_bit_integer [transfer_rule]: - \((pcr_integer :: int \ integer \ bool) ===> (=)) bit bit\ - by (unfold bit_def) transfer_prover - -lemma transfer_rule_bit_natural [transfer_rule]: - \((pcr_natural :: nat \ natural \ bool) ===> (=)) bit bit\ - by (unfold bit_def) transfer_prover - -end - instantiation integer :: ring_bit_operations begin @@ -742,7 +726,7 @@ beyond the boundary. The property \<^prop>\(2 :: int) ^ n \ 0\ represents that \<^term>\n\ is \<^emph>\not\ beyond that boundary. - \<^item> The projection on a single bit is then @{thm bit_def [where ?'a = int, no_vars]}. + \<^item> The projection on a single bit is then @{thm bit_iff_odd [where ?'a = int, no_vars]}. \<^item> This leads to the most fundamental properties of bit values: