tweaking of lemmas in RealDef, RealOrd
authorpaulson
Thu, 01 Jan 2004 10:06:32 +0100
changeset 14334 6137d24eef79
parent 14333 14f29eb097a3
child 14335 9c0b5e081037
tweaking of lemmas in RealDef, RealOrd
src/HOL/Complex/CLim.ML
src/HOL/Complex/CSeries.ML
src/HOL/Complex/Complex.thy
src/HOL/Complex/NSCA.ML
src/HOL/Complex/ROOT.ML
src/HOL/Hyperreal/Fact.ML
src/HOL/Hyperreal/HLog.ML
src/HOL/Hyperreal/HTranscendental.ML
src/HOL/Hyperreal/HyperBin.ML
src/HOL/Hyperreal/HyperDef.thy
src/HOL/Hyperreal/HyperOrd.thy
src/HOL/Hyperreal/HyperPow.ML
src/HOL/Hyperreal/Integration.ML
src/HOL/Hyperreal/Lim.ML
src/HOL/Hyperreal/Log.ML
src/HOL/Hyperreal/MacLaurin.ML
src/HOL/Hyperreal/NSA.ML
src/HOL/Hyperreal/NthRoot.thy
src/HOL/Hyperreal/Poly.ML
src/HOL/Hyperreal/SEQ.ML
src/HOL/Hyperreal/Series.ML
src/HOL/Hyperreal/Transcendental.ML
src/HOL/Hyperreal/hypreal_arith.ML
src/HOL/Hyperreal/hypreal_arith0.ML
src/HOL/IsaMakefile
src/HOL/Real/Complex_Numbers.thy
src/HOL/Real/HahnBanach/Aux.thy
src/HOL/Real/HahnBanach/FunctionNorm.thy
src/HOL/Real/HahnBanach/HahnBanach.thy
src/HOL/Real/HahnBanach/HahnBanachExtLemmas.thy
src/HOL/Real/RComplete.ML
src/HOL/Real/RealArith.thy
src/HOL/Real/RealBin.ML
src/HOL/Real/RealDef.thy
src/HOL/Real/RealInt.thy
src/HOL/Real/RealOrd.thy
src/HOL/Real/RealPow.thy
src/HOL/Real/real_arith.ML
src/HOL/Real/real_arith0.ML
src/HOL/Ring_and_Field.thy
--- a/src/HOL/Complex/CLim.ML	Mon Dec 29 06:49:26 2003 +0100
+++ b/src/HOL/Complex/CLim.ML	Thu Jan 01 10:06:32 2004 +0100
@@ -50,7 +50,7 @@
 \             cmod(xa - x) < inverse(real(Suc n)) & r <= cmod(f xa - L)";
 by (Clarify_tac 1); 
 by (cut_inst_tac [("n1","n")]
-    (real_of_nat_Suc_gt_zero RS real_inverse_gt_0) 1);
+    (real_of_nat_Suc_gt_zero RS positive_imp_inverse_positive) 1);
 by Auto_tac;
 val lemma_CLIM = result();
 
@@ -132,7 +132,7 @@
 \             cmod(xa - x) < inverse(real(Suc n)) & r <= abs (f xa - L)";
 by (Clarify_tac 1); 
 by (cut_inst_tac [("n1","n")]
-    (real_of_nat_Suc_gt_zero RS real_inverse_gt_0) 1);
+    (real_of_nat_Suc_gt_zero RS positive_imp_inverse_positive) 1);
 by Auto_tac;
 val lemma_CRLIM = result();
 
--- a/src/HOL/Complex/CSeries.ML	Mon Dec 29 06:49:26 2003 +0100
+++ b/src/HOL/Complex/CSeries.ML	Thu Jan 01 10:06:32 2004 +0100
@@ -30,7 +30,7 @@
 
 Goal "sumc m n f + sumc m n g = sumc m n (%n. f n + g n)";
 by (induct_tac "n" 1);
-by (auto_tac (claset(),simpset() addsimps real_add_ac));
+by (auto_tac (claset(),simpset() addsimps add_ac));
 qed "sumc_add";
 
 Goal "r * sumc m n f = sumc m n (%n. r * f n)";
@@ -107,7 +107,7 @@
 Goal "(ALL n. m <= Suc n --> f n = r) & m <= na \
 \                --> sumc m na f = (complex_of_real(real (na - m)) * r)";
 by (induct_tac "na" 1);
-by (auto_tac (claset(),simpset() addsimps [real_add_mult_distrib, Suc_diff_n,
+by (auto_tac (claset(),simpset() addsimps [left_distrib, Suc_diff_n,
                                       real_of_nat_Suc,complex_of_real_add RS sym,
                                       complex_add_mult_distrib]));
 qed_spec_mp "sumc_interval_const";
@@ -115,7 +115,7 @@
 Goal "(ALL n. m <= n --> f n = r) & m <= na \
 \     --> sumc m na f = (complex_of_real(real (na - m)) * r)";
 by (induct_tac "na" 1);
-by (auto_tac (claset(),simpset() addsimps [real_add_mult_distrib, Suc_diff_n,
+by (auto_tac (claset(),simpset() addsimps [left_distrib, Suc_diff_n,
                                       real_of_nat_Suc,complex_of_real_add RS sym,
                                       complex_add_mult_distrib]));
 qed_spec_mp "sumc_interval_const2";
@@ -128,15 +128,15 @@
 by (ALLGOALS(dres_inst_tac [("x","n")] spec));
 by (Step_tac 1);
 by (dtac le_imp_less_or_eq 1 THEN Step_tac 1);
-by (dtac real_add_le_mono 2);
-by (dres_inst_tac [("i","sumr 0 m f")] (order_refl RS real_add_le_mono) 1);
+by (dtac add_mono 2);
+by (dres_inst_tac [("i","sumr 0 m f")] (order_refl RS add_mono) 1);
 by (Auto_tac);
 qed_spec_mp "sumc_le";
 
 Goal "!!f g. (ALL r. m <= r & r < n --> f r <= g r) \
 \                --> sumc m n f <= sumc m n g";
 by (induct_tac "n" 1);
-by (auto_tac (claset() addIs [real_add_le_mono],
+by (auto_tac (claset() addIs [add_mono],
     simpset() addsimps [le_def]));
 qed_spec_mp "sumc_le2";
 
--- a/src/HOL/Complex/Complex.thy	Mon Dec 29 06:49:26 2003 +0100
+++ b/src/HOL/Complex/Complex.thy	Thu Jan 01 10:06:32 2004 +0100
@@ -127,14 +127,11 @@
 declare inj_Abs_complex [THEN injD, simp]
 
 lemma Abs_complex_cancel_iff: "(Abs_complex x = Abs_complex y) = (x = y)"
-apply (auto dest: inj_Abs_complex [THEN injD])
-done
+by (auto dest: inj_Abs_complex [THEN injD])
 declare Abs_complex_cancel_iff [simp]
 
 lemma pair_mem_complex: "(x,y) : complex"
-apply (unfold complex_def)
-apply auto
-done
+by (unfold complex_def, auto)
 declare pair_mem_complex [simp]
 
 lemma Abs_complex_inverse2: "Rep_complex (Abs_complex (x,y)) = (x,y)"
@@ -144,7 +141,7 @@
 
 lemma eq_Abs_complex: "(!!x y. z = Abs_complex(x,y) ==> P) ==> P"
 apply (rule_tac p = "Rep_complex z" in PairE)
-apply (drule_tac f = "Abs_complex" in arg_cong)
+apply (drule_tac f = Abs_complex in arg_cong)
 apply (force simp add: Rep_complex_inverse)
 done
 
@@ -161,14 +158,14 @@
 declare Im [simp]
 
 lemma Abs_complex_cancel: "Abs_complex(Re(z),Im(z)) = z"
-apply (rule_tac z = "z" in eq_Abs_complex)
+apply (rule_tac z = z in eq_Abs_complex)
 apply (simp (no_asm_simp))
 done
 declare Abs_complex_cancel [simp]
 
 lemma complex_Re_Im_cancel_iff: "(w=z) = (Re(w) = Re(z) & Im(w) = Im(z))"
-apply (rule_tac z = "w" in eq_Abs_complex)
-apply (rule_tac z = "z" in eq_Abs_complex)
+apply (rule_tac z = w in eq_Abs_complex)
+apply (rule_tac z = z in eq_Abs_complex)
 apply (auto dest: inj_Abs_complex [THEN injD])
 done
 
@@ -196,15 +193,11 @@
 declare complex_Im_one [simp]
 
 lemma complex_Re_i: "Re(ii) = 0"
-apply (unfold i_def)
-apply auto
-done
+by (unfold i_def, auto)
 declare complex_Re_i [simp]
 
 lemma complex_Im_i: "Im(ii) = 1"
-apply (unfold i_def)
-apply auto
-done
+by (unfold i_def, auto)
 declare complex_Im_i [simp]
 
 lemma Re_complex_of_real_zero: "Re(complex_of_real 0) = 0"
@@ -232,15 +225,11 @@
 declare Im_complex_of_real_one [simp]
 
 lemma Re_complex_of_real: "Re(complex_of_real z) = z"
-apply (unfold complex_of_real_def)
-apply auto
-done
+by (unfold complex_of_real_def, auto)
 declare Re_complex_of_real [simp]
 
 lemma Im_complex_of_real: "Im(complex_of_real z) = 0"
-apply (unfold complex_of_real_def)
-apply auto
-done
+by (unfold complex_of_real_def, auto)
 declare Im_complex_of_real [simp]
 
 
@@ -253,13 +242,13 @@
 
 lemma complex_Re_minus: "Re (-z) = - Re z"
 apply (unfold Re_def)
-apply (rule_tac z = "z" in eq_Abs_complex)
+apply (rule_tac z = z in eq_Abs_complex)
 apply (auto simp add: complex_minus)
 done
 
 lemma complex_Im_minus: "Im (-z) = - Im z"
 apply (unfold Im_def)
-apply (rule_tac z = "z" in eq_Abs_complex)
+apply (rule_tac z = z in eq_Abs_complex)
 apply (auto simp add: complex_minus)
 done
 
@@ -271,8 +260,7 @@
 
 lemma inj_complex_minus: "inj(%r::complex. -r)"
 apply (rule inj_onI)
-apply (drule_tac f = "uminus" in arg_cong)
-apply simp
+apply (drule_tac f = uminus in arg_cong, simp)
 done
 
 lemma complex_minus_zero: "-(0::complex) = 0"
@@ -282,20 +270,18 @@
 declare complex_minus_zero [simp]
 
 lemma complex_minus_zero_iff: "(-x = 0) = (x = (0::complex))"
-apply (rule_tac z = "x" in eq_Abs_complex)
+apply (rule_tac z = x in eq_Abs_complex)
 apply (auto dest: inj_Abs_complex [THEN injD]
             simp add: complex_zero_def complex_minus)
 done
 declare complex_minus_zero_iff [simp]
 
 lemma complex_minus_zero_iff2: "(0 = -x) = (x = (0::real))"
-apply (auto dest: sym)
-done
+by (auto dest: sym)
 declare complex_minus_zero_iff2 [simp]
 
 lemma complex_minus_not_zero_iff: "(-x ~= 0) = (x ~= (0::complex))"
-apply auto
-done
+by auto
 
 
 subsection{*Addition*}
@@ -308,15 +294,15 @@
 
 lemma complex_Re_add: "Re(x + y) = Re(x) + Re(y)"
 apply (unfold Re_def)
-apply (rule_tac z = "x" in eq_Abs_complex)
-apply (rule_tac z = "y" in eq_Abs_complex)
+apply (rule_tac z = x in eq_Abs_complex)
+apply (rule_tac z = y in eq_Abs_complex)
 apply (auto simp add: complex_add)
 done
 
 lemma complex_Im_add: "Im(x + y) = Im(x) + Im(y)"
 apply (unfold Im_def)
-apply (rule_tac z = "x" in eq_Abs_complex)
-apply (rule_tac z = "y" in eq_Abs_complex)
+apply (rule_tac z = x in eq_Abs_complex)
+apply (rule_tac z = y in eq_Abs_complex)
 apply (auto simp add: complex_add)
 done
 
@@ -332,7 +318,7 @@
 
 lemma complex_add_left_commute: "(x::complex) + (y + z) = y + (x + z)"
 apply (unfold complex_add_def)
-apply (simp (no_asm) add: real_add_left_commute)
+apply (simp (no_asm) add: add_left_commute)
 done
 
 lemmas complex_add_ac = complex_add_assoc complex_add_commute
@@ -375,18 +361,17 @@
 declare complex_add_minus_cancel [simp] complex_minus_add_cancel [simp]
 
 lemma complex_add_minus_eq_minus: "x + y = (0::complex) ==> x = -y"
-apply (auto simp add: complex_Re_Im_cancel_iff complex_Re_add complex_Im_add complex_Re_minus complex_Im_minus)
-done
+by (auto simp add: complex_Re_Im_cancel_iff complex_Re_add complex_Im_add complex_Re_minus complex_Im_minus)
 
 lemma complex_minus_add_distrib: "-(x + y) = -x + -(y::complex)"
-apply (rule_tac z = "x" in eq_Abs_complex)
-apply (rule_tac z = "y" in eq_Abs_complex)
+apply (rule_tac z = x in eq_Abs_complex)
+apply (rule_tac z = y in eq_Abs_complex)
 apply (auto simp add: complex_minus complex_add)
 done
 declare complex_minus_add_distrib [simp]
 
 lemma complex_add_left_cancel: "((x::complex) + y = x + z) = (y = z)"
-apply (safe)
+apply safe
 apply (drule_tac f = "%t.-x + t" in arg_cong)
 apply (simp add: complex_add_assoc [symmetric])
 done
@@ -398,15 +383,13 @@
 declare complex_add_right_cancel [simp]
 
 lemma complex_eq_minus_iff: "((x::complex) = y) = (0 = x + - y)"
-apply (safe)
-apply (rule_tac [2] x1 = "-y" in complex_add_right_cancel [THEN iffD1])
-apply auto
+apply safe
+apply (rule_tac [2] x1 = "-y" in complex_add_right_cancel [THEN iffD1], auto)
 done
 
 lemma complex_eq_minus_iff2: "((x::complex) = y) = (x + - y = 0)"
-apply (safe)
-apply (rule_tac [2] x1 = "-y" in complex_add_right_cancel [THEN iffD1])
-apply auto
+apply safe
+apply (rule_tac [2] x1 = "-y" in complex_add_right_cancel [THEN iffD1], auto)
 done
 
 lemma complex_diff_0: "(0::complex) - x = -x"
@@ -430,8 +413,7 @@
 done
 
 lemma complex_diff_eq_eq: "((x::complex) - y = z) = (x = z + y)"
-apply (auto simp add: complex_diff_def complex_add_assoc)
-done
+by (auto simp add: complex_diff_def complex_add_assoc)
 
 
 subsection{*Multiplication*}
@@ -450,12 +432,12 @@
 
 lemma complex_mult_assoc: "((u::complex) * v) * w = u * (v * w)"
 apply (unfold complex_mult_def)
-apply (simp (no_asm) add: complex_Re_Im_cancel_iff real_mult_assoc real_diff_mult_distrib2 real_add_mult_distrib2 real_diff_mult_distrib real_add_mult_distrib real_mult_left_commute)
+apply (simp (no_asm) add: complex_Re_Im_cancel_iff real_mult_assoc right_diff_distrib right_distrib left_diff_distrib left_distrib mult_left_commute)
 done
 
 lemma complex_mult_left_commute: "(x::complex) * (y * z) = y * (x * z)"
 apply (unfold complex_mult_def)
-apply (simp (no_asm) add: complex_Re_Im_cancel_iff real_mult_left_commute real_diff_mult_distrib2 real_add_mult_distrib2)
+apply (simp (no_asm) add: complex_Re_Im_cancel_iff mult_left_commute right_diff_distrib right_distrib)
 done
 
 lemmas complex_mult_ac = complex_mult_assoc complex_mult_commute
@@ -463,7 +445,7 @@
 
 lemma complex_mult_one_left: "(1::complex) * z = z"
 apply (unfold complex_one_def)
-apply (rule_tac z = "z" in eq_Abs_complex)
+apply (rule_tac z = z in eq_Abs_complex)
 apply (simp (no_asm_simp) add: complex_mult)
 done
 declare complex_mult_one_left [simp]
@@ -475,7 +457,7 @@
 
 lemma complex_mult_zero_left: "(0::complex) * z = 0"
 apply (unfold complex_zero_def)
-apply (rule_tac z = "z" in eq_Abs_complex)
+apply (rule_tac z = z in eq_Abs_complex)
 apply (simp (no_asm_simp) add: complex_mult)
 done
 declare complex_mult_zero_left [simp]
@@ -486,20 +468,18 @@
 declare complex_mult_zero_right [simp]
 
 lemma complex_divide_zero: "0 / z = (0::complex)"
-apply (unfold complex_divide_def)
-apply auto
-done
+by (unfold complex_divide_def, auto)
 declare complex_divide_zero [simp]
 
 lemma complex_minus_mult_eq1: "-(x * y) = -x * (y::complex)"
-apply (rule_tac z = "x" in eq_Abs_complex)
-apply (rule_tac z = "y" in eq_Abs_complex)
+apply (rule_tac z = x in eq_Abs_complex)
+apply (rule_tac z = y in eq_Abs_complex)
 apply (auto simp add: complex_mult complex_minus real_diff_def)
 done
 
 lemma complex_minus_mult_eq2: "-(x * y) = x * -(y::complex)"
-apply (rule_tac z = "x" in eq_Abs_complex)
-apply (rule_tac z = "y" in eq_Abs_complex)
+apply (rule_tac z = x in eq_Abs_complex)
+apply (rule_tac z = y in eq_Abs_complex)
 apply (auto simp add: complex_mult complex_minus real_diff_def)
 done
 
@@ -526,10 +506,10 @@
 done
 
 lemma complex_add_mult_distrib: "((z1::complex) + z2) * w = (z1 * w) + (z2 * w)"
-apply (rule_tac z = "z1" in eq_Abs_complex)
-apply (rule_tac z = "z2" in eq_Abs_complex)
-apply (rule_tac z = "w" in eq_Abs_complex)
-apply (auto simp add: complex_mult complex_add real_add_mult_distrib real_diff_def real_add_ac)
+apply (rule_tac z = z1 in eq_Abs_complex)
+apply (rule_tac z = z2 in eq_Abs_complex)
+apply (rule_tac z = w in eq_Abs_complex)
+apply (auto simp add: complex_mult complex_add left_distrib real_diff_def add_ac)
 done
 
 lemma complex_add_mult_distrib2: "(w::complex) * (z1 + z2) = (w * z1) + (w * z2)"
@@ -555,26 +535,23 @@
 done
 
 lemma COMPLEX_INVERSE_ZERO: "inverse 0 = (0::complex)"
-apply (unfold complex_inverse_def complex_zero_def)
-apply auto
-done
+by (unfold complex_inverse_def complex_zero_def, auto)
 
 lemma COMPLEX_DIVISION_BY_ZERO: "a / (0::complex) = 0"
 apply (simp (no_asm) add: complex_divide_def COMPLEX_INVERSE_ZERO)
 done
 
 lemma complex_mult_inv_left: "z ~= (0::complex) ==> inverse(z) * z = 1"
-apply (rule_tac z = "z" in eq_Abs_complex)
-apply (auto simp add: complex_mult complex_inverse complex_one_def complex_zero_def real_add_divide_distrib [symmetric] real_power_two mult_ac)
-apply (drule_tac y = "y" in real_sum_squares_not_zero)
-apply (drule_tac [2] x = "x" in real_sum_squares_not_zero2)
-apply auto
+apply (rule_tac z = z in eq_Abs_complex)
+apply (auto simp add: complex_mult complex_inverse complex_one_def 
+       complex_zero_def add_divide_distrib [symmetric] real_power_two mult_ac)
+apply (drule_tac y = y in real_sum_squares_not_zero)
+apply (drule_tac [2] x = x in real_sum_squares_not_zero2, auto)
 done
 declare complex_mult_inv_left [simp]
 
 lemma complex_mult_inv_right: "z ~= (0::complex) ==> z * inverse(z) = 1"
-apply (auto intro: complex_mult_commute [THEN subst])
-done
+by (auto intro: complex_mult_commute [THEN subst])
 declare complex_mult_inv_right [simp]
 
 lemma complex_mult_left_cancel: "(c::complex) ~= 0 ==> (c*a=c*b) = (a=b)"
@@ -584,21 +561,21 @@
 done
 
 lemma complex_mult_right_cancel: "(c::complex) ~= 0 ==> (a*c=b*c) = (a=b)"
-apply (safe)
+apply safe
 apply (drule_tac f = "%x. x*inverse c" in arg_cong)
 apply (simp add: complex_mult_ac)
 done
 
 lemma complex_inverse_not_zero: "z ~= 0 ==> inverse(z::complex) ~= 0"
-apply (safe)
+apply safe
 apply (frule complex_mult_right_cancel [THEN iffD2])
 apply (erule_tac [2] V = "inverse z = 0" in thin_rl)
-apply (assumption , auto)
+apply (assumption, auto)
 done
 declare complex_inverse_not_zero [simp]
 
 lemma complex_mult_not_zero: "!!x. [| x ~= 0; y ~= (0::complex) |] ==> x * y ~= 0"
-apply (safe)
+apply safe
 apply (drule_tac f = "%z. inverse x*z" in arg_cong)
 apply (simp add: complex_mult_assoc [symmetric])
 done
@@ -621,10 +598,8 @@
 
 lemma complex_minus_inverse: "inverse(-x) = -inverse(x::complex)"
 apply (case_tac "x = 0", simp add: COMPLEX_INVERSE_ZERO)
-apply (rule_tac c1 = "-x" in complex_mult_right_cancel [THEN iffD1])
-apply force
-apply (subst complex_mult_inv_left)
-apply auto
+apply (rule_tac c1 = "-x" in complex_mult_right_cancel [THEN iffD1], force)
+apply (subst complex_mult_inv_left, auto)
 done
 
 lemma complex_inverse_distrib: "inverse(x*y) = inverse x * inverse (y::complex)"
@@ -699,8 +674,7 @@
 declare complex_of_real_zero [simp]
 
 lemma complex_of_real_eq_iff: "(complex_of_real x = complex_of_real y) = (x = y)"
-apply (auto dest: inj_complex_of_real [THEN injD])
-done
+by (auto dest: inj_complex_of_real [THEN injD])
 declare complex_of_real_eq_iff [iff]
 
 lemma complex_of_real_minus: "complex_of_real(-x) = - complex_of_real x"
@@ -710,7 +684,8 @@
 lemma complex_of_real_inverse: "complex_of_real(inverse x) = inverse(complex_of_real x)"
 apply (case_tac "x=0")
 apply (simp add: DIVISION_BY_ZERO COMPLEX_INVERSE_ZERO)
-apply (simp add: complex_inverse complex_of_real_def real_divide_def real_inverse_distrib real_power_two)
+apply (simp add: complex_inverse complex_of_real_def real_divide_def 
+                 inverse_mult_distrib real_power_two)
 done
 
 lemma complex_of_real_add: "complex_of_real x + complex_of_real y = complex_of_real (x + y)"
@@ -750,9 +725,7 @@
 declare complex_mod_zero [simp]
 
 lemma complex_mod_one: "cmod(1) = 1"
-apply (unfold cmod_def)
-apply (simp add: );  
-done
+by (unfold cmod_def, simp)
 declare complex_mod_one [simp]
 
 lemma complex_mod_complex_of_real: "cmod(complex_of_real x) = abs x"
@@ -779,8 +752,7 @@
 done
 
 lemma complex_cnj_cancel_iff: "(cnj x = cnj y) = (x = y)"
-apply (auto dest: inj_cnj [THEN injD])
-done
+by (auto dest: inj_cnj [THEN injD])
 declare complex_cnj_cancel_iff [simp]
 
 lemma complex_cnj_cnj: "cnj (cnj z) = z"
@@ -796,7 +768,7 @@
 declare complex_cnj_complex_of_real [simp]
 
 lemma complex_mod_cnj: "cmod (cnj z) = cmod z"
-apply (rule_tac z = "z" in eq_Abs_complex)
+apply (rule_tac z = z in eq_Abs_complex)
 apply (simp (no_asm_simp) add: complex_cnj complex_mod real_power_two)
 done
 declare complex_mod_cnj [simp]
@@ -807,13 +779,13 @@
 done
 
 lemma complex_cnj_inverse: "cnj(inverse z) = inverse(cnj z)"
-apply (rule_tac z = "z" in eq_Abs_complex)
+apply (rule_tac z = z in eq_Abs_complex)
 apply (simp (no_asm_simp) add: complex_cnj complex_inverse real_power_two)
 done
 
 lemma complex_cnj_add: "cnj(w + z) = cnj(w) + cnj(z)"
-apply (rule_tac z = "w" in eq_Abs_complex)
-apply (rule_tac z = "z" in eq_Abs_complex)
+apply (rule_tac z = w in eq_Abs_complex)
+apply (rule_tac z = z in eq_Abs_complex)
 apply (simp (no_asm_simp) add: complex_cnj complex_add)
 done
 
@@ -823,8 +795,8 @@
 done
 
 lemma complex_cnj_mult: "cnj(w * z) = cnj(w) * cnj(z)"
-apply (rule_tac z = "w" in eq_Abs_complex)
-apply (rule_tac z = "z" in eq_Abs_complex)
+apply (rule_tac z = w in eq_Abs_complex)
+apply (rule_tac z = z in eq_Abs_complex)
 apply (simp (no_asm_simp) add: complex_cnj complex_mult)
 done
 
@@ -845,28 +817,27 @@
 done
 
 lemma complex_add_cnj: "z + cnj z = complex_of_real (2 * Re(z))"
-apply (rule_tac z = "z" in eq_Abs_complex)
+apply (rule_tac z = z in eq_Abs_complex)
 apply (simp (no_asm_simp) add: complex_add complex_cnj complex_of_real_def)
 done
 
 lemma complex_diff_cnj: "z - cnj z = complex_of_real (2 * Im(z)) * ii"
-apply (rule_tac z = "z" in eq_Abs_complex)
+apply (rule_tac z = z in eq_Abs_complex)
 apply (simp (no_asm_simp) add: complex_add complex_cnj complex_of_real_def complex_diff_def complex_minus i_def complex_mult)
 done
 
 lemma complex_cnj_zero: "cnj 0 = 0"
-apply (simp add: cnj_def complex_zero_def) 
-done
+by (simp add: cnj_def complex_zero_def)
 declare complex_cnj_zero [simp]
 
 lemma complex_cnj_zero_iff: "(cnj z = 0) = (z = 0)"
-apply (rule_tac z = "z" in eq_Abs_complex)
+apply (rule_tac z = z in eq_Abs_complex)
 apply (auto simp add: complex_zero_def complex_cnj)
 done
 declare complex_cnj_zero_iff [iff]
 
 lemma complex_mult_cnj: "z * cnj z = complex_of_real (Re(z) ^ 2 + Im(z) ^ 2)"
-apply (rule_tac z = "z" in eq_Abs_complex)
+apply (rule_tac z = z in eq_Abs_complex)
 apply (auto simp add: complex_cnj complex_mult complex_of_real_def real_power_two)
 done
 
@@ -881,8 +852,8 @@
 
 lemma complex_add_left_cancel_zero: "(x + y = x) = (y = (0::complex))"
 apply (unfold complex_zero_def)
-apply (rule_tac z = "x" in eq_Abs_complex)
-apply (rule_tac z = "y" in eq_Abs_complex)
+apply (rule_tac z = x in eq_Abs_complex)
+apply (rule_tac z = y in eq_Abs_complex)
 apply (auto simp add: complex_add)
 done
 declare complex_add_left_cancel_zero [simp]
@@ -910,7 +881,7 @@
 *)
 
 lemma complex_mod_eq_zero_cancel: "(cmod x = 0) = (x = 0)"
-apply (rule_tac z = "x" in eq_Abs_complex)
+apply (rule_tac z = x in eq_Abs_complex)
 apply (auto intro: real_sum_squares_cancel real_sum_squares_cancel2 simp add: complex_mod complex_zero_def real_power_two)
 done
 declare complex_mod_eq_zero_cancel [simp]
@@ -921,21 +892,19 @@
 declare complex_mod_complex_of_real_of_nat [simp]
 
 lemma complex_mod_minus: "cmod (-x) = cmod(x)"
-apply (rule_tac z = "x" in eq_Abs_complex)
+apply (rule_tac z = x in eq_Abs_complex)
 apply (simp (no_asm_simp) add: complex_mod complex_minus real_power_two)
 done
 declare complex_mod_minus [simp]
 
 lemma complex_mod_mult_cnj: "cmod(z * cnj(z)) = cmod(z) ^ 2"
-apply (rule_tac z = "z" in eq_Abs_complex)
+apply (rule_tac z = z in eq_Abs_complex)
 apply (simp (no_asm_simp) add: complex_mod complex_cnj complex_mult);
 apply (simp (no_asm) add: real_power_two real_abs_def)
 done
 
 lemma complex_mod_squared: "cmod(Abs_complex(x,y)) ^ 2 = x ^ 2 + y ^ 2"
-apply (unfold cmod_def)
-apply auto
-done
+by (unfold cmod_def, auto)
 
 lemma complex_mod_ge_zero: "0 <= cmod x"
 apply (unfold cmod_def)
@@ -944,41 +913,40 @@
 declare complex_mod_ge_zero [simp]
 
 lemma abs_cmod_cancel: "abs(cmod x) = cmod x"
-apply (auto intro: abs_eqI1)
-done
+by (auto intro: abs_eqI1)
 declare abs_cmod_cancel [simp]
 
 lemma complex_mod_mult: "cmod(x*y) = cmod(x) * cmod(y)"
-apply (rule_tac z = "x" in eq_Abs_complex)
-apply (rule_tac z = "y" in eq_Abs_complex)
+apply (rule_tac z = x in eq_Abs_complex)
+apply (rule_tac z = y in eq_Abs_complex)
 apply (auto simp add: complex_mult complex_mod real_sqrt_mult_distrib2 [symmetric] simp del: realpow_Suc)
-apply (rule_tac n = "1" in realpow_Suc_cancel_eq)
+apply (rule_tac n = 1 in realpow_Suc_cancel_eq)
 apply (auto simp add: real_power_two [symmetric] simp del: realpow_Suc)
-apply (auto simp add: real_diff_def real_power_two real_add_mult_distrib2 real_add_mult_distrib real_add_ac real_mult_ac)
+apply (auto simp add: real_diff_def real_power_two right_distrib left_distrib add_ac mult_ac)
 done
 
 lemma complex_mod_add_squared_eq: "cmod(x + y) ^ 2 = cmod(x) ^ 2 + cmod(y) ^ 2 + 2 * Re(x * cnj y)"
-apply (rule_tac z = "x" in eq_Abs_complex)
-apply (rule_tac z = "y" in eq_Abs_complex)
+apply (rule_tac z = x in eq_Abs_complex)
+apply (rule_tac z = y in eq_Abs_complex)
 apply (auto simp add: complex_add complex_mod_squared complex_mult complex_cnj real_diff_def simp del: realpow_Suc)
-apply (auto simp add: real_add_mult_distrib2 real_add_mult_distrib real_power_two real_mult_ac real_add_ac)
+apply (auto simp add: right_distrib left_distrib real_power_two mult_ac add_ac)
 done
 
 lemma complex_Re_mult_cnj_le_cmod: "Re(x * cnj y) <= cmod(x * cnj y)"
-apply (rule_tac z = "x" in eq_Abs_complex)
-apply (rule_tac z = "y" in eq_Abs_complex)
+apply (rule_tac z = x in eq_Abs_complex)
+apply (rule_tac z = y in eq_Abs_complex)
 apply (auto simp add: complex_mod complex_mult complex_cnj real_diff_def simp del: realpow_Suc)
 done
 declare complex_Re_mult_cnj_le_cmod [simp]
 
 lemma complex_Re_mult_cnj_le_cmod2: "Re(x * cnj y) <= cmod(x * y)"
-apply (cut_tac x = "x" and y = "y" in complex_Re_mult_cnj_le_cmod)
+apply (cut_tac x = x and y = y in complex_Re_mult_cnj_le_cmod)
 apply (simp add: complex_mod_mult)
 done
 declare complex_Re_mult_cnj_le_cmod2 [simp]
 
 lemma real_sum_squared_expand: "((x::real) + y) ^ 2 = x ^ 2 + y ^ 2 + 2 * x * y"
-apply (simp (no_asm) add: real_add_mult_distrib real_add_mult_distrib2 real_power_two)
+apply (simp (no_asm) add: left_distrib right_distrib real_power_two)
 done
 
 lemma complex_mod_triangle_squared: "cmod (x + y) ^ 2 <= (cmod(x) + cmod(y)) ^ 2"
@@ -993,38 +961,36 @@
 declare complex_mod_minus_le_complex_mod [simp]
 
 lemma complex_mod_triangle_ineq: "cmod (x + y) <= cmod(x) + cmod(y)"
-apply (rule_tac n = "1" in realpow_increasing)
+apply (rule_tac n = 1 in realpow_increasing)
 apply (auto intro:  order_trans [OF _ complex_mod_ge_zero]
             simp add: real_power_two [symmetric])
 done
 declare complex_mod_triangle_ineq [simp]
 
 lemma complex_mod_triangle_ineq2: "cmod(b + a) - cmod b <= cmod a"
-apply (cut_tac x1 = "b" and y1 = "a" and z = "-cmod b" in complex_mod_triangle_ineq [THEN real_add_le_mono1])
+apply (cut_tac x1 = b and y1 = a and c = "-cmod b" 
+       in complex_mod_triangle_ineq [THEN add_right_mono])
 apply (simp (no_asm))
 done
 declare complex_mod_triangle_ineq2 [simp]
 
 lemma complex_mod_diff_commute: "cmod (x - y) = cmod (y - x)"
-apply (rule_tac z = "x" in eq_Abs_complex)
-apply (rule_tac z = "y" in eq_Abs_complex)
-apply (auto simp add: complex_diff complex_mod real_diff_mult_distrib2 real_power_two real_diff_mult_distrib real_add_ac real_mult_ac)
+apply (rule_tac z = x in eq_Abs_complex)
+apply (rule_tac z = y in eq_Abs_complex)
+apply (auto simp add: complex_diff complex_mod right_diff_distrib real_power_two left_diff_distrib add_ac mult_ac)
 done
 
 lemma complex_mod_add_less: "[| cmod x < r; cmod y < s |] ==> cmod (x + y) < r + s"
-apply (auto intro: order_le_less_trans complex_mod_triangle_ineq)
-done
+by (auto intro: order_le_less_trans complex_mod_triangle_ineq)
 
 lemma complex_mod_mult_less: "[| cmod x < r; cmod y < s |] ==> cmod (x * y) < r * s"
-apply (auto intro: real_mult_less_mono' simp add: complex_mod_mult)
-done
+by (auto intro: real_mult_less_mono' simp add: complex_mod_mult)
 
 lemma complex_mod_diff_ineq: "cmod(a) - cmod(b) <= cmod(a + b)"
 apply (rule linorder_cases [of "cmod(a)" "cmod (b)"])
 apply auto
-apply (rule order_trans [of _ 0] , rule order_less_imp_le)
-apply (simp add: compare_rls)
-apply (simp add: );  
+apply (rule order_trans [of _ 0], rule order_less_imp_le)
+apply (simp add: compare_rls, simp)  
 apply (simp add: compare_rls)
 apply (rule complex_mod_minus [THEN subst])
 apply (rule order_trans)
@@ -1034,15 +1000,14 @@
 declare complex_mod_diff_ineq [simp]
 
 lemma complex_Re_le_cmod: "Re z <= cmod z"
-apply (rule_tac z = "z" in eq_Abs_complex)
+apply (rule_tac z = z in eq_Abs_complex)
 apply (auto simp add: complex_mod simp del: realpow_Suc)
 done
 declare complex_Re_le_cmod [simp]
 
 lemma complex_mod_gt_zero: "z ~= 0 ==> 0 < cmod z"
-apply (cut_tac x = "z" in complex_mod_ge_zero)
-apply (drule order_le_imp_less_or_eq)
-apply auto
+apply (cut_tac x = z in complex_mod_ge_zero)
+apply (drule order_le_imp_less_or_eq, auto)
 done
 
 
@@ -1054,12 +1019,10 @@
 done
 
 lemma complexpow_minus: "(-x::complex) ^ n = (if even n then (x ^ n) else -(x ^ n))"
-apply (induct_tac "n")
-apply auto
-done
+by (induct_tac "n", auto)
 
 lemma complex_inverse_minus: "inverse (-x) = - inverse (x::complex)"
-apply (rule_tac z = "x" in eq_Abs_complex)
+apply (rule_tac z = x in eq_Abs_complex)
 apply (simp (no_asm_simp) add: complex_inverse complex_minus real_power_two)
 done
 
@@ -1097,8 +1060,7 @@
 subsection{*More Exponentiation*}
 
 lemma complexpow_zero: "(0::complex) ^ (Suc n) = 0"
-apply auto
-done
+by auto
 declare complexpow_zero [simp]
 
 lemma complexpow_not_zero [rule_format (no_asm)]: "r ~= (0::complex) --> r ^ n ~= 0"
@@ -1109,8 +1071,7 @@
 declare complexpow_not_zero [intro]
 
 lemma complexpow_zero_zero: "r ^ n = (0::complex) ==> r = 0"
-apply (blast intro: ccontr dest: complexpow_not_zero)
-done
+by (blast intro: ccontr dest: complexpow_not_zero)
 
 lemma complexpow_i_squared: "ii ^ 2 = -(1::complex)"
 apply (unfold i_def)
@@ -1119,22 +1080,17 @@
 declare complexpow_i_squared [simp]
 
 lemma complex_i_not_zero: "ii ~= 0"
-apply (unfold i_def complex_zero_def)
-apply auto
-done
+by (unfold i_def complex_zero_def, auto)
 declare complex_i_not_zero [simp]
 
 lemma complex_mult_eq_zero_cancel1: "x * y ~= (0::complex) ==> x ~= 0"
-apply auto
-done
+by auto
 
 lemma complex_mult_eq_zero_cancel2: "x * y ~= 0 ==> y ~= (0::complex)"
-apply auto
-done
+by auto
 
 lemma complex_mult_not_eq_zero_iff: "(x * y ~= 0) = (x ~= 0 & y ~= (0::complex))"
-apply auto
-done
+by auto
 declare complex_mult_not_eq_zero_iff [iff]
 
 lemma complexpow_inverse: "inverse ((r::complex) ^ n) = (inverse r) ^ n"
@@ -1160,9 +1116,7 @@
 declare sgn_one [simp]
 
 lemma sgn_minus: "sgn (-z) = - sgn(z)"
-apply (unfold sgn_def)
-apply auto
-done
+by (unfold sgn_def, auto)
 
 lemma sgn_eq:
     "sgn z = z / complex_of_real (cmod z)"
@@ -1171,18 +1125,16 @@
 done
 
 lemma complex_split: "EX x y. z = complex_of_real(x) + ii * complex_of_real(y)"
-apply (rule_tac z = "z" in eq_Abs_complex)
+apply (rule_tac z = z in eq_Abs_complex)
 apply (auto simp add: complex_of_real_def i_def complex_mult complex_add)
 done
 
 lemma Re_complex_i: "Re(complex_of_real(x) + ii * complex_of_real(y)) = x"
-apply (auto simp add: complex_of_real_def i_def complex_mult complex_add)
-done
+by (auto simp add: complex_of_real_def i_def complex_mult complex_add)
 declare Re_complex_i [simp]
 
 lemma Im_complex_i: "Im(complex_of_real(x) + ii * complex_of_real(y)) = y"
-apply (auto simp add: complex_of_real_def i_def complex_mult complex_add)
-done
+by (auto simp add: complex_of_real_def i_def complex_mult complex_add)
 declare Im_complex_i [simp]
 
 lemma i_mult_eq: "ii * ii = complex_of_real (-1)"
@@ -1243,7 +1195,7 @@
 
 lemma complex_eq_cancel_iff2: "(complex_of_real x + ii * complex_of_real y =
       complex_of_real xa) = (x = xa & y = 0)"
-apply (cut_tac xa = "x" and ya = "y" and xb = "xa" and yb = "0" in complex_eq_cancel_iff)
+apply (cut_tac xa = x and ya = y and xb = xa and yb = 0 in complex_eq_cancel_iff)
 apply (simp del: complex_eq_cancel_iff)
 done
 declare complex_eq_cancel_iff2 [simp]
@@ -1256,7 +1208,7 @@
 
 lemma complex_eq_cancel_iff3: "(complex_of_real x + ii * complex_of_real y =
       ii * complex_of_real ya) = (x = 0 & y = ya)"
-apply (cut_tac xa = "x" and ya = "y" and xb = "0" and yb = "ya" in complex_eq_cancel_iff)
+apply (cut_tac xa = x and ya = y and xb = 0 and yb = ya in complex_eq_cancel_iff)
 apply (simp del: complex_eq_cancel_iff)
 done
 declare complex_eq_cancel_iff3 [simp]
@@ -1284,7 +1236,7 @@
 lemma Re_sgn:
       "Re(sgn z) = Re(z)/cmod z"
 apply (unfold sgn_def complex_divide_def)
-apply (rule_tac z = "z" in eq_Abs_complex)
+apply (rule_tac z = z in eq_Abs_complex)
 apply (auto simp add: complex_of_real_inverse [symmetric])
 apply (auto simp add: complex_of_real_def complex_mult real_divide_def)
 done
@@ -1293,7 +1245,7 @@
 lemma Im_sgn:
       "Im(sgn z) = Im(z)/cmod z"
 apply (unfold sgn_def complex_divide_def)
-apply (rule_tac z = "z" in eq_Abs_complex)
+apply (rule_tac z = z in eq_Abs_complex)
 apply (auto simp add: complex_of_real_inverse [symmetric])
 apply (auto simp add: complex_of_real_def complex_mult real_divide_def)
 done
@@ -1337,10 +1289,8 @@
    "0 < y ==> cos (arg(ii * complex_of_real y)) = 0"
 apply (unfold arg_def)
 apply (auto simp add: abs_eqI2)
-apply (rule_tac a = "pi/2" in someI2)
-apply auto
-apply (rule order_less_trans [of _ 0])
-apply auto
+apply (rule_tac a = "pi/2" in someI2, auto)
+apply (rule order_less_trans [of _ 0], auto)
 done
 declare cos_arg_i_mult_zero [simp]
 
@@ -1348,31 +1298,25 @@
    "y < 0 ==> cos (arg(ii * complex_of_real y)) = 0"
 apply (unfold arg_def)
 apply (auto simp add: abs_minus_eqI2)
-apply (rule_tac a = "- pi/2" in someI2)
-apply auto
-apply (rule order_trans [of _ 0])
-apply auto
+apply (rule_tac a = "- pi/2" in someI2, auto)
+apply (rule order_trans [of _ 0], auto)
 done
 declare cos_arg_i_mult_zero2 [simp]
 
 lemma complex_of_real_not_zero_iff:
       "(complex_of_real y ~= 0) = (y ~= 0)"
-apply (unfold complex_zero_def complex_of_real_def)
-apply auto
+apply (unfold complex_zero_def complex_of_real_def, auto)
 done
 declare complex_of_real_not_zero_iff [simp]
 
 lemma complex_of_real_zero_iff: "(complex_of_real y = 0) = (y = 0)"
 apply auto
-apply (rule ccontr , drule complex_of_real_not_zero_iff [THEN iffD2])
-apply simp
+apply (rule ccontr, drule complex_of_real_not_zero_iff [THEN iffD2], simp)
 done
 declare complex_of_real_zero_iff [simp]
 
 lemma cos_arg_i_mult_zero3: "y ~= 0 ==> cos (arg(ii * complex_of_real y)) = 0"
-apply (cut_tac x = "y" and y = "0" in linorder_less_linear)
-apply auto
-done
+by (cut_tac x = y and y = 0 in linorder_less_linear, auto)
 declare cos_arg_i_mult_zero3 [simp]
 
 
@@ -1380,7 +1324,7 @@
 
 lemma complex_split_polar: "EX r a. z = complex_of_real r *
       (complex_of_real(cos a) + ii * complex_of_real(sin a))"
-apply (cut_tac z = "z" in complex_split)
+apply (cut_tac z = z in complex_split)
 apply (auto simp add: polar_Ex complex_add_mult_distrib2 complex_of_real_mult complex_mult_ac)
 done
 
@@ -1396,9 +1340,7 @@
 declare Re_complex_polar [simp]
 
 lemma Re_rcis: "Re(rcis r a) = r * cos a"
-apply (unfold rcis_def cis_def)
-apply auto
-done
+by (unfold rcis_def cis_def, auto)
 declare Re_rcis [simp]
 
 lemma Im_complex_polar: "Im(complex_of_real r *
@@ -1408,21 +1350,17 @@
 declare Im_complex_polar [simp]
 
 lemma Im_rcis: "Im(rcis r a) = r * sin a"
-apply (unfold rcis_def cis_def)
-apply auto
-done
+by (unfold rcis_def cis_def, auto)
 declare Im_rcis [simp]
 
 lemma complex_mod_complex_polar: "cmod (complex_of_real r *
       (complex_of_real(cos a) + ii * complex_of_real(sin a))) = abs r"
-apply (auto simp add: complex_add_mult_distrib2 cmod_i complex_of_real_mult real_add_mult_distrib2 [symmetric] realpow_mult complex_mult_ac real_mult_ac simp del: realpow_Suc)
+apply (auto simp add: complex_add_mult_distrib2 cmod_i complex_of_real_mult right_distrib [symmetric] realpow_mult complex_mult_ac mult_ac simp del: realpow_Suc)
 done
 declare complex_mod_complex_polar [simp]
 
 lemma complex_mod_rcis: "cmod(rcis r a) = abs r"
-apply (unfold rcis_def cis_def)
-apply auto
-done
+by (unfold rcis_def cis_def, auto)
 declare complex_mod_rcis [simp]
 
 lemma complex_mod_sqrt_Re_mult_cnj: "cmod z = sqrt (Re (z * cnj z))"
@@ -1432,53 +1370,53 @@
 done
 
 lemma complex_Re_cnj: "Re(cnj z) = Re z"
-apply (rule_tac z = "z" in eq_Abs_complex)
+apply (rule_tac z = z in eq_Abs_complex)
 apply (auto simp add: complex_cnj)
 done
 declare complex_Re_cnj [simp]
 
 lemma complex_Im_cnj: "Im(cnj z) = - Im z"
-apply (rule_tac z = "z" in eq_Abs_complex)
+apply (rule_tac z = z in eq_Abs_complex)
 apply (auto simp add: complex_cnj)
 done
 declare complex_Im_cnj [simp]
 
 lemma complex_In_mult_cnj_zero: "Im (z * cnj z) = 0"
-apply (rule_tac z = "z" in eq_Abs_complex)
+apply (rule_tac z = z in eq_Abs_complex)
 apply (auto simp add: complex_cnj complex_mult)
 done
 declare complex_In_mult_cnj_zero [simp]
 
 lemma complex_Re_mult: "[| Im w = 0; Im z = 0 |] ==> Re(w * z) = Re(w) * Re(z)"
-apply (rule_tac z = "z" in eq_Abs_complex)
-apply (rule_tac z = "w" in eq_Abs_complex)
+apply (rule_tac z = z in eq_Abs_complex)
+apply (rule_tac z = w in eq_Abs_complex)
 apply (auto simp add: complex_mult)
 done
 
 lemma complex_Re_mult_complex_of_real: "Re (z * complex_of_real c) = Re(z) * c"
 apply (unfold complex_of_real_def)
-apply (rule_tac z = "z" in eq_Abs_complex)
+apply (rule_tac z = z in eq_Abs_complex)
 apply (auto simp add: complex_mult)
 done
 declare complex_Re_mult_complex_of_real [simp]
 
 lemma complex_Im_mult_complex_of_real: "Im (z * complex_of_real c) = Im(z) * c"
 apply (unfold complex_of_real_def)
-apply (rule_tac z = "z" in eq_Abs_complex)
+apply (rule_tac z = z in eq_Abs_complex)
 apply (auto simp add: complex_mult)
 done
 declare complex_Im_mult_complex_of_real [simp]
 
 lemma complex_Re_mult_complex_of_real2: "Re (complex_of_real c * z) = c * Re(z)"
 apply (unfold complex_of_real_def)
-apply (rule_tac z = "z" in eq_Abs_complex)
+apply (rule_tac z = z in eq_Abs_complex)
 apply (auto simp add: complex_mult)
 done
 declare complex_Re_mult_complex_of_real2 [simp]
 
 lemma complex_Im_mult_complex_of_real2: "Im (complex_of_real c * z) = c * Im(z)"
 apply (unfold complex_of_real_def)
-apply (rule_tac z = "z" in eq_Abs_complex)
+apply (rule_tac z = z in eq_Abs_complex)
 apply (auto simp add: complex_mult)
 done
 declare complex_Im_mult_complex_of_real2 [simp]
@@ -1498,7 +1436,7 @@
 apply (auto simp add: cos_add sin_add complex_add_mult_distrib2 complex_add_mult_distrib complex_mult_ac complex_add_ac)
 apply (auto simp add: complex_add_mult_distrib2 [symmetric] complex_mult_assoc [symmetric] complex_of_real_mult complex_of_real_add complex_add_assoc [symmetric] i_mult_eq simp del: i_mult_eq2)
 apply (auto simp add: complex_add_ac)
-apply (auto simp add: complex_add_assoc [symmetric] complex_of_real_add real_add_mult_distrib2 real_diff_def mult_ac add_ac)
+apply (auto simp add: complex_add_assoc [symmetric] complex_of_real_add right_distrib real_diff_def mult_ac add_ac)
 done
 
 lemma cis_mult: "cis a * cis b = cis (a + b)"
@@ -1506,15 +1444,11 @@
 done
 
 lemma cis_zero: "cis 0 = 1"
-apply (unfold cis_def)
-apply auto
-done
+by (unfold cis_def, auto)
 declare cis_zero [simp]
 
 lemma cis_zero2: "cis 0 = complex_of_real 1"
-apply (unfold cis_def)
-apply auto
-done
+by (unfold cis_def, auto)
 declare cis_zero2 [simp]
 
 lemma rcis_zero_mod: "rcis 0 a = 0"
@@ -1548,7 +1482,7 @@
 lemma cis_real_of_nat_Suc_mult:
    "cis (real (Suc n) * a) = cis a * cis (real n * a)"
 apply (unfold cis_def)
-apply (auto simp add: real_of_nat_Suc real_add_mult_distrib cos_add sin_add complex_add_mult_distrib complex_add_mult_distrib2 complex_of_real_add complex_of_real_mult complex_mult_ac complex_add_ac)
+apply (auto simp add: real_of_nat_Suc left_distrib cos_add sin_add complex_add_mult_distrib complex_add_mult_distrib2 complex_of_real_add complex_of_real_mult complex_mult_ac complex_add_ac)
 apply (auto simp add: complex_add_mult_distrib2 [symmetric] complex_mult_assoc [symmetric] i_mult_eq complex_of_real_mult complex_of_real_add complex_add_assoc [symmetric] complex_of_real_minus [symmetric] real_diff_def mult_ac simp del: i_mult_eq2)
 done
 
@@ -1572,8 +1506,8 @@
 lemma rcis_inverse: "inverse(rcis r a) = rcis (1/r) (-a)"
 apply (case_tac "r=0")
 apply (simp (no_asm_simp) add: DIVISION_BY_ZERO COMPLEX_INVERSE_ZERO)
-apply (auto simp add: complex_inverse_complex_split complex_add_mult_distrib2 complex_of_real_mult rcis_def cis_def real_power_two complex_mult_ac real_mult_ac)
-apply (auto simp add: real_add_mult_distrib2 [symmetric] complex_of_real_minus complex_diff_def)
+apply (auto simp add: complex_inverse_complex_split complex_add_mult_distrib2 complex_of_real_mult rcis_def cis_def real_power_two complex_mult_ac mult_ac)
+apply (auto simp add: right_distrib [symmetric] complex_of_real_minus complex_diff_def)
 done
 
 lemma cis_divide: "cis a / cis b = cis (a - b)"
@@ -1590,36 +1524,28 @@
 done
 
 lemma Re_cis: "Re(cis a) = cos a"
-apply (unfold cis_def)
-apply auto
-done
+by (unfold cis_def, auto)
 declare Re_cis [simp]
 
 lemma Im_cis: "Im(cis a) = sin a"
-apply (unfold cis_def)
-apply auto
-done
+by (unfold cis_def, auto)
 declare Im_cis [simp]
 
 lemma cos_n_Re_cis_pow_n: "cos (real n * a) = Re(cis a ^ n)"
-apply (auto simp add: DeMoivre)
-done
+by (auto simp add: DeMoivre)
 
 lemma sin_n_Im_cis_pow_n: "sin (real n * a) = Im(cis a ^ n)"
-apply (auto simp add: DeMoivre)
-done
+by (auto simp add: DeMoivre)
 
 lemma expi_Im_split:
     "expi (ii * complex_of_real y) =
      complex_of_real (cos y) + ii * complex_of_real (sin y)"
-apply (unfold expi_def cis_def)
-apply auto
+apply (unfold expi_def cis_def, auto)
 done
 
 lemma expi_Im_cis:
     "expi (ii * complex_of_real y) = cis y"
-apply (unfold expi_def)
-apply auto
+apply (unfold expi_def, auto)
 done
 
 lemma expi_add: "expi(a + b) = expi(a) * expi(b)"
@@ -1630,54 +1556,50 @@
 lemma expi_complex_split:
      "expi(complex_of_real x + ii * complex_of_real y) =
       complex_of_real (exp(x)) * cis y"
-apply (unfold expi_def)
-apply auto
+apply (unfold expi_def, auto)
 done
 
 lemma expi_zero: "expi (0::complex) = 1"
-apply (unfold expi_def)
-apply auto
-done
+by (unfold expi_def, auto)
 declare expi_zero [simp]
 
 lemma complex_Re_mult_eq: "Re (w * z) = Re w * Re z - Im w * Im z"
-apply (rule_tac z = "z" in eq_Abs_complex)
-apply (rule_tac z = "w" in eq_Abs_complex)
+apply (rule_tac z = z in eq_Abs_complex)
+apply (rule_tac z = w in eq_Abs_complex)
 apply (auto simp add: complex_mult)
 done
 
 lemma complex_Im_mult_eq:
      "Im (w * z) = Re w * Im z + Im w * Re z"
-apply (rule_tac z = "z" in eq_Abs_complex)
-apply (rule_tac z = "w" in eq_Abs_complex)
+apply (rule_tac z = z in eq_Abs_complex)
+apply (rule_tac z = w in eq_Abs_complex)
 apply (auto simp add: complex_mult)
 done
 
 lemma complex_expi_Ex: 
    "EX a r. z = complex_of_real r * expi a"
-apply (cut_tac z = "z" in rcis_Ex)
+apply (cut_tac z = z in rcis_Ex)
 apply (auto simp add: expi_def rcis_def complex_mult_assoc [symmetric] complex_of_real_mult)
-apply (rule_tac x = "ii * complex_of_real a" in exI)
-apply auto
+apply (rule_tac x = "ii * complex_of_real a" in exI, auto)
 done
 
 
 (****
 Goal "[| - pi < a; a <= pi |] ==> (-pi < a & a <= 0) | (0 <= a & a <= pi)"
-by Auto_tac;
+by Auto_tac
 qed "lemma_split_interval";
 
 Goalw [arg_def]
   "[| r ~= 0; - pi < a; a <= pi |] \
 \  ==> arg(complex_of_real r * \
 \      (complex_of_real(cos a) + ii * complex_of_real(sin a))) = a";
-by Auto_tac;
+by Auto_tac
 by (cut_inst_tac [("x","0"),("y","r")] linorder_less_linear 1);
 by (auto_tac (claset(),simpset() addsimps (map (full_rename_numerals thy)
     [rabs_eqI2,rabs_minus_eqI2,real_minus_rinv]) [real_divide_def,
-    real_minus_mult_eq2 RS sym] real_mult_ac));
+    minus_mult_right RS sym] mult_ac));
 by (auto_tac (claset(),simpset() addsimps [real_mult_assoc RS sym]));
-by (dtac lemma_split_interval 1 THEN safe);
+by (dtac lemma_split_interval 1 THEN safe)
 ****)
 
 
--- a/src/HOL/Complex/NSCA.ML	Mon Dec 29 06:49:26 2003 +0100
+++ b/src/HOL/Complex/NSCA.ML	Thu Jan 01 10:06:32 2004 +0100
@@ -644,7 +644,7 @@
 by (res_inst_tac [("e","hcmod u"),("e'","- hcmod u")] Infinitesimal_interval2 1);
 by (auto_tac (claset() addDs [capprox_approx_zero_iff RS iffD1], 
     simpset() addsimps [mem_infmal_iff RS sym,hypreal_diff_def]));
-by (res_inst_tac [("C","hcmod x")] hypreal_le_add_left_cancel 1);
+by (res_inst_tac [("c1","hcmod x")] (add_le_cancel_left RS iffD1) 1);
 by (auto_tac (claset(),simpset() addsimps [symmetric hypreal_diff_def]));
 qed "Infinitesimal_hcmod_add_diff";
 
@@ -868,7 +868,7 @@
 by (Ultra_tac 1);
 by (dtac sym 1 THEN res_inst_tac [("z","X x")] eq_Abs_complex 1);
 by (auto_tac (claset(),simpset() addsimps [complex_mod,numeral_2_eq_2] delsimps [realpow_Suc]));
-by (rtac ccontr 1 THEN dtac real_leI 1);
+by (rtac ccontr 1 THEN dtac (linorder_not_less RS iffD1) 1);
 by (dtac order_less_le_trans 1 THEN assume_tac 1);
 by (dtac (real_sqrt_ge_abs1 RSN (2,order_less_le_trans)) 1);
 by (auto_tac (claset(),simpset() addsimps [numeral_2_eq_2 RS sym]));
@@ -883,7 +883,7 @@
 by (Ultra_tac 1);
 by (dtac sym 1 THEN res_inst_tac [("z","X x")] eq_Abs_complex 1);
 by (auto_tac (claset(),simpset() addsimps [complex_mod] delsimps [realpow_Suc]));
-by (rtac ccontr 1 THEN dtac real_leI 1);
+by (rtac ccontr 1 THEN dtac (linorder_not_less RS iffD1) 1);
 by (dtac order_less_le_trans 1 THEN assume_tac 1);
 by (dtac (real_sqrt_ge_abs2 RSN (2,order_less_le_trans)) 1);
 by Auto_tac;
--- a/src/HOL/Complex/ROOT.ML	Mon Dec 29 06:49:26 2003 +0100
+++ b/src/HOL/Complex/ROOT.ML	Thu Jan 01 10:06:32 2004 +0100
@@ -5,6 +5,6 @@
 The Complex Numbers
 *)
 
-with_path "../Real" use_thy "Real";
+with_path "../Real"      use_thy "Real";
 with_path "../Hyperreal" use_thy "Hyperreal";
 time_use_thy "Complex_Main";
--- a/src/HOL/Hyperreal/Fact.ML	Mon Dec 29 06:49:26 2003 +0100
+++ b/src/HOL/Hyperreal/Fact.ML	Thu Jan 01 10:06:32 2004 +0100
@@ -51,7 +51,7 @@
 qed "fact_less_mono";
 
 Goal "0 < inverse (real (fact n))";
-by (auto_tac (claset(),simpset() addsimps [real_inverse_gt_0]));
+by (auto_tac (claset(),simpset() addsimps [positive_imp_inverse_positive]));
 qed "inv_real_of_nat_fact_gt_zero";
 Addsimps [inv_real_of_nat_fact_gt_zero];
 
--- a/src/HOL/Hyperreal/HLog.ML	Mon Dec 29 06:49:26 2003 +0100
+++ b/src/HOL/Hyperreal/HLog.ML	Thu Jan 01 10:06:32 2004 +0100
@@ -226,13 +226,13 @@
 Goal "[| 0 < a; a ~= 1; 0 < x |] ==> hlog a (inverse x) = - hlog a x";
 by (res_inst_tac [("a1","hlog a x")] (add_left_cancel RS iffD1) 1);
 by (auto_tac (claset(),simpset() addsimps [hypreal_not_refl2 RS not_sym,
-    hlog_mult RS sym,hypreal_inverse_gt_0]));
+    hlog_mult RS sym,positive_imp_inverse_positive]));
 qed "hlog_inverse";
 
 Goal "[| 0 < a; a ~= 1; 0 < x; 0 < y|] \
 \     ==> hlog a (x/y) = hlog a x - hlog a y";
 by (auto_tac (claset(),
-    simpset() addsimps [hypreal_inverse_gt_0,hlog_mult, hlog_inverse,hypreal_diff_def,hypreal_divide_def]));
+    simpset() addsimps [positive_imp_inverse_positive,hlog_mult, hlog_inverse,hypreal_diff_def,hypreal_divide_def]));
 qed "hlog_divide";
 
 Goal "[| 1 < a; 0 < x; 0 < y |] ==> (hlog a x < hlog a y) = (x < y)";
--- a/src/HOL/Hyperreal/HTranscendental.ML	Mon Dec 29 06:49:26 2003 +0100
+++ b/src/HOL/Hyperreal/HTranscendental.ML	Thu Jan 01 10:06:32 2004 +0100
@@ -466,7 +466,7 @@
 (* we do proof by considering ln of 1/x *)
 Goal "[| x : Infinitesimal; 0 < x |] ==> ( *f* ln) x : HInfinite";
 by (dtac Infinitesimal_inverse_HInfinite 1);
-by (ftac hypreal_inverse_gt_0 1);
+by (ftac positive_imp_inverse_positive 1);
 by (dtac starfun_ln_HInfinite 2);
 by (auto_tac (claset(),simpset() addsimps [starfun_ln_inverse,
     HInfinite_minus_iff]));
--- a/src/HOL/Hyperreal/HyperBin.ML	Mon Dec 29 06:49:26 2003 +0100
+++ b/src/HOL/Hyperreal/HyperBin.ML	Thu Jan 01 10:06:32 2004 +0100
@@ -615,23 +615,4 @@
     hypreal_of_real_le_number_of_iff, hypreal_of_real_less_number_of_iff,
     number_of_le_hypreal_of_real_iff, number_of_less_hypreal_of_real_iff]);
 
-(** <= monotonicity results: needed for arithmetic **)
-
-Goal "[| i <= j;  (0::hypreal) <= k |] ==> i*k <= j*k";
-by (auto_tac (claset(),
-              simpset() addsimps [order_le_less, hypreal_mult_less_mono1]));
-qed "hypreal_mult_le_mono1";
-
-Goal "[| i <= j;  (0::hypreal) <= k |] ==> k*i <= k*j";
-by (dtac hypreal_mult_le_mono1 1);
-by (ALLGOALS (asm_full_simp_tac (simpset() addsimps [hypreal_mult_commute])));
-qed "hypreal_mult_le_mono2";
-
-Goal "[| u <= v;  x <= y;  0 <= v;  (0::hypreal) <= x |] ==> u * x <= v * y";
-by (etac (hypreal_mult_le_mono1 RS order_trans) 1);
-by (assume_tac 1);
-by (etac hypreal_mult_le_mono2 1);
-by (assume_tac 1);
-qed "hypreal_mult_le_mono";
-
 Addsimps [hypreal_minus_1_eq_m1];
--- a/src/HOL/Hyperreal/HyperDef.thy	Mon Dec 29 06:49:26 2003 +0100
+++ b/src/HOL/Hyperreal/HyperDef.thy	Thu Jan 01 10:06:32 2004 +0100
@@ -326,7 +326,7 @@
 lemma hypreal_add_commute: "(z::hypreal) + w = w + z"
 apply (rule_tac z = z in eq_Abs_hypreal)
 apply (rule_tac z = w in eq_Abs_hypreal)
-apply (simp add: real_add_ac hypreal_add)
+apply (simp add: add_ac hypreal_add)
 done
 
 lemma hypreal_add_assoc: "((z1::hypreal) + z2) + z3 = z1 + (z2 + z3)"
@@ -419,7 +419,7 @@
 apply (rule_tac z = z1 in eq_Abs_hypreal)
 apply (rule_tac z = z2 in eq_Abs_hypreal)
 apply (rule_tac z = w in eq_Abs_hypreal)
-apply (simp add: hypreal_mult hypreal_add real_add_mult_distrib)
+apply (simp add: hypreal_mult hypreal_add left_distrib)
 done
 
 text{*one and zero are distinct*}
@@ -452,7 +452,7 @@
 apply (rule_tac z = x in eq_Abs_hypreal)
 apply (simp add: hypreal_inverse hypreal_mult)
 apply (drule FreeUltrafilterNat_Compl_mem)
-apply (blast intro!: real_mult_inv_right FreeUltrafilterNat_subset)
+apply (blast intro!: right_inverse FreeUltrafilterNat_subset)
 done
 
 lemma hypreal_mult_inverse_left:
@@ -476,10 +476,6 @@
   show "y \<noteq> 0 ==> x / y = x * inverse y" by (simp add: hypreal_divide_def)
 qed
 
-(*Pull negations out*)
-declare minus_mult_right [symmetric, simp] 
-        minus_mult_left [symmetric, simp]
-
 
 lemma HYPREAL_INVERSE_ZERO: "inverse 0 = (0::hypreal)"
 by (simp add: hypreal_inverse hypreal_zero_def)
--- a/src/HOL/Hyperreal/HyperOrd.thy	Mon Dec 29 06:49:26 2003 +0100
+++ b/src/HOL/Hyperreal/HyperOrd.thy	Thu Jan 01 10:06:32 2004 +0100
@@ -25,20 +25,9 @@
 apply (erule add_strict_left_mono) 
 done
 
-lemma hypreal_less_add_right_cancel: "(A::hypreal) + C < B + C ==> A < B"
-apply (simp (no_asm_use))
-done
-
 lemma hypreal_add_zero_less_le_mono: "[|r < x; (0::hypreal) \<le> y|] ==> r < x + y"
 by (auto dest: hypreal_add_less_le_mono)
 
-lemma hypreal_le_add_left_cancel: "!!(A::hypreal). C + A \<le> C + B ==> A \<le> B"
-apply simp
-done
-
-lemma hypreal_le_square [simp]: "(0::hypreal) \<le> x*x"
-  by (rule Ring_and_Field.zero_le_square)
-
 lemma hypreal_add_order: "[| 0 < x; 0 < y |] ==> (0::hypreal) < x + y"
 apply (erule order_less_trans)
 apply (drule hypreal_add_less_mono2, simp)
@@ -54,12 +43,6 @@
      "[| u<v;  x<y;  (0::hypreal) < v;  0 < x |] ==> u*x < v* y"
  by (simp add: Ring_and_Field.mult_strict_mono order_less_imp_le)
 
-lemma hypreal_inverse_gt_0: "0 < x ==> 0 < inverse (x::hypreal)"
-  by (rule Ring_and_Field.positive_imp_inverse_positive)
-
-lemma hypreal_inverse_less_0: "x < 0 ==> inverse (x::hypreal) < 0"
-  by (rule Ring_and_Field.negative_imp_inverse_negative)
-
 
 subsection{*Existence of Infinite Hyperreal Number*}
 
@@ -68,9 +51,11 @@
 apply (rule Rep_hypreal)
 done
 
-(* existence of infinite number not corresponding to any real number *)
-(* use assumption that member FreeUltrafilterNat is not finite       *)
-(* a few lemmas first *)
+text{*Existence of infinite number not corresponding to any real number.
+Use assumption that member @{term FreeUltrafilterNat} is not finite.*}
+
+
+text{*A few lemmas first*}
 
 lemma lemma_omega_empty_singleton_disj: "{n::nat. x = real n} = {} |  
       (\<exists>y. {n::nat. x = real n} = {y})"
@@ -82,16 +67,18 @@
 lemma not_ex_hypreal_of_real_eq_omega: 
       "~ (\<exists>x. hypreal_of_real x = omega)"
 apply (unfold omega_def hypreal_of_real_def)
-apply (auto simp add: real_of_nat_Suc diff_eq_eq [symmetric] lemma_finite_omega_set [THEN FreeUltrafilterNat_finite])
+apply (auto simp add: real_of_nat_Suc diff_eq_eq [symmetric] 
+            lemma_finite_omega_set [THEN FreeUltrafilterNat_finite])
 done
 
 lemma hypreal_of_real_not_eq_omega: "hypreal_of_real x \<noteq> omega"
 by (cut_tac not_ex_hypreal_of_real_eq_omega, auto)
 
-(* existence of infinitesimal number also not *)
-(* corresponding to any real number *)
+text{*Existence of infinitesimal number also not corresponding to any
+ real number*}
 
-lemma lemma_epsilon_empty_singleton_disj: "{n::nat. x = inverse(real(Suc n))} = {} |  
+lemma lemma_epsilon_empty_singleton_disj:
+     "{n::nat. x = inverse(real(Suc n))} = {} |  
       (\<exists>y. {n::nat. x = inverse(real(Suc n))} = {y})"
 apply (auto simp add: inj_real_of_nat [THEN inj_eq])
 done
@@ -123,15 +110,10 @@
 val hypreal_add_left_le_mono1 = thm"hypreal_add_left_le_mono1";
 val hypreal_add_less_le_mono = thm"hypreal_add_less_le_mono";
 val hypreal_add_le_less_mono = thm"hypreal_add_le_less_mono";
-val hypreal_less_add_right_cancel = thm"hypreal_less_add_right_cancel";
 val hypreal_add_zero_less_le_mono = thm"hypreal_add_zero_less_le_mono";
-val hypreal_le_add_left_cancel = thm"hypreal_le_add_left_cancel";
-val hypreal_le_square = thm"hypreal_le_square";
 val hypreal_mult_less_mono1 = thm"hypreal_mult_less_mono1";
 val hypreal_mult_less_mono2 = thm"hypreal_mult_less_mono2";
 val hypreal_mult_less_mono = thm"hypreal_mult_less_mono";
-val hypreal_inverse_gt_0 = thm"hypreal_inverse_gt_0";
-val hypreal_inverse_less_0 = thm"hypreal_inverse_less_0";
 val Rep_hypreal_omega = thm"Rep_hypreal_omega";
 val lemma_omega_empty_singleton_disj = thm"lemma_omega_empty_singleton_disj";
 val lemma_finite_omega_set = thm"lemma_finite_omega_set";
--- a/src/HOL/Hyperreal/HyperPow.ML	Mon Dec 29 06:49:26 2003 +0100
+++ b/src/HOL/Hyperreal/HyperPow.ML	Thu Jan 01 10:06:32 2004 +0100
@@ -52,7 +52,7 @@
 
 Goal "x <= y & (0::hypreal) < x --> x ^ n <= y ^ n";
 by (induct_tac "n" 1);
-by (auto_tac (claset() addSIs [hypreal_mult_le_mono], simpset()));
+by (auto_tac (claset() addSIs [mult_mono], simpset()));
 by (asm_simp_tac (simpset() addsimps [hrealpow_ge_zero]) 1);
 qed_spec_mp "hrealpow_le";
 
@@ -104,7 +104,7 @@
 qed "hypreal_add_nonneg_eq_0_iff";
 
 Goal "(x*x + y*y + z*z = 0) = (x = 0 & y = 0 & z = (0::hypreal))";
-by (simp_tac (HOL_ss addsimps [hypreal_le_square, hypreal_le_add_order, 
+by (simp_tac (HOL_ss addsimps [zero_le_square, hypreal_le_add_order, 
                          hypreal_add_nonneg_eq_0_iff]) 1);
 by Auto_tac;
 qed "hypreal_three_squares_add_zero_iff";
--- a/src/HOL/Hyperreal/Integration.ML	Mon Dec 29 06:49:26 2003 +0100
+++ b/src/HOL/Hyperreal/Integration.ML	Thu Jan 01 10:06:32 2004 +0100
@@ -355,9 +355,9 @@
 by (subgoal_tac 
     "abs((rsum(D,p) f - k2) - (rsum(D,p) f - k1)) < abs(k1 - k2)" 1);
 by (arith_tac 1);
-by (dtac real_add_less_mono 1 THEN assume_tac 1);
+by (dtac add_strict_mono 1 THEN assume_tac 1);
 by (auto_tac (claset(),
-    HOL_ss addsimps [real_add_mult_distrib RS sym,
+    HOL_ss addsimps [left_distrib RS sym,
                      real_mult_2_right RS sym, mult_less_cancel_right]));
 by (ALLGOALS(arith_tac));
 qed "Integral_unique";
@@ -390,7 +390,7 @@
 by (res_inst_tac [("x","%x. b - a")] exI 1);
 by (auto_tac (claset(),simpset() addsimps 
     [sumr_mult RS sym,gauge_def,abs_interval_iff,
-     real_diff_mult_distrib2 RS sym,partition,tpart_def]));
+     right_diff_distrib RS sym,partition,tpart_def]));
 qed "Integral_mult_const";
 
 Goal "[| a <= b; Integral(a,b) f k |] ==> Integral(a,b) (%x. c * f x) (c * k)";
@@ -404,15 +404,17 @@
 by (dtac sym 2);
 by (Asm_full_simp_tac 2 THEN Blast_tac 2);
 by (dres_inst_tac [("x","e/abs c")] spec 1 THEN Auto_tac);
-by (asm_full_simp_tac (simpset() addsimps [real_0_less_mult_iff,
+by (asm_full_simp_tac (simpset() addsimps [zero_less_mult_iff,
     real_divide_def]) 1);
 by (rtac exI 1 THEN Auto_tac);
 by (REPEAT(dtac spec 1) THEN Auto_tac);
 by (res_inst_tac [("z1","inverse(abs c)")] (real_mult_less_iff1 RS iffD1) 1);
 by (fold_tac [real_divide_def]);
-by (auto_tac (claset(),simpset() addsimps [real_diff_mult_distrib2 
-    RS sym,abs_mult,real_mult_assoc RS sym,
-    ARITH_PROVE "c ~= 0 ==> abs (c::real) ~= 0",real_inverse_gt_0]));
+by (auto_tac (claset(),
+      simpset() addsimps [right_diff_distrib RS sym,
+                     abs_mult, real_mult_assoc RS sym,
+    ARITH_PROVE "c ~= 0 ==> abs (c::real) ~= 0",
+    positive_imp_inverse_positive]));
 qed "Integral_mult";
 
 (* ------------------------------------------------------------------------ *)
@@ -476,15 +478,15 @@
      addsimps [abs_mult RS sym, real_mult_assoc RS sym]) 2);
 by (subgoal_tac "inverse (z - x) * (f z - f x - f' x * (z - x)) = \
 \                (f z - f x)/(z - x) - f' x" 2);
-by (asm_full_simp_tac (simpset() addsimps [abs_mult RS sym] @ real_mult_ac) 2);
+by (asm_full_simp_tac (simpset() addsimps [abs_mult RS sym] @ mult_ac) 2);
 by (asm_full_simp_tac (simpset() addsimps [real_diff_def]) 2);
 by (rtac (real_mult_commute RS subst) 2);
-by (asm_full_simp_tac (simpset() addsimps [real_add_mult_distrib,
+by (asm_full_simp_tac (simpset() addsimps [left_distrib,
     real_diff_def]) 2);
 by (dtac (CLAIM "z ~= x ==> z + -x ~= (0::real)") 2);
 by (asm_full_simp_tac (simpset() addsimps [real_mult_assoc,
     real_divide_def]) 2);
-by (simp_tac (simpset() addsimps [real_add_mult_distrib]) 2);
+by (simp_tac (simpset() addsimps [left_distrib]) 2);
 by (res_inst_tac [("x","s")] exI 1 THEN Auto_tac);
 by (res_inst_tac [("u1","u"),("v1","v")] (ARITH_PROVE "u < v | v <= (u::real)"
     RS disjE) 1);
@@ -494,10 +496,10 @@
 by (res_inst_tac [("j","abs((f(v) - f(x)) - (f'(x) * (v - x))) + \
 \                  abs((f(x) - f(u)) - (f'(x) * (x - u)))")] real_le_trans 1);
 by (rtac (abs_triangle_ineq RSN (2,real_le_trans)) 1);
-by (asm_full_simp_tac (simpset() addsimps [real_diff_mult_distrib2]) 1);
+by (asm_full_simp_tac (simpset() addsimps [right_diff_distrib]) 1);
 by (arith_tac 1);
 by (res_inst_tac [("t","e*(v - u)")] (real_sum_of_halves RS subst) 1);
-by (rtac real_add_le_mono 1);
+by (rtac add_mono 1);
 by (res_inst_tac [("j","(e / 2) * abs(v - x)")] real_le_trans 1);
 
 by (Asm_full_simp_tac 2 THEN arith_tac 2);
@@ -511,7 +513,7 @@
 by (subgoal_tac "abs (f u - f x - f' x * (u - x)) = \
 \                abs (f x - f u - f' x * (x - u))" 1);
 by (Asm_full_simp_tac 1);
-by (asm_full_simp_tac (simpset() addsimps [real_add_mult_distrib2,
+by (asm_full_simp_tac (simpset() addsimps [right_distrib,
     real_diff_def]) 2);
 by (arith_tac 2);
 by(rtac real_le_trans 1);
@@ -521,8 +523,8 @@
 
 Goal "((number_of c - 1) * x <= 0) =((number_of c ::real) * x <= x)";
 by (rtac ((ARITH_PROVE "(x <= y) = (x - y <= (0::real))") RS ssubst) 1);
-by (simp_tac (simpset() addsimps [real_diff_mult_distrib,
-    CLAIM_SIMP "c * x - x = (c - 1) * (x::real)" [real_diff_mult_distrib]]) 1);
+by (simp_tac (simpset() addsimps [left_diff_distrib,
+    CLAIM_SIMP "c * x - x = (c - 1) * (x::real)" [left_diff_distrib]]) 1);
 qed "lemma_number_of_mult_le";
  
 
@@ -615,7 +617,7 @@
 Goal "tpart(a,c) (D,p) ==> p = (%n. if D n < c then p n else c)";
 by (rtac ext 1);
 by (auto_tac (claset(),simpset() addsimps [tpart_def]));
-by (dtac real_leI 1);
+by (dtac (linorder_not_less RS iffD1) 1);
 by (dres_inst_tac [("r","Suc n")] partition_ub 1);
 by (dres_inst_tac [("x","n")] spec 1);
 by Auto_tac;
@@ -859,10 +861,10 @@
      tpart_tag_eq RS sym]));
 by (ftac (tpart_partition RSN (3,lemma_additivity1)) 1); 
 by (auto_tac (claset(),simpset() addsimps [tpart_def]));
-by (dtac (real_leI RS real_le_imp_less_or_eq) 2);
+by (dtac ((linorder_not_less RS iffD1) RS real_le_imp_less_or_eq) 2);
 by (Auto_tac);
 by (blast_tac (claset() addDs [lemma_additivity3]) 2);
-by (dtac real_leI 2 THEN dres_inst_tac [("x","na")] spec 2);
+by (dtac (linorder_not_less RS iffD1) 2 THEN dres_inst_tac [("x","na")] spec 2);
 by (arith_tac 2);
 by (ftac lemma_additivity4_psize_eq 1);
 by (REPEAT(assume_tac 1));
@@ -889,7 +891,7 @@
 by (ALLGOALS(dres_inst_tac [("x","na")] spec));
 by Auto_tac;
 by (asm_full_simp_tac (simpset() addsimps [split_if]) 1);
-by (dtac (real_leI RS real_le_imp_less_or_eq) 1);
+by (dtac ((linorder_not_less RS iffD1) RS real_le_imp_less_or_eq) 1);
 by (Step_tac 1);
 by (blast_tac (claset() addDs [lemma_additivity3a]) 1);
 by (dtac sym 1 THEN Auto_tac);
@@ -935,7 +937,7 @@
 
 Goalw [rsum_def] 
    "rsum (D, p) (%x. f x + g x) =  rsum (D, p) f + rsum(D, p) g";
-by (auto_tac (claset(),simpset() addsimps [sumr_add,real_add_mult_distrib]));
+by (auto_tac (claset(),simpset() addsimps [sumr_add,left_distrib]));
 qed "rsum_add";
 
 (* Bartle/Sherbert: Theorem 10.1.5 p. 278 *)
@@ -950,10 +952,10 @@
 by Auto_tac;
 by (dtac fine_min 1);
 by (REPEAT(dtac spec 1) THEN Auto_tac);
-by (dres_inst_tac  [("R1.0","abs (rsum (D, p) f - k1)* 2"),
-    ("R2.0","abs (rsum (D, p) g - k2) * 2")] 
-    real_add_less_mono 1 THEN assume_tac 1);
-by (auto_tac (claset(),HOL_ss addsimps [rsum_add,real_add_mult_distrib RS sym,
+by (dres_inst_tac  [("a","abs (rsum (D, p) f - k1)* 2"),
+    ("c","abs (rsum (D, p) g - k2) * 2")] 
+    add_strict_mono 1 THEN assume_tac 1);
+by (auto_tac (claset(),HOL_ss addsimps [rsum_add,left_distrib RS sym,
     real_mult_2_right RS sym,real_mult_less_iff1,CLAIM "(0::real) < 2"]));
 by (arith_tac 1);
 qed "Integral_add_fun";
@@ -1011,8 +1013,8 @@
 by (subgoal_tac 
     "abs((rsum(D,p) f - k1) - (rsum(D,p) g - k2)) < abs(k1 - k2)" 1);
 by (arith_tac 1);
-by (dtac real_add_less_mono 1 THEN assume_tac 1);
-by (auto_tac (claset(),HOL_ss addsimps [real_add_mult_distrib RS sym,
+by (dtac add_strict_mono 1 THEN assume_tac 1);
+by (auto_tac (claset(),HOL_ss addsimps [left_distrib RS sym,
     real_mult_2_right RS sym,real_mult_less_iff1,CLAIM "(0::real) < 2"]));
 by (arith_tac 1);
 qed "Integral_le";
@@ -1033,8 +1035,8 @@
 by (forw_inst_tac [("x","D2")] spec 1);
 by (REPEAT(dtac spec 1) THEN Auto_tac);
 by (thin_tac "0 < e" 1);
-by (dtac real_add_less_mono 1 THEN assume_tac 1);
-by (auto_tac (claset(),HOL_ss addsimps [real_add_mult_distrib RS sym,
+by (dtac add_strict_mono 1 THEN assume_tac 1);
+by (auto_tac (claset(),HOL_ss addsimps [left_distrib RS sym,
     real_mult_2_right RS sym,real_mult_less_iff1,CLAIM "(0::real) < 2"]));
 by (arith_tac 1);
 qed "Integral_imp_Cauchy";
--- a/src/HOL/Hyperreal/Lim.ML	Mon Dec 29 06:49:26 2003 +0100
+++ b/src/HOL/Hyperreal/Lim.ML	Thu Jan 01 10:06:32 2004 +0100
@@ -5,11 +5,6 @@
                   differentiation of real=>real functions
 *)
 
-val times_divide_eq_right = thm"times_divide_eq_right";
-
-val inverse_mult_distrib = thm"inverse_mult_distrib";
-val inverse_minus_eq = thm "inverse_minus_eq";
-
 fun ARITH_PROVE str = prove_goal thy str 
                       (fn prems => [cut_facts_tac prems 1,arith_tac 1]);
 
@@ -51,7 +46,7 @@
     THEN step_tac (claset() addSEs [order_less_trans]) 3);
 by (ALLGOALS(rtac (abs_sum_triangle_ineq RS order_le_less_trans)));
 by (ALLGOALS(rtac (real_sum_of_halves RS subst)));
-by (auto_tac (claset() addIs [real_add_less_mono],simpset()));
+by (auto_tac (claset() addIs [add_strict_mono],simpset()));
 qed "LIM_add";
 
 Goalw [LIM_def] "f -- a --> L ==> (%x. -f(x)) -- a --> -L";
@@ -72,7 +67,7 @@
      LIM_zero
  ----------------------------------------------*)
 Goal "f -- a --> l ==> (%x. f(x) + -l) -- a --> 0";
-by (res_inst_tac [("z1","l")] ((real_add_minus RS subst)) 1);
+by (res_inst_tac [("a1","l")] ((right_minus RS subst)) 1);
 by (rtac LIM_add_minus 1 THEN Auto_tac);
 qed "LIM_zero";
 
@@ -119,8 +114,7 @@
 by (dres_inst_tac [("x","1")] spec 1);
 by (dres_inst_tac [("x","r")] spec 1);
 by (cut_facts_tac [real_zero_less_one] 1);
-by (asm_full_simp_tac (simpset() addsimps 
-    [abs_mult]) 1);
+by (asm_full_simp_tac (simpset() addsimps [abs_mult]) 1);
 by (Clarify_tac 1);
 by (res_inst_tac [("R1.0","s"),("R2.0","sa")] 
     real_linear_less2 1);
@@ -193,7 +187,7 @@
 \             abs(xa + -x) < inverse(real(Suc n)) & r \\<le> abs(f xa + -L)";
 by (Clarify_tac 1); 
 by (cut_inst_tac [("n1","n")]
-    (real_of_nat_Suc_gt_zero RS real_inverse_gt_0) 1);
+    (real_of_nat_Suc_gt_zero RS positive_imp_inverse_positive) 1);
 by Auto_tac;
 val lemma_LIM = result();
 
@@ -341,7 +335,7 @@
     NSLIM_zero
  ------------------------------*)
 Goal "f -- a --NS> l ==> (%x. f(x) + -l) -- a --NS> 0";
-by (res_inst_tac [("z1","l")] ((real_add_minus RS subst)) 1);
+by (res_inst_tac [("a1","l")] ((right_minus RS subst)) 1);
 by (rtac NSLIM_add_minus 1 THEN Auto_tac);
 qed "NSLIM_zero";
 
@@ -702,7 +696,7 @@
 \              r \\<le> abs(f z + -f y)";
 by (Clarify_tac 1); 
 by (cut_inst_tac [("n1","n")]
-    (real_of_nat_Suc_gt_zero RS real_inverse_gt_0) 1);
+    (real_of_nat_Suc_gt_zero RS positive_imp_inverse_positive) 1);
 by Auto_tac;
 val lemma_LIMu = result();
 
@@ -980,7 +974,7 @@
 by (asm_full_simp_tac (simpset() addsimps [NSDERIV_NSLIM_iff,
            NSLIM_def]) 1 THEN REPEAT (Step_tac 1));
 by (auto_tac (claset(),
-       simpset() addsimps [hypreal_add_divide_distrib]));
+       simpset() addsimps [add_divide_distrib]));
 by (dres_inst_tac [("b","hypreal_of_real Da"),
                    ("d","hypreal_of_real Db")] approx_add 1);
 by (auto_tac (claset(), simpset() addsimps add_ac));
@@ -1020,7 +1014,7 @@
 by (REPEAT (Step_tac 1));
 by (auto_tac (claset(),
        simpset() addsimps [starfun_lambda_cancel, lemma_nsderiv1]));
-by (simp_tac (simpset() addsimps [hypreal_add_divide_distrib]) 1); 
+by (simp_tac (simpset() addsimps [add_divide_distrib]) 1); 
 by (REPEAT(dtac (bex_Infinitesimal_iff2 RS iffD2) 1));
 by (auto_tac (claset(),
         simpset() delsimps [times_divide_eq_right]
@@ -1052,7 +1046,7 @@
 \     ==> NSDERIV (%x. c * f x) x :> c*D";
 by (asm_full_simp_tac 
     (HOL_ss addsimps [times_divide_eq_right RS sym, NSDERIV_NSLIM_iff,
-                      real_minus_mult_eq2, real_add_mult_distrib2 RS sym]) 1);
+                      minus_mult_right, right_distrib RS sym]) 1);
 by (etac (NSLIM_const RS NSLIM_mult) 1);
 qed "NSDERIV_cmult";
 
@@ -1064,7 +1058,7 @@
 \      ==> DERIV (%x. c * f x) x :> c*D";
 by (asm_full_simp_tac 
     (HOL_ss addsimps [times_divide_eq_right RS sym, NSDERIV_NSLIM_iff,
-                      real_minus_mult_eq2, real_add_mult_distrib2 RS sym]) 1);
+                      minus_mult_right, right_distrib RS sym]) 1);
 by (etac (LIM_const RS LIM_mult2) 1);
 qed "DERIV_cmult";
 
@@ -1295,7 +1289,7 @@
 by (induct_tac "n" 1);
 by (dtac (DERIV_Id RS DERIV_mult) 2);
 by (auto_tac (claset(), 
-              simpset() addsimps [real_of_nat_Suc, real_add_mult_distrib]));
+              simpset() addsimps [real_of_nat_Suc, left_distrib]));
 by (case_tac "0 < n" 1);
 by (dres_inst_tac [("x","x")] realpow_minus_mult 1);
 by (auto_tac (claset(), 
@@ -1354,7 +1348,7 @@
 Goal "[| DERIV f x :> d; f(x) \\<noteq> 0 |] \
 \     ==> DERIV (%x. inverse(f x)) x :> (- (d * inverse(f(x) ^ Suc (Suc 0))))";
 by (rtac (real_mult_commute RS subst) 1);
-by (asm_simp_tac (HOL_ss addsimps [real_minus_mult_eq1, realpow_inverse]) 1);
+by (asm_simp_tac (HOL_ss addsimps [minus_mult_left, realpow_inverse]) 1);
 by (fold_goals_tac [o_def]);
 by (blast_tac (claset() addSIs [DERIV_chain,DERIV_inverse]) 1);
 qed "DERIV_inverse_fun";
@@ -1374,10 +1368,9 @@
 by (dtac DERIV_mult 2);
 by (REPEAT(assume_tac 1));
 by (asm_full_simp_tac
-    (simpset() addsimps [real_divide_def, real_add_mult_distrib2,
-                         realpow_inverse,real_minus_mult_eq1] @ real_mult_ac 
-       delsimps [realpow_Suc, real_mult_minus_eq1, real_mult_minus_eq2,
-                 minus_mult_right RS sym, minus_mult_left RS sym]) 1);
+    (simpset() addsimps [real_divide_def, right_distrib,
+                         realpow_inverse,minus_mult_left] @ mult_ac 
+       delsimps [realpow_Suc, minus_mult_right RS sym, minus_mult_left RS sym]) 1);
 qed "DERIV_quotient";
 
 Goal "[| NSDERIV f x :> d; DERIV g x :> e; g(x) \\<noteq> 0 |] \
@@ -1456,7 +1449,7 @@
 qed "f_inc_g_dec_Beq_g";
 
 Goal "[| \\<forall>n. f n \\<le> f (Suc n);  convergent f |] ==> f n \\<le> lim f";
-by (rtac real_leI 1);
+by (rtac (linorder_not_less RS iffD1) 1);
 by (auto_tac (claset(), 
       simpset() addsimps [convergent_LIMSEQ_iff, LIMSEQ_iff, monoseq_Suc]));
 by (dtac real_less_sum_gt_zero 1);
@@ -1551,7 +1544,7 @@
 \     (b-a) / (2 ^ n)";
 by (induct_tac "n" 1);
 by (auto_tac (claset(), 
-      simpset() addsimps [eq_divide_2_times_iff, real_add_divide_distrib, 
+      simpset() addsimps [eq_divide_2_times_iff, add_divide_distrib, 
                           Let_def, split_def]));
 by (auto_tac (claset(), 
               simpset() addsimps (add_ac@[Bolzano_bisect_le, real_diff_def])));
@@ -1615,7 +1608,7 @@
     order_le_less_trans 1);
 by (asm_simp_tac (simpset() addsimps [real_abs_def]) 1);  
 by (rtac (real_sum_of_halves RS subst) 1);
-by (rtac real_add_less_mono 1);
+by (rtac add_strict_mono 1);
 by (ALLGOALS 
     (asm_full_simp_tac (simpset() addsimps [symmetric real_diff_def])));
 qed "lemma_BOLZANO";
@@ -1708,7 +1701,7 @@
 Addsimps [abs_real_of_nat_cancel];
 
 Goal "~ abs(x) + (1::real) < x";
-by (rtac real_leD 1);
+by (asm_full_simp_tac (simpset() addsimps [linorder_not_less]) 1); 
 by (auto_tac (claset() addIs [abs_ge_self RS order_trans],simpset()));
 qed "abs_add_one_not_less_self";
 Addsimps [abs_add_one_not_less_self];
@@ -1770,7 +1763,7 @@
 by (rtac exI 1 THEN Auto_tac);
 by (REPEAT(dtac spec 1) THEN Auto_tac);
 by (dres_inst_tac [("x","x")] spec 1);
-by (auto_tac (claset() addSIs [real_leI],simpset()));
+by (auto_tac (claset() addSIs [(linorder_not_less RS iffD1)],simpset()));
 qed "isCont_has_Ub";
 
 (*----------------------------------------------------------------------------*)
@@ -1786,7 +1779,7 @@
 by (Asm_full_simp_tac 1); 
 by (rtac ccontr 1);
 by (subgoal_tac "\\<forall>x. a \\<le> x & x \\<le> b --> f x < M" 1 THEN Step_tac 1);
-by (rtac ccontr 2 THEN dtac real_leI 2);
+by (rtac ccontr 2 THEN dtac (linorder_not_less RS iffD1) 2);
 by (dres_inst_tac [("z","M")] real_le_anti_sym 2);
 by (REPEAT(Blast_tac 2));
 by (subgoal_tac "\\<forall>x. a \\<le> x & x \\<le> b --> isCont (%x. inverse(M - f x)) x" 1);
@@ -1806,16 +1799,16 @@
     "\\<forall>x. a \\<le> x & x \\<le> b --> (%x. inverse(M - (f x))) x < (k + 1)" 1);
 by Safe_tac;
 by (res_inst_tac [("y","k")] order_le_less_trans 2);
-by (asm_full_simp_tac (simpset() addsimps [real_zero_less_one]) 3);
+by (asm_full_simp_tac (simpset() addsimps [zero_less_one]) 3);
 by (Asm_full_simp_tac 2); 
 by (subgoal_tac "\\<forall>x. a \\<le> x & x \\<le> b --> \
 \                inverse(k + 1) < inverse((%x. inverse(M - (f x))) x)" 1);
 by Safe_tac;
-by (rtac real_inverse_less_swap 2);
+by (rtac less_imp_inverse_less 2);
 by (ALLGOALS Asm_full_simp_tac);
 by (dres_inst_tac [("P", "%N. N<M --> ?Q N"),
                    ("x","M - inverse(k + 1)")] spec 1);
-by (Step_tac 1 THEN dtac real_leI 1);
+by (Step_tac 1 THEN dtac (linorder_not_less RS iffD1) 1);
 by (dtac (le_diff_eq RS iffD1) 1);
 by (REPEAT(dres_inst_tac [("x","a")] spec 1));
 by (Asm_full_simp_tac 1);
@@ -2047,10 +2040,8 @@
 by (asm_full_simp_tac (simpset() addsimps [DIVISION_BY_ZERO]) 1); 
 by (res_inst_tac [("c1","b - a")] (real_mult_left_cancel RS iffD1) 1);
 by (arith_tac 1);
-by (auto_tac (claset(),
-              simpset() addsimps [real_diff_mult_distrib2]));
-by (auto_tac (claset(),
-           simpset() addsimps [real_diff_mult_distrib]));
+by (auto_tac (claset(), simpset() addsimps [right_diff_distrib]));
+by (auto_tac (claset(), simpset() addsimps [left_diff_distrib]));
 qed "lemma_MVT";
 
 Goal "[| a < b; \
@@ -2134,7 +2125,7 @@
 by (auto_tac (claset() addDs [DERIV_isCont,DERIV_unique],simpset() addsimps 
     [differentiable_def]));
 by (auto_tac (claset() addDs [DERIV_unique],
-       simpset() addsimps [real_add_mult_distrib, real_diff_def]));
+       simpset() addsimps [left_distrib, real_diff_def]));
 qed "DERIV_const_ratio_const";
 
 Goal "[|a \\<noteq> b; \\<forall>x. DERIV f x :> k |] ==> (f(b) - f(a))/(b - a) = k";
--- a/src/HOL/Hyperreal/Log.ML	Mon Dec 29 06:49:26 2003 +0100
+++ b/src/HOL/Hyperreal/Log.ML	Thu Jan 01 10:06:32 2004 +0100
@@ -25,7 +25,7 @@
 Goalw [powr_def] 
       "[| 0 < x; 0 < y |] ==> (x * y) powr a = (x powr a) * (y powr a)";
 by (asm_simp_tac (simpset() addsimps [exp_add RS sym,ln_mult,
-    real_add_mult_distrib2]) 1);
+    right_distrib]) 1);
 qed "powr_mult";
 
 Goalw [powr_def] "0 < x powr a";
@@ -39,19 +39,18 @@
 Addsimps [powr_not_zero];
 
 Goal "[| 0 < x; 0 < y |] ==> (x / y) powr a = (x powr a)/(y powr a)";
-by (asm_simp_tac (simpset() addsimps [real_divide_def,real_inverse_gt_0,
-    powr_mult]) 1);
+by (asm_simp_tac (simpset() addsimps [real_divide_def,positive_imp_inverse_positive, powr_mult]) 1);
 by (asm_simp_tac (simpset() addsimps [powr_def,exp_minus RS sym,
     exp_add RS sym,ln_inverse]) 1);
 qed "powr_divide";
 
 Goalw [powr_def] "x powr (a + b) = (x powr a) * (x powr b)";
 by (asm_simp_tac (simpset() addsimps [exp_add RS sym,
-    real_add_mult_distrib]) 1);
+    left_distrib]) 1);
 qed "powr_add";
 
 Goalw [powr_def] "(x powr a) powr b = x powr (a * b)";
-by (simp_tac (simpset() addsimps real_mult_ac) 1);
+by (simp_tac (simpset() addsimps mult_ac) 1);
 qed "powr_powr";
 
 Goal "(x powr a) powr b = (x powr b) powr a";
@@ -108,7 +107,7 @@
      "[| 0 < a; a ~= 1; 0 < x; 0 < y  |] \
 \     ==> log a (x * y) = log a x + log a y";
 by (auto_tac (claset(),simpset() addsimps [ln_mult,real_divide_def,
-    real_add_mult_distrib]));
+    left_distrib]));
 qed "log_mult";
 
 Goalw [log_def,real_divide_def]
@@ -138,7 +137,7 @@
 Addsimps [log_eq_one];
 
 Goal "[| 0 < a; a ~= 1; 0 < x |] ==> log a (inverse x) = - log a x";
-by (res_inst_tac [("x1","log a x")] (real_add_left_cancel RS iffD1) 1);
+by (res_inst_tac [("a1","log a x")] (add_left_cancel RS iffD1) 1);
 by (auto_tac (claset(),simpset() addsimps [log_mult RS sym]));
 qed "log_inverse";
 
--- a/src/HOL/Hyperreal/MacLaurin.ML	Mon Dec 29 06:49:26 2003 +0100
+++ b/src/HOL/Hyperreal/MacLaurin.ML	Thu Jan 01 10:06:32 2004 +0100
@@ -101,9 +101,9 @@
 by (rtac DERIV_quotient 3);
 by (rtac DERIV_const 4);
 by (rtac DERIV_pow 3);
-by (asm_simp_tac (simpset() addsimps [real_inverse_distrib,
+by (asm_simp_tac (simpset() addsimps [inverse_mult_distrib,
     CLAIM_SIMP "(a::real) * b * c * (d * e) = a * b * (c * d) * e" 
-    real_mult_ac,fact_diff_Suc]) 4);
+    mult_ac,fact_diff_Suc]) 4);
 by (Asm_simp_tac 3);
 by (forw_inst_tac [("m","ma")] less_add_one 2);
 by (Clarify_tac 2);
@@ -126,8 +126,8 @@
 by DERIV_tac;
 by (stac fact_Suc 2);
 by (stac real_of_nat_mult 2);
-by (simp_tac (simpset() addsimps [real_inverse_distrib] @
-    real_mult_ac) 2);
+by (simp_tac (simpset() addsimps [inverse_mult_distrib] @
+    mult_ac) 2);
 by (subgoal_tac "ALL ma. ma < n --> \
 \        (EX t. 0 < t & t < h & difg (Suc ma) t = 0)" 1);
 by (rotate_tac 11 1);
@@ -267,7 +267,7 @@
                  ("h","-h"),("n","n")] Maclaurin_objl 1);
 by (Asm_full_simp_tac 1);
 by (etac impE 1 THEN Step_tac 1);
-by (stac real_minus_mult_eq2 1);
+by (stac minus_mult_right 1);
 by (rtac DERIV_cmult 1);
 by (rtac lemma_DERIV_subst 1);
 by (rtac (read_instantiate [("g","uminus")] DERIV_chain2) 1);
@@ -446,7 +446,7 @@
 qed "lemma_exhaust_less_4";
 
 bind_thm ("real_mult_le_lemma",
-          simplify (simpset()) (inst "y" "1" real_mult_le_le_mono2));
+          simplify (simpset()) (inst "b" "1" mult_right_mono));
 
 
 Goal "abs(sin x - \
@@ -489,7 +489,7 @@
 by (asm_full_simp_tac (simpset() addsimps [numeral_2_eq_2,real_divide_def]) 1);
 by (dtac lemma_odd_mod_4_div_2 1);
 by (asm_full_simp_tac (simpset() addsimps [numeral_2_eq_2, real_divide_def]) 1);
-by (auto_tac (claset() addSIs [real_mult_le_lemma,real_mult_le_le_mono2],
+by (auto_tac (claset() addSIs [real_mult_le_lemma,mult_right_mono],
       simpset() addsimps [real_divide_def,abs_mult,abs_inverse,realpow_abs RS
 sym]));
 qed "Maclaurin_sin_bound";
@@ -660,7 +660,7 @@
 by (rtac sumr_fun_eq 1);
 by (auto_tac (claset(),simpset() addsimps [odd_not_even RS sym]));
 by (auto_tac (claset(),simpset() addsimps [odd_Suc_mult_two_ex,
-    even_mult_two_ex,real_add_mult_distrib,cos_add]  delsimps 
+    even_mult_two_ex,left_distrib,cos_add]  delsimps 
     [fact_Suc,realpow_Suc]));
 by (auto_tac (claset(),simpset() addsimps [real_mult_commute]));
 qed "Maclaurin_cos_expansion";
@@ -687,7 +687,7 @@
 by (rtac sumr_fun_eq 1);
 by (auto_tac (claset(),simpset() addsimps [odd_not_even RS sym]));
 by (auto_tac (claset(),simpset() addsimps [odd_Suc_mult_two_ex,
-    even_mult_two_ex,real_add_mult_distrib,cos_add]  delsimps 
+    even_mult_two_ex,left_distrib,cos_add]  delsimps 
     [fact_Suc,realpow_Suc]));
 by (auto_tac (claset(),simpset() addsimps [real_mult_commute]));
 qed "Maclaurin_cos_expansion2";
@@ -714,7 +714,7 @@
 by (rtac sumr_fun_eq 1);
 by (auto_tac (claset(),simpset() addsimps [odd_not_even RS sym]));
 by (auto_tac (claset(),simpset() addsimps [odd_Suc_mult_two_ex,
-    even_mult_two_ex,real_add_mult_distrib,cos_add]  delsimps 
+    even_mult_two_ex,left_distrib,cos_add]  delsimps 
     [fact_Suc,realpow_Suc]));
 by (auto_tac (claset(),simpset() addsimps [real_mult_commute]));
 qed "Maclaurin_minus_cos_expansion";
--- a/src/HOL/Hyperreal/NSA.ML	Mon Dec 29 06:49:26 2003 +0100
+++ b/src/HOL/Hyperreal/NSA.ML	Thu Jan 01 10:06:32 2004 +0100
@@ -347,8 +347,8 @@
      "x: HInfinite ==> inverse x: Infinitesimal";
 by Auto_tac;
 by (eres_inst_tac [("x","inverse r")] ballE 1);
-by (forw_inst_tac [("x1","r"),("z","abs x")]
-    (hypreal_inverse_gt_0 RS order_less_trans) 1);
+by (forw_inst_tac [("a1","r"),("z","abs x")]
+    (positive_imp_inverse_positive RS order_less_trans) 1);
 by (assume_tac 1);
 by (dtac ((inverse_inverse_eq RS sym) RS subst) 1);
 by (rtac (inverse_less_iff_less RS iffD1) 1);
@@ -457,8 +457,8 @@
 by (eres_inst_tac [("x","r*ra")] ballE 1);
 by (fast_tac (claset() addIs [SReal_mult]) 2);
 by (auto_tac (claset(), simpset() addsimps [zero_less_mult_iff]));
-by (cut_inst_tac [("x","ra"),("y","abs y"),
-                  ("u","r"),("v","abs x")] hypreal_mult_le_mono 1);
+by (cut_inst_tac [("c","ra"),("d","abs y"),
+                  ("a","r"),("b","abs x")] mult_mono 1);
 by Auto_tac;
 qed "not_Infinitesimal_mult";
 
@@ -1514,7 +1514,7 @@
      "[| u: Infinitesimal; hypreal_of_real x + u <= hypreal_of_real y |] \
 \     ==> hypreal_of_real x <= hypreal_of_real y";
 by (EVERY1 [rtac notI, rtac contrapos_np, assume_tac]);
-by (res_inst_tac [("C","-u")] hypreal_less_add_right_cancel 1);
+by (res_inst_tac [("c1","-u")] (add_less_cancel_right RS iffD1) 1);
 by (Asm_full_simp_tac 1);
 by (dtac (Infinitesimal_minus_iff RS iffD2) 1);
 by (dtac Infinitesimal_add_hypreal_of_real_less 1);
@@ -1560,16 +1560,16 @@
 
 Goal "x*x + y*y : Infinitesimal ==> x*x : Infinitesimal";
 by (rtac Infinitesimal_interval2 1);
-by (rtac hypreal_le_square 3);
+by (rtac zero_le_square 3);
 by (assume_tac 1);
-by Auto_tac;
+by (auto_tac (claset(), simpset() addsimps [zero_le_square]));
 qed "Infinitesimal_square_cancel";
 Addsimps [Infinitesimal_square_cancel];
 
 Goal "x*x + y*y : HFinite ==> x*x : HFinite";
 by (rtac HFinite_bounded 1);
 by (assume_tac 1);
-by Auto_tac;
+by (auto_tac (claset(), simpset() addsimps [zero_le_square]));
 qed "HFinite_square_cancel";
 Addsimps [HFinite_square_cancel];
 
@@ -1590,7 +1590,7 @@
 Goal "x*x + y*y + z*z : Infinitesimal ==> x*x : Infinitesimal";
 by (rtac Infinitesimal_interval2 1);
 by (assume_tac 1);
-by (rtac hypreal_le_square 2);
+by (rtac zero_le_square 2);
 by (Asm_full_simp_tac 1);
 by (cut_inst_tac [("a","y")] (thm"zero_le_square") 1);
 by (cut_inst_tac [("a","z")] (thm"zero_le_square") 1);
@@ -1601,7 +1601,7 @@
 Goal "x*x + y*y + z*z : HFinite ==> x*x : HFinite";
 by (rtac HFinite_bounded 1);
 by (assume_tac 1);
-by (rtac hypreal_le_square 2);
+by (rtac zero_le_square 2);
 by (cut_inst_tac [("a","y")] (thm"zero_le_square") 1);
 by (cut_inst_tac [("a","z")] (thm"zero_le_square") 1);
 by (asm_simp_tac (simpset() addsimps []) 1); 
@@ -2073,7 +2073,7 @@
 by (dres_inst_tac [("x","inverse (hypreal_of_real(real (Suc n)))")]
     bspec 1);
 by (full_simp_tac (simpset() addsimps [SReal_inverse]) 1);
-by (rtac (real_of_nat_Suc_gt_zero RS real_inverse_gt_0 RS
+by (rtac (real_of_nat_Suc_gt_zero RS positive_imp_inverse_positive RS
           (hypreal_of_real_less_iff RS iffD2) RSN(2,impE)) 1);
 by (assume_tac 2);
 by (asm_full_simp_tac (simpset() addsimps
@@ -2156,7 +2156,7 @@
  --------------------------------------------------------------*)
 Goal "- {n::nat. real n <= u} = {n. u < real n}";
 by (auto_tac (claset() addSDs [order_le_less_trans],
-              simpset() addsimps [not_real_leE]));
+              simpset() addsimps [linorder_not_le]));
 val lemma = result();
 
 (*-----------------------------------------------
@@ -2274,7 +2274,7 @@
 Goal "- {n. u <= inverse(real(Suc n))} = \
 \     {n. inverse(real(Suc n)) < u}";
 by (auto_tac (claset() addSDs [order_le_less_trans],
-              simpset() addsimps [not_real_leE]));
+              simpset() addsimps [linorder_not_le]));
 val lemma = result();
 
 Goal "0 < u ==> \
--- a/src/HOL/Hyperreal/NthRoot.thy	Mon Dec 29 06:49:26 2003 +0100
+++ b/src/HOL/Hyperreal/NthRoot.thy	Thu Jan 01 10:06:32 2004 +0100
@@ -18,9 +18,9 @@
      "[| (0::real) < a; 0 < n |] ==> \<exists>s. s : {x. x ^ n <= a & 0 < x}"
 apply (case_tac "1 <= a")
 apply (rule_tac x = "1" in exI)
-apply (drule_tac [2] not_real_leE)
+apply (drule_tac [2] linorder_not_le [THEN iffD1])
 apply (drule_tac [2] less_not_refl2 [THEN not0_implies_Suc])
-apply (auto intro!: realpow_Suc_le_self simp add: real_zero_less_one)
+apply (auto intro!: realpow_Suc_le_self simp add: zero_less_one)
 done
 
 lemma lemma_nth_realpow_isUb_ex:
@@ -28,20 +28,20 @@
       ==> \<exists>u. isUb (UNIV::real set) {x. x ^ n <= a & 0 < x} u"
 apply (case_tac "1 <= a")
 apply (rule_tac x = "a" in exI)
-apply (drule_tac [2] not_real_leE)
+apply (drule_tac [2] linorder_not_le [THEN iffD1])
 apply (rule_tac [2] x = "1" in exI)
 apply (rule_tac [!] setleI [THEN isUbI])
 apply safe
 apply (simp_all (no_asm))
 apply (rule_tac [!] ccontr)
-apply (drule_tac [!] not_real_leE)
+apply (drule_tac [!] linorder_not_le [THEN iffD1])
 apply (drule realpow_ge_self2 , assumption)
 apply (drule_tac n = "n" in realpow_less)
 apply (assumption+)
 apply (drule real_le_trans , assumption)
 apply (drule_tac y = "y ^ n" in order_less_le_trans)
 apply (assumption , erule real_less_irrefl)
-apply (drule_tac n = "n" in real_zero_less_one [THEN realpow_less])
+apply (drule_tac n = "n" in zero_less_one [THEN realpow_less])
 apply auto
 done
 
@@ -86,7 +86,7 @@
      {x. x ^ n <= a & 0 < x} u |] ==> a <= u ^ n"
 apply (frule lemma_nth_realpow_isLub_ge , safe)
 apply (rule LIMSEQ_inverse_real_of_nat_add [THEN LIMSEQ_pow, THEN LIMSEQ_le_const])
-apply (auto simp add: real_of_nat_def real_of_posnat_Suc)
+apply (auto simp add: real_of_nat_def)
 done
 
 subsection{*Second Half*}
@@ -109,15 +109,16 @@
 done
 
 lemma real_mult_less_self: "0 < r ==> r * (1 + -inverse(real (Suc n))) < r"
-apply (simp (no_asm) add: real_add_mult_distrib2)
-apply (rule_tac C = "-r" in real_less_add_left_cancel)
-apply (auto intro: real_mult_order simp add: real_add_assoc [symmetric] real_minus_zero_less_iff2)
+apply (simp (no_asm) add: right_distrib)
+apply (rule add_less_cancel_left [of "-r", THEN iffD1])
+apply (auto intro: mult_pos
+            simp add: add_assoc [symmetric] neg_less_0_iff_less)
 done
 
 lemma real_mult_add_one_minus_ge_zero:
      "0 < r ==>  0 <= r*(1 + -inverse(real (Suc n)))"
 apply (simp add: zero_le_mult_iff real_of_nat_inverse_le_iff) 
-apply (simp add: RealOrd.real_of_nat_Suc) 
+apply (simp add: real_of_nat_Suc) 
 done
 
 lemma lemma_nth_realpow_isLub_le:
@@ -141,7 +142,7 @@
      {x. x ^ n <= a & 0 < x} u |] ==> u ^ n <= a"
 apply (frule lemma_nth_realpow_isLub_le , safe)
 apply (rule LIMSEQ_inverse_real_of_nat_add_minus_mult [THEN LIMSEQ_pow, THEN LIMSEQ_le_const2])
-apply (auto simp add: real_of_nat_def real_of_posnat_Suc)
+apply (auto simp add: real_of_nat_def)
 done
 
 (*----------- The theorem at last! -----------*)
--- a/src/HOL/Hyperreal/Poly.ML	Mon Dec 29 06:49:26 2003 +0100
+++ b/src/HOL/Hyperreal/Poly.ML	Thu Jan 01 10:06:32 2004 +0100
@@ -68,7 +68,7 @@
 by (rtac allI 2 );
 by (case_tac "q" 2);
 by (Asm_simp_tac 2);
-by (asm_simp_tac (simpset() addsimps [real_add_mult_distrib2] ) 2);
+by (asm_simp_tac (simpset() addsimps [right_distrib] ) 2);
 by (Asm_simp_tac 1);
 qed "poly_cmult_distr";
 
@@ -92,14 +92,14 @@
 by (induct_tac "p1" 2);
 by Auto_tac;
 by (case_tac "p2" 1);
-by (auto_tac (claset(),simpset() addsimps [real_add_mult_distrib2]));
+by (auto_tac (claset(),simpset() addsimps [right_distrib]));
 qed "poly_add";
 
 Goal "poly (c %* p) x = c * poly p x";
 by (induct_tac "p" 1); 
 by (case_tac "x=0" 2);
-by (auto_tac (claset(),simpset() addsimps [real_add_mult_distrib2] 
-    @ real_mult_ac));
+by (auto_tac (claset(),simpset() addsimps [right_distrib] 
+    @ mult_ac));
 qed "poly_cmult";
 
 Goalw [poly_minus_def] "poly (-- p) x = - (poly p x)";
@@ -113,7 +113,7 @@
 by (auto_tac (claset(),simpset() addsimps [poly_cmult]));
 by (case_tac "list" 1);
 by (auto_tac (claset(),simpset() addsimps [poly_cmult,poly_add,
-    real_add_mult_distrib,real_add_mult_distrib2] @ real_mult_ac));
+    left_distrib,right_distrib] @ mult_ac));
 qed "poly_mult";
 
 Goal "poly (p %^ n) x = (poly p x) ^ n";
@@ -178,7 +178,7 @@
     \   x ^ n * poly (pderiv_aux (Suc n) p) x ";
 by (induct_tac "p" 1);
 by (auto_tac (claset() addSIs [DERIV_add,DERIV_cmult2],simpset() addsimps 
-    [pderiv_def,real_add_mult_distrib2,real_mult_assoc RS sym] delsimps 
+    [pderiv_def,right_distrib,real_mult_assoc RS sym] delsimps 
     [realpow_Suc]));
 by (rtac (real_mult_commute RS subst) 1);
 by (simp_tac (simpset() delsimps [realpow_Suc]) 1);
@@ -232,7 +232,7 @@
 Goal "[| a < b; 0 < poly p a; poly p b < 0 |] \
 \     ==> EX x. a < x & x < b & (poly p x = 0)";
 by (blast_tac (claset() addIs [full_simplify (simpset() 
-    addsimps [poly_minus, rename_numerals real_minus_zero_less_iff2])
+    addsimps [poly_minus, rename_numerals neg_less_0_iff_less])
    (read_instantiate [("p","-- p")] poly_IVT_pos)]) 1);
 qed "poly_IVT_neg";
 
@@ -256,7 +256,7 @@
 by (induct_tac "p1" 1);
 by (Step_tac 2);
 by (case_tac "p2" 2);
-by (auto_tac (claset(),simpset() addsimps [real_add_mult_distrib2]));
+by (auto_tac (claset(),simpset() addsimps [right_distrib]));
 qed "lemma_poly_pderiv_aux_add";
 
 Goal "poly (pderiv_aux n (p1 +++ p2)) x = \
@@ -266,7 +266,7 @@
 
 Goal "ALL n. poly (pderiv_aux n (c %* p) ) x = poly (c %* pderiv_aux n p) x";
 by (induct_tac "p" 1);
-by (auto_tac (claset(),simpset() addsimps [poly_cmult] @ real_mult_ac));
+by (auto_tac (claset(),simpset() addsimps [poly_cmult] @ mult_ac));
 qed "lemma_poly_pderiv_aux_cmult";
 
 Goal "poly (pderiv_aux n (c %* p) ) x = poly (c %* pderiv_aux n p) x";
@@ -281,7 +281,7 @@
 Goal "ALL n. poly (pderiv_aux (Suc n) p) x = poly ((pderiv_aux n p) +++ p) x";
 by (induct_tac "p" 1);
 by (auto_tac (claset(),simpset() addsimps [real_of_nat_Suc,
-    real_add_mult_distrib]));
+    left_distrib]));
 qed "lemma_poly_pderiv_aux_mult1";
 
 Goal "poly (pderiv_aux (Suc n) p) x = poly ((pderiv_aux n p) +++ p) x";
@@ -326,8 +326,8 @@
 by (rtac (lemma_poly_mult_pderiv RS ssubst) 1);
 by (rtac (poly_add RS ssubst) 1);
 by (rtac (poly_add RS ssubst) 1);
-by (asm_simp_tac (simpset() addsimps [poly_mult,real_add_mult_distrib2] 
-    @ real_add_ac @ real_mult_ac) 1);
+by (asm_simp_tac (simpset() addsimps [poly_mult,right_distrib] 
+    @ add_ac @ mult_ac) 1);
 qed "poly_pderiv_mult";
 
 Goal "poly (pderiv (p %^ (Suc n))) x = \
@@ -335,8 +335,8 @@
 by (induct_tac "n" 1);
 by (auto_tac (claset(),simpset() addsimps [poly_add,poly_pderiv_cmult,
     poly_cmult,poly_pderiv_mult,real_of_nat_zero,poly_mult,
-    real_of_nat_Suc,real_add_mult_distrib2,real_add_mult_distrib]
-    @ real_mult_ac));
+    real_of_nat_Suc,right_distrib,left_distrib]
+    @ mult_ac));
 qed "poly_pderiv_exp";
 
 Goal "poly (pderiv ([-a, 1] %^ (Suc n))) x = \
@@ -372,7 +372,7 @@
 
 Goal "(poly p a = 0) = ((p = []) | (EX q. p = [-a, 1] *** q))";
 by (auto_tac (claset(),simpset() addsimps [poly_add,poly_cmult,
-    real_add_mult_distrib2]));
+    right_distrib]));
 by (case_tac "p" 1);
 by (cut_inst_tac [("h","aa"),("t","list"),("a","a")] poly_linear_rem 2);
 by (Step_tac 2);
@@ -439,8 +439,7 @@
 
 Goal "(poly (p *** q) x ~= poly [] x) = \
 \     (poly p x ~= poly [] x & poly q x ~= poly [] x)";
-by (auto_tac (claset(),simpset() addsimps [poly_mult,rename_numerals
-    real_mult_not_zero]));
+by (auto_tac (claset(),simpset() addsimps [poly_mult]));
 qed "poly_mult_not_eq_poly_Nil";
 Addsimps [poly_mult_not_eq_poly_Nil];
 
@@ -571,7 +570,7 @@
 
 Goal "poly (p *** q +++ --(p *** r)) = poly (p *** (q +++ -- r))";
 by (auto_tac (claset(),simpset() addsimps [poly_add,poly_minus_def,
-    fun_eq,poly_mult,poly_cmult,real_add_mult_distrib2]));
+    fun_eq,poly_mult,poly_cmult,right_distrib]));
 qed "poly_add_minus_mult_eq";
 
 Goal "(poly (p *** q) = poly (p *** r)) = (poly p = poly [] | poly q = poly r)";
@@ -686,14 +685,14 @@
 
 Goal "([a, 1] divides (p *** q)) = ([a, 1] divides p | [a, 1] divides q)";
 by (auto_tac (claset(),simpset() addsimps [divides_def,fun_eq,poly_mult,
-    poly_add,poly_cmult,real_add_mult_distrib RS sym]));
+    poly_add,poly_cmult,left_distrib RS sym]));
 by (dres_inst_tac [("x","-a")] spec 1);
 by (auto_tac (claset(),simpset() addsimps [poly_linear_divides,poly_add,
-    poly_cmult,real_add_mult_distrib RS sym]));
+    poly_cmult,left_distrib RS sym]));
 by (res_inst_tac [("x","qa *** q")] exI 1);
 by (res_inst_tac [("x","p *** qa")] exI 2);
 by (auto_tac (claset(),simpset() addsimps [poly_add,poly_mult,
-    poly_cmult] @ real_mult_ac));
+    poly_cmult] @ mult_ac));
 qed "poly_primes";
 
 Goalw [divides_def] "p divides p";
@@ -721,7 +720,7 @@
 by (auto_tac (claset(),simpset() addsimps [divides_def]));
 by (res_inst_tac [("x","p")] exI 1);
 by (auto_tac (claset(),simpset() addsimps [poly_mult,fun_eq]
-    @ real_mult_ac));
+    @ mult_ac));
 qed "poly_divides_exp";
 
 Goal "[| (p %^ n) divides q;  m <= n |] ==> (p %^ m) divides q";
@@ -733,7 +732,7 @@
 by Auto_tac;
 by (res_inst_tac [("x","qa +++ qaa")] exI 1);
 by (auto_tac (claset(),simpset() addsimps [poly_add,fun_eq,poly_mult,
-    real_add_mult_distrib2]));
+    right_distrib]));
 qed "poly_divides_add";
 
 Goalw [divides_def] 
@@ -741,14 +740,14 @@
 by Auto_tac;
 by (res_inst_tac [("x","qaa +++ -- qa")] exI 1);
 by (auto_tac (claset(),simpset() addsimps [poly_add,fun_eq,poly_mult,
-    poly_minus,real_add_mult_distrib2,
+    poly_minus,right_distrib,
     ARITH_PROVE "(x = y + -z) = (z + x = (y::real))"]));
 qed "poly_divides_diff";
 
 Goal "[| p divides r; p divides (q +++ r) |] ==> p divides q";
 by (etac poly_divides_diff 1);
 by (auto_tac (claset(),simpset() addsimps [poly_add,fun_eq,poly_mult,
-    divides_def] @ real_add_ac));
+    divides_def] @ add_ac));
 qed "poly_divides_diff2";
 
 Goalw [divides_def] "poly p = poly [] ==> q divides p";
@@ -793,7 +792,7 @@
 by (induct_tac "n" 1);
 by (Simp_tac 1);
 by (asm_simp_tac (simpset() addsimps [poly_add,poly_cmult,poly_mult,
-    real_add_mult_distrib2] @ real_mult_ac) 1);
+    right_distrib] @ mult_ac) 1);
 by (Step_tac 1);
 by (rotate_tac 2 1);
 by (rtac swap 1 THEN assume_tac 2);
@@ -916,7 +915,7 @@
 by (Step_tac 1);
 by (dres_inst_tac [("x","qa")] spec 1);
 by (auto_tac (claset(),simpset() addsimps [poly_mult,fun_eq,poly_exp] 
-    @ real_mult_ac delsimps [pmult_Cons]));
+    @ mult_ac delsimps [pmult_Cons]));
 qed "order_decomp";
 
 (* ------------------------------------------------------------------------- *)
@@ -934,7 +933,7 @@
     poly_mult] delsimps [pmult_Cons]) 1);
 by (Step_tac 1);
 by (res_inst_tac [("x","qa *** qaa")] exI 1);
-by (asm_full_simp_tac (simpset() addsimps [poly_mult] @ real_mult_ac
+by (asm_full_simp_tac (simpset() addsimps [poly_mult] @ mult_ac
     delsimps [pmult_Cons]) 1);
 by (REPEAT(dres_inst_tac [("a","a")] order_decomp 1));
 by (Step_tac 1);
@@ -955,7 +954,7 @@
 by (dtac (poly_mult_left_cancel RS iffD1) 1);
 by (Force_tac 1);
 by (asm_full_simp_tac (simpset() addsimps [fun_eq,poly_exp_add,poly_mult] 
-    @ real_mult_ac delsimps [pmult_Cons]) 1);
+    @ mult_ac delsimps [pmult_Cons]) 1);
 qed "order_mult";
 
 (* FIXME: too too long! *)
@@ -980,10 +979,10 @@
     [("x","[-a, 1] *** (pderiv q) +++ real (Suc n) %* q")] exI 1);
 by (asm_full_simp_tac (simpset() addsimps [poly_pderiv_mult,
     poly_pderiv_exp_prime,poly_add,poly_mult,poly_cmult,
-    real_add_mult_distrib2] @ real_mult_ac
+    right_distrib] @ mult_ac
     delsimps [pmult_Cons,pexp_Suc]) 1);
-by (asm_full_simp_tac (simpset() addsimps [poly_mult,real_add_mult_distrib2,
-    real_add_mult_distrib] @ real_mult_ac delsimps [pmult_Cons]) 1);
+by (asm_full_simp_tac (simpset() addsimps [poly_mult,right_distrib,
+    left_distrib] @ mult_ac delsimps [pmult_Cons]) 1);
 by (thin_tac "ALL r. \
 \             r divides pderiv p = \
 \             r divides pderiv ([- a, 1] %^ Suc n *** q)" 1);
@@ -1010,11 +1009,11 @@
 by (Simp_tac 1);
 by (rtac ((CLAIM_SIMP 
     "a * (b * (c * (d * e))) = e * (b * (c * (d * (a::real))))" 
-     real_mult_ac) RS ssubst) 1);
+     mult_ac) RS ssubst) 1);
 by (rotate_tac 2 1);
 by (dres_inst_tac [("x","xa")] spec 1);
 by (asm_full_simp_tac (simpset()
-    addsimps [real_add_mult_distrib] @ real_mult_ac
+    addsimps [left_distrib] @ mult_ac
     delsimps [pmult_Cons]) 1);
 qed_spec_mp "lemma_order_pderiv";
 
@@ -1063,7 +1062,7 @@
 by (Step_tac 2);
 by (res_inst_tac [("x","r *** qa +++ s *** qaa")] exI 2);
 by (asm_full_simp_tac (simpset() addsimps [fun_eq,poly_add,poly_mult,
-    real_add_mult_distrib, real_add_mult_distrib2] @ real_mult_ac
+    left_distrib, right_distrib] @ mult_ac
     delsimps [pexp_Suc,pmult_Cons]) 2);
 by Auto_tac;
 qed "poly_squarefree_decomp_order";
@@ -1199,7 +1198,7 @@
 by Auto_tac;
 by (res_inst_tac [("j","abs a + abs(x * poly list x)")] real_le_trans 1);
 by (rtac abs_triangle_ineq 1);
-by (auto_tac (claset() addSIs [real_mult_le_mono],simpset() 
+by (auto_tac (claset() addSIs [mult_mono],simpset() 
     addsimps [abs_mult]));
 by (arith_tac 1);
 qed_spec_mp "poly_mono"; 
--- a/src/HOL/Hyperreal/SEQ.ML	Mon Dec 29 06:49:26 2003 +0100
+++ b/src/HOL/Hyperreal/SEQ.ML	Thu Jan 01 10:06:32 2004 +0100
@@ -914,7 +914,7 @@
  ---------------------------------------------------------*)
 Goalw [Cauchy_def,Bseq_def] "Cauchy X ==> Bseq X";
 by (dres_inst_tac [("x","1")] spec 1);
-by (etac (real_zero_less_one RSN (2,impE)) 1);
+by (etac (zero_less_one RSN (2,impE)) 1);
 by (Step_tac 1);
 by (dres_inst_tac [("x","M")] spec 1);
 by (Asm_full_simp_tac 1);
@@ -1126,9 +1126,9 @@
 by (dres_inst_tac [("x","inverse r")] spec 1 THEN Step_tac 1);
 by (res_inst_tac [("x","N")] exI 1 THEN Step_tac 1);
 by (dtac spec 1 THEN Auto_tac);
-by (ftac real_inverse_gt_0 1);
+by (ftac positive_imp_inverse_positive 1);
 by (ftac order_less_trans 1 THEN assume_tac 1);
-by (forw_inst_tac [("x","f n")] real_inverse_gt_0 1);
+by (forw_inst_tac [("a","f n")] positive_imp_inverse_positive 1);
 by (asm_simp_tac (simpset() addsimps [abs_eqI2]) 1);
 by (res_inst_tac [("t","r")] (inverse_inverse_eq RS subst) 1);
 by (auto_tac (claset() addIs [inverse_less_iff_less RS iffD2], 
--- a/src/HOL/Hyperreal/Series.ML	Mon Dec 29 06:49:26 2003 +0100
+++ b/src/HOL/Hyperreal/Series.ML	Thu Jan 01 10:06:32 2004 +0100
@@ -30,14 +30,14 @@
 
 Goal "sumr m n f + sumr m n g = sumr m n (%n. f n + g n)";
 by (induct_tac "n" 1);
-by (auto_tac (claset(),simpset() addsimps real_add_ac));
+by (auto_tac (claset(),simpset() addsimps add_ac));
 qed "sumr_add";
 
 Goal "r * sumr m n f = sumr m n (%n. r * f n)";
 by (induct_tac "n" 1);
 by (Auto_tac);
 by (auto_tac (claset(),simpset() addsimps 
-    [real_add_mult_distrib2]));
+    [right_distrib]));
 qed "sumr_mult";
 
 Goal "n < p --> sumr 0 n f + sumr n p f = sumr 0 p f";
@@ -49,7 +49,7 @@
 Goal "n < p ==> sumr 0 p f + \
 \                - sumr 0 n f = sumr n p f";
 by (dres_inst_tac [("f1","f")] (sumr_split_add RS sym) 1);
-by (asm_simp_tac (simpset() addsimps real_add_ac) 1);
+by (asm_simp_tac (simpset() addsimps add_ac) 1);
 qed "sumr_split_add_minus";
 
 Goal "0 < n --> n < p --> sumr (Suc 0) n f + sumr n p f = sumr (Suc 0) p f";
@@ -66,7 +66,7 @@
 Goal "abs(sumr m n f) <= sumr m n (%i. abs(f i))";
 by (induct_tac "n" 1);
 by (auto_tac (claset() addIs [abs_triangle_ineq RS order_trans,
-                              real_add_le_mono1], 
+                              add_right_mono], 
               simpset()));
 qed "sumr_rabs";
 
@@ -79,13 +79,13 @@
 Goal "sumr 0 n (%i. r) = real n * r";
 by (induct_tac "n" 1);
 by (auto_tac (claset(),
-              simpset() addsimps [real_add_mult_distrib,real_of_nat_zero,
+              simpset() addsimps [left_distrib,real_of_nat_zero,
                                   real_of_nat_Suc]));
 qed "sumr_const";
 Addsimps [sumr_const];
 
 Goal "sumr 0 n f + -(real n * r) = sumr 0 n (%i. f i + -r)";
-by (full_simp_tac (HOL_ss addsimps [sumr_add RS sym, real_minus_mult_eq2]) 1);
+by (full_simp_tac (HOL_ss addsimps [sumr_add RS sym, minus_mult_right]) 1);
 by (Simp_tac 1);
 qed "sumr_add_mult_const";
 
@@ -103,8 +103,7 @@
 Goal "sumr m n (%i. - f i) = - sumr m n f";
 by (induct_tac "n" 1);
 by (case_tac "Suc n <= m" 2);
-by (auto_tac (claset(),simpset() addsimps 
-    [real_minus_add_distrib]));
+by (auto_tac (claset(),simpset() addsimps [minus_add_distrib]));
 qed "sumr_minus";
 
 Goal "sumr (m+k) (n+k) f = sumr m n (%i. f(i + k))";
@@ -131,7 +130,7 @@
 by (Step_tac 1);
 by (dres_inst_tac [("x","n")] spec 3);
 by (auto_tac (claset() addSDs [le_imp_less_or_eq], simpset()));
-by (asm_simp_tac (simpset() addsimps [real_add_mult_distrib, Suc_diff_n,
+by (asm_simp_tac (simpset() addsimps [left_distrib, Suc_diff_n,
                                       real_of_nat_Suc]) 1);
 qed_spec_mp "sumr_interval_const";
 
@@ -144,7 +143,7 @@
 by (dres_inst_tac [("x","n")] spec 3);
 by (auto_tac (claset() addSDs [le_imp_less_or_eq],
     simpset()));
-by (asm_simp_tac (simpset() addsimps [Suc_diff_n, real_add_mult_distrib,
+by (asm_simp_tac (simpset() addsimps [Suc_diff_n, left_distrib,
                                       real_of_nat_Suc]) 1);
 qed_spec_mp "sumr_interval_const2";
 
@@ -155,15 +154,15 @@
 by (ALLGOALS(dres_inst_tac [("x","n")] spec));
 by (Step_tac 1);
 by (dtac le_imp_less_or_eq 1 THEN Step_tac 1);
-by (dtac real_add_le_mono 2);
-by (dres_inst_tac [("i","sumr 0 m f")] (order_refl RS real_add_le_mono) 1);
+by (dres_inst_tac [("a","sumr 0 m f")] add_mono 2);
+by (dres_inst_tac [("a","sumr 0 m f")] (order_refl RS add_mono) 1);
 by (Auto_tac);
 qed_spec_mp "sumr_le";
 
 Goal "!!f g. (ALL r. m <= r & r < n --> f r <= g r) \
 \                --> sumr m n f <= sumr m n g";
 by (induct_tac "n" 1);
-by (auto_tac (claset() addIs [real_add_le_mono],
+by (auto_tac (claset() addIs [add_mono],
     simpset() addsimps [le_def]));
 qed_spec_mp "sumr_le2";
 
@@ -228,15 +227,15 @@
 Goal "(ALL p. m <= p & p < m + n --> (f(p) <= K)) \
 \     --> (sumr m (m + n) f <= (real n * K))";
 by (induct_tac "n" 1);
-by (auto_tac (claset() addIs [real_add_le_mono],
-              simpset() addsimps [real_add_mult_distrib, real_of_nat_Suc]));
+by (auto_tac (claset() addIs [add_mono],
+              simpset() addsimps [left_distrib, real_of_nat_Suc]));
 qed_spec_mp "sumr_bound";
 
 Goal "(ALL p. 0 <= p & p < n --> (f(p) <= K)) \
 \     --> (sumr 0 n f <= (real n * K))";
 by (induct_tac "n" 1);
-by (auto_tac (claset() addIs [real_add_le_mono],
-        simpset() addsimps [real_add_mult_distrib, real_of_nat_Suc]));
+by (auto_tac (claset() addIs [add_mono],
+        simpset() addsimps [left_distrib, real_of_nat_Suc]));
 qed_spec_mp "sumr_bound2";
 
 Goal "sumr 0 n (%m. sumr (m * k) (m*k + k) f) = sumr 0 (n * k) f";
@@ -358,7 +357,7 @@
 by (auto_tac (claset(),simpset() addsimps [sums_def,LIMSEQ_def]));
 by (dres_inst_tac [("x","f(n) + f(n + 1)")] spec 1);
 by (Auto_tac);
-by (rtac ccontr 2 THEN dtac real_leI 2);
+by (rtac ccontr 2 THEN dtac (linorder_not_less RS iffD1) 2);
 by (subgoal_tac "sumr 0 (n + Suc (Suc 0)) f <= sumr 0 (Suc (Suc 0) * (Suc no) + n) f" 2);
 by (induct_tac "no" 3 THEN Simp_tac 3);
 by (res_inst_tac [("y","sumr 0 (Suc (Suc 0)*(Suc na)+n) f")] order_trans 3);
@@ -419,9 +418,9 @@
 by (Auto_tac);
 by (res_inst_tac [("c1","x - 1")] (real_mult_right_cancel RS iffD1) 1);
 by (auto_tac (claset(),
-       simpset() addsimps [real_mult_assoc, real_add_mult_distrib]));
+       simpset() addsimps [real_mult_assoc, left_distrib]));
 by (auto_tac (claset(),
-       simpset() addsimps [real_add_mult_distrib2,
+       simpset() addsimps [right_distrib,
                            real_diff_def, real_mult_commute]));
 qed "sumr_geometric";
 
@@ -429,7 +428,7 @@
 by (case_tac "x = 1" 1);
 by (auto_tac (claset() addSDs [LIMSEQ_rabs_realpow_zero2],
              simpset() addsimps [sumr_geometric ,sums_def,
-                                 real_diff_def, real_add_divide_distrib]));
+                                 real_diff_def, add_divide_distrib]));
 by (subgoal_tac "1 / (1 + -x) = 0/(x - 1) + - 1/(x - 1)" 1); 
 by (asm_full_simp_tac (simpset() addsimps [thm"minus_divide_right"]) 2); 
 by (etac ssubst 1); 
@@ -542,7 +541,7 @@
 by Auto_tac;  
 by (subgoal_tac "0 <= c * abs y" 1);
 by (arith_tac 2);
-by (asm_full_simp_tac (simpset() addsimps [real_0_le_mult_iff]) 1); 
+by (asm_full_simp_tac (simpset() addsimps [zero_le_mult_iff]) 1); 
 qed "rabs_ratiotest_lemma";
 
 (* lemmas *)
@@ -579,9 +578,9 @@
 by (auto_tac (claset(),simpset() addsimps [realpow_add, realpow_not_zero]));
 by (induct_tac "na" 1 THEN Auto_tac);
 by (res_inst_tac [("y","c*abs(f(N + n))")] order_trans 1);
-by (auto_tac (claset() addIs [real_mult_le_mono1],
+by (auto_tac (claset() addIs [mult_right_mono],
               simpset() addsimps [summable_def]));
-by (asm_full_simp_tac (simpset() addsimps real_mult_ac) 1);
+by (asm_full_simp_tac (simpset() addsimps mult_ac) 1);
 by (res_inst_tac [("x","abs(f N) * (1/(1 - c)) / (c ^ N)")] exI 1);
 by (rtac sums_divide 1); 
 by (rtac sums_mult 1); 
--- a/src/HOL/Hyperreal/Transcendental.ML	Mon Dec 29 06:49:26 2003 +0100
+++ b/src/HOL/Hyperreal/Transcendental.ML	Thu Jan 01 10:06:32 2004 +0100
@@ -35,7 +35,7 @@
      "0 < x ==> root(Suc n) (x ^ (Suc n)) = x";
 by (rtac some_equality 1);
 by (forw_inst_tac [("n","n")] realpow_gt_zero 2);
-by (auto_tac (claset(),simpset() addsimps [real_0_less_mult_iff]));
+by (auto_tac (claset(),simpset() addsimps [zero_less_mult_iff]));
 by (res_inst_tac [("R1.0","u"),("R2.0","x")] real_linear_less2 1);
 by (dres_inst_tac [("n1","n"),("x","u")] (zero_less_Suc RSN  (3, realpow_less)) 1);
 by (dres_inst_tac [("n1","n"),("x","x")] (zero_less_Suc RSN (3, realpow_less)) 4);
@@ -52,7 +52,7 @@
 by (dres_inst_tac [("n","n")] realpow_pos_nth2 1);
 by (Safe_tac THEN rtac someI2 1);
 by (auto_tac (claset() addSIs [order_less_imp_le] 
-    addDs [realpow_gt_zero],simpset() addsimps [real_0_less_mult_iff]));
+    addDs [realpow_gt_zero],simpset() addsimps [zero_less_mult_iff]));
 qed "real_root_pos_pos";
 
 Goal "0 <= x ==> 0 <= root(Suc n) x";
@@ -151,7 +151,7 @@
 by (cut_inst_tac [("x","x"),("y","0")] linorder_less_linear 1);
 by Auto_tac;
 by (ftac (real_mult_order) 2);
-by (asm_full_simp_tac (simpset() addsimps [real_0_less_mult_iff]) 1); 
+by (asm_full_simp_tac (simpset() addsimps [zero_less_mult_iff]) 1); 
 by Auto_tac;
 qed "not_real_square_gt_zero";
 Addsimps [not_real_square_gt_zero];
@@ -171,7 +171,7 @@
 by (Asm_full_simp_tac 1 THEN Asm_full_simp_tac 1);
 by (res_inst_tac [("a","xa * x")] someI2 1);
 by (auto_tac (claset() addEs [real_less_asym],
-    simpset() addsimps real_mult_ac@[realpow_mult RS sym,realpow_two_disj,
+    simpset() addsimps mult_ac@[realpow_mult RS sym,realpow_two_disj,
     realpow_gt_zero, real_mult_order] delsimps [realpow_Suc]));
 qed "real_sqrt_mult_distrib";
 
@@ -204,14 +204,14 @@
 
 Goal "0 <= sqrt ((x ^ 2 + y ^ 2)*(xa ^ 2 + ya ^ 2))";
 by (auto_tac (claset() addSIs [real_sqrt_ge_zero],simpset() 
-    addsimps [real_0_le_mult_iff]));
+    addsimps [zero_le_mult_iff]));
 qed "real_sqrt_sum_squares_mult_ge_zero";
 Addsimps [real_sqrt_sum_squares_mult_ge_zero];
 
 Goal "sqrt ((x ^ 2 + y ^ 2) * (xa ^ 2 + ya ^ 2)) ^ 2 = \
 \     (x ^ 2 + y ^ 2) * (xa ^ 2 + ya ^ 2)";
 by (auto_tac (claset(),simpset() addsimps [real_sqrt_pow2_iff,
-    real_0_le_mult_iff] delsimps [realpow_Suc]));
+    zero_le_mult_iff] delsimps [realpow_Suc]));
 qed "real_sqrt_sum_squares_mult_squared_eq";
 Addsimps [real_sqrt_sum_squares_mult_squared_eq];
 
@@ -283,21 +283,21 @@
 (*-------------------------------------------------------------------------*)
 
 Goal "summable (%n. inverse (real (fact n)) * x ^ n)";
-by (cut_facts_tac [real_zero_less_one RS real_dense] 1);
+by (cut_facts_tac [zero_less_one RS real_dense] 1);
 by (Step_tac 1);
 by (cut_inst_tac [("x","r")] reals_Archimedean3 1);
 by Auto_tac;
 by (dres_inst_tac [("x","abs x")] spec 1 THEN Safe_tac);
 by (res_inst_tac [("N","n"),("c","r")] ratio_test 1);
-by (auto_tac (claset(),simpset() addsimps [abs_mult,real_mult_assoc RS sym]
-    delsimps [fact_Suc]));
-by (rtac real_mult_le_le_mono2 1);
-by (res_inst_tac [("b1","abs x")] (mult_commute RS ssubst) 2);
-by (stac fact_Suc 2);
-by (stac real_of_nat_mult 2);
-by (auto_tac (claset(),simpset() addsimps [abs_mult,real_inverse_distrib]));
+by (auto_tac (claset(),
+     simpset() addsimps [abs_mult,mult_assoc RS sym] delsimps [fact_Suc]));
+by (rtac mult_right_mono 1);
+by (res_inst_tac [("b1","abs x")] (mult_commute RS ssubst) 1);
+by (stac fact_Suc 1);
+by (stac real_of_nat_mult 1);
+by (auto_tac (claset(),simpset() addsimps [abs_mult,inverse_mult_distrib]));
 by (auto_tac (claset(), simpset() addsimps 
-     [mult_assoc RS sym, abs_eqI2, real_inverse_gt_0]));
+     [mult_assoc RS sym, abs_eqI2, positive_imp_inverse_positive]));
 by (rtac order_less_imp_le 1);
 by (res_inst_tac [("z1","real (Suc na)")] (real_mult_less_iff1
     RS iffD1) 1);
@@ -321,9 +321,9 @@
 by (rtac summable_exp 2);
 by (res_inst_tac [("x","0")] exI 1);
 by (auto_tac (claset(), simpset() addsimps [realpow_abs RS sym,
-    abs_mult,real_0_le_mult_iff]));
-by (auto_tac (claset() addIs [real_mult_le_le_mono2],
-    simpset() addsimps [real_inverse_gt_0,abs_eqI2]));
+    abs_mult,zero_le_mult_iff]));
+by (auto_tac (claset() addIs [mult_right_mono],
+    simpset() addsimps [positive_imp_inverse_positive,abs_eqI2]));
 qed "summable_sin";
 
 Goalw [real_divide_def] 
@@ -335,9 +335,9 @@
 by (rtac summable_exp 2);
 by (res_inst_tac [("x","0")] exI 1);
 by (auto_tac (claset(), simpset() addsimps [realpow_abs RS sym,abs_mult,
-    real_0_le_mult_iff]));
-by (auto_tac (claset() addSIs [real_mult_le_le_mono2],
-    simpset() addsimps [real_inverse_gt_0,abs_eqI2]));
+    zero_le_mult_iff]));
+by (auto_tac (claset() addSIs [mult_right_mono],
+    simpset() addsimps [positive_imp_inverse_positive,abs_eqI2]));
 qed "summable_cos";
 
 Goal "(if even n then 0 \
@@ -408,7 +408,7 @@
 by (rtac sumr_subst 1);
 by (strip_tac 1);
 by (stac lemma_realpow_diff 1);
-by (auto_tac (claset(),simpset() addsimps real_mult_ac));
+by (auto_tac (claset(),simpset() addsimps mult_ac));
 qed "lemma_realpow_diff_sumr";
 
 Goal "x ^ (Suc n) - y ^ (Suc n) = \
@@ -418,8 +418,8 @@
 by (stac sumr_Suc 1);
 by (dtac sym 1);
 by (auto_tac (claset(),simpset() addsimps [lemma_realpow_diff_sumr,
-    real_add_mult_distrib2,real_diff_def] @ 
-    real_mult_ac delsimps [sumr_Suc]));
+    right_distrib,real_diff_def] @ 
+    mult_ac delsimps [sumr_Suc]));
 qed "lemma_realpow_diff_sumr2";
 
 Goal "sumr 0 (Suc n) (%p. (x ^ p) * (y ^ (n - p))) = \
@@ -428,8 +428,8 @@
 by (auto_tac (claset(),simpset() addsimps [real_mult_commute,
     realpow_add RS sym] delsimps [sumr_Suc]));
 by (res_inst_tac [("c1","x - y")] (real_mult_left_cancel RS iffD1) 1);
-by (rtac (real_minus_minus RS subst) 2);
-by (stac real_minus_mult_eq1 2);
+by (rtac (minus_minus RS subst) 2);
+by (stac minus_mult_left 2);
 by (auto_tac (claset(),simpset() addsimps [lemma_realpow_diff_sumr2 
     RS sym] delsimps [sumr_Suc]));
 qed "lemma_realpow_rev_sumr";
@@ -460,12 +460,11 @@
 by (auto_tac (claset(),
     simpset() addsimps [real_mult_assoc,realpow_abs]));
 by (dres_inst_tac [("x","0")] spec 2 THEN Force_tac 2); 
-by (auto_tac (claset(),simpset() addsimps [abs_mult,realpow_abs] @ real_mult_ac));
+by (auto_tac (claset(),simpset() addsimps [abs_mult,realpow_abs] @ mult_ac));
 by (res_inst_tac [("a2","z ^ n")] (abs_ge_zero RS real_le_imp_less_or_eq
     RS disjE) 1 THEN dtac sym 2);
-by (auto_tac (claset() addSIs [real_mult_le_le_mono2],
-    simpset() addsimps [real_mult_assoc RS sym,
-    realpow_abs,summable_def]));
+by (auto_tac (claset() addSIs [mult_right_mono],
+    simpset() addsimps [mult_assoc RS sym, realpow_abs,summable_def]));
 by (res_inst_tac [("x","K * inverse(1 - (abs(z) * inverse(abs x)))")] exI 1);
 by (auto_tac (claset() addSIs [sums_mult],simpset() addsimps [real_mult_assoc]));
 by (subgoal_tac 
@@ -543,9 +542,9 @@
 \       sumr 0 m (%p. (z ^ p) * \
 \       (((z + h) ^ (m - p)) - (z ^ (m - p))))";
 by (rtac sumr_subst 1);
-by (auto_tac (claset(),simpset() addsimps [real_add_mult_distrib2,
+by (auto_tac (claset(),simpset() addsimps [right_distrib,
     real_diff_def,realpow_add RS sym] 
-    @ real_mult_ac));
+    @ mult_ac));
 qed "lemma_termdiff1";
 
 (* proved elsewhere? *)
@@ -563,23 +562,23 @@
 \              sumr 0 ((n - Suc 0) - p) \
 \                (%q. ((z + h) ^ q) * (z ^ (((n - 2) - p) - q))))";
 by (rtac (real_mult_left_cancel RS iffD1) 1 THEN Asm_simp_tac 1);
-by (asm_full_simp_tac (simpset() addsimps [real_diff_mult_distrib2]
-    @ real_mult_ac) 1);
+by (asm_full_simp_tac (simpset() addsimps [right_diff_distrib]
+    @ mult_ac) 1);
 by (asm_full_simp_tac (simpset() addsimps [real_mult_assoc RS sym]) 1);
 by (case_tac "n" 1 THEN auto_tac (claset(),simpset() 
     addsimps [lemma_realpow_diff_sumr2,
-    real_diff_mult_distrib2 RS sym,real_mult_assoc] 
+    right_diff_distrib RS sym,real_mult_assoc] 
     delsimps [realpow_Suc,sumr_Suc]));
 by (auto_tac (claset(),simpset() addsimps [lemma_realpow_rev_sumr]
     delsimps [sumr_Suc]));
 by (auto_tac (claset(),simpset() addsimps [real_of_nat_Suc,sumr_diff_mult_const,
-    real_add_mult_distrib,CLAIM "(a + b) - (c + d) = a - c + b - (d::real)",
+    left_distrib,CLAIM "(a + b) - (c + d) = a - c + b - (d::real)",
     lemma_termdiff1,sumr_mult]));
 by (auto_tac (claset() addSIs [sumr_subst],simpset() addsimps 
     [real_diff_def,real_add_assoc]));
 by (fold_tac [real_diff_def] THEN dtac less_add_one 1);
 by (auto_tac (claset(),simpset() addsimps [sumr_mult,lemma_realpow_diff_sumr2] 
-    @ real_mult_ac delsimps [sumr_Suc,realpow_Suc]));
+    @ mult_ac delsimps [sumr_Suc,realpow_Suc]));
 qed "lemma_termdiff2";
 
 Goal "[| h ~= 0; abs z <= K; abs (z + h) <= K |] \
@@ -595,9 +594,9 @@
 by (case_tac "n" 1 THEN Auto_tac);
 by (dtac less_add_one 1);
 by (auto_tac (claset(),simpset() addsimps [realpow_add,real_add_assoc RS sym,
-    CLAIM_SIMP "(a * b) * c = a * (c * (b::real))" real_mult_ac] 
+    CLAIM_SIMP "(a * b) * c = a * (c * (b::real))" mult_ac] 
     delsimps [sumr_Suc]));
-by (auto_tac (claset() addSIs [real_mult_le_mono],simpset()delsimps [sumr_Suc])); 
+by (auto_tac (claset() addSIs [mult_mono],simpset()delsimps [sumr_Suc])); 
 by (auto_tac (claset() addSIs [realpow_le2],simpset() addsimps 
     [realpow_abs] delsimps [sumr_Suc] ));
 by (res_inst_tac [("j","real (Suc d) * (K ^ d)")] real_le_trans 1);
@@ -606,8 +605,9 @@
 by (dres_inst_tac [("n","d")] realpow_ge_zero2 2);
 by (auto_tac (claset(),simpset() delsimps [sumr_Suc] ));
 by (rtac (sumr_rabs RS real_le_trans) 1);
-by (rtac sumr_bound2 1 THEN auto_tac (claset() addSDs [less_add_one]
-    addSIs [real_mult_le_mono],simpset() addsimps [abs_mult, realpow_add]));
+by (rtac sumr_bound2 1 THEN 
+    auto_tac (claset() addSDs [less_add_one]
+    addSIs [mult_mono], simpset() addsimps [abs_mult, realpow_add]));
 by (auto_tac (claset() addSIs [realpow_le2,realpow_ge_zero],simpset() addsimps 
     [realpow_abs]));
 by (ALLGOALS(arith_tac));
@@ -632,8 +632,8 @@
 by (REPEAT(rtac (real_mult_order) 2));
 by (dres_inst_tac [("d1.0","r * inverse K * inverse 2"),("d2.0","k")]
     real_lbound_gt_zero 1);
-by (auto_tac (claset(),simpset() addsimps [real_inverse_gt_0,
-    real_0_less_mult_iff]));
+by (auto_tac (claset(),simpset() addsimps [positive_imp_inverse_positive,
+    zero_less_mult_iff]));
 by (rtac real_le_trans 2 THEN assume_tac 3 THEN Auto_tac);
 by (res_inst_tac [("x","e")] exI 1 THEN Auto_tac);
 by (res_inst_tac [("y","K * abs x")] order_le_less_trans 1);
@@ -659,7 +659,7 @@
 by (simp_tac (simpset() addsimps [summable_def]) 3);
 by (res_inst_tac [("x","suminf f * abs h")] exI 3);
 by (dres_inst_tac [("c","abs h")] sums_mult 3);
-by (asm_full_simp_tac (simpset() addsimps real_mult_ac) 3);
+by (asm_full_simp_tac (simpset() addsimps mult_ac) 3);
 by (subgoal_tac "summable (%n. abs(g(h::real)(n::nat)))" 2);
 by (res_inst_tac [("g","%n. f(n::nat) * abs(h)")] summable_comparison_test 3);
 by (res_inst_tac [("x","0")] exI 3);
@@ -701,7 +701,7 @@
     ("c","inverse xa")] sums_mult 1);
 by (rtac (sums_unique RS sym) 1);
 by (asm_full_simp_tac (simpset() addsimps [real_diff_def,
-    real_divide_def] @ real_add_ac @ real_mult_ac) 1);
+    real_divide_def] @ add_ac @ mult_ac) 1);
 by (rtac LIM_zero_cancel 1);
 by (res_inst_tac [("g","%h. suminf (%n. c(n) * (((((x + h) ^ n) - \
 \   (x ^ n)) * inverse  h) - (real n * (x ^ (n - Suc 0)))))")] LIM_trans 1);
@@ -728,7 +728,7 @@
 by (forw_inst_tac [("x","(%n. c n * (xa + x) ^ n)"),
     ("y","(%n. c n * x ^ n)")] sums_diff 1 THEN assume_tac 1);
 by (asm_full_simp_tac (simpset() addsimps [[sums_summable,sums_summable] 
-    MRS suminf_diff,real_diff_mult_distrib2 RS sym]) 1);
+    MRS suminf_diff,right_diff_distrib RS sym]) 1);
 by (forw_inst_tac [("x","(%n. c n * ((xa + x) ^ n - x ^ n))"),
     ("c","inverse xa")] sums_mult 1);
 by (asm_full_simp_tac (simpset() addsimps [sums_summable RS suminf_mult2]) 1);
@@ -737,11 +737,11 @@
 by (assume_tac 1);
 by (rtac (ARITH_PROVE "z - y = x ==> - x = (y::real) - z") 1);
 by (asm_full_simp_tac (simpset() addsimps [[sums_summable,sums_summable] 
-    MRS suminf_diff] @ real_add_ac @ real_mult_ac ) 1);
+    MRS suminf_diff] @ add_ac @ mult_ac ) 1);
 by (res_inst_tac [("f","suminf")] arg_cong 1);
 by (rtac ext 1);
 by (asm_full_simp_tac (simpset() addsimps [real_diff_def,
-     real_add_mult_distrib2] @ real_add_ac @ real_mult_ac) 1);
+     right_distrib] @ add_ac @ mult_ac) 1);
 (* 46 *)
 by (dtac real_dense 1 THEN Step_tac 1);
 by (ftac (real_less_sum_gt_zero) 1);
@@ -766,7 +766,7 @@
     THEN asm_full_simp_tac (simpset() addsimps [diffs_def]) 2);
 by (dtac diffs_equiv 1);
 by (dtac sums_summable 1);
-by (asm_full_simp_tac (simpset() addsimps [diffs_def] @ real_mult_ac) 1);
+by (asm_full_simp_tac (simpset() addsimps [diffs_def] @ mult_ac) 1);
 by (subgoal_tac "(%n. real n * (real (Suc n) * (abs(c(Suc n)) * \
 \                 (r ^ (n - Suc 0))))) = (%n. diffs(%m. real (m - Suc 0) * \
 \                  abs(c m) * inverse r) n * (r ^ n))" 1);
@@ -777,7 +777,7 @@
 by Auto_tac;
 (* 69 *)
 by (dtac (abs_ge_zero RS order_le_less_trans) 2);
-by (asm_full_simp_tac (simpset() addsimps real_mult_ac) 2);
+by (asm_full_simp_tac (simpset() addsimps mult_ac) 2);
 by (dtac diffs_equiv 1);
 by (dtac sums_summable 1);
 by (res_inst_tac [("a","summable (%n. real n * \
@@ -785,7 +785,7 @@
     (CLAIM "(a = b) ==> a ==> b") 1  THEN assume_tac 2);
 by (res_inst_tac [("f","summable")] arg_cong 1 THEN rtac ext 1);
 by (dtac (abs_ge_zero RS order_le_less_trans) 2);
-by (asm_full_simp_tac (simpset() addsimps real_mult_ac) 2);
+by (asm_full_simp_tac (simpset() addsimps mult_ac) 2);
 (* 77 *)
 by (case_tac "n" 1);
 by Auto_tac;
@@ -794,13 +794,13 @@
 by (dtac (abs_ge_zero RS order_le_less_trans) 1);
 by (auto_tac (claset(),simpset() addsimps [CLAIM_SIMP 
     "(a::real) * (b * (c * d)) = a * (b * c) * d"
-     real_mult_ac]));
+     mult_ac]));
 by (dtac (abs_ge_zero RS order_le_less_trans) 1);
 by (asm_full_simp_tac (simpset() addsimps [abs_mult,real_mult_assoc]) 1);
-by (rtac real_mult_le_le_mono1 1);
-by (rtac (real_add_commute RS subst) 2);
-by (simp_tac (simpset() addsimps [real_mult_assoc RS sym]) 2);
-by (rtac lemma_termdiff3 2);
+by (rtac mult_left_mono 1);
+by (rtac (add_commute RS subst) 1);
+by (simp_tac (simpset() addsimps [mult_assoc RS sym]) 1);
+by (rtac lemma_termdiff3 1);
 by (auto_tac (claset() addIs [(abs_triangle_ineq RS real_le_trans)],
     simpset()));
 by (arith_tac 1);
@@ -815,7 +815,7 @@
 by (rtac ext 1);
 by (stac fact_Suc 1);
 by (stac real_of_nat_mult 1);
-by (stac real_inverse_distrib 1);
+by (stac inverse_mult_distrib 1);
 by (auto_tac (claset(),simpset() addsimps [real_mult_assoc RS sym]));
 qed "exp_fdiffs";
 
@@ -829,7 +829,7 @@
 by (stac fact_Suc 1);
 by (stac real_of_nat_mult 1);
 by (stac even_Suc 1);
-by (stac real_inverse_distrib 1);
+by (stac inverse_mult_distrib 1);
 by Auto_tac;
 qed "sin_fdiffs";
 
@@ -842,7 +842,7 @@
 by (stac fact_Suc 1);
 by (stac real_of_nat_mult 1);
 by (stac even_Suc 1);
-by (stac real_inverse_distrib 1);
+by (stac inverse_mult_distrib 1);
 by Auto_tac;
 qed "sin_fdiffs2";
 
@@ -856,7 +856,7 @@
 by (stac fact_Suc 1);
 by (stac real_of_nat_mult 1);
 by (stac even_Suc 1);
-by (stac real_inverse_distrib 1);
+by (stac inverse_mult_distrib 1);
 by (res_inst_tac [("z1","real (Suc n)")] (real_mult_commute RS ssubst) 1);
 by (res_inst_tac [("z1","inverse(real (Suc n))")] 
      (real_mult_commute RS ssubst) 1);
@@ -873,7 +873,7 @@
 by (stac fact_Suc 1);
 by (stac real_of_nat_mult 1);
 by (stac even_Suc 1);
-by (stac real_inverse_distrib 1);
+by (stac inverse_mult_distrib 1);
 by (res_inst_tac [("z1","real (Suc n)")] (real_mult_commute RS ssubst) 1);
 by (res_inst_tac [("z1","inverse (real (Suc n))")] 
      (real_mult_commute RS ssubst) 1);
@@ -932,7 +932,7 @@
 Goal "DERIV cos x :> -sin(x)";
 by (stac lemma_cos_ext 1);
 by (auto_tac (claset(),simpset() addsimps [lemma_sin_minus,
-    cos_fdiffs2 RS sym,real_minus_mult_eq1]));
+    cos_fdiffs2 RS sym,minus_mult_left]));
 by (res_inst_tac [("K","1 + abs(x)")] termdiffs 1);
 by (auto_tac (claset() addIs [sin_converges,cos_converges, sums_summable] 
     addSIs [sums_minus RS sums_summable],
@@ -962,7 +962,7 @@
 by (res_inst_tac [("n","2"),("f","(%n. inverse (real (fact n)) * x ^ n)")]
     series_pos_le 2);
 by (auto_tac (claset() addIs [summable_exp],simpset() 
-    addsimps [numeral_2_eq_2,realpow_ge_zero,real_0_le_mult_iff]));
+    addsimps [numeral_2_eq_2,realpow_ge_zero,zero_le_mult_iff]));
 qed "exp_ge_add_one_self";
 Addsimps [exp_ge_add_one_self];
 
@@ -978,7 +978,7 @@
     [CLAIM_SIMP "(%x. exp (x + y)) = exp o (%x. x + y)" [ext]]));
 by (rtac (real_mult_1_right RS subst) 1);
 by (rtac DERIV_chain 1);
-by (rtac (real_add_zero_right RS subst) 2);
+by (rtac (add_zero_right RS subst) 2);
 by (rtac DERIV_add 2);
 by Auto_tac;
 qed "DERIV_exp_add_const";
@@ -988,8 +988,8 @@
 by (auto_tac (claset(),simpset() addsimps
     [CLAIM_SIMP "(%x. exp(-x)) = exp o (%x. - x)" [ext]]));
 by (rtac (real_mult_1_right RS subst) 1);
-by (rtac (real_minus_mult_eq1 RS subst) 1);
-by (stac real_minus_mult_eq2 1);
+by (rtac (minus_mult_left RS subst) 1);
+by (stac minus_mult_right 1);
 by (rtac DERIV_chain 1);
 by (rtac DERIV_minus 2);
 by Auto_tac;
@@ -999,7 +999,7 @@
 Goal "DERIV (%x. exp (x + y) * exp (- x)) x :> 0";
 by (cut_inst_tac [("x","x"),("y2","y")] ([DERIV_exp_add_const,
     DERIV_exp_minus] MRS DERIV_mult) 1);
-by (auto_tac (claset(),simpset() addsimps real_mult_ac));
+by (auto_tac (claset(),simpset() addsimps mult_ac));
 qed "DERIV_exp_exp_zero";
 Addsimps [DERIV_exp_exp_zero];
 
@@ -1031,7 +1031,7 @@
     (exp_add_mult_minus RS (CLAIM "x = y ==> z * y = z * (x::real)")) 1);
 by (asm_full_simp_tac HOL_ss 1);
 by (asm_full_simp_tac (simpset() delsimps [exp_add_mult_minus] 
-    addsimps real_mult_ac) 1);
+    addsimps mult_ac) 1);
 qed "exp_add";
 
 Goal "0 <= exp x";
@@ -1053,7 +1053,7 @@
 Addsimps [exp_gt_zero];
 
 Goal "0 < inverse(exp x)";
-by (auto_tac (claset() addIs [real_inverse_gt_0],simpset()));
+by (auto_tac (claset() addIs [positive_imp_inverse_positive],simpset()));
 qed "inv_exp_gt_zero";
 Addsimps [inv_exp_gt_zero];
 
@@ -1065,7 +1065,7 @@
 Goal "exp(real n * x) = exp(x) ^ n";
 by (induct_tac "n" 1);
 by (auto_tac (claset(),simpset() addsimps [real_of_nat_Suc,
-    real_add_mult_distrib2,exp_add,real_mult_commute]));
+    right_distrib,exp_add,real_mult_commute]));
 qed "exp_real_of_nat_mult";
 
 Goalw [real_diff_def,real_divide_def] 
@@ -1080,7 +1080,7 @@
 qed "exp_less_mono";
 
 Goal "exp x < exp y ==> x < y";
-by (EVERY1[rtac ccontr, dtac real_leI, dtac real_le_imp_less_or_eq]);
+by (EVERY1[rtac ccontr, dtac (linorder_not_less RS iffD1), dtac real_le_imp_less_or_eq]);
 by (auto_tac (claset() addDs [exp_less_mono],simpset()));
 qed "exp_less_cancel";
 
@@ -1155,13 +1155,13 @@
 Addsimps [ln_one];
 
 Goal "0 < x ==> ln(inverse x) = - ln x";
-by (res_inst_tac [("x1","ln x")] (real_add_left_cancel RS iffD1) 1);
-by (auto_tac (claset(),simpset() addsimps [real_inverse_gt_0,ln_mult RS sym]));
+by (res_inst_tac [("a1","ln x")] (add_left_cancel RS iffD1) 1);
+by (auto_tac (claset(),simpset() addsimps [positive_imp_inverse_positive,ln_mult RS sym]));
 qed "ln_inverse";
 
 Goalw [real_divide_def]
     "[|0 < x; 0 < y|] ==> ln(x/y) = ln x - ln y";
-by (auto_tac (claset(),simpset() addsimps [real_inverse_gt_0,
+by (auto_tac (claset(),simpset() addsimps [positive_imp_inverse_positive,
     ln_mult,ln_inverse]));
 qed "ln_div";
 
@@ -1284,7 +1284,7 @@
 
 Goal "DERIV (%x. cos(x)*cos(x)) x :> -2 * cos(x) * sin(x)";
 by (cut_inst_tac [("x","x")] DERIV_cos_cos_mult 1);
-by (auto_tac (claset(),simpset() addsimps real_mult_ac));
+by (auto_tac (claset(),simpset() addsimps mult_ac));
 qed "DERIV_cos_cos_mult2";
 Addsimps [DERIV_cos_cos_mult2];
 
@@ -1351,12 +1351,12 @@
 Addsimps [sin_cos_squared_add3];
 
 Goal "(sin(x) ^ 2) = 1 - (cos(x) ^ 2)";
-by (res_inst_tac [("x1","(cos(x) ^ 2)")] (real_add_right_cancel RS iffD1) 1);
+by (res_inst_tac [("a1","(cos(x) ^ 2)")] (add_right_cancel RS iffD1) 1);
 by (simp_tac (simpset() delsimps [realpow_Suc]) 1);
 qed "sin_squared_eq";
 
 Goal "(cos(x) ^ 2) = 1 - (sin(x) ^ 2)";
-by (res_inst_tac [("x1","(sin(x) ^ 2)")] (real_add_right_cancel RS iffD1) 1);
+by (res_inst_tac [("a1","(sin(x) ^ 2)")] (add_right_cancel RS iffD1) 1);
 by (simp_tac (simpset() delsimps [realpow_Suc]) 1);
 qed "cos_squared_eq";
 
@@ -1472,8 +1472,8 @@
 by (Step_tac 1 THEN rtac lemma_DERIV_subst 1);
 by DERIV_tac;
 by (auto_tac (claset(),simpset() addsimps [real_diff_def,
-    real_add_mult_distrib,real_add_mult_distrib2] @ 
-    real_mult_ac @ real_add_ac));
+    left_distrib,right_distrib] @ 
+    mult_ac @ add_ac));
 val lemma_DERIV_sin_cos_add = result();
 
 Goal "(sin (x + y) - (sin x * cos y + cos x * sin y)) ^ 2 + \
@@ -1500,8 +1500,8 @@
 by (Step_tac 1 THEN rtac lemma_DERIV_subst 1);
 by DERIV_tac;
 by (auto_tac (claset(),simpset() addsimps [real_diff_def,
-    real_add_mult_distrib,real_add_mult_distrib2]
-    @ real_mult_ac @ real_add_ac));
+    left_distrib,right_distrib]
+    @ mult_ac @ add_ac));
 val lemma_DERIV_sin_cos_minus = result();
 
 Goal "(sin(-x) + (sin x)) ^ 2 + (cos(-x) - (cos x)) ^ 2 = 0";
@@ -1587,7 +1587,7 @@
 by (asm_full_simp_tac (simpset() addsimps []) 1); 
 by (asm_simp_tac (simpset() addsimps [numeral_2_eq_2 RS sym, real_mult_assoc RS sym]) 1);
 by (stac (CLAIM "6 = 2 * (3::real)") 1);
-by (rtac real_mult_less_mono 1);  
+by (rtac real_mult_less_mono 1); (*mult_strict_mono would be stronger*)  
 by (auto_tac (claset(),simpset() addsimps [real_of_nat_Suc] delsimps [fact_Suc]));
 by (stac fact_Suc 1);
 by (stac fact_Suc 1);
@@ -1598,7 +1598,7 @@
 by (stac real_of_nat_mult 1);
 by (stac real_of_nat_mult 1);
 by (simp_tac (simpset() addsimps [real_divide_def,
-    real_inverse_distrib] delsimps [fact_Suc]) 1);
+    inverse_mult_distrib] delsimps [fact_Suc]) 1);
 by (auto_tac (claset(),simpset() addsimps [real_mult_assoc RS sym] 
     delsimps [fact_Suc]));
 by (multr_by_tac "real (Suc (Suc (4*m)))" 1);
@@ -1613,7 +1613,7 @@
 by (subgoal_tac "0 < x ^ (4 * m)" 1);
 by (asm_simp_tac (simpset() addsimps [realpow_gt_zero]) 2); 
 by (asm_simp_tac (simpset() addsimps [mult_less_cancel_left]) 1); 
-by (rtac real_mult_less_mono 1);
+by (rtac real_mult_less_mono 1); (*mult_strict_mono would be stronger*)
 by (ALLGOALS(Asm_simp_tac));
 by (TRYALL(rtac real_less_trans));
 by (auto_tac (claset(),simpset() addsimps [real_of_nat_Suc] delsimps [fact_Suc]));
@@ -1626,10 +1626,11 @@
 qed "sin_gt_zero1";
 
 Goal "[| 0 < x; x < 2 |] ==> cos (2 * x) < 1";
-by (auto_tac (claset(),simpset() addsimps [cos_squared_eq,
-    real_minus_add_distrib RS sym, real_minus_zero_less_iff2,sin_gt_zero1,
-    real_add_order,realpow_gt_zero,cos_double] delsimps 
-    [realpow_Suc,real_minus_add_distrib]));
+by (auto_tac (claset(),
+    simpset() addsimps [cos_squared_eq,
+    minus_add_distrib RS sym, neg_less_0_iff_less,sin_gt_zero1,
+    real_add_order,realpow_gt_zero,cos_double] 
+    delsimps [realpow_Suc,minus_add_distrib]));
 qed "cos_double_less_one";
 
 Goal  "(%n. (- 1) ^ n /(real (fact (2 * n))) * x ^ (2 * n)) \
@@ -1666,7 +1667,7 @@
 by (stac fact_Suc 1);
 by (stac real_of_nat_mult 1);
 by (stac real_of_nat_mult 1);
-by (rtac real_mult_less_mono 1);
+by (rtac real_mult_less_mono 1); (*mult_strict_mono would be stronger*)
 by (Force_tac 1);
 by (Force_tac 2);
 by (rtac real_of_nat_fact_gt_zero 2);
@@ -1820,14 +1821,14 @@
 Goal "cos (real n * pi) = (-(1::real)) ^ n";
 by (induct_tac "n" 1);
 by (auto_tac (claset(),simpset() addsimps 
-    [real_of_nat_Suc,real_add_mult_distrib]));
+    [real_of_nat_Suc,left_distrib]));
 qed "cos_npi";
 Addsimps [cos_npi];
 
 Goal "sin (real (n::nat) * pi) = 0";
 by (induct_tac "n" 1);
 by (auto_tac (claset(),simpset() addsimps 
-    [real_of_nat_Suc,real_add_mult_distrib]));
+    [real_of_nat_Suc,left_distrib]));
 qed "sin_npi";
 Addsimps [sin_npi];
 
@@ -1977,7 +1978,7 @@
 \    (cos(x - real n * pi) = 0)" 1);
 by (Step_tac 1);
 by (asm_full_simp_tac (simpset() addsimps [real_of_nat_Suc,
-    real_add_mult_distrib]) 2);
+    left_distrib]) 2);
 by (asm_full_simp_tac (simpset() addsimps [cos_diff]) 1);
 by (asm_full_simp_tac (simpset() addsimps [cos_diff]) 2);
 by (subgoal_tac "EX! x. 0 <= x & x <= pi & cos x = 0" 1);
@@ -1988,7 +1989,7 @@
 by (asm_full_simp_tac (simpset() addsimps [cos_diff]) 1);
 by (res_inst_tac [("x","Suc (2 * n)")] exI 1);
 by (asm_full_simp_tac (simpset() addsimps [real_of_nat_Suc,
-    real_add_mult_distrib]) 1);
+    left_distrib]) 1);
 by Auto_tac;
 qed "cos_zero_lemma";
 
@@ -2003,7 +2004,7 @@
 by (rtac real_le_trans 2 THEN assume_tac 3);
 by (auto_tac (claset(),simpset() addsimps [odd_not_even RS sym,
     odd_Suc_mult_two_ex,real_of_nat_Suc,
-    real_add_mult_distrib,real_mult_assoc RS sym]));
+    left_distrib,real_mult_assoc RS sym]));
 qed "sin_zero_lemma";
 
 (* also spoilt by numeral arithmetic *)
@@ -2019,7 +2020,7 @@
 by (Step_tac 1);
 by (dtac (CLAIM "-x = y ==> x = -(y::real)") 2);
 by (auto_tac (claset(),HOL_ss addsimps [odd_not_even RS sym,
-    odd_Suc_mult_two_ex,real_of_nat_Suc,real_add_mult_distrib]));
+    odd_Suc_mult_two_ex,real_of_nat_Suc,left_distrib]));
 by (auto_tac (claset(),simpset() addsimps [cos_add]));
 qed "cos_zero_iff";
 
@@ -2058,7 +2059,7 @@
 Addsimps [tan_npi];
 
 Goalw [tan_def] "tan (-x) = - tan x";
-by (simp_tac (simpset() addsimps [real_minus_mult_eq1]) 1);
+by (simp_tac (simpset() addsimps [minus_mult_left]) 1);
 qed "tan_minus";
 Addsimps [tan_minus];
 
@@ -2072,12 +2073,11 @@
 \       ==> 1 - tan(x)*tan(y) = cos (x + y)/(cos x * cos y)";
 by (auto_tac (claset(),
    simpset() delsimps [thm"Ring_and_Field.inverse_mult_distrib"]
-	     addsimps [real_inverse_distrib RS sym] @ real_mult_ac));
+	     addsimps [inverse_mult_distrib RS sym] @ mult_ac));
 by (res_inst_tac [("c1","cos x * cos y")] (real_mult_right_cancel RS subst) 1);
 by (auto_tac (claset(), 
     simpset() delsimps [thm"Ring_and_Field.inverse_mult_distrib"]
-	      addsimps [real_mult_assoc, 
-    real_mult_not_zero,real_diff_mult_distrib,cos_add]));
+	      addsimps [mult_assoc, left_diff_distrib,cos_add]));
 val lemma_tan_add1 = result();
 Addsimps [lemma_tan_add1];
 
@@ -2085,8 +2085,7 @@
       "[| cos x ~= 0; cos y ~= 0 |] \
 \      ==> tan x + tan y = sin(x + y)/(cos x * cos y)";
 by (res_inst_tac [("c1","cos x * cos y")] (real_mult_right_cancel RS subst) 1);
-by (auto_tac (claset(), simpset() addsimps [real_mult_assoc,
-    real_mult_not_zero,real_add_mult_distrib]));
+by (auto_tac (claset(), simpset() addsimps [mult_assoc, left_distrib]));
 by (simp_tac (simpset() addsimps [sin_add]) 1);
 qed "add_tan_eq";
 
@@ -2106,8 +2105,7 @@
 
 Goalw [tan_def,real_divide_def] "[| 0 < x; x < pi/2 |] ==> 0 < tan x";
 by (auto_tac (claset() addSIs [sin_gt_zero2,cos_gt_zero_pi]
-    addSIs [real_mult_order,
-    real_inverse_gt_0],simpset()));
+    addSIs [real_mult_order, positive_imp_inverse_positive],simpset()));
 qed "tan_gt_zero";
 
 Goal "[| - pi/2 < x; x < 0 |] ==> tan x < 0";
@@ -2131,9 +2129,9 @@
 
 Goalw [real_divide_def] 
       "(%x. cos(x)/sin(x)) -- pi/2 --> 0";
-by (res_inst_tac [("z1","1")] ((real_mult_0) RS subst) 1);
+by (res_inst_tac [("a1","1")] ((mult_left_zero) RS subst) 1);
 by (rtac LIM_mult2 1); 
-by (rtac ((real_inverse_1) RS subst) 2);
+by (rtac (inverse_1 RS subst) 2);
 by (rtac LIM_inverse 2);
 by (fold_tac [real_divide_def]);
 by (auto_tac (claset() addSIs [DERIV_isCont],simpset() 
@@ -2163,10 +2161,10 @@
 by (subgoal_tac "0 < sin e" 3);
 by (subgoal_tac "0 < cos e" 3);
 by (auto_tac (claset() addIs [cos_gt_zero,sin_gt_zero2],simpset()
-    addsimps [real_inverse_distrib,abs_mult]));
-by (dres_inst_tac [("x","cos e")] (real_inverse_gt_0) 1);
+    addsimps [inverse_mult_distrib,abs_mult]));
+by (dres_inst_tac [("a","cos e")] (positive_imp_inverse_positive) 1);
 by (dres_inst_tac [("x","inverse (cos e)")] abs_eqI2 1);
-by (auto_tac (claset() addSDs [abs_eqI2],simpset() addsimps real_mult_ac));
+by (auto_tac (claset() addSDs [abs_eqI2],simpset() addsimps mult_ac));
 qed "lemma_tan_total";
 
 
@@ -2376,9 +2374,9 @@
 by (case_tac "n" 3);
 by (cut_inst_tac [("y","x")] arctan_ubound 2);
 by (cut_inst_tac [("y","x")] arctan_lbound 4);
-by (auto_tac (claset(),simpset() addsimps [real_of_nat_Suc,
-    real_add_mult_distrib,real_le_def,
-    real_mult_less_0_iff] delsimps [arctan]));
+by (auto_tac (claset(),
+     simpset() addsimps [real_of_nat_Suc, left_distrib,real_le_def, mult_less_0_iff] 
+     delsimps [arctan]));
 qed "cos_arctan_not_zero";
 Addsimps [cos_arctan_not_zero];
 
@@ -2386,7 +2384,7 @@
 by (rtac (realpow_inverse RS subst) 1);
 by (res_inst_tac [("c1","cos(x) ^ 2")] (real_mult_right_cancel RS iffD1) 1);
 by (auto_tac (claset() addDs [realpow_not_zero], simpset() addsimps
-    [realpow_mult,real_add_mult_distrib,realpow_divide,
+    [realpow_mult,left_distrib,realpow_divide,
      tan_def,real_mult_assoc,realpow_inverse RS sym] 
      delsimps [realpow_Suc]));
 qed "tan_sec";
@@ -2399,7 +2397,7 @@
 Goal "sin (xa + 1 / 2 * real (Suc m) * pi) = \
 \     cos (xa + 1 / 2 * real  (m) * pi)";
 by (simp_tac (HOL_ss addsimps [cos_add,sin_add,
-    real_of_nat_Suc,real_add_mult_distrib,real_add_mult_distrib2]) 1);
+    real_of_nat_Suc,left_distrib,right_distrib]) 1);
 by Auto_tac;
 qed "lemma_sin_cos_eq";
 Addsimps [lemma_sin_cos_eq];
@@ -2407,7 +2405,7 @@
 Goal "sin (xa + real (Suc m) * pi / 2) = \
 \     cos (xa + real (m) * pi / 2)";
 by (simp_tac (HOL_ss addsimps [cos_add,sin_add,real_divide_def,
-    real_of_nat_Suc,real_add_mult_distrib,real_add_mult_distrib2]) 1);
+    real_of_nat_Suc,left_distrib,right_distrib]) 1);
 by Auto_tac;
 qed "lemma_sin_cos_eq2";
 Addsimps [lemma_sin_cos_eq2];
@@ -2422,15 +2420,15 @@
 
 (* which further simplifies to (- 1 ^ m) !! *)
 Goal "sin ((real m + 1/2) * pi) = cos (real m * pi)";
-by (auto_tac (claset(),simpset() addsimps [real_add_mult_distrib2,
-    sin_add,real_add_mult_distrib] @ real_mult_ac));
+by (auto_tac (claset(),simpset() addsimps [right_distrib,
+    sin_add,left_distrib] @ mult_ac));
 qed "sin_cos_npi";
 Addsimps [sin_cos_npi];
 
 Goal "sin (real (Suc (2 * n)) * pi / 2) = (- 1) ^ n";
 by (cut_inst_tac [("m","n")] sin_cos_npi 1);
 by (auto_tac (claset(),HOL_ss addsimps [real_of_nat_Suc,
-    real_add_mult_distrib,real_divide_def]));
+    left_distrib,real_divide_def]));
 by Auto_tac;
 qed "sin_cos_npi2";
 Addsimps [ sin_cos_npi2];
@@ -2444,8 +2442,8 @@
 
 Goal "cos (3 / 2 * pi) = 0";
 by (rtac (CLAIM "(1::real) + 1/2 = 3/2" RS subst) 1);
-by (stac real_add_mult_distrib 1);
-by (auto_tac (claset(),simpset() addsimps [cos_add] @ real_mult_ac));
+by (stac left_distrib 1);
+by (auto_tac (claset(),simpset() addsimps [cos_add] @ mult_ac));
 qed "cos_3over2_pi";
 Addsimps [cos_3over2_pi];
 
@@ -2456,16 +2454,16 @@
 
 Goal "sin (3 / 2 * pi) = - 1";
 by (rtac (CLAIM "(1::real) + 1/2 = 3/2" RS subst) 1);
-by (stac real_add_mult_distrib 1);
-by (auto_tac (claset(),simpset() addsimps [sin_add] @real_mult_ac));
+by (stac left_distrib 1);
+by (auto_tac (claset(),simpset() addsimps [sin_add] @mult_ac));
 qed "sin_3over2_pi";
 Addsimps [sin_3over2_pi];
 
 Goal "cos(xa + 1 / 2 * real (Suc m) * pi) = \
 \     -sin  (xa + 1 / 2 * real (m) * pi)";
 by (simp_tac (HOL_ss addsimps [cos_add,sin_add,
-    real_of_nat_Suc,real_add_mult_distrib2,real_add_mult_distrib,
-    real_minus_mult_eq2]) 1);
+    real_of_nat_Suc,right_distrib,left_distrib,
+    minus_mult_right]) 1);
 by Auto_tac;
 qed "lemma_cos_sin_eq";
 Addsimps [lemma_cos_sin_eq];
@@ -2473,14 +2471,14 @@
 Goal "cos (xa + real (Suc m) * pi / 2) = \
 \     -sin (xa + real (m) * pi / 2)";
 by (simp_tac (HOL_ss addsimps [cos_add,sin_add,real_divide_def,
-    real_of_nat_Suc,real_add_mult_distrib,real_add_mult_distrib2]) 1);
+    real_of_nat_Suc,left_distrib,right_distrib]) 1);
 by Auto_tac;
 qed "lemma_cos_sin_eq2";
 Addsimps [lemma_cos_sin_eq2];
 
 Goal "cos (pi * real (Suc (2 * m)) / 2) = 0";
 by (simp_tac (HOL_ss addsimps [cos_add,sin_add,real_divide_def,
-    real_of_nat_Suc,real_add_mult_distrib,real_add_mult_distrib2]) 1);
+    real_of_nat_Suc,left_distrib,right_distrib]) 1);
 by Auto_tac;
 qed "cos_pi_eq_zero";
 Addsimps [cos_pi_eq_zero];
@@ -2559,7 +2557,7 @@
 
 Goal "[| 0 <= x; 0 <= y |] ==> (root(Suc n) x < root(Suc n) y) = (x < y)";
 by (auto_tac (claset() addIs [real_root_less_mono],simpset()));
-by (rtac ccontr 1 THEN dtac real_leI 1);
+by (rtac ccontr 1 THEN dtac (linorder_not_less RS iffD1) 1);
 by (dres_inst_tac [("x","y"),("n","n")] real_root_le_mono 1);
 by Auto_tac;
 qed "real_root_less_iff";
@@ -2591,7 +2589,7 @@
 \     ==> root(Suc n) (x * y) = root(Suc n) x * root(Suc n) y";
 by (rtac real_root_pos_unique 1);
 by (auto_tac (claset() addSIs [real_root_pos_pos_le],simpset() 
-    addsimps [realpow_mult,real_0_le_mult_iff,
+    addsimps [realpow_mult,zero_le_mult_iff,
     real_root_pow_pos2] delsimps [realpow_Suc]));
 qed "real_root_mult";
 
@@ -2651,7 +2649,7 @@
 
 Goalw [real_divide_def] "(((r::real) * a) / (r * r)) = a / r";
 by (case_tac "r=0" 1);
-by (auto_tac (claset(),simpset() addsimps [real_inverse_distrib] @ real_mult_ac));
+by (auto_tac (claset(),simpset() addsimps [inverse_mult_distrib] @ mult_ac));
 qed "real_divide_square_eq";
 Addsimps [real_divide_square_eq];
 
@@ -2677,13 +2675,13 @@
 Goal "x < 0 ==> 0 < sqrt (x * x + y * y)";
 by (rtac real_sqrt_gt_zero 1);
 by (rtac (ARITH_PROVE "[| 0 < x; 0 <= y |] ==> (0::real) < x + y") 1);
-by (auto_tac (claset(),simpset() addsimps [real_0_less_mult_iff]));
+by (auto_tac (claset(),simpset() addsimps [zero_less_mult_iff]));
 qed "real_sqrt_sum_squares_gt_zero1";
 
 Goal "0 < x ==> 0 < sqrt (x * x + y * y)";
 by (rtac real_sqrt_gt_zero 1);
 by (rtac (ARITH_PROVE "[| 0 < x; 0 <= y |] ==> (0::real) < x + y") 1);
-by (auto_tac (claset(),simpset() addsimps [real_0_less_mult_iff]));
+by (auto_tac (claset(),simpset() addsimps [zero_less_mult_iff]));
 qed "real_sqrt_sum_squares_gt_zero2";
 
 Goal "x ~= 0 ==> 0 < sqrt(x ^ 2 + y ^ 2)";
@@ -2725,7 +2723,7 @@
 by (case_tac "y = 0" 1);
 by Auto_tac;
 by (ftac abs_minus_eqI2 1);
-by (auto_tac (claset(),simpset() addsimps [real_minus_inverse]));
+by (auto_tac (claset(),simpset() addsimps [inverse_minus_eq]));
 by (rtac order_less_imp_le 1);
 by (res_inst_tac [("z1","sqrt(x * x + y * y)")] 
      (real_mult_less_iff1 RS iffD1) 1);
@@ -2733,7 +2731,7 @@
     (real_sqrt_sum_squares_gt_zero1 RS real_not_refl2 
     RS not_sym) 2);
 by (auto_tac (claset() addIs [real_sqrt_sum_squares_gt_zero1],
-    simpset() addsimps real_mult_ac));
+    simpset() addsimps mult_ac));
 by (rtac (ARITH_PROVE "-x < y ==> -y < (x::real)") 1);
 by (cut_inst_tac [("x","-x"),("y","y")] real_sqrt_sum_squares_ge1 1);
 by (dtac real_le_imp_less_or_eq 1);
@@ -2836,8 +2834,8 @@
 by (thin_tac "(1 - z) * (x + y) = x /(x + y) * (x + y)" 2);
 by (thin_tac "1 - z = x /(x + y)" 2);
 by (auto_tac (claset(),simpset() addsimps [real_mult_assoc]));
-by (auto_tac (claset(),simpset() addsimps [real_add_mult_distrib2,
-    real_diff_mult_distrib]));
+by (auto_tac (claset(),simpset() addsimps [right_distrib,
+    left_diff_distrib]));
 qed "lemma_divide_rearrange";
 
 Goal "[| 0 < x * x + y * y; \
@@ -2901,7 +2899,7 @@
 
 Goalw [real_divide_def] "x ~= 0 ==> x / sqrt (x * x + y * y) ~= 0";
 by (forw_inst_tac [("y3","y")] (real_sqrt_sum_squares_gt_zero3 
-    RS real_not_refl2 RS not_sym RS real_inverse_not_zero) 1);
+    RS real_not_refl2 RS not_sym RS nonzero_imp_inverse_nonzero) 1);
 by (auto_tac (claset(),simpset() addsimps [real_power_two]));
 qed "lemma_cos_not_eq_zero";
 
@@ -2925,7 +2923,7 @@
 by (case_tac "x = 0" 1);
 by (auto_tac (claset(),simpset() addsimps [abs_eqI2]));
 by (dres_inst_tac [("y","y")] real_sqrt_sum_squares_gt_zero3 1);
-by (auto_tac (claset(),simpset() addsimps [real_0_less_mult_iff,
+by (auto_tac (claset(),simpset() addsimps [zero_less_mult_iff,
     real_divide_def,real_power_two])); 
 qed "real_sqrt_divide_less_zero";
 
@@ -3039,7 +3037,7 @@
     simpset() addsimps [real_0_le_divide_iff,realpow_divide,
     real_sqrt_gt_zero_pow2,numeral_2_eq_2 RS sym] delsimps [realpow_Suc]));
 by (res_inst_tac [("t","u ^ 2")] (real_sum_of_halves RS subst) 1);
-by (rtac real_add_le_mono 1);
+by (rtac add_mono 1);
 by (auto_tac (claset(),simpset() delsimps [realpow_Suc]));
 by (ALLGOALS(rtac ((CLAIM "(2::real) ^ 2 = 4") RS subst)));
 by (ALLGOALS(rtac (realpow_mult RS subst)));
--- a/src/HOL/Hyperreal/hypreal_arith.ML	Mon Dec 29 06:49:26 2003 +0100
+++ b/src/HOL/Hyperreal/hypreal_arith.ML	Thu Jan 01 10:06:32 2004 +0100
@@ -214,8 +214,8 @@
 val hypreal_mult_mono_thms =
  [(rotate_prems 1 hypreal_mult_less_mono2,
    cvar(hypreal_mult_less_mono2, hd(prems_of hypreal_mult_less_mono2))),
-  (hypreal_mult_le_mono2,
-   cvar(hypreal_mult_le_mono2, hd(tl(prems_of hypreal_mult_le_mono2))))]
+  (mult_left_mono,
+   cvar(mult_left_mono, hd(tl(prems_of mult_left_mono))))]
 
 in
 
--- a/src/HOL/Hyperreal/hypreal_arith0.ML	Mon Dec 29 06:49:26 2003 +0100
+++ b/src/HOL/Hyperreal/hypreal_arith0.ML	Thu Jan 01 10:06:32 2004 +0100
@@ -14,8 +14,7 @@
      add_hypreal_number_of, minus_hypreal_number_of, diff_hypreal_number_of,
      mult_hypreal_number_of, eq_hypreal_number_of, less_hypreal_number_of,
      le_hypreal_number_of_eq_not_less, hypreal_diff_def,
-     minus_add_distrib, minus_minus, hypreal_mult_assoc,
-     minus_zero,
+     minus_add_distrib, minus_minus, mult_assoc, minus_zero,
      hypreal_add_zero_left, hypreal_add_zero_right,
      hypreal_add_minus, hypreal_add_minus_left,
      mult_left_zero, mult_right_zero,
@@ -49,8 +48,8 @@
 val hypreal_mult_mono_thms =
  [(rotate_prems 1 hypreal_mult_less_mono2,
    cvar(hypreal_mult_less_mono2, hd(prems_of hypreal_mult_less_mono2))),
-  (hypreal_mult_le_mono2,
-   cvar(hypreal_mult_le_mono2, hd(tl(prems_of hypreal_mult_le_mono2))))]
+  (mult_left_mono,
+   cvar(mult_left_mono, hd(tl(prems_of mult_left_mono))))]
 
 in
 
--- a/src/HOL/IsaMakefile	Mon Dec 29 06:49:26 2003 +0100
+++ b/src/HOL/IsaMakefile	Thu Jan 01 10:06:32 2004 +0100
@@ -144,8 +144,7 @@
   Real/RealArith0.thy Real/real_arith0.ML \
   Real/RealArith.thy Real/real_arith.ML Real/RealBin.ML \
   Real/RealBin.thy Real/RealDef.thy \
-  Real/RealInt.thy Real/RealOrd.thy \
-  Real/RealPow.thy Real/document/root.tex Real/real_arith.ML\
+  Real/RealInt.thy Real/RealPow.thy Real/document/root.tex Real/real_arith.ML\
   Hyperreal/EvenOdd.ML Hyperreal/EvenOdd.thy \
   Hyperreal/Fact.ML Hyperreal/Fact.thy\
   Hyperreal/Filter.ML Hyperreal/Filter.thy Hyperreal/HRealAbs.ML\
--- a/src/HOL/Real/Complex_Numbers.thy	Mon Dec 29 06:49:26 2003 +0100
+++ b/src/HOL/Real/Complex_Numbers.thy	Thu Jan 01 10:06:32 2004 +0100
@@ -120,10 +120,10 @@
       thus ?thesis by rule (insert ge, arith+)
     qed
     with neq show "Re (inverse w * w) = Re 1"
-      by (simp add: inverse_complex_def real_power_two real_add_divide_distrib [symmetric])
+      by (simp add: inverse_complex_def real_power_two add_divide_distrib [symmetric])
     from neq show "Im (inverse w * w) = Im 1"
       by (simp add: inverse_complex_def real_power_two
-        real_mult_ac real_add_divide_distrib [symmetric])
+        mult_ac add_divide_distrib [symmetric])
   qed
 qed
 
--- a/src/HOL/Real/HahnBanach/Aux.thy	Mon Dec 29 06:49:26 2003 +0100
+++ b/src/HOL/Real/HahnBanach/Aux.thy	Thu Jan 01 10:06:32 2004 +0100
@@ -3,7 +3,7 @@
     Author:     Gertrud Bauer, TU Munich
 *)
 
-header {* Auxiliary theorems *}  (* FIXME clean *)
+header {* Auxiliary theorems *}  (* FIXME clean: many are in Ring_and_Field *)
 
 theory Aux = Real + Bounds + Zorn:
 
@@ -38,45 +38,16 @@
 
 lemma real_mult_le_le_mono1a:
   "(0::real) \<le> z \<Longrightarrow> x \<le> y \<Longrightarrow> z * x  \<le> z * y"
-  by (simp add: real_mult_le_mono2)
+  by (simp add: mult_left_mono)
 
-lemma real_mult_le_le_mono2:
-  "(0::real) \<le> z \<Longrightarrow> x \<le> y \<Longrightarrow> x * z \<le> y * z"
-proof -
-  assume "(0::real) \<le> z"  "x \<le> y"
-  hence "x < y \<or> x = y" by (auto simp add: order_le_less)
-  thus ?thesis
-  proof
-    assume "x < y"
-    show ?thesis by (rule real_mult_le_less_mono1) (simp!)
-  next
-    assume "x = y"
-    thus ?thesis by simp
-  qed
-qed
-
+text{*The next two results are needlessly weak*}
 lemma real_mult_less_le_anti:
   "z < (0::real) \<Longrightarrow> x \<le> y \<Longrightarrow> z * y \<le> z * x"
-proof -
-  assume "z < 0"  "x \<le> y"
-  hence "0 < - z" by simp
-  hence "0 \<le> - z" by (rule order_less_imp_le)
-  hence "x * (- z) \<le> y * (- z)"
-    by (rule real_mult_le_le_mono2)
-  hence  "- (x * z) \<le> - (y * z)"
-    by (simp only: real_mult_minus_eq2)
-  thus ?thesis by (simp only: real_mult_commute)
-qed
+  by (simp add: mult_left_mono_neg order_less_imp_le)
 
 lemma real_mult_less_le_mono:
   "(0::real) < z \<Longrightarrow> x \<le> y \<Longrightarrow> z * x \<le> z * y"
-proof -
-  assume "0 < z"  "x \<le> y"
-  have "0 \<le> z" by (rule order_less_imp_le)
-  hence "x * z \<le> y * z"
-    by (rule real_mult_le_le_mono2)
-  thus ?thesis by (simp only: real_mult_commute)
-qed
+  by (simp add: mult_left_mono order_less_imp_le)
 
 lemma real_mult_inv_right1: "(x::real) \<noteq> 0 \<Longrightarrow> x * inverse x = 1"
   by simp
@@ -86,14 +57,14 @@
 
 lemma real_le_mult_order1a:
   "(0::real) \<le> x \<Longrightarrow> 0 \<le> y \<Longrightarrow> 0 \<le> x * y"
-  by (simp add: real_0_le_mult_iff)
+  by (simp add: zero_le_mult_iff)
 
 lemma real_mult_diff_distrib:
   "a * (- x - (y::real)) = - a * x - a * y"
 proof -
   have "- x - y = - x + - y" by simp
   also have "a * ... = a * - x + a * - y"
-    by (simp only: real_add_mult_distrib2)
+    by (simp only: right_distrib)
   also have "... = - a * x - a * y"
     by simp
   finally show ?thesis .
@@ -103,7 +74,7 @@
 proof -
   have "x - y = x + - y" by simp
   also have "a * ... = a * x + a * - y"
-    by (simp only: real_add_mult_distrib2)
+    by (simp only: right_distrib)
   also have "... = a * x - a * y"
     by simp
   finally show ?thesis .
--- a/src/HOL/Real/HahnBanach/FunctionNorm.thy	Mon Dec 29 06:49:26 2003 +0100
+++ b/src/HOL/Real/HahnBanach/FunctionNorm.thy	Thu Jan 01 10:06:32 2004 +0100
@@ -127,9 +127,10 @@
 
           note y_rep
           also have "\<bar>f x\<bar> * inverse \<parallel>x\<parallel> \<le> (c * \<parallel>x\<parallel>) * inverse \<parallel>x\<parallel>"
-          proof (rule real_mult_le_le_mono2)
+          proof (rule mult_right_mono)
             from c show "\<bar>f x\<bar> \<le> c * \<parallel>x\<parallel>" ..
-            from gt have "0 < inverse \<parallel>x\<parallel>" by (rule real_inverse_gt_0)
+            from gt have "0 < inverse \<parallel>x\<parallel>" 
+              by (rule positive_imp_inverse_positive)
             thus "0 \<le> inverse \<parallel>x\<parallel>" by (rule order_less_imp_le)
           qed
           also have "\<dots> = c * (\<parallel>x\<parallel> * inverse \<parallel>x\<parallel>)"
@@ -211,7 +212,7 @@
   with x have neq: "\<parallel>x\<parallel> \<noteq> 0" by simp
   then have "\<bar>f x\<bar> = (\<bar>f x\<bar> * inverse \<parallel>x\<parallel>) * \<parallel>x\<parallel>" by simp
   also have "\<dots> \<le>  \<parallel>f\<parallel>\<hyphen>V * \<parallel>x\<parallel>"
-  proof (rule real_mult_le_le_mono2)
+  proof (rule mult_right_mono)
     from x show "0 \<le> \<parallel>x\<parallel>" ..
     from x and neq have "\<bar>f x\<bar> * inverse \<parallel>x\<parallel> \<in> B V f"
       by (auto simp add: B_def real_divide_def)
@@ -246,7 +247,7 @@
       by (auto simp add: B_def real_divide_def)
     note b_rep
     also have "\<bar>f x\<bar> * inverse \<parallel>x\<parallel> \<le> (c * \<parallel>x\<parallel>) * inverse \<parallel>x\<parallel>"
-    proof (rule real_mult_le_le_mono2)
+    proof (rule mult_right_mono)
       have "0 < \<parallel>x\<parallel>" ..
       then show "0 \<le> inverse \<parallel>x\<parallel>" by simp
       from ineq and x show "\<bar>f x\<bar> \<le> c * \<parallel>x\<parallel>" ..
--- a/src/HOL/Real/HahnBanach/HahnBanach.thy	Mon Dec 29 06:49:26 2003 +0100
+++ b/src/HOL/Real/HahnBanach/HahnBanach.thy	Thu Jan 01 10:06:32 2004 +0100
@@ -382,7 +382,7 @@
         show "0 \<le> \<parallel>f\<parallel>\<hyphen>F" by (rule ge_zero)
         from x y show "\<parallel>x + y\<parallel> \<le> \<parallel>x\<parallel> + \<parallel>y\<parallel>" ..
       qed
-      also have "\<dots> = \<parallel>f\<parallel>\<hyphen>F * \<parallel>x\<parallel> + \<parallel>f\<parallel>\<hyphen>F * \<parallel>y\<parallel>" by (simp only: real_add_mult_distrib2)
+      also have "\<dots> = \<parallel>f\<parallel>\<hyphen>F * \<parallel>x\<parallel> + \<parallel>f\<parallel>\<hyphen>F * \<parallel>y\<parallel>" by (simp only: right_distrib)
       also have "\<dots> = p x + p y" by (simp only: p_def)
       finally show ?thesis .
     qed
--- a/src/HOL/Real/HahnBanach/HahnBanachExtLemmas.thy	Mon Dec 29 06:49:26 2003 +0100
+++ b/src/HOL/Real/HahnBanach/HahnBanachExtLemmas.thy	Thu Jan 01 10:06:32 2004 +0100
@@ -134,7 +134,7 @@
       also from y1 y2 have "h (y1 + y2) = h y1 + h y2"
         by simp
       also have "\<dots> + (a1 + a2) * xi = (h y1 + a1 * xi) + (h y2 + a2 * xi)"
-        by (simp add: real_add_mult_distrib)
+        by (simp add: left_distrib)
       also from h'_def x1_rep _ HE y1 x0
       have "h y1 + a1 * xi = h' x1"
         by (rule h'_definite [symmetric])
@@ -173,7 +173,7 @@
       also from y1 have "h (c \<cdot> y1) = c * h y1"
         by simp
       also have "\<dots> + (c * a1) * xi = c * (h y1 + a1 * xi)"
-        by (simp only: real_add_mult_distrib2)
+        by (simp only: right_distrib)
       also from h'_def x1_rep _ HE y1 x0 have "h y1 + a1 * xi = h' x1"
         by (rule h'_definite [symmetric])
       finally show ?thesis .
--- a/src/HOL/Real/RComplete.ML	Mon Dec 29 06:49:26 2003 +0100
+++ b/src/HOL/Real/RComplete.ML	Thu Jan 01 10:06:32 2004 +0100
@@ -162,7 +162,7 @@
       THEN assume_tac 2);
 by (full_simp_tac
     (simpset() addsimps [real_diff_def, diff_le_eq RS sym] @
-                        real_add_ac) 2);
+                        add_ac) 2);
 by (rtac (setleI RS isUbI) 1);
 by (Step_tac 1);
 by (res_inst_tac [("R1.0","x"),("R2.0","y")] real_linear_less2 1);
@@ -179,9 +179,9 @@
 by (blast_tac (claset() addSIs [isLubD2]) 1 THEN Step_tac 1);
 by (full_simp_tac (simpset() addsimps [real_add_assoc]) 1);
 by (blast_tac (claset() addDs [isUbD] addSIs [setleI RS isUbI]
-                        addIs [real_add_le_mono1]) 1);
+                        addIs [add_right_mono]) 1);
 by (blast_tac (claset() addDs [isUbD] addSIs [setleI RS isUbI]
-                        addIs [real_add_le_mono1]) 1);
+                        addIs [add_right_mono]) 1);
 by (Auto_tac);
 qed "reals_complete";
 
@@ -202,7 +202,7 @@
     (simpset() addsimps [linorder_not_less, inverse_eq_divide]) 2); 
 by (Clarify_tac 2);
 by (dres_inst_tac [("x","n")] spec 2); 
-by (dres_inst_tac [("k","real (Suc n)")] (real_mult_le_mono1) 2); 
+by (dres_inst_tac [("c","real (Suc n)")] (mult_right_mono) 2); 
 by (rtac real_of_nat_ge_zero 2);
 by (asm_full_simp_tac (simpset()  
 	 addsimps [real_of_nat_Suc_gt_zero RS real_not_refl2 RS not_sym, 
@@ -214,7 +214,7 @@
 by (auto_tac (claset() addIs [isUbI,setleI],simpset()));
 by (subgoal_tac "ALL m. x*(real(Suc m)) <= t" 1);
 by (asm_full_simp_tac (simpset() addsimps 
-                       [real_of_nat_Suc, real_add_mult_distrib2]) 1);
+                       [real_of_nat_Suc, right_distrib]) 1);
 by (blast_tac (claset() addIs [isLubD2]) 2);
 by (asm_full_simp_tac
     (simpset() addsimps [le_diff_eq RS sym, real_diff_def]) 1);
@@ -223,7 +223,7 @@
 by (blast_tac (claset() addSIs [isUbI,setleI]) 2);
 by (dres_inst_tac [("y","t+(-x)")] isLub_le_isUb 1);
 by (auto_tac (claset(), 
-	      simpset() addsimps [real_of_nat_Suc,real_add_mult_distrib2]));
+	      simpset() addsimps [real_of_nat_Suc,right_distrib]));
 qed "reals_Archimedean";
 
 (*There must be other proofs, e.g. Suc of the largest integer in the
@@ -234,20 +234,17 @@
 by (res_inst_tac [("x","1")] exI 2);
 by (auto_tac (claset() addEs [order_less_trans],
 	      simpset() addsimps [real_of_nat_one]));
-by (ftac (real_inverse_gt_0 RS reals_Archimedean) 1);
+by (ftac (positive_imp_inverse_positive RS reals_Archimedean) 1);
 by (Step_tac 1 THEN res_inst_tac [("x","Suc n")] exI 1);
-by (forw_inst_tac [("y","inverse x")] real_mult_less_mono1 1);
+by (forw_inst_tac [("b","inverse x")] mult_strict_right_mono 1);
 by Auto_tac;  
-by (rtac (thm "less_imp_inverse_less") 1); 
-by (assume_tac 1); 
-by (assume_tac 1); 
 qed "reals_Archimedean2";
 
 Goal "0 < x ==> ALL y. EX (n::nat). y < real n * x";
 by (Step_tac 1);
 by (cut_inst_tac [("x","y*inverse(x)")] reals_Archimedean2 1);
 by (Step_tac 1);
-by (forw_inst_tac [("x","y * inverse x")] (real_mult_less_mono1) 1);
+by (forw_inst_tac [("a","y * inverse x")] (mult_strict_right_mono) 1);
 by (auto_tac (claset(),simpset() addsimps [real_mult_assoc,real_of_nat_def]));
 qed "reals_Archimedean3";
 
--- a/src/HOL/Real/RealArith.thy	Mon Dec 29 06:49:26 2003 +0100
+++ b/src/HOL/Real/RealArith.thy	Thu Jan 01 10:06:32 2004 +0100
@@ -51,7 +51,7 @@
 by simp
 
 lemma real_minus1_divide [simp]: "-1/(x::real) = - (1/x)"
-by (simp add: real_divide_def real_minus_inverse)
+by (simp add: real_divide_def inverse_minus_eq)
 
 lemma real_lbound_gt_zero:
      "[| (0::real) < d1; 0 < d2 |] ==> \<exists>e. 0 < e & e < d1 & e < d2"
@@ -116,14 +116,14 @@
 by (auto intro: abs_eqI1 simp add: real_of_nat_ge_zero)
 
 lemma abs_add_one_not_less_self [simp]: "~ abs(x) + (1::real) < x"
-apply (rule real_leD)
+apply (simp add: linorder_not_less)
 apply (auto intro: abs_ge_self [THEN order_trans])
 done
  
 text{*Used only in Hyperreal/Lim.ML*}
 lemma abs_sum_triangle_ineq: "abs ((x::real) + y + (-l + -m)) \<le> abs(x + -l) + abs(y + -m)"
 apply (simp add: real_add_assoc)
-apply (rule_tac x1 = y in real_add_left_commute [THEN ssubst])
+apply (rule_tac a1 = y in add_left_commute [THEN ssubst])
 apply (rule real_add_assoc [THEN subst])
 apply (rule abs_triangle_ineq)
 done
--- a/src/HOL/Real/RealBin.ML	Mon Dec 29 06:49:26 2003 +0100
+++ b/src/HOL/Real/RealBin.ML	Thu Jan 01 10:06:32 2004 +0100
@@ -65,7 +65,7 @@
 
 (*For specialist use: NOT as default simprules*)
 Goal "2 * z = (z+z::real)";
-by (simp_tac (simpset () addsimps [lemma, real_add_mult_distrib]) 1);
+by (simp_tac (simpset () addsimps [lemma, left_distrib]) 1);
 qed "real_mult_2";
 
 Goal "z * 2 = (z+z::real)";
@@ -115,8 +115,7 @@
 qed "real_minus_1_eq_m1";
 
 Goal "-1 * z = -(z::real)";
-by (simp_tac (simpset() addsimps [real_minus_1_eq_m1 RS sym,
-                                  real_mult_minus_1]) 1);
+by (simp_tac (simpset() addsimps [real_minus_1_eq_m1 RS sym]) 1);
 qed "real_mult_minus1";
 
 Goal "z * -1 = -(z::real)";
@@ -195,7 +194,7 @@
 (** For combine_numerals **)
 
 Goal "i*u + (j*u + k) = (i+j)*u + (k::real)";
-by (asm_simp_tac (simpset() addsimps [real_add_mult_distrib] @ add_ac) 1);
+by (asm_simp_tac (simpset() addsimps [left_distrib] @ add_ac) 1);
 qed "left_real_add_mult_distrib";
 
 
@@ -207,33 +206,33 @@
                    [less_iff_diff_less_0, eq_iff_diff_eq_0, le_iff_diff_le_0];
 
 Goal "!!i::real. (i*u + m = j*u + n) = ((i-j)*u + m = n)";
-by (asm_simp_tac (simpset() addsimps [real_diff_def, real_add_mult_distrib]@
-                                     real_add_ac@rel_iff_rel_0_rls) 1);
+by (asm_simp_tac (simpset() addsimps [real_diff_def, left_distrib]@
+                                     add_ac@rel_iff_rel_0_rls) 1);
 qed "real_eq_add_iff1";
 
 Goal "!!i::real. (i*u + m = j*u + n) = (m = (j-i)*u + n)";
-by (asm_simp_tac (simpset() addsimps [real_diff_def, real_add_mult_distrib]@
-                                     real_add_ac@rel_iff_rel_0_rls) 1);
+by (asm_simp_tac (simpset() addsimps [real_diff_def, left_distrib]@
+                                     add_ac@rel_iff_rel_0_rls) 1);
 qed "real_eq_add_iff2";
 
 Goal "!!i::real. (i*u + m < j*u + n) = ((i-j)*u + m < n)";
-by (asm_simp_tac (simpset() addsimps [real_diff_def, real_add_mult_distrib]@
-                                     real_add_ac@rel_iff_rel_0_rls) 1);
+by (asm_simp_tac (simpset() addsimps [real_diff_def, left_distrib]@
+                                     add_ac@rel_iff_rel_0_rls) 1);
 qed "real_less_add_iff1";
 
 Goal "!!i::real. (i*u + m < j*u + n) = (m < (j-i)*u + n)";
-by (asm_simp_tac (simpset() addsimps [real_diff_def, real_add_mult_distrib]@
-                                     real_add_ac@rel_iff_rel_0_rls) 1);
+by (asm_simp_tac (simpset() addsimps [real_diff_def, left_distrib]@
+                                     add_ac@rel_iff_rel_0_rls) 1);
 qed "real_less_add_iff2";
 
 Goal "!!i::real. (i*u + m <= j*u + n) = ((i-j)*u + m <= n)";
-by (asm_simp_tac (simpset() addsimps [real_diff_def, real_add_mult_distrib]@
-                                     real_add_ac@rel_iff_rel_0_rls) 1);
+by (asm_simp_tac (simpset() addsimps [real_diff_def, left_distrib]@
+                                     add_ac@rel_iff_rel_0_rls) 1);
 qed "real_le_add_iff1";
 
 Goal "!!i::real. (i*u + m <= j*u + n) = (m <= (j-i)*u + n)";
-by (asm_simp_tac (simpset() addsimps [real_diff_def, real_add_mult_distrib]
-                                     @real_add_ac@rel_iff_rel_0_rls) 1);
+by (asm_simp_tac (simpset() addsimps [real_diff_def, left_distrib]
+                                     @add_ac@rel_iff_rel_0_rls) 1);
 qed "real_le_add_iff2";
 
 
@@ -344,21 +343,15 @@
                     bin_pred_1, bin_pred_0, bin_pred_Pls, bin_pred_Min];
 
 (*To let us treat subtraction as addition*)
-val diff_simps = [real_diff_def, real_minus_add_distrib, real_minus_minus];
-
-(*push the unary minus down: - x * y = x * - y
-val real_minus_mult_eq_1_to_2 =
-    [real_minus_mult_eq1 RS sym, real_minus_mult_eq2] MRS trans |> standard;
-same as real_minus_mult_commute
-*)
+val diff_simps = [real_diff_def, minus_add_distrib, minus_minus];
 
 (*to extract again any uncancelled minuses*)
 val real_minus_from_mult_simps =
-    [real_minus_minus, real_mult_minus_eq1, real_mult_minus_eq2];
+    [minus_minus, minus_mult_left RS sym, minus_mult_right RS sym];
 
 (*combine unary minus with numeric literals, however nested within a product*)
 val real_mult_minus_simps =
-    [real_mult_assoc, real_minus_mult_eq1, real_minus_mult_commute];
+    [real_mult_assoc, minus_mult_left, real_minus_mult_commute];
 
 (*Apply the given rewrite (if present) just once*)
 fun trans_tac None      = all_tac
@@ -367,8 +360,8 @@
 (*Final simplification: cancel + and *  *)
 val simplify_meta_eq =
     Int_Numeral_Simprocs.simplify_meta_eq
-         [real_add_zero_left, real_add_zero_right,
-          real_mult_0, real_mult_0_right, real_mult_1, real_mult_1_right];
+         [add_0, add_0_right,
+          mult_left_zero, mult_right_zero, mult_1, mult_1_right];
 
 fun prep_simproc (name, pats, proc) =
   Simplifier.simproc (Theory.sign_of (the_context ())) name pats proc;
@@ -383,11 +376,11 @@
   val trans_tac         = trans_tac
   val norm_tac =
      ALLGOALS (simp_tac (HOL_ss addsimps add_0s@mult_1s@diff_simps@
-                                         real_minus_simps@real_add_ac))
+                                         real_minus_simps@add_ac))
      THEN ALLGOALS (simp_tac (HOL_ss addsimps non_add_bin_simps@real_mult_minus_simps))
      THEN ALLGOALS
               (simp_tac (HOL_ss addsimps real_minus_from_mult_simps@
-                                         real_add_ac@real_mult_ac))
+                                         add_ac@mult_ac))
   val numeral_simp_tac  = ALLGOALS (simp_tac (HOL_ss addsimps add_0s@bin_simps))
   val simplify_meta_eq  = simplify_meta_eq
   end;
@@ -451,10 +444,10 @@
   val trans_tac         = trans_tac
   val norm_tac =
      ALLGOALS (simp_tac (HOL_ss addsimps numeral_syms@add_0s@mult_1s@
-                                   diff_simps@real_minus_simps@real_add_ac))
+                                   diff_simps@real_minus_simps@add_ac))
      THEN ALLGOALS (simp_tac (HOL_ss addsimps non_add_bin_simps@real_mult_minus_simps))
      THEN ALLGOALS (simp_tac (HOL_ss addsimps real_minus_from_mult_simps@
-                                              real_add_ac@real_mult_ac))
+                                              add_ac@mult_ac))
   val numeral_simp_tac  = ALLGOALS
                     (simp_tac (HOL_ss addsimps add_0s@bin_simps))
   val simplify_meta_eq  =
@@ -582,7 +575,7 @@
   val sg_ref    = Sign.self_ref (Theory.sign_of (the_context ()))
   val T      = HOLogic.realT
   val plus   = Const ("op *", [HOLogic.realT,HOLogic.realT] ---> HOLogic.realT)
-  val add_ac = real_mult_ac
+  val add_ac = mult_ac
 end;
 
 structure Real_Times_Assoc = Assoc_Fold (Real_Times_Assoc_Data);
@@ -594,23 +587,4 @@
 AddIffs [eq_iff_diff_eq_0 RS sym];
 AddIffs [le_iff_diff_le_0 RS sym];
 
-(** <= monotonicity results: needed for arithmetic **)
-
-Goal "[| i <= j;  (0::real) <= k |] ==> i*k <= j*k";
-by (auto_tac (claset(),
-              simpset() addsimps [order_le_less, real_mult_less_mono1]));
-qed "real_mult_le_mono1";
-
-Goal "[| i <= j;  (0::real) <= k |] ==> k*i <= k*j";
-by (dtac real_mult_le_mono1 1);
-by (ALLGOALS (asm_full_simp_tac (simpset() addsimps [real_mult_commute])));
-qed "real_mult_le_mono2";
-
-Goal "[| (i::real) <= j;  k <= l;  0 <= j;  0 <= k |] ==> i*k <= j*l";
-by (etac (real_mult_le_mono1 RS order_trans) 1);
-by (assume_tac 1);
-by (etac real_mult_le_mono2 1);
-by (assume_tac 1);
-qed "real_mult_le_mono";
-
 Addsimps [real_minus_1_eq_m1];
--- a/src/HOL/Real/RealDef.thy	Mon Dec 29 06:49:26 2003 +0100
+++ b/src/HOL/Real/RealDef.thy	Thu Jan 01 10:06:32 2004 +0100
@@ -107,6 +107,9 @@
   real_le_def:
   "P \<le> (Q::real) == ~(Q < P)"
 
+  real_abs_def:  "abs (r::real) == (if 0 \<le> r then r else -r)"
+
+
 syntax (xsymbols)
   Reals     :: "'a set"                   ("\<real>")
   Nats      :: "'a set"                   ("\<nat>")
@@ -182,48 +185,6 @@
 apply (simp add: Rep_REAL_inverse)
 done
 
-(**** real_minus: additive inverse on real ****)
-
-lemma real_minus_congruent:
-  "congruent realrel (%p. (%(x,y). realrel``{(y,x)}) p)"
-apply (unfold congruent_def, clarify)
-apply (simp add: preal_add_commute)
-done
-
-lemma real_minus:
-      "- (Abs_REAL(realrel``{(x,y)})) = Abs_REAL(realrel `` {(y,x)})"
-apply (unfold real_minus_def)
-apply (rule_tac f = Abs_REAL in arg_cong)
-apply (simp add: realrel_in_real [THEN Abs_REAL_inverse] 
-            UN_equiv_class [OF equiv_realrel real_minus_congruent])
-done
-
-lemma real_minus_minus: "- (- z) = (z::real)"
-apply (rule_tac z = z in eq_Abs_REAL)
-apply (simp add: real_minus)
-done
-
-declare real_minus_minus [simp]
-
-lemma inj_real_minus: "inj(%r::real. -r)"
-apply (rule inj_onI)
-apply (drule_tac f = uminus in arg_cong)
-apply (simp add: real_minus_minus)
-done
-
-lemma real_minus_zero: "- 0 = (0::real)"
-apply (unfold real_zero_def)
-apply (simp add: real_minus)
-done
-
-declare real_minus_zero [simp]
-
-lemma real_minus_zero_iff: "(-x = 0) = (x = (0::real))"
-apply (rule_tac z = x in eq_Abs_REAL)
-apply (auto simp add: real_zero_def real_minus preal_add_ac)
-done
-
-declare real_minus_zero_iff [simp]
 
 subsection{*Congruence property for addition*}
 
@@ -258,27 +219,14 @@
 apply (simp add: real_add preal_add_assoc)
 done
 
-(*For AC rewriting*)
-lemma real_add_left_commute: "(x::real)+(y+z)=y+(x+z)"
-  apply (rule mk_left_commute [of "op +"])
-  apply (rule real_add_assoc)
-  apply (rule real_add_commute)
-  done
-
-
-(* real addition is an AC operator *)
-lemmas real_add_ac = real_add_assoc real_add_commute real_add_left_commute
-
 lemma real_add_zero_left: "(0::real) + z = z"
 apply (unfold real_of_preal_def real_zero_def)
 apply (rule_tac z = z in eq_Abs_REAL)
 apply (simp add: real_add preal_add_ac)
 done
-declare real_add_zero_left [simp]
 
 lemma real_add_zero_right: "z + (0::real) = z"
-by (simp add: real_add_commute)
-declare real_add_zero_right [simp]
+by (simp add: real_add_zero_left real_add_commute)
 
 instance real :: plus_ac0
   by (intro_classes,
@@ -286,16 +234,27 @@
        rule real_add_commute real_add_assoc real_add_zero_left)+)
 
 
-lemma real_add_minus: "z + (-z) = (0::real)"
+subsection{*Additive Inverse on real*}
+
+lemma real_minus_congruent:
+  "congruent realrel (%p. (%(x,y). realrel``{(y,x)}) p)"
+apply (unfold congruent_def, clarify)
+apply (simp add: preal_add_commute)
+done
+
+lemma real_minus:
+      "- (Abs_REAL(realrel``{(x,y)})) = Abs_REAL(realrel `` {(y,x)})"
+apply (unfold real_minus_def)
+apply (rule_tac f = Abs_REAL in arg_cong)
+apply (simp add: realrel_in_real [THEN Abs_REAL_inverse] 
+            UN_equiv_class [OF equiv_realrel real_minus_congruent])
+done
+
+lemma real_add_minus_left: "(-z) + z = (0::real)"
 apply (unfold real_zero_def)
 apply (rule_tac z = z in eq_Abs_REAL)
 apply (simp add: real_minus real_add preal_add_commute)
 done
-declare real_add_minus [simp]
-
-lemma real_add_minus_left: "(-z) + z = (0::real)"
-by (simp add: real_add_commute)
-declare real_add_minus_left [simp]
 
 
 subsection{*Congruence property for multiplication*}
@@ -340,77 +299,12 @@
 apply (simp add: preal_add_mult_distrib2 real_mult preal_add_ac preal_mult_ac)
 done
 
-
-(*For AC rewriting*)
-lemma real_mult_left_commute: "(x::real)*(y*z)=y*(x*z)"
-  apply (rule mk_left_commute [of "op *"])
-  apply (rule real_mult_assoc)
-  apply (rule real_mult_commute)
-  done
-
-(* real multiplication is an AC operator *)
-lemmas real_mult_ac = real_mult_assoc real_mult_commute real_mult_left_commute
-
 lemma real_mult_1: "(1::real) * z = z"
 apply (unfold real_one_def pnat_one_def)
 apply (rule_tac z = z in eq_Abs_REAL)
-apply (simp add: real_mult preal_add_mult_distrib2 preal_mult_1_right preal_mult_ac preal_add_ac)
-done
-
-declare real_mult_1 [simp]
-
-lemma real_mult_1_right: "z * (1::real) = z"
-by (simp add: real_mult_commute)
-
-declare real_mult_1_right [simp]
-
-lemma real_mult_0: "0 * z = (0::real)"
-apply (unfold real_zero_def pnat_one_def)
-apply (rule_tac z = z in eq_Abs_REAL)
-apply (simp add: real_mult preal_add_mult_distrib2 preal_mult_1_right preal_mult_ac preal_add_ac)
-done
-
-lemma real_mult_0_right: "z * 0 = (0::real)"
-by (simp add: real_mult_commute real_mult_0)
-
-declare real_mult_0_right [simp] real_mult_0 [simp]
-
-lemma real_mult_minus_eq1: "(-x) * (y::real) = -(x * y)"
-apply (rule_tac z = x in eq_Abs_REAL)
-apply (rule_tac z = y in eq_Abs_REAL)
-apply (auto simp add: real_minus real_mult preal_mult_ac preal_add_ac)
+apply (simp add: real_mult preal_add_mult_distrib2 preal_mult_1_right
+                 preal_mult_ac preal_add_ac)
 done
-declare real_mult_minus_eq1 [simp]
-
-lemmas real_minus_mult_eq1 = real_mult_minus_eq1 [symmetric, standard]
-
-lemma real_mult_minus_eq2: "x * (- y :: real) = -(x * y)"
-by (simp add: real_mult_commute [of x])
-declare real_mult_minus_eq2 [simp]
-
-lemmas real_minus_mult_eq2 = real_mult_minus_eq2 [symmetric, standard]
-
-lemma real_mult_minus_1: "(- (1::real)) * z = -z"
-by simp
-declare real_mult_minus_1 [simp]
-
-lemma real_mult_minus_1_right: "z * (- (1::real)) = -z"
-by (subst real_mult_commute, simp)
-declare real_mult_minus_1_right [simp]
-
-lemma real_minus_mult_cancel: "(-x) * (-y) = x * (y::real)"
-by simp
-
-declare real_minus_mult_cancel [simp]
-
-lemma real_minus_mult_commute: "(-x) * y = x * (- y :: real)"
-by simp
-
-(** Lemmas **)
-
-lemma real_add_assoc_cong:
-     "(z::real) + v = z' + v' ==> z + (v + w) = z' + (v' + w)"
-by (simp add: real_add_assoc [symmetric])
 
 lemma real_add_mult_distrib: "((z1::real) + z2) * w = (z1 * w) + (z2 * w)"
 apply (rule_tac z = z1 in eq_Abs_REAL)
@@ -419,17 +313,6 @@
 apply (simp add: preal_add_mult_distrib2 real_add real_mult preal_add_ac preal_mult_ac)
 done
 
-lemma real_add_mult_distrib2: "(w::real) * (z1 + z2) = (w * z1) + (w * z2)"
-by (simp add: real_mult_commute [of w] real_add_mult_distrib)
-
-lemma real_diff_mult_distrib: "((z1::real) - z2) * w = (z1 * w) - (z2 * w)"
-apply (unfold real_diff_def)
-apply (simp add: real_add_mult_distrib)
-done
-
-lemma real_diff_mult_distrib2: "(w::real) * (z1 - z2) = (w * z1) - (w * z2)"
-by (simp add: real_mult_commute [of w] real_diff_mult_distrib)
-
 text{*one and zero are distinct*}
 lemma real_zero_not_eq_one: "0 ~= (1::real)"
 apply (unfold real_zero_def real_one_def)
@@ -443,36 +326,77 @@
 apply (auto simp add: preal_add_commute)
 done
 
-lemma real_mult_inv_right_ex:
-          "!!(x::real). x ~= 0 ==> \<exists>y. x*y = (1::real)"
+lemma real_mult_inv_left_ex: "x ~= 0 ==> \<exists>y. y*x = (1::real)"
 apply (unfold real_zero_def real_one_def)
 apply (rule_tac z = x in eq_Abs_REAL)
 apply (cut_tac x = xa and y = y in linorder_less_linear)
 apply (auto dest!: preal_less_add_left_Ex simp add: real_zero_iff [symmetric])
-apply (rule_tac x = "Abs_REAL (realrel `` { (preal_of_prat (prat_of_pnat 1), pinv (D) + preal_of_prat (prat_of_pnat 1))}) " in exI)
-apply (rule_tac [2] x = "Abs_REAL (realrel `` { (pinv (D) + preal_of_prat (prat_of_pnat 1), preal_of_prat (prat_of_pnat 1))}) " in exI)
+apply (rule_tac
+        x = "Abs_REAL (realrel `` { (preal_of_prat (prat_of_pnat 1), 
+                            pinv (D) + preal_of_prat (prat_of_pnat 1))}) " 
+       in exI)
+apply (rule_tac [2]
+        x = "Abs_REAL (realrel `` { (pinv (D) + preal_of_prat (prat_of_pnat 1),
+                   preal_of_prat (prat_of_pnat 1))})" 
+       in exI)
 apply (auto simp add: real_mult pnat_one_def preal_mult_1_right
               preal_add_mult_distrib2 preal_add_mult_distrib preal_mult_1
               preal_mult_inv_right preal_add_ac preal_mult_ac)
 done
 
-lemma real_mult_inv_left_ex: "x ~= 0 ==> \<exists>y. y*x = (1::real)"
-apply (drule real_mult_inv_right_ex)
-apply (auto simp add: real_mult_commute)
-done
-
 lemma real_mult_inv_left: "x ~= 0 ==> inverse(x)*x = (1::real)"
 apply (unfold real_inverse_def)
 apply (frule real_mult_inv_left_ex, safe)
 apply (rule someI2, auto)
 done
-declare real_mult_inv_left [simp]
+
+instance real :: field
+proof
+  fix x y z :: real
+  show "(x + y) + z = x + (y + z)" by (rule real_add_assoc)
+  show "x + y = y + x" by (rule real_add_commute)
+  show "0 + x = x" by simp
+  show "- x + x = 0" by (rule real_add_minus_left)
+  show "x - y = x + (-y)" by (simp add: real_diff_def)
+  show "(x * y) * z = x * (y * z)" by (rule real_mult_assoc)
+  show "x * y = y * x" by (rule real_mult_commute)
+  show "1 * x = x" by (rule real_mult_1)
+  show "(x + y) * z = x * z + y * z" by (simp add: real_add_mult_distrib)
+  show "0 \<noteq> (1::real)" by (rule real_zero_not_eq_one)
+  show "x \<noteq> 0 ==> inverse x * x = 1" by (rule real_mult_inv_left)
+  show "y \<noteq> 0 ==> x / y = x * inverse y" by (simp add: real_divide_def)
+qed
+
+
+(** Inverse of zero!  Useful to simplify certain equations **)
 
-lemma real_mult_inv_right: "x ~= 0 ==> x*inverse(x) = (1::real)"
-apply (subst real_mult_commute)
-apply (auto simp add: real_mult_inv_left)
+lemma INVERSE_ZERO: "inverse 0 = (0::real)"
+apply (unfold real_inverse_def)
+apply (rule someI2)
+apply (auto simp add: zero_neq_one)
 done
-declare real_mult_inv_right [simp]
+
+lemma DIVISION_BY_ZERO: "a / (0::real) = 0"
+  by (simp add: real_divide_def INVERSE_ZERO)
+
+instance real :: division_by_zero
+proof
+  fix x :: real
+  show "inverse 0 = (0::real)" by (rule INVERSE_ZERO)
+  show "x/0 = 0" by (rule DIVISION_BY_ZERO) 
+qed
+
+
+(*Pull negations out*)
+declare minus_mult_right [symmetric, simp] 
+        minus_mult_left [symmetric, simp]
+
+text{*Used in RealBin*}
+lemma real_minus_mult_commute: "(-x) * y = x * (- y :: real)"
+by simp
+
+lemma real_mult_1_right: "z * (1::real) = z"
+  by (rule Ring_and_Field.mult_1_right)
 
 
 subsection{*Theorems for Ordering*}
@@ -714,8 +638,6 @@
 apply (blast intro!: real_of_preal_minus_less_rev1 real_of_preal_minus_less_rev2)
 done
 
-declare real_of_preal_minus_less_rev_iff [simp]
-
 
 subsection{*Linearity of the Ordering*}
 
@@ -724,7 +646,8 @@
 apply (rule_tac [!] x = y in real_of_preal_trichotomyE)
 apply (auto dest!: preal_le_anti_sym 
             simp add: preal_less_le_iff real_of_preal_minus_less_zero 
-                      real_of_preal_zero_less real_of_preal_minus_less_all)
+                      real_of_preal_zero_less real_of_preal_minus_less_all
+                      real_of_preal_minus_less_rev_iff)
 done
 
 lemma real_neq_iff: "!!w::real. (w ~= z) = (w<z | z<w)"
@@ -769,23 +692,498 @@
 val eq_Abs_REAL = thm"eq_Abs_REAL";
 val real_minus_congruent = thm"real_minus_congruent";
 val real_minus = thm"real_minus";
-val real_minus_minus = thm"real_minus_minus";
-val inj_real_minus = thm"inj_real_minus";
-val real_minus_zero = thm"real_minus_zero";
-val real_minus_zero_iff = thm"real_minus_zero_iff";
-val real_add_congruent2_lemma = thm"real_add_congruent2_lemma";
 val real_add = thm"real_add";
 val real_add_commute = thm"real_add_commute";
 val real_add_assoc = thm"real_add_assoc";
-val real_add_left_commute = thm"real_add_left_commute";
 val real_add_zero_left = thm"real_add_zero_left";
 val real_add_zero_right = thm"real_add_zero_right";
-val real_add_minus = thm"real_add_minus";
-val real_add_minus_left = thm"real_add_minus_left";
 
-val real_add_ac = thms"real_add_ac";
-val real_mult_ac = thms"real_mult_ac";
 *}
 
+subsection{*Properties of Less-Than Or Equals*}
+
+lemma real_le_imp_less_or_eq: "!!(x::real). x \<le> y ==> x < y | x = y"
+apply (unfold real_le_def)
+apply (cut_tac real_linear)
+apply (blast elim: real_less_irrefl real_less_asym)
+done
+
+lemma real_less_or_eq_imp_le: "z<w | z=w ==> z \<le>(w::real)"
+apply (unfold real_le_def)
+apply (cut_tac real_linear)
+apply (fast elim: real_less_irrefl real_less_asym)
+done
+
+lemma real_le_less: "(x \<le> (y::real)) = (x < y | x=y)"
+by (blast intro!: real_less_or_eq_imp_le dest!: real_le_imp_less_or_eq)
+
+lemma real_le_refl: "w \<le> (w::real)"
+by (simp add: real_le_less)
+
+lemma real_le_trans: "[| i \<le> j; j \<le> k |] ==> i \<le> (k::real)"
+apply (drule real_le_imp_less_or_eq) 
+apply (drule real_le_imp_less_or_eq) 
+apply (rule real_less_or_eq_imp_le) 
+apply (blast intro: real_less_trans) 
+done
+
+lemma real_le_anti_sym: "[| z \<le> w; w \<le> z |] ==> z = (w::real)"
+apply (drule real_le_imp_less_or_eq) 
+apply (drule real_le_imp_less_or_eq) 
+apply (fast elim: real_less_irrefl real_less_asym)
+done
+
+(* Axiom 'order_less_le' of class 'order': *)
+lemma real_less_le: "((w::real) < z) = (w \<le> z & w \<noteq> z)"
+apply (simp add: real_le_def real_neq_iff)
+apply (blast elim!: real_less_asym)
+done
+
+instance real :: order
+  by (intro_classes,
+      (assumption | 
+       rule real_le_refl real_le_trans real_le_anti_sym real_less_le)+)
+
+(* Axiom 'linorder_linear' of class 'linorder': *)
+lemma real_le_linear: "(z::real) \<le> w | w \<le> z"
+apply (simp add: real_le_less)
+apply (cut_tac real_linear, blast)
+done
+
+instance real :: linorder
+  by (intro_classes, rule real_le_linear)
+
+
+subsection{*Theorems About the Ordering*}
+
+lemma real_gt_zero_preal_Ex: "(0 < x) = (\<exists>y. x = real_of_preal y)"
+apply (auto simp add: real_of_preal_zero_less)
+apply (cut_tac x = x in real_of_preal_trichotomy)
+apply (blast elim!: real_less_irrefl real_of_preal_not_minus_gt_zero [THEN notE])
+done
+
+lemma real_gt_preal_preal_Ex:
+     "real_of_preal z < x ==> \<exists>y. x = real_of_preal y"
+by (blast dest!: real_of_preal_zero_less [THEN real_less_trans]
+             intro: real_gt_zero_preal_Ex [THEN iffD1])
+
+lemma real_ge_preal_preal_Ex:
+     "real_of_preal z \<le> x ==> \<exists>y. x = real_of_preal y"
+by (blast dest: order_le_imp_less_or_eq real_gt_preal_preal_Ex)
+
+lemma real_less_all_preal: "y \<le> 0 ==> \<forall>x. y < real_of_preal x"
+by (auto elim: order_le_imp_less_or_eq [THEN disjE] 
+            intro: real_of_preal_zero_less [THEN [2] real_less_trans] 
+            simp add: real_of_preal_zero_less)
+
+lemma real_less_all_real2: "~ 0 < y ==> \<forall>x. y < real_of_preal x"
+by (blast intro!: real_less_all_preal linorder_not_less [THEN iffD1])
+
+lemma real_of_preal_le_iff:
+     "(real_of_preal m1 \<le> real_of_preal m2) = (m1 \<le> m2)"
+apply (auto intro!: preal_leI simp add: linorder_not_less [symmetric])
+done
+
+
+subsection{*Monotonicity of Addition*}
+
+lemma real_mult_order: "[| 0 < x; 0 < y |] ==> (0::real) < x * y"
+apply (auto simp add: real_gt_zero_preal_Ex)
+apply (rule_tac x = "y*ya" in exI)
+apply (simp (no_asm_use) add: real_of_preal_mult)
+done
+
+(*Alternative definition for real_less*)
+lemma real_less_add_positive_left_Ex: "R < S ==> \<exists>T::real. 0 < T & R + T = S"
+apply (rule_tac x = R in real_of_preal_trichotomyE)
+apply (rule_tac [!] x = S in real_of_preal_trichotomyE)
+apply (auto dest!: preal_less_add_left_Ex simp add: real_of_preal_not_minus_gt_all real_of_preal_add real_of_preal_not_less_zero real_less_not_refl real_of_preal_not_minus_gt_zero real_of_preal_minus_less_rev_iff)
+apply (rule real_of_preal_zero_less) 
+apply (rule_tac [1] x = "real_of_preal m+real_of_preal ma" in exI)
+apply (rule_tac [2] x = "real_of_preal D" in exI)
+apply (auto simp add: real_of_preal_minus_less_rev_iff real_of_preal_zero_less real_of_preal_sum_zero_less real_add_assoc)
+apply (simp add: real_add_assoc [symmetric])
+done
+
+lemma real_less_sum_gt_zero: "(W < S) ==> (0 < S + (-W::real))"
+apply (drule real_less_add_positive_left_Ex)
+apply (auto simp add: add_ac)
+done
+
+lemma real_lemma_change_eq_subj: "!!S::real. T = S + W ==> S = T + (-W)"
+by (simp add: add_ac)
+
+(* FIXME: long! *)
+lemma real_sum_gt_zero_less: "(0 < S + (-W::real)) ==> (W < S)"
+apply (rule ccontr)
+apply (drule linorder_not_less [THEN iffD1, THEN real_le_imp_less_or_eq])
+apply (auto simp add: real_less_not_refl)
+apply (drule real_less_add_positive_left_Ex, clarify, simp)
+apply (drule real_lemma_change_eq_subj, auto)
+apply (drule real_less_sum_gt_zero)
+apply (auto elim: real_less_asym simp add: add_left_commute [of W] add_ac)
+done
+
+lemma real_mult_less_mono2: "[| (0::real) < z; x < y |] ==> z * x < z * y"
+apply (rule real_sum_gt_zero_less)
+apply (drule real_less_sum_gt_zero [of x y])
+apply (drule real_mult_order, assumption)
+apply (simp add: right_distrib)
+done
+
+lemma real_less_sum_gt_0_iff: "(0 < S + (-W::real)) = (W < S)"
+by (blast intro: real_less_sum_gt_zero real_sum_gt_zero_less)
+
+lemma real_less_eq_diff: "(x<y) = (x-y < (0::real))"
+apply (unfold real_diff_def)
+apply (subst real_minus_zero_less_iff [symmetric])
+apply (simp add: real_add_commute real_less_sum_gt_0_iff)
+done
+
+lemma real_less_eqI: "(x::real) - y = x' - y' ==> (x<y) = (x'<y')"
+apply (subst real_less_eq_diff)
+apply (rule_tac y1 = y in real_less_eq_diff [THEN ssubst], simp)
+done
+
+lemma real_le_eqI: "(x::real) - y = x' - y' ==> (y\<le>x) = (y'\<le>x')"
+apply (drule real_less_eqI)
+apply (simp add: real_le_def)
+done
+
+lemma real_add_left_mono: "x \<le> y ==> z + x \<le> z + (y::real)"
+apply (rule real_le_eqI [THEN iffD1]) 
+ prefer 2 apply assumption
+apply (simp add: real_diff_def add_ac)
+done
+
+
+subsection{*The Reals Form an Ordered Field*}
+
+instance real :: ordered_field
+proof
+  fix x y z :: real
+  show "x \<le> y ==> z + x \<le> z + y" by (rule real_add_left_mono)
+  show "x < y ==> 0 < z ==> z * x < z * y" by (simp add: real_mult_less_mono2)
+  show "\<bar>x\<bar> = (if x < 0 then -x else x)"
+    by (auto dest: order_le_less_trans simp add: real_abs_def linorder_not_le)
+qed
+
+text{*These two need to be proved in @{text Ring_and_Field}*}
+lemma real_add_less_le_mono: "[| w'<w; z'\<le>z |] ==> w' + z' < w + (z::real)"
+apply (erule add_strict_right_mono [THEN order_less_le_trans])
+apply (erule add_left_mono) 
+done
+
+lemma real_add_le_less_mono:
+     "!!z z'::real. [| w'\<le>w; z'<z |] ==> w' + z' < w + z"
+apply (erule add_right_mono [THEN order_le_less_trans])
+apply (erule add_strict_left_mono) 
+done
+
+lemma real_zero_less_one: "0 < (1::real)"
+  by (rule Ring_and_Field.zero_less_one)
+
+lemma real_le_square [simp]: "(0::real) \<le> x*x"
+ by (rule Ring_and_Field.zero_le_square)
+
+
+subsection{*More Lemmas*}
+
+lemma real_mult_left_cancel: "(c::real) \<noteq> 0 ==> (c*a=c*b) = (a=b)"
+by auto
+
+lemma real_mult_right_cancel: "(c::real) \<noteq> 0 ==> (a*c=b*c) = (a=b)"
+by auto
+
+text{*The precondition could be weakened to @{term "0\<le>x"}*}
+lemma real_mult_less_mono:
+     "[| u<v;  x<y;  (0::real) < v;  0 < x |] ==> u*x < v* y"
+ by (simp add: Ring_and_Field.mult_strict_mono order_less_imp_le)
+
+lemma real_mult_less_iff1 [simp]: "(0::real) < z ==> (x*z < y*z) = (x < y)"
+  by (force elim: order_less_asym
+            simp add: Ring_and_Field.mult_less_cancel_right)
+
+lemma real_mult_le_cancel_iff1 [simp]: "(0::real) < z ==> (x*z \<le> y*z) = (x\<le>y)"
+by (auto simp add: real_le_def)
+
+lemma real_mult_le_cancel_iff2 [simp]: "(0::real) < z ==> (z*x \<le> z*y) = (x\<le>y)"
+  by (force elim: order_less_asym
+            simp add: Ring_and_Field.mult_le_cancel_left)
+
+text{*Only two uses?*}
+lemma real_mult_less_mono':
+     "[| x < y;  r1 < r2;  (0::real) \<le> r1;  0 \<le> x|] ==> r1 * x < r2 * y"
+ by (rule Ring_and_Field.mult_strict_mono')
+
+text{*FIXME: delete or at least combine the next two lemmas*}
+lemma real_sum_squares_cancel: "x * x + y * y = 0 ==> x = (0::real)"
+apply (drule Ring_and_Field.equals_zero_I [THEN sym])
+apply (cut_tac x = y in real_le_square) 
+apply (auto, drule real_le_anti_sym, auto)
+done
+
+lemma real_sum_squares_cancel2: "x * x + y * y = 0 ==> y = (0::real)"
+apply (rule_tac y = x in real_sum_squares_cancel)
+apply (simp add: real_add_commute)
+done
+
+
+lemma real_add_order: "[| 0 < x; 0 < y |] ==> (0::real) < x + y"
+apply (drule add_strict_mono [of concl: 0 0], assumption)
+apply simp 
+done
+
+lemma real_le_add_order: "[| 0 \<le> x; 0 \<le> y |] ==> (0::real) \<le> x + y"
+apply (drule order_le_imp_less_or_eq)+
+apply (auto intro: real_add_order order_less_imp_le)
+done
+
+
+subsection{*An Embedding of the Naturals in the Reals*}
+
+lemma real_of_posnat_one: "real_of_posnat 0 = (1::real)"
+by (simp add: real_of_posnat_def pnat_one_iff [symmetric]
+              real_of_preal_def symmetric real_one_def)
+
+lemma real_of_posnat_two: "real_of_posnat (Suc 0) = (1::real) + (1::real)"
+by (simp add: real_of_posnat_def real_of_preal_def real_one_def pnat_two_eq
+                 real_add
+            prat_of_pnat_add [symmetric] preal_of_prat_add [symmetric]
+            pnat_add_ac)
+
+lemma real_of_posnat_add: 
+     "real_of_posnat n1 + real_of_posnat n2 = real_of_posnat (n1 + n2) + (1::real)"
+apply (unfold real_of_posnat_def)
+apply (simp (no_asm_use) add: real_of_posnat_one [symmetric] real_of_posnat_def real_of_preal_add [symmetric] preal_of_prat_add [symmetric] prat_of_pnat_add [symmetric] pnat_of_nat_add)
+done
+
+lemma real_of_posnat_add_one:
+     "real_of_posnat (n + 1) = real_of_posnat n + (1::real)"
+apply (rule_tac a1 = " (1::real) " in add_right_cancel [THEN iffD1])
+apply (rule real_of_posnat_add [THEN subst])
+apply (simp (no_asm_use) add: real_of_posnat_two real_add_assoc)
+done
+
+lemma real_of_posnat_Suc:
+     "real_of_posnat (Suc n) = real_of_posnat n + (1::real)"
+by (subst real_of_posnat_add_one [symmetric], simp)
+
+lemma inj_real_of_posnat: "inj(real_of_posnat)"
+apply (rule inj_onI)
+apply (unfold real_of_posnat_def)
+apply (drule inj_real_of_preal [THEN injD])
+apply (drule inj_preal_of_prat [THEN injD])
+apply (drule inj_prat_of_pnat [THEN injD])
+apply (erule inj_pnat_of_nat [THEN injD])
+done
+
+lemma real_of_nat_zero [simp]: "real (0::nat) = 0"
+by (simp add: real_of_nat_def real_of_posnat_one)
+
+lemma real_of_nat_one [simp]: "real (Suc 0) = (1::real)"
+by (simp add: real_of_nat_def real_of_posnat_two real_add_assoc)
+
+lemma real_of_nat_add [simp]: 
+     "real (m + n) = real (m::nat) + real n"
+apply (simp add: real_of_nat_def add_ac)
+apply (simp add: real_of_posnat_add add_assoc [symmetric])
+apply (simp add: add_commute) 
+apply (simp add: add_assoc [symmetric])
+done
+
+(*Not for addsimps: often the LHS is used to represent a positive natural*)
+lemma real_of_nat_Suc: "real (Suc n) = real n + (1::real)"
+by (simp add: real_of_nat_def real_of_posnat_Suc add_ac)
+
+lemma real_of_nat_less_iff [iff]: 
+     "(real (n::nat) < real m) = (n < m)"
+by (auto simp add: real_of_nat_def real_of_posnat_def)
+
+lemma real_of_nat_le_iff [iff]: "(real (n::nat) \<le> real m) = (n \<le> m)"
+by (simp add: linorder_not_less [symmetric])
+
+lemma inj_real_of_nat: "inj (real :: nat => real)"
+apply (rule inj_onI)
+apply (auto intro!: inj_real_of_posnat [THEN injD]
+            simp add: real_of_nat_def add_right_cancel)
+done
+
+lemma real_of_nat_ge_zero [iff]: "0 \<le> real (n::nat)"
+apply (induct_tac "n")
+apply (auto simp add: real_of_nat_Suc)
+apply (drule real_add_le_less_mono)
+apply (rule zero_less_one)
+apply (simp add: order_less_imp_le)
+done
+
+lemma real_of_nat_mult [simp]: "real (m * n) = real (m::nat) * real n"
+apply (induct_tac "m")
+apply (auto simp add: real_of_nat_Suc left_distrib add_commute)
+done
+
+lemma real_of_nat_inject [iff]: "(real (n::nat) = real m) = (n = m)"
+by (auto dest: inj_real_of_nat [THEN injD])
+
+lemma real_of_nat_diff [rule_format]:
+     "n \<le> m --> real (m - n) = real (m::nat) - real n"
+apply (induct_tac "m", simp)
+apply (simp add: real_diff_def Suc_diff_le le_Suc_eq real_of_nat_Suc add_ac)
+apply (simp add: add_left_commute [of _ "- 1"]) 
+done
+
+lemma real_of_nat_zero_iff: "(real (n::nat) = 0) = (n = 0)"
+  proof 
+    assume "real n = 0"
+    have "real n = real (0::nat)" by simp
+    then show "n = 0" by (simp only: real_of_nat_inject)
+  next
+    show "n = 0 \<Longrightarrow> real n = 0" by simp
+  qed
+
+lemma real_of_nat_neg_int [simp]: "neg z ==> real (nat z) = 0"
+by (simp add: neg_nat real_of_nat_zero)
+
+
+lemma real_inverse_unique: "x*y = (1::real) ==> y = inverse x"
+apply (case_tac "x \<noteq> 0")
+apply (rule_tac c1 = x in real_mult_left_cancel [THEN iffD1], auto)
+done
+
+lemma real_inverse_gt_one: "[| (0::real) < x; x < 1 |] ==> 1 < inverse x"
+by (auto dest: less_imp_inverse_less)
+
+lemma real_of_nat_gt_zero_cancel_iff: "(0 < real (n::nat)) = (0 < n)"
+by (rule real_of_nat_less_iff [THEN subst], auto)
+declare real_of_nat_gt_zero_cancel_iff [simp]
+
+lemma real_of_nat_le_zero_cancel_iff: "(real (n::nat) <= 0) = (n = 0)"
+apply (rule real_of_nat_zero [THEN subst])
+apply (subst real_of_nat_le_iff, auto)
+done
+declare real_of_nat_le_zero_cancel_iff [simp]
+
+lemma not_real_of_nat_less_zero: "~ real (n::nat) < 0"
+apply (simp (no_asm) add: real_le_def [symmetric] real_of_nat_ge_zero)
+done
+declare not_real_of_nat_less_zero [simp]
+
+lemma real_of_nat_ge_zero_cancel_iff [simp]: 
+      "(0 <= real (n::nat)) = (0 <= n)"
+apply (simp add: real_le_def le_def)
+done
+
+lemma real_mult_self_sum_ge_zero: "(0::real) \<le> x*x + y*y"
+proof -
+  have "0 + 0 \<le> x*x + y*y" by (blast intro: add_mono zero_le_square)
+  thus ?thesis by simp
+qed
+
+
+ML
+{*
+val real_abs_def = thm "real_abs_def";
+
+val real_less_eq_diff = thm "real_less_eq_diff";
+
+val real_mult = thm"real_mult";
+val real_mult_commute = thm"real_mult_commute";
+val real_mult_assoc = thm"real_mult_assoc";
+val real_mult_1 = thm"real_mult_1";
+val real_mult_1_right = thm"real_mult_1_right";
+val real_minus_mult_commute = thm"real_minus_mult_commute";
+val preal_le_linear = thm"preal_le_linear";
+val real_mult_inv_left = thm"real_mult_inv_left";
+val real_less_not_refl = thm"real_less_not_refl";
+val real_less_irrefl = thm"real_less_irrefl";
+val real_not_refl2 = thm"real_not_refl2";
+val preal_lemma_trans = thm"preal_lemma_trans";
+val real_less_trans = thm"real_less_trans";
+val real_less_not_sym = thm"real_less_not_sym";
+val real_less_asym = thm"real_less_asym";
+val real_of_preal_add = thm"real_of_preal_add";
+val real_of_preal_mult = thm"real_of_preal_mult";
+val real_of_preal_ExI = thm"real_of_preal_ExI";
+val real_of_preal_ExD = thm"real_of_preal_ExD";
+val real_of_preal_iff = thm"real_of_preal_iff";
+val real_of_preal_trichotomy = thm"real_of_preal_trichotomy";
+val real_of_preal_trichotomyE = thm"real_of_preal_trichotomyE";
+val real_of_preal_lessD = thm"real_of_preal_lessD";
+val real_of_preal_lessI = thm"real_of_preal_lessI";
+val real_of_preal_less_iff1 = thm"real_of_preal_less_iff1";
+val real_of_preal_minus_less_self = thm"real_of_preal_minus_less_self";
+val real_of_preal_minus_less_zero = thm"real_of_preal_minus_less_zero";
+val real_of_preal_not_minus_gt_zero = thm"real_of_preal_not_minus_gt_zero";
+val real_of_preal_zero_less = thm"real_of_preal_zero_less";
+val real_of_preal_not_less_zero = thm"real_of_preal_not_less_zero";
+val real_minus_minus_zero_less = thm"real_minus_minus_zero_less";
+val real_of_preal_sum_zero_less = thm"real_of_preal_sum_zero_less";
+val real_of_preal_minus_less_all = thm"real_of_preal_minus_less_all";
+val real_of_preal_not_minus_gt_all = thm"real_of_preal_not_minus_gt_all";
+val real_of_preal_minus_less_rev1 = thm"real_of_preal_minus_less_rev1";
+val real_of_preal_minus_less_rev2 = thm"real_of_preal_minus_less_rev2";
+val real_linear = thm"real_linear";
+val real_neq_iff = thm"real_neq_iff";
+val real_linear_less2 = thm"real_linear_less2";
+val real_le_imp_less_or_eq = thm"real_le_imp_less_or_eq";
+val real_less_or_eq_imp_le = thm"real_less_or_eq_imp_le";
+val real_le_less = thm"real_le_less";
+val real_le_refl = thm"real_le_refl";
+val real_le_linear = thm"real_le_linear";
+val real_le_trans = thm"real_le_trans";
+val real_le_anti_sym = thm"real_le_anti_sym";
+val real_less_le = thm"real_less_le";
+val real_less_sum_gt_zero = thm"real_less_sum_gt_zero";
+val real_sum_gt_zero_less = thm"real_sum_gt_zero_less";
+
+val real_gt_zero_preal_Ex = thm "real_gt_zero_preal_Ex";
+val real_gt_preal_preal_Ex = thm "real_gt_preal_preal_Ex";
+val real_ge_preal_preal_Ex = thm "real_ge_preal_preal_Ex";
+val real_less_all_preal = thm "real_less_all_preal";
+val real_less_all_real2 = thm "real_less_all_real2";
+val real_of_preal_le_iff = thm "real_of_preal_le_iff";
+val real_mult_order = thm "real_mult_order";
+val real_zero_less_one = thm "real_zero_less_one";
+val real_add_less_le_mono = thm "real_add_less_le_mono";
+val real_add_le_less_mono = thm "real_add_le_less_mono";
+val real_add_order = thm "real_add_order";
+val real_le_add_order = thm "real_le_add_order";
+val real_le_square = thm "real_le_square";
+val real_mult_less_mono2 = thm "real_mult_less_mono2";
+
+val real_mult_less_iff1 = thm "real_mult_less_iff1";
+val real_mult_le_cancel_iff1 = thm "real_mult_le_cancel_iff1";
+val real_mult_le_cancel_iff2 = thm "real_mult_le_cancel_iff2";
+val real_mult_less_mono = thm "real_mult_less_mono";
+val real_mult_less_mono' = thm "real_mult_less_mono'";
+val real_sum_squares_cancel = thm "real_sum_squares_cancel";
+val real_sum_squares_cancel2 = thm "real_sum_squares_cancel2";
+
+val real_mult_left_cancel = thm"real_mult_left_cancel";
+val real_mult_right_cancel = thm"real_mult_right_cancel";
+val real_of_posnat_one = thm "real_of_posnat_one";
+val real_of_posnat_two = thm "real_of_posnat_two";
+val real_of_posnat_add = thm "real_of_posnat_add";
+val real_of_posnat_add_one = thm "real_of_posnat_add_one";
+val real_of_nat_zero = thm "real_of_nat_zero";
+val real_of_nat_one = thm "real_of_nat_one";
+val real_of_nat_add = thm "real_of_nat_add";
+val real_of_nat_Suc = thm "real_of_nat_Suc";
+val real_of_nat_less_iff = thm "real_of_nat_less_iff";
+val real_of_nat_le_iff = thm "real_of_nat_le_iff";
+val inj_real_of_nat = thm "inj_real_of_nat";
+val real_of_nat_ge_zero = thm "real_of_nat_ge_zero";
+val real_of_nat_mult = thm "real_of_nat_mult";
+val real_of_nat_inject = thm "real_of_nat_inject";
+val real_of_nat_diff = thm "real_of_nat_diff";
+val real_of_nat_zero_iff = thm "real_of_nat_zero_iff";
+val real_of_nat_neg_int = thm "real_of_nat_neg_int";
+val real_inverse_unique = thm "real_inverse_unique";
+val real_inverse_gt_one = thm "real_inverse_gt_one";
+val real_of_nat_gt_zero_cancel_iff = thm "real_of_nat_gt_zero_cancel_iff";
+val real_of_nat_le_zero_cancel_iff = thm "real_of_nat_le_zero_cancel_iff";
+val not_real_of_nat_less_zero = thm "not_real_of_nat_less_zero";
+val real_of_nat_ge_zero_cancel_iff = thm "real_of_nat_ge_zero_cancel_iff";
+*}
 
 end
--- a/src/HOL/Real/RealInt.thy	Mon Dec 29 06:49:26 2003 +0100
+++ b/src/HOL/Real/RealInt.thy	Thu Jan 01 10:06:32 2004 +0100
@@ -6,7 +6,7 @@
 
 header{*Embedding the Integers into the Reals*}
 
-theory RealInt = RealOrd:
+theory RealInt = RealDef:
 
 defs (overloaded)
   real_of_int_def:
@@ -106,9 +106,8 @@
 apply (rule ccontr, drule linorder_not_less [THEN iffD1])
 apply (auto simp add: zle_iff_zadd real_of_int_add [symmetric] real_of_int_real_of_nat linorder_not_le [symmetric])
 apply (subgoal_tac "~ real y + 0 \<le> real y + real n") 
- prefer 2 apply (simp add: ); 
-apply (simp only: add_le_cancel_left) 
-apply (simp add: ); 
+ prefer 2 apply simp 
+apply (simp only: add_le_cancel_left, simp) 
 done
 
 lemma real_of_int_inject [iff]: "(real (x::int) = real y) = (x = y)"
--- a/src/HOL/Real/RealOrd.thy	Mon Dec 29 06:49:26 2003 +0100
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,769 +0,0 @@
-(*  Title:	 Real/RealOrd.thy
-    ID: 	 $Id$
-    Author:      Jacques D. Fleuriot and Lawrence C. Paulson
-    Copyright:   1998  University of Cambridge
-*)
-
-header{*The Reals Form an Ordered Field, etc.*}
-
-theory RealOrd = RealDef:
-
-defs (overloaded)
-  real_abs_def:  "abs (r::real) == (if 0 \<le> r then r else -r)"
-
-
-
-subsection{*Properties of Less-Than Or Equals*}
-
-lemma real_leI: "~(w < z) ==> z \<le> (w::real)"
-by (unfold real_le_def, assumption)
-
-lemma real_leD: "z\<le>w ==> ~(w<(z::real))"
-by (unfold real_le_def, assumption)
-
-lemma not_real_leE: "~ z \<le> w ==> w<(z::real)"
-by (unfold real_le_def, blast)
-
-lemma real_le_imp_less_or_eq: "!!(x::real). x \<le> y ==> x < y | x = y"
-apply (unfold real_le_def)
-apply (cut_tac real_linear)
-apply (blast elim: real_less_irrefl real_less_asym)
-done
-
-lemma real_less_or_eq_imp_le: "z<w | z=w ==> z \<le>(w::real)"
-apply (unfold real_le_def)
-apply (cut_tac real_linear)
-apply (fast elim: real_less_irrefl real_less_asym)
-done
-
-lemma real_le_less: "(x \<le> (y::real)) = (x < y | x=y)"
-by (blast intro!: real_less_or_eq_imp_le dest!: real_le_imp_less_or_eq)
-
-lemma real_le_refl: "w \<le> (w::real)"
-by (simp add: real_le_less)
-
-lemma real_le_trans: "[| i \<le> j; j \<le> k |] ==> i \<le> (k::real)"
-apply (drule real_le_imp_less_or_eq) 
-apply (drule real_le_imp_less_or_eq) 
-apply (rule real_less_or_eq_imp_le) 
-apply (blast intro: real_less_trans) 
-done
-
-lemma real_le_anti_sym: "[| z \<le> w; w \<le> z |] ==> z = (w::real)"
-apply (drule real_le_imp_less_or_eq) 
-apply (drule real_le_imp_less_or_eq) 
-apply (fast elim: real_less_irrefl real_less_asym)
-done
-
-(* Axiom 'order_less_le' of class 'order': *)
-lemma real_less_le: "((w::real) < z) = (w \<le> z & w \<noteq> z)"
-apply (simp add: real_le_def real_neq_iff)
-apply (blast elim!: real_less_asym)
-done
-
-instance real :: order
-  by (intro_classes,
-      (assumption | 
-       rule real_le_refl real_le_trans real_le_anti_sym real_less_le)+)
-
-(* Axiom 'linorder_linear' of class 'linorder': *)
-lemma real_le_linear: "(z::real) \<le> w | w \<le> z"
-apply (simp add: real_le_less)
-apply (cut_tac real_linear, blast)
-done
-
-instance real :: linorder
-  by (intro_classes, rule real_le_linear)
-
-
-subsection{*Theorems About the Ordering*}
-
-lemma real_gt_zero_preal_Ex: "(0 < x) = (\<exists>y. x = real_of_preal y)"
-apply (auto simp add: real_of_preal_zero_less)
-apply (cut_tac x = x in real_of_preal_trichotomy)
-apply (blast elim!: real_less_irrefl real_of_preal_not_minus_gt_zero [THEN notE])
-done
-
-lemma real_gt_preal_preal_Ex:
-     "real_of_preal z < x ==> \<exists>y. x = real_of_preal y"
-by (blast dest!: real_of_preal_zero_less [THEN real_less_trans]
-             intro: real_gt_zero_preal_Ex [THEN iffD1])
-
-lemma real_ge_preal_preal_Ex:
-     "real_of_preal z \<le> x ==> \<exists>y. x = real_of_preal y"
-by (blast dest: order_le_imp_less_or_eq real_gt_preal_preal_Ex)
-
-lemma real_less_all_preal: "y \<le> 0 ==> \<forall>x. y < real_of_preal x"
-by (auto elim: order_le_imp_less_or_eq [THEN disjE] 
-            intro: real_of_preal_zero_less [THEN [2] real_less_trans] 
-            simp add: real_of_preal_zero_less)
-
-lemma real_less_all_real2: "~ 0 < y ==> \<forall>x. y < real_of_preal x"
-by (blast intro!: real_less_all_preal real_leI)
-
-lemma real_of_preal_le_iff:
-     "(real_of_preal m1 \<le> real_of_preal m2) = (m1 \<le> m2)"
-apply (auto intro!: preal_leI simp add: linorder_not_less [symmetric])
-done
-
-
-subsection{*Monotonicity of Addition*}
-
-lemma real_add_left_cancel: "((x::real) + y = x + z) = (y = z)"
-apply safe
-apply (drule_tac f = "%t. (-x) + t" in arg_cong)
-apply (simp add: real_add_assoc [symmetric])
-done
-
-
-lemma real_mult_order: "[| 0 < x; 0 < y |] ==> (0::real) < x * y"
-apply (auto simp add: real_gt_zero_preal_Ex)
-apply (rule_tac x = "y*ya" in exI)
-apply (simp (no_asm_use) add: real_of_preal_mult)
-done
-
-lemma real_minus_add_distrib [simp]: "-(x + y) = (-x) + (- y :: real)"
-apply (rule_tac z = x in eq_Abs_REAL)
-apply (rule_tac z = y in eq_Abs_REAL)
-apply (auto simp add: real_minus real_add)
-done
-
-(*Alternative definition for real_less*)
-lemma real_less_add_positive_left_Ex: "R < S ==> \<exists>T::real. 0 < T & R + T = S"
-apply (rule_tac x = R in real_of_preal_trichotomyE)
-apply (rule_tac [!] x = S in real_of_preal_trichotomyE)
-apply (auto dest!: preal_less_add_left_Ex simp add: real_of_preal_not_minus_gt_all real_of_preal_add real_of_preal_not_less_zero real_less_not_refl real_of_preal_not_minus_gt_zero)
-apply (rule_tac x = "real_of_preal D" in exI)
-apply (rule_tac [2] x = "real_of_preal m+real_of_preal ma" in exI)
-apply (rule_tac [3] x = "real_of_preal D" in exI)
-apply (auto simp add: real_of_preal_zero_less real_of_preal_sum_zero_less real_add_assoc)
-apply (simp add: real_add_assoc [symmetric])
-done
-
-lemma real_less_sum_gt_zero: "(W < S) ==> (0 < S + (-W::real))"
-apply (drule real_less_add_positive_left_Ex)
-apply (auto simp add: real_add_minus real_add_zero_right real_add_ac)
-done
-
-lemma real_lemma_change_eq_subj: "!!S::real. T = S + W ==> S = T + (-W)"
-by (simp add: real_add_ac)
-
-(* FIXME: long! *)
-lemma real_sum_gt_zero_less: "(0 < S + (-W::real)) ==> (W < S)"
-apply (rule ccontr)
-apply (drule real_leI [THEN real_le_imp_less_or_eq])
-apply (auto simp add: real_less_not_refl)
-apply (drule real_less_add_positive_left_Ex, clarify, simp)
-apply (drule real_lemma_change_eq_subj, auto)
-apply (drule real_less_sum_gt_zero)
-apply (auto elim: real_less_asym simp add: real_add_left_commute [of W] real_add_ac)
-done
-
-lemma real_mult_less_mono2: "[| (0::real) < z; x < y |] ==> z * x < z * y"
-apply (rule real_sum_gt_zero_less)
-apply (drule real_less_sum_gt_zero [of x y])
-apply (drule real_mult_order, assumption)
-apply (simp add: real_add_mult_distrib2)
-done
-
-lemma real_less_sum_gt_0_iff: "(0 < S + (-W::real)) = (W < S)"
-by (blast intro: real_less_sum_gt_zero real_sum_gt_zero_less)
-
-lemma real_less_eq_diff: "(x<y) = (x-y < (0::real))"
-apply (unfold real_diff_def)
-apply (subst real_minus_zero_less_iff [symmetric])
-apply (simp add: real_add_commute real_less_sum_gt_0_iff)
-done
-
-lemma real_less_eqI: "(x::real) - y = x' - y' ==> (x<y) = (x'<y')"
-apply (subst real_less_eq_diff)
-apply (rule_tac y1 = y in real_less_eq_diff [THEN ssubst], simp)
-done
-
-lemma real_le_eqI: "(x::real) - y = x' - y' ==> (y\<le>x) = (y'\<le>x')"
-apply (drule real_less_eqI)
-apply (simp add: real_le_def)
-done
-
-lemma real_add_left_mono: "x \<le> y ==> z + x \<le> z + (y::real)"
-apply (rule real_le_eqI [THEN iffD1]) 
- prefer 2 apply assumption
-apply (simp add: real_diff_def real_add_ac)
-done
-
-
-subsection{*The Reals Form an Ordered Field*}
-
-instance real :: inverse ..
-
-instance real :: ordered_field
-proof
-  fix x y z :: real
-  show "(x + y) + z = x + (y + z)" by (rule real_add_assoc)
-  show "x + y = y + x" by (rule real_add_commute)
-  show "0 + x = x" by simp
-  show "- x + x = 0" by simp
-  show "x - y = x + (-y)" by (simp add: real_diff_def)
-  show "(x * y) * z = x * (y * z)" by (rule real_mult_assoc)
-  show "x * y = y * x" by (rule real_mult_commute)
-  show "1 * x = x" by simp
-  show "(x + y) * z = x * z + y * z" by (simp add: real_add_mult_distrib)
-  show "0 \<noteq> (1::real)" by (rule real_zero_not_eq_one)
-  show "x \<le> y ==> z + x \<le> z + y" by (rule real_add_left_mono)
-  show "x < y ==> 0 < z ==> z * x < z * y" by (simp add: real_mult_less_mono2)
-  show "\<bar>x\<bar> = (if x < 0 then -x else x)"
-    by (auto dest: order_le_less_trans simp add: real_abs_def linorder_not_le)
-  show "x \<noteq> 0 ==> inverse x * x = 1" by simp
-  show "y \<noteq> 0 ==> x / y = x * inverse y" by (simp add: real_divide_def)
-qed
-
-
-lemma real_zero_less_one: "0 < (1::real)"
-  by (rule Ring_and_Field.zero_less_one)
-
-lemma real_add_less_mono: "[| R1 < S1; R2 < S2 |] ==> R1+R2 < S1+(S2::real)"
- by (rule Ring_and_Field.add_strict_mono)
-
-lemma real_add_le_mono: "[|i\<le>j;  k\<le>l |] ==> i + k \<le> j + (l::real)"
- by (rule Ring_and_Field.add_mono)
-
-lemma real_le_minus_iff: "(-s \<le> -r) = ((r::real) \<le> s)"
- by (rule Ring_and_Field.neg_le_iff_le)
-
-lemma real_le_square [simp]: "(0::real) \<le> x*x"
- by (rule Ring_and_Field.zero_le_square)
-
-
-subsection{*Division Lemmas*}
-
-(** Inverse of zero!  Useful to simplify certain equations **)
-
-lemma INVERSE_ZERO: "inverse 0 = (0::real)"
-apply (unfold real_inverse_def)
-apply (rule someI2)
-apply (auto simp add: real_zero_not_eq_one)
-done
-
-lemma DIVISION_BY_ZERO: "a / (0::real) = 0"
-  by (simp add: real_divide_def INVERSE_ZERO)
-
-instance real :: division_by_zero
-proof
-  fix x :: real
-  show "inverse 0 = (0::real)" by (rule INVERSE_ZERO)
-  show "x/0 = 0" by (rule DIVISION_BY_ZERO) 
-qed
-
-lemma real_mult_left_cancel: "(c::real) \<noteq> 0 ==> (c*a=c*b) = (a=b)"
-by auto
-
-lemma real_mult_right_cancel: "(c::real) \<noteq> 0 ==> (a*c=b*c) = (a=b)"
-by auto
-
-lemma real_mult_left_cancel_ccontr: "c*a \<noteq> c*b ==> a \<noteq> b"
-by auto
-
-lemma real_mult_right_cancel_ccontr: "a*c \<noteq> b*c ==> a \<noteq> b"
-by auto
-
-lemma real_inverse_not_zero: "x \<noteq> 0 ==> inverse(x::real) \<noteq> 0"
-  by (rule Ring_and_Field.nonzero_imp_inverse_nonzero)
-
-lemma real_mult_not_zero: "[| x \<noteq> 0; y \<noteq> 0 |] ==> x * y \<noteq> (0::real)"
-by simp
-
-lemma real_inverse_1: "inverse((1::real)) = (1::real)"
-  by (rule Ring_and_Field.inverse_1)
-
-lemma real_minus_inverse: "inverse(-x) = -inverse(x::real)"
-  by (rule Ring_and_Field.inverse_minus_eq)
-
-lemma real_inverse_distrib: "inverse(x*y) = inverse(x)*inverse(y::real)"
-  by (rule Ring_and_Field.inverse_mult_distrib)
-
-lemma real_add_divide_distrib: "(x+y)/(z::real) = x/z + y/z"
-  by (rule Ring_and_Field.add_divide_distrib)
-
-
-subsection{*More Lemmas*}
-
-lemma real_add_right_cancel: "(y + (x::real)= z + x) = (y = z)"
-  by (rule Ring_and_Field.add_right_cancel)
-
-lemma real_add_less_mono1: "v < (w::real) ==> v + z < w + z"
-  by (rule Ring_and_Field.add_strict_right_mono)
-
-lemma real_add_le_mono1: "v \<le> (w::real) ==> v + z \<le> w + z"
-  by (rule Ring_and_Field.add_right_mono)
-
-lemma real_add_less_le_mono: "[| w'<w; z'\<le>z |] ==> w' + z' < w + (z::real)"
-apply (erule add_strict_right_mono [THEN order_less_le_trans])
-apply (erule add_left_mono) 
-done
-
-lemma real_add_le_less_mono:
-     "!!z z'::real. [| w'\<le>w; z'<z |] ==> w' + z' < w + z"
-apply (erule add_right_mono [THEN order_le_less_trans])
-apply (erule add_strict_left_mono) 
-done
-
-lemma real_less_add_right_cancel: "!!(A::real). A + C < B + C ==> A < B"
-  by (rule Ring_and_Field.add_less_imp_less_right)
-
-lemma real_less_add_left_cancel: "!!(A::real). C + A < C + B ==> A < B"
-  by (rule Ring_and_Field.add_less_imp_less_left)
-
-lemma real_le_add_right_cancel: "!!(A::real). A + C \<le> B + C ==> A \<le> B"
-  by (rule Ring_and_Field.add_le_imp_le_right)
-
-lemma real_le_add_left_cancel: "!!(A::real). C + A \<le> C + B ==> A \<le> B"
-  by (rule Ring_and_Field.add_le_imp_le_left)
-
-lemma real_add_right_cancel_less: "(v+z < w+z) = (v < (w::real))"
-  by (rule Ring_and_Field.add_less_cancel_right)
-
-lemma real_add_left_cancel_less: "(z+v < z+w) = (v < (w::real))"
-  by (rule Ring_and_Field.add_less_cancel_left)
-
-lemma real_add_right_cancel_le: "(v+z \<le> w+z) = (v \<le> (w::real))"
-  by (rule Ring_and_Field.add_le_cancel_right)
-
-lemma real_add_left_cancel_le: "(z+v \<le> z+w) = (v \<le> (w::real))"
-  by (rule Ring_and_Field.add_le_cancel_left)
-
-
-subsection{*Inverse and Division*}
-
-lemma real_inverse_gt_0: "0 < x ==> 0 < inverse (x::real)"
-  by (rule Ring_and_Field.positive_imp_inverse_positive)
-
-lemma real_inverse_less_0: "x < 0 ==> inverse (x::real) < 0"
-  by (rule Ring_and_Field.negative_imp_inverse_negative)
-
-lemma real_mult_less_mono1: "[| (0::real) < z; x < y |] ==> x*z < y*z"
- by (rule Ring_and_Field.mult_strict_right_mono)
-
-text{*The precondition could be weakened to @{term "0\<le>x"}*}
-lemma real_mult_less_mono:
-     "[| u<v;  x<y;  (0::real) < v;  0 < x |] ==> u*x < v* y"
- by (simp add: Ring_and_Field.mult_strict_mono order_less_imp_le)
-
-lemma real_mult_less_iff1 [simp]: "(0::real) < z ==> (x*z < y*z) = (x < y)"
-  by (force elim: order_less_asym
-            simp add: Ring_and_Field.mult_less_cancel_right)
-
-lemma real_mult_le_cancel_iff1 [simp]: "(0::real) < z ==> (x*z \<le> y*z) = (x\<le>y)"
-by (auto simp add: real_le_def)
-
-lemma real_mult_le_cancel_iff2 [simp]: "(0::real) < z ==> (z*x \<le> z*y) = (x\<le>y)"
-  by (force elim: order_less_asym
-            simp add: Ring_and_Field.mult_le_cancel_left)
-
-text{*Only two uses?*}
-lemma real_mult_less_mono':
-     "[| x < y;  r1 < r2;  (0::real) \<le> r1;  0 \<le> x|] ==> r1 * x < r2 * y"
- by (rule Ring_and_Field.mult_strict_mono')
-
-lemma real_inverse_less_swap:
-     "[| 0 < r; r < x |] ==> inverse x < inverse (r::real)"
-  by (rule Ring_and_Field.less_imp_inverse_less)
-
-(*FIXME: remove the [iff], since the general theorem is already [simp]*)
-lemma real_mult_is_0 [iff]: "(x*y = 0) = (x = 0 | y = (0::real))"
-by (rule Ring_and_Field.mult_eq_0_iff)
-
-lemma real_inverse_add:
-     "[| x \<noteq> 0; y \<noteq> 0 |]  
-      ==> inverse x + inverse y = (x + y) * inverse (x * (y::real))"
-by (simp add: Ring_and_Field.inverse_add mult_assoc)
-
-text{*FIXME: delete or at least combine the next two lemmas*}
-lemma real_sum_squares_cancel: "x * x + y * y = 0 ==> x = (0::real)"
-apply (drule Ring_and_Field.equals_zero_I [THEN sym])
-apply (cut_tac x = y in real_le_square) 
-apply (auto, drule real_le_anti_sym, auto)
-done
-
-lemma real_sum_squares_cancel2: "x * x + y * y = 0 ==> y = (0::real)"
-apply (rule_tac y = x in real_sum_squares_cancel)
-apply (simp add: real_add_commute)
-done
-
-
-subsection{*Convenient Biconditionals for Products of Signs*}
-
-lemma real_0_less_mult_iff: "((0::real) < x*y) = (0<x & 0<y | x<0 & y<0)"
-  by (rule Ring_and_Field.zero_less_mult_iff) 
-
-lemma real_0_le_mult_iff: "((0::real)\<le>x*y) = (0\<le>x & 0\<le>y | x\<le>0 & y\<le>0)"
-  by (rule Ring_and_Field.zero_le_mult_iff) 
-
-lemma real_mult_less_0_iff: "(x*y < (0::real)) = (0<x & y<0 | x<0 & 0<y)"
-  by (rule Ring_and_Field.mult_less_0_iff) 
-
-lemma real_mult_le_0_iff: "(x*y \<le> (0::real)) = (0\<le>x & y\<le>0 | x\<le>0 & 0\<le>y)"
-  by (rule Ring_and_Field.mult_le_0_iff) 
-
-subsection{*Hardly Used Theorems to be Deleted*}
-
-lemma real_add_less_mono2: "!!(A::real). A < B ==> C + A < C + B"
-by simp
-
-lemma real_add_order: "[| 0 < x; 0 < y |] ==> (0::real) < x + y"
-apply (erule order_less_trans)
-apply (drule real_add_less_mono2, simp)
-done
-
-lemma real_le_add_order: "[| 0 \<le> x; 0 \<le> y |] ==> (0::real) \<le> x + y"
-apply (drule order_le_imp_less_or_eq)+
-apply (auto intro: real_add_order order_less_imp_le)
-done
-
-
-subsection{*An Embedding of the Naturals in the Reals*}
-
-lemma real_of_posnat_one: "real_of_posnat 0 = (1::real)"
-by (simp add: real_of_posnat_def pnat_one_iff [symmetric]
-              real_of_preal_def symmetric real_one_def)
-
-lemma real_of_posnat_two: "real_of_posnat (Suc 0) = (1::real) + (1::real)"
-by (simp add: real_of_posnat_def real_of_preal_def real_one_def pnat_two_eq
-                 real_add
-            prat_of_pnat_add [symmetric] preal_of_prat_add [symmetric]
-            pnat_add_ac)
-
-lemma real_of_posnat_add: 
-     "real_of_posnat n1 + real_of_posnat n2 = real_of_posnat (n1 + n2) + (1::real)"
-apply (unfold real_of_posnat_def)
-apply (simp (no_asm_use) add: real_of_posnat_one [symmetric] real_of_posnat_def real_of_preal_add [symmetric] preal_of_prat_add [symmetric] prat_of_pnat_add [symmetric] pnat_of_nat_add)
-done
-
-lemma real_of_posnat_add_one:
-     "real_of_posnat (n + 1) = real_of_posnat n + (1::real)"
-apply (rule_tac x1 = " (1::real) " in real_add_right_cancel [THEN iffD1])
-apply (rule real_of_posnat_add [THEN subst])
-apply (simp (no_asm_use) add: real_of_posnat_two real_add_assoc)
-done
-
-lemma real_of_posnat_Suc:
-     "real_of_posnat (Suc n) = real_of_posnat n + (1::real)"
-by (subst real_of_posnat_add_one [symmetric], simp)
-
-lemma inj_real_of_posnat: "inj(real_of_posnat)"
-apply (rule inj_onI)
-apply (unfold real_of_posnat_def)
-apply (drule inj_real_of_preal [THEN injD])
-apply (drule inj_preal_of_prat [THEN injD])
-apply (drule inj_prat_of_pnat [THEN injD])
-apply (erule inj_pnat_of_nat [THEN injD])
-done
-
-lemma real_of_nat_zero [simp]: "real (0::nat) = 0"
-by (simp add: real_of_nat_def real_of_posnat_one)
-
-lemma real_of_nat_one [simp]: "real (Suc 0) = (1::real)"
-by (simp add: real_of_nat_def real_of_posnat_two real_add_assoc)
-
-lemma real_of_nat_add [simp]: 
-     "real (m + n) = real (m::nat) + real n"
-apply (simp add: real_of_nat_def add_ac)
-apply (simp add: real_of_posnat_add add_assoc [symmetric])
-apply (simp add: add_commute) 
-apply (simp add: add_assoc [symmetric])
-done
-
-(*Not for addsimps: often the LHS is used to represent a positive natural*)
-lemma real_of_nat_Suc: "real (Suc n) = real n + (1::real)"
-by (simp add: real_of_nat_def real_of_posnat_Suc real_add_ac)
-
-lemma real_of_nat_less_iff [iff]: 
-     "(real (n::nat) < real m) = (n < m)"
-by (auto simp add: real_of_nat_def real_of_posnat_def)
-
-lemma real_of_nat_le_iff [iff]: "(real (n::nat) \<le> real m) = (n \<le> m)"
-by (simp add: linorder_not_less [symmetric])
-
-lemma inj_real_of_nat: "inj (real :: nat => real)"
-apply (rule inj_onI)
-apply (auto intro!: inj_real_of_posnat [THEN injD]
-            simp add: real_of_nat_def real_add_right_cancel)
-done
-
-lemma real_of_nat_ge_zero [iff]: "0 \<le> real (n::nat)"
-apply (induct_tac "n")
-apply (auto simp add: real_of_nat_Suc)
-apply (drule real_add_le_less_mono)
-apply (rule real_zero_less_one)
-apply (simp add: order_less_imp_le)
-done
-
-lemma real_of_nat_mult [simp]: "real (m * n) = real (m::nat) * real n"
-apply (induct_tac "m")
-apply (auto simp add: real_of_nat_Suc real_add_mult_distrib real_add_commute)
-done
-
-lemma real_of_nat_inject [iff]: "(real (n::nat) = real m) = (n = m)"
-by (auto dest: inj_real_of_nat [THEN injD])
-
-lemma real_of_nat_diff [rule_format]:
-     "n \<le> m --> real (m - n) = real (m::nat) - real n"
-apply (induct_tac "m", simp)
-apply (simp add: real_diff_def Suc_diff_le le_Suc_eq real_of_nat_Suc add_ac)
-apply (simp add: add_left_commute [of _ "- 1"]) 
-done
-
-lemma real_of_nat_zero_iff: "(real (n::nat) = 0) = (n = 0)"
-  proof 
-    assume "real n = 0"
-    have "real n = real (0::nat)" by simp
-    then show "n = 0" by (simp only: real_of_nat_inject)
-  next
-    show "n = 0 \<Longrightarrow> real n = 0" by simp
-  qed
-
-lemma real_of_nat_neg_int [simp]: "neg z ==> real (nat z) = 0"
-by (simp add: neg_nat real_of_nat_zero)
-
-
-lemma real_mult_le_le_mono1: "[| (0::real) <=z; x<=y |] ==> z*x<=z*y"
-  by (rule Ring_and_Field.mult_left_mono)
-
-lemma real_mult_le_le_mono2: "[| (0::real)<=z; x<=y |] ==> x*z<=y*z"
-  by (rule Ring_and_Field.mult_right_mono)
-
-(*Used just below and in HahnBanach/Aux.thy*)
-lemma real_mult_le_less_mono1: "[| (0::real) \<le> z; x < y |] ==> x*z \<le> y*z"
-apply (rule real_less_or_eq_imp_le)
-apply (drule order_le_imp_less_or_eq)
-apply (auto intro: real_mult_less_mono1)
-done
-
-lemma real_inverse_unique: "x*y = (1::real) ==> y = inverse x"
-apply (case_tac "x \<noteq> 0")
-apply (rule_tac c1 = x in real_mult_left_cancel [THEN iffD1], auto)
-done
-
-lemma real_inverse_gt_one: "[| (0::real) < x; x < 1 |] ==> 1 < inverse x"
-by (auto dest: real_inverse_less_swap)
-
-lemma real_of_nat_gt_zero_cancel_iff: "(0 < real (n::nat)) = (0 < n)"
-by (rule real_of_nat_less_iff [THEN subst], auto)
-declare real_of_nat_gt_zero_cancel_iff [simp]
-
-lemma real_of_nat_le_zero_cancel_iff: "(real (n::nat) <= 0) = (n = 0)"
-apply (rule real_of_nat_zero [THEN subst])
-apply (subst real_of_nat_le_iff, auto)
-done
-declare real_of_nat_le_zero_cancel_iff [simp]
-
-lemma not_real_of_nat_less_zero: "~ real (n::nat) < 0"
-apply (simp (no_asm) add: real_le_def [symmetric] real_of_nat_ge_zero)
-done
-declare not_real_of_nat_less_zero [simp]
-
-lemma real_of_nat_ge_zero_cancel_iff: 
-      "(0 <= real (n::nat)) = (0 <= n)"
-apply (unfold real_le_def le_def)
-apply (simp (no_asm))
-done
-declare real_of_nat_ge_zero_cancel_iff [simp]
-
-lemma real_of_nat_num_if:
-     "real n = (if n=0 then 0 else 1 + real ((n::nat) - 1))"
-apply (case_tac "n", simp) 
-apply (simp add: real_of_nat_Suc add_commute)
-done
-
-lemma real_mult_self_sum_ge_zero: "(0::real) \<le> x*x + y*y"
-proof -
-  have "0 + 0 \<le> x*x + y*y" by (blast intro: add_mono zero_le_square)
-  thus ?thesis by simp
-qed
-
-declare real_mult_self_sum_ge_zero [simp]
-
-ML
-{*
-val real_abs_def = thm "real_abs_def";
-
-val real_less_eq_diff = thm "real_less_eq_diff";
-
-val real_add_right_cancel = thm"real_add_right_cancel";
-val real_mult_congruent2_lemma = thm"real_mult_congruent2_lemma";
-val real_mult_congruent2 = thm"real_mult_congruent2";
-val real_mult = thm"real_mult";
-val real_mult_commute = thm"real_mult_commute";
-val real_mult_assoc = thm"real_mult_assoc";
-val real_mult_left_commute = thm"real_mult_left_commute";
-val real_mult_1 = thm"real_mult_1";
-val real_mult_1_right = thm"real_mult_1_right";
-val real_mult_0 = thm"real_mult_0";
-val real_mult_0_right = thm"real_mult_0_right";
-val real_mult_minus_eq1 = thm"real_mult_minus_eq1";
-val real_minus_mult_eq1 = thm"real_minus_mult_eq1";
-val real_mult_minus_eq2 = thm"real_mult_minus_eq2";
-val real_minus_mult_eq2 = thm"real_minus_mult_eq2";
-val real_mult_minus_1 = thm"real_mult_minus_1";
-val real_mult_minus_1_right = thm"real_mult_minus_1_right";
-val real_minus_mult_cancel = thm"real_minus_mult_cancel";
-val real_minus_mult_commute = thm"real_minus_mult_commute";
-val real_add_assoc_cong = thm"real_add_assoc_cong";
-val real_add_mult_distrib = thm"real_add_mult_distrib";
-val real_add_mult_distrib2 = thm"real_add_mult_distrib2";
-val real_diff_mult_distrib = thm"real_diff_mult_distrib";
-val real_diff_mult_distrib2 = thm"real_diff_mult_distrib2";
-val real_zero_not_eq_one = thm"real_zero_not_eq_one";
-val real_zero_iff = thm"real_zero_iff";
-val preal_le_linear = thm"preal_le_linear";
-val real_mult_inv_right_ex = thm"real_mult_inv_right_ex";
-val real_mult_inv_left_ex = thm"real_mult_inv_left_ex";
-val real_mult_inv_left = thm"real_mult_inv_left";
-val real_mult_inv_right = thm"real_mult_inv_right";
-val preal_lemma_eq_rev_sum = thm"preal_lemma_eq_rev_sum";
-val preal_add_left_commute_cancel = thm"preal_add_left_commute_cancel";
-val preal_lemma_for_not_refl = thm"preal_lemma_for_not_refl";
-val real_less_not_refl = thm"real_less_not_refl";
-val real_less_irrefl = thm"real_less_irrefl";
-val real_not_refl2 = thm"real_not_refl2";
-val preal_lemma_trans = thm"preal_lemma_trans";
-val real_less_trans = thm"real_less_trans";
-val real_less_not_sym = thm"real_less_not_sym";
-val real_less_asym = thm"real_less_asym";
-val real_of_preal_add = thm"real_of_preal_add";
-val real_of_preal_mult = thm"real_of_preal_mult";
-val real_of_preal_ExI = thm"real_of_preal_ExI";
-val real_of_preal_ExD = thm"real_of_preal_ExD";
-val real_of_preal_iff = thm"real_of_preal_iff";
-val real_of_preal_trichotomy = thm"real_of_preal_trichotomy";
-val real_of_preal_trichotomyE = thm"real_of_preal_trichotomyE";
-val real_of_preal_lessD = thm"real_of_preal_lessD";
-val real_of_preal_lessI = thm"real_of_preal_lessI";
-val real_of_preal_less_iff1 = thm"real_of_preal_less_iff1";
-val real_of_preal_minus_less_self = thm"real_of_preal_minus_less_self";
-val real_of_preal_minus_less_zero = thm"real_of_preal_minus_less_zero";
-val real_of_preal_not_minus_gt_zero = thm"real_of_preal_not_minus_gt_zero";
-val real_of_preal_zero_less = thm"real_of_preal_zero_less";
-val real_of_preal_not_less_zero = thm"real_of_preal_not_less_zero";
-val real_minus_minus_zero_less = thm"real_minus_minus_zero_less";
-val real_of_preal_sum_zero_less = thm"real_of_preal_sum_zero_less";
-val real_of_preal_minus_less_all = thm"real_of_preal_minus_less_all";
-val real_of_preal_not_minus_gt_all = thm"real_of_preal_not_minus_gt_all";
-val real_of_preal_minus_less_rev1 = thm"real_of_preal_minus_less_rev1";
-val real_of_preal_minus_less_rev2 = thm"real_of_preal_minus_less_rev2";
-val real_of_preal_minus_less_rev_iff = thm"real_of_preal_minus_less_rev_iff";
-val real_linear = thm"real_linear";
-val real_neq_iff = thm"real_neq_iff";
-val real_linear_less2 = thm"real_linear_less2";
-val real_leI = thm"real_leI";
-val real_leD = thm"real_leD";
-val not_real_leE = thm"not_real_leE";
-val real_le_imp_less_or_eq = thm"real_le_imp_less_or_eq";
-val real_less_or_eq_imp_le = thm"real_less_or_eq_imp_le";
-val real_le_less = thm"real_le_less";
-val real_le_refl = thm"real_le_refl";
-val real_le_linear = thm"real_le_linear";
-val real_le_trans = thm"real_le_trans";
-val real_le_anti_sym = thm"real_le_anti_sym";
-val real_less_le = thm"real_less_le";
-val real_minus_zero_less_iff = thm"real_minus_zero_less_iff";
-val real_minus_zero_less_iff2 = thm"real_minus_zero_less_iff2";
-val real_less_add_positive_left_Ex = thm"real_less_add_positive_left_Ex";
-val real_less_sum_gt_zero = thm"real_less_sum_gt_zero";
-val real_sum_gt_zero_less = thm"real_sum_gt_zero_less";
-
-val real_gt_zero_preal_Ex = thm "real_gt_zero_preal_Ex";
-val real_gt_preal_preal_Ex = thm "real_gt_preal_preal_Ex";
-val real_ge_preal_preal_Ex = thm "real_ge_preal_preal_Ex";
-val real_less_all_preal = thm "real_less_all_preal";
-val real_less_all_real2 = thm "real_less_all_real2";
-val real_of_preal_le_iff = thm "real_of_preal_le_iff";
-val real_mult_order = thm "real_mult_order";
-val real_zero_less_one = thm "real_zero_less_one";
-val real_add_right_cancel_less = thm "real_add_right_cancel_less";
-val real_add_left_cancel_less = thm "real_add_left_cancel_less";
-val real_add_right_cancel_le = thm "real_add_right_cancel_le";
-val real_add_left_cancel_le = thm "real_add_left_cancel_le";
-val real_add_less_mono1 = thm "real_add_less_mono1";
-val real_add_le_mono1 = thm "real_add_le_mono1";
-val real_add_less_le_mono = thm "real_add_less_le_mono";
-val real_add_le_less_mono = thm "real_add_le_less_mono";
-val real_add_less_mono2 = thm "real_add_less_mono2";
-val real_less_add_right_cancel = thm "real_less_add_right_cancel";
-val real_less_add_left_cancel = thm "real_less_add_left_cancel";
-val real_le_add_right_cancel = thm "real_le_add_right_cancel";
-val real_le_add_left_cancel = thm "real_le_add_left_cancel";
-val real_add_order = thm "real_add_order";
-val real_le_add_order = thm "real_le_add_order";
-val real_add_less_mono = thm "real_add_less_mono";
-val real_add_le_mono = thm "real_add_le_mono";
-val real_le_minus_iff = thm "real_le_minus_iff";
-val real_le_square = thm "real_le_square";
-val real_mult_less_mono1 = thm "real_mult_less_mono1";
-val real_mult_less_mono2 = thm "real_mult_less_mono2";
-
-val real_inverse_gt_0 = thm "real_inverse_gt_0";
-val real_inverse_less_0 = thm "real_inverse_less_0";
-val real_mult_less_iff1 = thm "real_mult_less_iff1";
-val real_mult_le_cancel_iff1 = thm "real_mult_le_cancel_iff1";
-val real_mult_le_cancel_iff2 = thm "real_mult_le_cancel_iff2";
-val real_mult_less_mono = thm "real_mult_less_mono";
-val real_mult_less_mono' = thm "real_mult_less_mono'";
-val real_inverse_less_swap = thm "real_inverse_less_swap";
-val real_mult_is_0 = thm "real_mult_is_0";
-val real_inverse_add = thm "real_inverse_add";
-val real_sum_squares_cancel = thm "real_sum_squares_cancel";
-val real_sum_squares_cancel2 = thm "real_sum_squares_cancel2";
-val real_0_less_mult_iff = thm "real_0_less_mult_iff";
-val real_0_le_mult_iff = thm "real_0_le_mult_iff";
-val real_mult_less_0_iff = thm "real_mult_less_0_iff";
-val real_mult_le_0_iff = thm "real_mult_le_0_iff";
-
-val INVERSE_ZERO = thm"INVERSE_ZERO";
-val DIVISION_BY_ZERO = thm"DIVISION_BY_ZERO";
-val real_mult_left_cancel = thm"real_mult_left_cancel";
-val real_mult_right_cancel = thm"real_mult_right_cancel";
-val real_mult_left_cancel_ccontr = thm"real_mult_left_cancel_ccontr";
-val real_mult_right_cancel_ccontr = thm"real_mult_right_cancel_ccontr";
-val real_inverse_not_zero = thm"real_inverse_not_zero";
-val real_mult_not_zero = thm"real_mult_not_zero";
-val real_inverse_1 = thm"real_inverse_1";
-val real_minus_inverse = thm"real_minus_inverse";
-val real_inverse_distrib = thm"real_inverse_distrib";
-val real_add_divide_distrib = thm"real_add_divide_distrib";
-
-val real_of_posnat_one = thm "real_of_posnat_one";
-val real_of_posnat_two = thm "real_of_posnat_two";
-val real_of_posnat_add = thm "real_of_posnat_add";
-val real_of_posnat_add_one = thm "real_of_posnat_add_one";
-val real_of_posnat_Suc = thm "real_of_posnat_Suc";
-val inj_real_of_posnat = thm "inj_real_of_posnat";
-val real_of_nat_zero = thm "real_of_nat_zero";
-val real_of_nat_one = thm "real_of_nat_one";
-val real_of_nat_add = thm "real_of_nat_add";
-val real_of_nat_Suc = thm "real_of_nat_Suc";
-val real_of_nat_less_iff = thm "real_of_nat_less_iff";
-val real_of_nat_le_iff = thm "real_of_nat_le_iff";
-val inj_real_of_nat = thm "inj_real_of_nat";
-val real_of_nat_ge_zero = thm "real_of_nat_ge_zero";
-val real_of_nat_mult = thm "real_of_nat_mult";
-val real_of_nat_inject = thm "real_of_nat_inject";
-val real_of_nat_diff = thm "real_of_nat_diff";
-val real_of_nat_zero_iff = thm "real_of_nat_zero_iff";
-val real_of_nat_neg_int = thm "real_of_nat_neg_int";
-
-val real_mult_le_le_mono1 = thm "real_mult_le_le_mono1";
-val real_mult_le_le_mono2 = thm "real_mult_le_le_mono2";
-val real_inverse_unique = thm "real_inverse_unique";
-val real_inverse_gt_one = thm "real_inverse_gt_one";
-val real_of_nat_gt_zero_cancel_iff = thm "real_of_nat_gt_zero_cancel_iff";
-val real_of_nat_le_zero_cancel_iff = thm "real_of_nat_le_zero_cancel_iff";
-val not_real_of_nat_less_zero = thm "not_real_of_nat_less_zero";
-val real_of_nat_ge_zero_cancel_iff = thm "real_of_nat_ge_zero_cancel_iff";
-val real_of_nat_num_if = thm "real_of_nat_num_if";
-
-val real_minus_add_distrib = thm"real_minus_add_distrib";
-val real_add_left_cancel = thm"real_add_left_cancel";
-val real_mult_self_sum_ge_zero = thm "real_mult_self_sum_ge_zero";
-*}
-
-end
--- a/src/HOL/Real/RealPow.thy	Mon Dec 29 06:49:26 2003 +0100
+++ b/src/HOL/Real/RealPow.thy	Thu Jan 01 10:06:32 2004 +0100
@@ -28,7 +28,7 @@
 
 lemma realpow_inverse: "inverse ((r::real) ^ n) = (inverse r) ^ n"
 apply (induct_tac "n")
-apply (auto simp add: real_inverse_distrib)
+apply (auto simp add: inverse_mult_distrib)
 done
 
 lemma realpow_abs: "abs(r ^ n) = abs(r::real) ^ n"
@@ -38,7 +38,7 @@
 
 lemma realpow_add: "(r::real) ^ (n + m) = (r ^ n) * (r ^ m)"
 apply (induct_tac "n")
-apply (auto simp add: real_mult_ac)
+apply (auto simp add: mult_ac)
 done
 
 lemma realpow_one [simp]: "(r::real) ^ 1 = r"
@@ -49,17 +49,17 @@
 
 lemma realpow_gt_zero [rule_format]: "(0::real) < r --> 0 < r ^ n"
 apply (induct_tac "n")
-apply (auto intro: real_mult_order simp add: real_zero_less_one)
+apply (auto intro: real_mult_order simp add: zero_less_one)
 done
 
 lemma realpow_ge_zero [rule_format]: "(0::real) \<le> r --> 0 \<le> r ^ n"
 apply (induct_tac "n")
-apply (auto simp add: real_0_le_mult_iff)
+apply (auto simp add: zero_le_mult_iff)
 done
 
 lemma realpow_le [rule_format]: "(0::real) \<le> x & x \<le> y --> x ^ n \<le> y ^ n"
 apply (induct_tac "n")
-apply (auto intro!: real_mult_le_mono)
+apply (auto intro!: mult_mono)
 apply (simp (no_asm_simp) add: realpow_ge_zero)
 done
 
@@ -90,7 +90,7 @@
 
 lemma realpow_mult: "((r::real) * s) ^ n = (r ^ n) * (s ^ n)"
 apply (induct_tac "n")
-apply (auto simp add: real_mult_ac)
+apply (auto simp add: mult_ac)
 done
 
 lemma realpow_two_le [simp]: "(0::real) \<le> r^ Suc (Suc 0)"
@@ -106,14 +106,15 @@
 apply auto
 apply (cut_tac real_zero_less_one)
 apply (frule_tac x = 0 in order_less_trans, assumption)
-apply (drule_tac  z = r and x = 1 in real_mult_less_mono1)
-apply (auto intro: order_less_trans)
+apply (frule_tac c = r and a = 1 in mult_strict_right_mono)
+apply assumption; 
+apply (simp add: ); 
 done
 
 lemma realpow_ge_one [rule_format]: "(1::real) < r --> 1 \<le> r ^ n"
 apply (induct_tac "n", auto)
 apply (subgoal_tac "1*1 \<le> r * r^n")
-apply (rule_tac [2] real_mult_le_mono, auto)
+apply (rule_tac [2] mult_mono, auto)
 done
 
 lemma realpow_ge_one2: "(1::real) \<le> r ==> 1 \<le> r ^ n"
@@ -170,7 +171,7 @@
 apply (simp_all (no_asm_simp))
 apply clarify
 apply (subgoal_tac "r * r ^ na \<le> 1 * r ^ n", simp)
-apply (rule real_mult_le_mono)
+apply (rule mult_mono)
 apply (auto simp add: realpow_ge_zero less_Suc_eq)
 done
 
@@ -237,7 +238,7 @@
 
 lemma realpow_two_diff: "(x::real)^Suc (Suc 0) - y^Suc (Suc 0) = (x - y) * (x + y)"
 apply (unfold real_diff_def)
-apply (simp add: real_add_mult_distrib2 real_add_mult_distrib real_mult_ac)
+apply (simp add: right_distrib left_distrib mult_ac)
 done
 
 lemma realpow_two_disj: "((x::real)^Suc (Suc 0) = y^Suc (Suc 0)) = (x = y | x = -y)"
@@ -247,7 +248,7 @@
 
 (* used in Transc *)
 lemma realpow_diff: "[|(x::real) \<noteq> 0; m \<le> n |] ==> x ^ (n - m) = x ^ n * inverse (x ^ m)"
-by (auto simp add: le_eq_less_or_eq less_iff_Suc_add realpow_add realpow_not_zero real_mult_ac)
+by (auto simp add: le_eq_less_or_eq less_iff_Suc_add realpow_add realpow_not_zero mult_ac)
 
 lemma realpow_real_of_nat: "real (m::nat) ^ n = real (m ^ n)"
 apply (induct_tac "n")
@@ -256,7 +257,7 @@
 
 lemma realpow_real_of_nat_two_pos [simp] : "0 < real (Suc (Suc 0) ^ n)"
 apply (induct_tac "n")
-apply (auto simp add: real_of_nat_mult real_0_less_mult_iff)
+apply (auto simp add: real_of_nat_mult zero_less_mult_iff)
 done
 
 lemma realpow_increasing:
@@ -284,12 +285,12 @@
 
 lemma zero_less_realpow_abs_iff [simp]: "(0 < (abs x)^n) = (x \<noteq> (0::real) | n=0)"
 apply (induct_tac "n")
-apply (auto simp add: real_0_less_mult_iff)
+apply (auto simp add: zero_less_mult_iff)
 done
 
 lemma zero_le_realpow_abs [simp]: "(0::real) \<le> (abs x)^n"
 apply (induct_tac "n")
-apply (auto simp add: real_0_le_mult_iff)
+apply (auto simp add: zero_le_mult_iff)
 done
 
 
@@ -332,7 +333,7 @@
   by (auto intro: real_sum_squares_cancel)
 
 lemma real_squared_diff_one_factored: "x*x - (1::real) = (x + 1)*(x - 1)"
-apply (auto simp add: real_add_mult_distrib real_add_mult_distrib2 real_diff_def)
+apply (auto simp add: left_distrib right_distrib real_diff_def)
 done
 
 lemma real_mult_is_one: "(x*x = (1::real)) = (x = 1 | x = - 1)"
@@ -357,14 +358,14 @@
       ==> inverse x * y < inverse x1 * u"
 apply (rule_tac c=x in mult_less_imp_less_left) 
 apply (auto simp add: real_mult_assoc [symmetric])
-apply (simp (no_asm) add: real_mult_ac)
+apply (simp (no_asm) add: mult_ac)
 apply (rule_tac c=x1 in mult_less_imp_less_right) 
-apply (auto simp add: real_mult_ac)
+apply (auto simp add: mult_ac)
 done
 
 text{*Used once: in Hyperreal/Transcendental.ML*}
 lemma real_mult_inverse_cancel2: "[|(0::real) < x;0 < x1; x1 * y < x * u |] ==> y * inverse x < u * inverse x1"
-apply (auto dest: real_mult_inverse_cancel simp add: real_mult_ac)
+apply (auto dest: real_mult_inverse_cancel simp add: mult_ac)
 done
 
 lemma inverse_real_of_nat_gt_zero: "0 < inverse (real (Suc n))"
@@ -403,18 +404,18 @@
 
 lemma realpow_ge_zero2 [rule_format (no_asm)]: "(0::real) \<le> r --> 0 \<le> r ^ n"
 apply (induct_tac "n")
-apply (auto simp add: real_0_le_mult_iff)
+apply (auto simp add: zero_le_mult_iff)
 done
 
 lemma realpow_le2 [rule_format (no_asm)]: "(0::real) \<le> x & x \<le> y --> x ^ n \<le> y ^ n"
 apply (induct_tac "n")
-apply (auto intro!: real_mult_le_mono simp add: realpow_ge_zero2)
+apply (auto intro!: mult_mono simp add: realpow_ge_zero2)
 done
 
 lemma realpow_Suc_gt_one: "(1::real) < r ==> 1 < r ^ (Suc n)"
 apply (frule_tac n = "n" in realpow_ge_one)
 apply (drule real_le_imp_less_or_eq, safe)
-apply (frule real_zero_less_one [THEN real_less_trans])
+apply (frule zero_less_one [THEN real_less_trans])
 apply (drule_tac y = "r ^ n" in real_mult_less_mono2)
 apply assumption
 apply (auto dest: real_less_trans)
--- a/src/HOL/Real/real_arith.ML	Mon Dec 29 06:49:26 2003 +0100
+++ b/src/HOL/Real/real_arith.ML	Thu Jan 01 10:06:32 2004 +0100
@@ -34,7 +34,7 @@
   val norm_tac =
      ALLGOALS (simp_tac (HOL_ss addsimps real_minus_from_mult_simps @ mult_1s))
      THEN ALLGOALS (simp_tac (HOL_ss addsimps bin_simps@real_mult_minus_simps))
-     THEN ALLGOALS (simp_tac (HOL_ss addsimps real_mult_ac))
+     THEN ALLGOALS (simp_tac (HOL_ss addsimps mult_ac))
   val numeral_simp_tac  =
          ALLGOALS (simp_tac (HOL_ss addsimps rel_real_number_of@bin_simps))
   val simplify_meta_eq  = simplify_meta_eq
@@ -155,7 +155,7 @@
   val dest_coeff        = dest_coeff
   val find_first        = find_first []
   val trans_tac         = trans_tac
-  val norm_tac = ALLGOALS (simp_tac (HOL_ss addsimps mult_1s@real_mult_ac))
+  val norm_tac = ALLGOALS (simp_tac (HOL_ss addsimps mult_1s@mult_ac))
   end;
 
 structure EqCancelFactor = ExtractCommonTermFun
@@ -210,16 +210,11 @@
 (****Augmentation of real linear arithmetic with 
      rational coefficient handling****)
 
-val divide_1 = thm"divide_1";
-
-val times_divide_eq_left = thm"times_divide_eq_left";
-val times_divide_eq_right = thm"times_divide_eq_right";
-
 local
 
 (* reduce contradictory <= to False *)
 val simps = [True_implies_equals,
-             inst "w" "number_of ?v" real_add_mult_distrib2,
+             inst "a" "(number_of ?v)::real" right_distrib,
              divide_1,times_divide_eq_right,times_divide_eq_left];
 
 val simprocs = [real_cancel_numeral_factors_divide,
@@ -230,8 +225,8 @@
 val real_mult_mono_thms =
  [(rotate_prems 1 real_mult_less_mono2,
    cvar(real_mult_less_mono2, hd(prems_of real_mult_less_mono2))),
-  (real_mult_le_mono2,
-   cvar(real_mult_le_mono2, hd(tl(prems_of real_mult_le_mono2))))]
+  (real_mult_left_mono,
+   cvar(real_mult_left_mono, hd(tl(prems_of real_mult_left_mono))))]
 
 in
 
--- a/src/HOL/Real/real_arith0.ML	Mon Dec 29 06:49:26 2003 +0100
+++ b/src/HOL/Real/real_arith0.ML	Thu Jan 01 10:06:32 2004 +0100
@@ -6,6 +6,11 @@
 Instantiation of the generic linear arithmetic package for type real.
 *)
 
+val add_zero_left = thm"Ring_and_Field.add_0";
+val add_zero_right = thm"Ring_and_Field.add_0_right";
+
+val real_mult_left_mono =
+    read_instantiate_sg(sign_of RealBin.thy) [("a","?a::real")] mult_left_mono;
 
 
 local
@@ -17,20 +22,17 @@
      add_real_number_of, minus_real_number_of, diff_real_number_of,
      mult_real_number_of, eq_real_number_of, less_real_number_of,
      le_real_number_of_eq_not_less, real_diff_def,
-     real_minus_add_distrib, real_minus_minus, real_mult_assoc,
-     real_minus_zero,
-     real_add_zero_left, real_add_zero_right,
-     real_add_minus, real_add_minus_left,
-     real_mult_0, real_mult_0_right,
-     real_mult_1, real_mult_1_right,
-     real_mult_minus_eq1, real_mult_minus_eq2];
+     minus_add_distrib, minus_minus, mult_assoc, minus_zero,
+     add_zero_left, add_zero_right, left_minus, right_minus,
+     mult_left_zero, mult_right_zero, mult_1, mult_1_right,
+     minus_mult_left RS sym, minus_mult_right RS sym];
 
 val simprocs = [Real_Times_Assoc.conv, Real_Numeral_Simprocs.combine_numerals]@
                Real_Numeral_Simprocs.cancel_numerals @
                Real_Numeral_Simprocs.eval_numerals;
 
 val mono_ss = simpset() addsimps
-                [real_add_le_mono,real_add_less_mono,
+                [add_mono,add_strict_mono,
                  real_add_less_le_mono,real_add_le_less_mono];
 
 val add_mono_thms_real =
@@ -51,8 +53,8 @@
 val real_mult_mono_thms =
  [(rotate_prems 1 real_mult_less_mono2,
    cvar(real_mult_less_mono2, hd(prems_of real_mult_less_mono2))),
-  (real_mult_le_mono2,
-   cvar(real_mult_le_mono2, hd(tl(prems_of real_mult_le_mono2))))]
+  (real_mult_left_mono,
+   cvar(real_mult_left_mono, hd(tl(prems_of real_mult_left_mono))))]
 
 in
 
--- a/src/HOL/Ring_and_Field.thy	Mon Dec 29 06:49:26 2003 +0100
+++ b/src/HOL/Ring_and_Field.thy	Thu Jan 01 10:06:32 2004 +0100
@@ -1505,8 +1505,20 @@
 
 ML
 {*
+val add_assoc = thm"add_assoc";
+val add_commute = thm"add_commute";
+val mult_assoc = thm"mult_assoc";
+val mult_commute = thm"mult_commute";
+val zero_neq_one = thm"zero_neq_one";
+val diff_minus = thm"diff_minus";
+val abs_if = thm"abs_if";
+val divide_inverse = thm"divide_inverse";
+val inverse_zero = thm"inverse_zero";
+val divide_zero = thm"divide_zero";
+val add_0 = thm"add_0";
 val add_0_right = thm"add_0_right";
 val add_left_commute = thm"add_left_commute";
+val left_minus = thm"left_minus";
 val right_minus = thm"right_minus";
 val right_minus_eq = thm"right_minus_eq";
 val add_left_cancel = thm"add_left_cancel";
@@ -1523,10 +1535,12 @@
 val neg_0_equal_iff_equal = thm"neg_0_equal_iff_equal";
 val equation_minus_iff = thm"equation_minus_iff";
 val minus_equation_iff = thm"minus_equation_iff";
+val mult_1 = thm"mult_1";
 val mult_1_right = thm"mult_1_right";
 val mult_left_commute = thm"mult_left_commute";
 val mult_left_zero = thm"mult_left_zero";
 val mult_right_zero = thm"mult_right_zero";
+val left_distrib = thm "left_distrib";
 val right_distrib = thm"right_distrib";
 val combine_common_factor = thm"combine_common_factor";
 val minus_add_distrib = thm"minus_add_distrib";
@@ -1536,6 +1550,7 @@
 val right_diff_distrib = thm"right_diff_distrib";
 val left_diff_distrib = thm"left_diff_distrib";
 val minus_diff_eq = thm"minus_diff_eq";
+val add_left_mono = thm"add_left_mono";
 val add_right_mono = thm"add_right_mono";
 val add_mono = thm"add_mono";
 val add_strict_left_mono = thm"add_strict_left_mono";
@@ -1579,6 +1594,7 @@
 val less_add_iff2 = thm"less_add_iff2";
 val le_add_iff1 = thm"le_add_iff1";
 val le_add_iff2 = thm"le_add_iff2";
+val mult_strict_left_mono = thm"mult_strict_left_mono";
 val mult_strict_right_mono = thm"mult_strict_right_mono";
 val mult_left_mono = thm"mult_left_mono";
 val mult_right_mono = thm"mult_right_mono";