enable eq_bin_simps for simplifying equalities on numerals
authorhuffman
Wed, 03 Dec 2008 21:50:36 -0800
changeset 28967 3bdb1eae352c
parent 28963 f6d9e0e0b153
child 28968 a4f3db5d1393
enable eq_bin_simps for simplifying equalities on numerals
src/HOL/Int.thy
src/HOL/Library/Float.thy
src/HOL/Presburger.thy
--- a/src/HOL/Int.thy	Wed Dec 03 21:00:39 2008 -0800
+++ b/src/HOL/Int.thy	Wed Dec 03 21:50:36 2008 -0800
@@ -1307,10 +1307,15 @@
   "(number_of x::'a::{ordered_idom,number_ring}) \<le> number_of y \<longleftrightarrow> x \<le> y"
   unfolding number_of_eq by (rule of_int_le_iff)
 
+lemma eq_number_of [simp]:
+  "(number_of x::'a::{ring_char_0,number_ring}) = number_of y \<longleftrightarrow> x = y"
+  unfolding number_of_eq by (rule of_int_eq_iff)
+
 lemmas rel_simps [simp] = 
   less_number_of less_bin_simps
   le_number_of le_bin_simps
-  eq_number_of_eq iszero_0 nonzero_number_of_Min
+  eq_number_of eq_bin_simps
+  iszero_0 nonzero_number_of_Min
   iszero_number_of_Bit0 iszero_number_of_Bit1
   not_neg_number_of_Pls not_neg_0 not_neg_1 not_iszero_1
   neg_number_of_Min neg_number_of_Bit0 neg_number_of_Bit1
--- a/src/HOL/Library/Float.thy	Wed Dec 03 21:00:39 2008 -0800
+++ b/src/HOL/Library/Float.thy	Wed Dec 03 21:50:36 2008 -0800
@@ -499,7 +499,7 @@
 
 lemma int_eq_number_of_eq:
   "(((number_of v)::int)=(number_of w)) = iszero ((number_of (v + uminus w))::int)"
-  by simp
+  by (rule eq_number_of_eq)
 
 lemma int_iszero_number_of_Pls: "iszero (Numeral0::int)"
   by (simp only: iszero_number_of_Pls)
@@ -514,7 +514,7 @@
   by simp
 
 lemma int_less_number_of_eq_neg: "(((number_of x)::int) < number_of y) = neg ((number_of (x + (uminus y)))::int)"
-  unfolding neg_def number_of_is_id by simp
+  by (rule less_number_of_eq_neg)
 
 lemma int_not_neg_number_of_Pls: "\<not> (neg (Numeral0::int))"
   by simp
--- a/src/HOL/Presburger.thy	Wed Dec 03 21:00:39 2008 -0800
+++ b/src/HOL/Presburger.thy	Wed Dec 03 21:50:36 2008 -0800
@@ -411,7 +411,7 @@
   by (simp cong: conj_cong)
 lemma int_eq_number_of_eq:
   "(((number_of v)::int) = (number_of w)) = iszero ((number_of (v + (uminus w)))::int)"
-  by simp
+  by (rule eq_number_of_eq)
 
 lemma mod_eq0_dvd_iff[presburger]: "(m::nat) mod n = 0 \<longleftrightarrow> n dvd m"
 unfolding dvd_eq_mod_eq_0[symmetric] ..