src/HOL/Integ/NatBin.thy
changeset 14738 83f1a514dcb4
parent 14467 bbfa6b01a55f
child 15003 6145dd7538d7
     1.1 --- a/src/HOL/Integ/NatBin.thy	Tue May 11 14:00:02 2004 +0200
     1.2 +++ b/src/HOL/Integ/NatBin.thy	Tue May 11 20:11:08 2004 +0200
     1.3 @@ -256,42 +256,42 @@
     1.4  We cannot prove general results about the numeral @{term "-1"}, so we have to
     1.5  use @{term "- 1"} instead.*}
     1.6  
     1.7 -lemma power2_eq_square: "(a::'a::{semiring,ringpower})\<twosuperior> = a * a"
     1.8 +lemma power2_eq_square: "(a::'a::{comm_semiring_1_cancel,ringpower})\<twosuperior> = a * a"
     1.9    by (simp add: numeral_2_eq_2 Power.power_Suc)
    1.10  
    1.11 -lemma [simp]: "(0::'a::{semiring,ringpower})\<twosuperior> = 0"
    1.12 +lemma [simp]: "(0::'a::{comm_semiring_1_cancel,ringpower})\<twosuperior> = 0"
    1.13    by (simp add: power2_eq_square)
    1.14  
    1.15 -lemma [simp]: "(1::'a::{semiring,ringpower})\<twosuperior> = 1"
    1.16 +lemma [simp]: "(1::'a::{comm_semiring_1_cancel,ringpower})\<twosuperior> = 1"
    1.17    by (simp add: power2_eq_square)
    1.18  
    1.19  text{*Squares of literal numerals will be evaluated.*}
    1.20  declare power2_eq_square [of "number_of w", standard, simp]
    1.21  
    1.22 -lemma zero_le_power2 [simp]: "0 \<le> (a\<twosuperior>::'a::{ordered_ring,ringpower})"
    1.23 +lemma zero_le_power2 [simp]: "0 \<le> (a\<twosuperior>::'a::{ordered_idom,ringpower})"
    1.24    by (simp add: power2_eq_square zero_le_square)
    1.25  
    1.26  lemma zero_less_power2 [simp]:
    1.27 -     "(0 < a\<twosuperior>) = (a \<noteq> (0::'a::{ordered_ring,ringpower}))"
    1.28 +     "(0 < a\<twosuperior>) = (a \<noteq> (0::'a::{ordered_idom,ringpower}))"
    1.29    by (force simp add: power2_eq_square zero_less_mult_iff linorder_neq_iff)
    1.30  
    1.31  lemma zero_eq_power2 [simp]:
    1.32 -     "(a\<twosuperior> = 0) = (a = (0::'a::{ordered_ring,ringpower}))"
    1.33 +     "(a\<twosuperior> = 0) = (a = (0::'a::{ordered_idom,ringpower}))"
    1.34    by (force simp add: power2_eq_square mult_eq_0_iff)
    1.35  
    1.36  lemma abs_power2 [simp]:
    1.37 -     "abs(a\<twosuperior>) = (a\<twosuperior>::'a::{ordered_ring,ringpower})"
    1.38 +     "abs(a\<twosuperior>) = (a\<twosuperior>::'a::{ordered_idom,ringpower})"
    1.39    by (simp add: power2_eq_square abs_mult abs_mult_self)
    1.40  
    1.41  lemma power2_abs [simp]:
    1.42 -     "(abs a)\<twosuperior> = (a\<twosuperior>::'a::{ordered_ring,ringpower})"
    1.43 +     "(abs a)\<twosuperior> = (a\<twosuperior>::'a::{ordered_idom,ringpower})"
    1.44    by (simp add: power2_eq_square abs_mult_self)
    1.45  
    1.46  lemma power2_minus [simp]:
    1.47 -     "(- a)\<twosuperior> = (a\<twosuperior>::'a::{ring,ringpower})"
    1.48 +     "(- a)\<twosuperior> = (a\<twosuperior>::'a::{comm_ring_1,ringpower})"
    1.49    by (simp add: power2_eq_square)
    1.50  
    1.51 -lemma power_minus1_even: "(- 1) ^ (2*n) = (1::'a::{ring,ringpower})"
    1.52 +lemma power_minus1_even: "(- 1) ^ (2*n) = (1::'a::{comm_ring_1,ringpower})"
    1.53  apply (induct_tac "n")
    1.54  apply (auto simp add: power_Suc power_add)
    1.55  done
    1.56 @@ -303,11 +303,11 @@
    1.57  by (simp add: power_even_eq) 
    1.58  
    1.59  lemma power_minus_even [simp]:
    1.60 -     "(-a) ^ (2*n) = (a::'a::{ring,ringpower}) ^ (2*n)"
    1.61 +     "(-a) ^ (2*n) = (a::'a::{comm_ring_1,ringpower}) ^ (2*n)"
    1.62  by (simp add: power_minus1_even power_minus [of a]) 
    1.63  
    1.64  lemma zero_le_even_power:
    1.65 -     "0 \<le> (a::'a::{ordered_ring,ringpower}) ^ (2*n)"
    1.66 +     "0 \<le> (a::'a::{ordered_idom,ringpower}) ^ (2*n)"
    1.67  proof (induct "n")
    1.68    case 0
    1.69      show ?case by (simp add: zero_le_one)
    1.70 @@ -320,7 +320,7 @@
    1.71  qed
    1.72  
    1.73  lemma odd_power_less_zero:
    1.74 -     "(a::'a::{ordered_ring,ringpower}) < 0 ==> a ^ Suc(2*n) < 0"
    1.75 +     "(a::'a::{ordered_idom,ringpower}) < 0 ==> a ^ Suc(2*n) < 0"
    1.76  proof (induct "n")
    1.77    case 0
    1.78      show ?case by (simp add: Power.power_Suc)
    1.79 @@ -333,7 +333,7 @@
    1.80  qed
    1.81  
    1.82  lemma odd_0_le_power_imp_0_le:
    1.83 -     "0 \<le> a  ^ Suc(2*n) ==> 0 \<le> (a::'a::{ordered_ring,ringpower})"
    1.84 +     "0 \<le> a  ^ Suc(2*n) ==> 0 \<le> (a::'a::{ordered_idom,ringpower})"
    1.85  apply (insert odd_power_less_zero [of a n]) 
    1.86  apply (force simp add: linorder_not_less [symmetric]) 
    1.87  done
    1.88 @@ -473,7 +473,7 @@
    1.89       "((number_of (v BIT x) ::int) = number_of (w BIT y)) =  
    1.90        (x=y & (((number_of v) ::int) = number_of w))"
    1.91  by (simp only: simp_thms number_of_BIT lemma1 lemma2 eq_commute
    1.92 -               Ring_and_Field.add_left_cancel add_assoc Ring_and_Field.add_0
    1.93 +               OrderedGroup.add_left_cancel add_assoc OrderedGroup.add_0
    1.94              split add: split_if cong: imp_cong) 
    1.95  
    1.96