isatool fixclasimp;
authorwenzelm
Mon Nov 03 12:13:18 1997 +0100 (1997-11-03)
changeset 408996fba19bcbe2
parent 4088 9be9e39fd862
child 4090 9f1eaab75e8c
isatool fixclasimp;
src/HOL/Arith.ML
src/HOL/Divides.ML
src/HOL/Finite.ML
src/HOL/Fun.ML
src/HOL/Hoare/Arith2.ML
src/HOL/Hoare/Examples.ML
src/HOL/Hoare/Hoare.ML
src/HOL/Hoare/List_Examples.ML
src/HOL/IMP/Denotation.ML
src/HOL/IMP/Expr.ML
src/HOL/IMP/Hoare.ML
src/HOL/IMP/Natural.ML
src/HOL/IMP/Transition.ML
src/HOL/IMP/VC.ML
src/HOL/IOA/Asig.ML
src/HOL/IOA/IOA.ML
src/HOL/IOA/Solve.ML
src/HOL/Induct/Acc.ML
src/HOL/Induct/Com.ML
src/HOL/Induct/Comb.ML
src/HOL/Induct/Exp.ML
src/HOL/Induct/LList.ML
src/HOL/Induct/Mutil.ML
src/HOL/Induct/Perm.ML
src/HOL/Induct/PropLog.ML
src/HOL/Induct/SList.ML
src/HOL/Induct/Simult.ML
src/HOL/Induct/Term.ML
src/HOL/Integ/Bin.ML
src/HOL/Integ/Equiv.ML
src/HOL/Integ/Group.ML
src/HOL/Integ/Integ.ML
src/HOL/Integ/Ring.ML
src/HOL/Lambda/Commutation.ML
src/HOL/Lambda/Eta.ML
src/HOL/Lambda/Lambda.ML
src/HOL/Lambda/ParRed.ML
src/HOL/Lex/Auto.ML
src/HOL/Lex/AutoChopper.ML
src/HOL/Lex/Prefix.ML
src/HOL/List.ML
src/HOL/Map.ML
src/HOL/MiniML/Generalize.ML
src/HOL/MiniML/Instance.ML
src/HOL/MiniML/Maybe.ML
src/HOL/MiniML/MiniML.ML
src/HOL/MiniML/Type.ML
src/HOL/MiniML/W.ML
src/HOL/Modelcheck/MCSyn.ML
src/HOL/NatDef.ML
src/HOL/Ord.ML
src/HOL/Power.ML
src/HOL/Prod.ML
src/HOL/Quot/FRACT.ML
src/HOL/Quot/PER0.ML
src/HOL/RelPow.ML
src/HOL/Relation.ML
src/HOL/Set.ML
src/HOL/Sexp.ML
src/HOL/Subst/Subst.ML
src/HOL/Subst/Unifier.ML
src/HOL/Subst/Unify.ML
src/HOL/Sum.ML
src/HOL/TLA/Action.ML
src/HOL/TLA/Buffer/Buffer.ML
src/HOL/TLA/Buffer/DBuffer.ML
src/HOL/TLA/Inc/Inc.ML
src/HOL/TLA/Intensional.ML
src/HOL/TLA/Memory/MIlive.ML
src/HOL/TLA/Memory/MIsafe.ML
src/HOL/TLA/Memory/MemClerk.ML
src/HOL/TLA/Memory/Memory.ML
src/HOL/TLA/Memory/MemoryImplementation.ML
src/HOL/TLA/Memory/ProcedureInterface.ML
src/HOL/TLA/Memory/RPC.ML
src/HOL/TLA/Stfun.ML
src/HOL/TLA/TLA.ML
src/HOL/TLA/cladata.ML
src/HOL/Trancl.ML
src/HOL/Univ.ML
src/HOL/W0/I.ML
src/HOL/W0/Maybe.ML
src/HOL/W0/MiniML.ML
src/HOL/W0/Type.ML
src/HOL/W0/W.ML
src/HOL/WF.ML
src/HOL/WF_Rel.ML
src/HOL/equalities.ML
src/HOL/ex/BT.ML
src/HOL/ex/Fib.ML
src/HOL/ex/InSort.ML
src/HOL/ex/MT.ML
src/HOL/ex/Primes.ML
src/HOL/ex/Primrec.ML
src/HOL/ex/Puzzle.ML
src/HOL/ex/Qsort.ML
src/HOL/ex/Recdef.ML
src/HOL/ex/Sorting.ML
src/HOL/ex/cla.ML
src/HOL/ex/meson.ML
src/HOL/ex/rel.ML
src/HOL/ex/set.ML
src/HOL/intr_elim.ML
src/HOL/mono.ML
     1.1 --- a/src/HOL/Arith.ML	Mon Nov 03 12:12:10 1997 +0100
     1.2 +++ b/src/HOL/Arith.ML	Mon Nov 03 12:13:18 1997 +0100
     1.3 @@ -35,7 +35,7 @@
     1.4  AddIffs [pred_le];
     1.5  
     1.6  goalw Arith.thy [pred_def] "m<=n --> pred(m) <= pred(n)";
     1.7 -by(simp_tac (!simpset addsplits [expand_nat_case]) 1);
     1.8 +by(simp_tac (simpset() addsplits [expand_nat_case]) 1);
     1.9  qed_spec_mp "pred_le_mono";
    1.10  
    1.11  goal Arith.thy "!!n. n ~= 0 ==> pred n < n";
    1.12 @@ -124,7 +124,7 @@
    1.13  
    1.14  goal Arith.thy "(pred (m+n) = 0) = (m=0 & pred n = 0 | pred m = 0 & n=0)";
    1.15  by (induct_tac "m" 1);
    1.16 -by (ALLGOALS (fast_tac (!claset addss (!simpset))));
    1.17 +by (ALLGOALS (fast_tac (claset() addss (simpset()))));
    1.18  qed "pred_add_is_0";
    1.19  Addsimps [pred_add_is_0];
    1.20  
    1.21 @@ -140,7 +140,7 @@
    1.22  goal Arith.thy "i<j --> (EX k. j = Suc(i+k))";
    1.23  by (induct_tac "j" 1);
    1.24  by (Simp_tac 1);
    1.25 -by (blast_tac (!claset addSEs [less_SucE] 
    1.26 +by (blast_tac (claset() addSEs [less_SucE] 
    1.27                         addSIs [add_0_right RS sym, add_Suc_right RS sym]) 1);
    1.28  val lemma = result();
    1.29  
    1.30 @@ -149,8 +149,8 @@
    1.31  
    1.32  goal Arith.thy "!!m. m<n --> (? k. n=Suc(m+k))";
    1.33  by (induct_tac "n" 1);
    1.34 -by (ALLGOALS (simp_tac (!simpset addsimps [less_Suc_eq])));
    1.35 -by (blast_tac (!claset addSEs [less_SucE] 
    1.36 +by (ALLGOALS (simp_tac (simpset() addsimps [less_Suc_eq])));
    1.37 +by (blast_tac (claset() addSEs [less_SucE] 
    1.38                         addSIs [add_0_right RS sym, add_Suc_right RS sym]) 1);
    1.39  qed_spec_mp "less_eq_Suc_add";
    1.40  
    1.41 @@ -162,7 +162,7 @@
    1.42  qed "le_add2";
    1.43  
    1.44  goal Arith.thy "n <= ((n + m)::nat)";
    1.45 -by (simp_tac (!simpset addsimps add_ac) 1);
    1.46 +by (simp_tac (simpset() addsimps add_ac) 1);
    1.47  by (rtac le_add2 1);
    1.48  qed "le_add1";
    1.49  
    1.50 @@ -185,7 +185,7 @@
    1.51  by (etac rev_mp 1);
    1.52  by (induct_tac "j" 1);
    1.53  by (ALLGOALS Asm_simp_tac);
    1.54 -by (blast_tac (!claset addDs [Suc_lessD]) 1);
    1.55 +by (blast_tac (claset() addDs [Suc_lessD]) 1);
    1.56  qed "add_lessD1";
    1.57  
    1.58  goal Arith.thy "!!i::nat. ~ (i+j < i)";
    1.59 @@ -194,7 +194,7 @@
    1.60  qed "not_add_less1";
    1.61  
    1.62  goal Arith.thy "!!i::nat. ~ (j+i < i)";
    1.63 -by (simp_tac (!simpset addsimps [add_commute, not_add_less1]) 1);
    1.64 +by (simp_tac (simpset() addsimps [add_commute, not_add_less1]) 1);
    1.65  qed "not_add_less2";
    1.66  AddIffs [not_add_less1, not_add_less2];
    1.67  
    1.68 @@ -211,25 +211,25 @@
    1.69  goal Arith.thy "m+k<=n --> m<=(n::nat)";
    1.70  by (induct_tac "k" 1);
    1.71  by (ALLGOALS Asm_simp_tac);
    1.72 -by (blast_tac (!claset addDs [Suc_leD]) 1);
    1.73 +by (blast_tac (claset() addDs [Suc_leD]) 1);
    1.74  qed_spec_mp "add_leD1";
    1.75  
    1.76  goal Arith.thy "!!n::nat. m+k<=n ==> k<=n";
    1.77 -by (full_simp_tac (!simpset addsimps [add_commute]) 1);
    1.78 +by (full_simp_tac (simpset() addsimps [add_commute]) 1);
    1.79  by (etac add_leD1 1);
    1.80  qed_spec_mp "add_leD2";
    1.81  
    1.82  goal Arith.thy "!!n::nat. m+k<=n ==> m<=n & k<=n";
    1.83 -by (blast_tac (!claset addDs [add_leD1, add_leD2]) 1);
    1.84 +by (blast_tac (claset() addDs [add_leD1, add_leD2]) 1);
    1.85  bind_thm ("add_leE", result() RS conjE);
    1.86  
    1.87  goal Arith.thy "!!k l::nat. [| k<l; m+l = k+n |] ==> m<n";
    1.88 -by (safe_tac (!claset addSDs [less_eq_Suc_add]));
    1.89 +by (safe_tac (claset() addSDs [less_eq_Suc_add]));
    1.90  by (asm_full_simp_tac
    1.91 -    (!simpset delsimps [add_Suc_right]
    1.92 +    (simpset() delsimps [add_Suc_right]
    1.93                  addsimps ([add_Suc_right RS sym, add_left_cancel] @add_ac)) 1);
    1.94  by (etac subst 1);
    1.95 -by (simp_tac (!simpset addsimps [less_add_Suc1]) 1);
    1.96 +by (simp_tac (simpset() addsimps [less_add_Suc1]) 1);
    1.97  qed "less_add_eq_less";
    1.98  
    1.99  
   1.100 @@ -255,8 +255,8 @@
   1.101  \        i <= j                                 \
   1.102  \     |] ==> f(i) <= (f(j)::nat)";
   1.103  by (cut_facts_tac [le] 1);
   1.104 -by (asm_full_simp_tac (!simpset addsimps [le_eq_less_or_eq]) 1);
   1.105 -by (blast_tac (!claset addSIs [lt_mono]) 1);
   1.106 +by (asm_full_simp_tac (simpset() addsimps [le_eq_less_or_eq]) 1);
   1.107 +by (blast_tac (claset() addSIs [lt_mono]) 1);
   1.108  qed "less_mono_imp_le_mono";
   1.109  
   1.110  (*non-strict, in 1st argument*)
   1.111 @@ -269,7 +269,7 @@
   1.112  (*non-strict, in both arguments*)
   1.113  goal Arith.thy "!!k l::nat. [|i<=j;  k<=l |] ==> i + k <= j + l";
   1.114  by (etac (add_le_mono1 RS le_trans) 1);
   1.115 -by (simp_tac (!simpset addsimps [add_commute]) 1);
   1.116 +by (simp_tac (simpset() addsimps [add_commute]) 1);
   1.117  (*j moves to the end because it is free while k, l are bound*)
   1.118  by (etac add_le_mono1 1);
   1.119  qed "add_le_mono";
   1.120 @@ -284,7 +284,7 @@
   1.121  (*right successor law for multiplication*)
   1.122  qed_goal "mult_Suc_right" Arith.thy  "m * Suc(n) = m + (m * n)"
   1.123   (fn _ => [induct_tac "m" 1,
   1.124 -           ALLGOALS(asm_simp_tac (!simpset addsimps add_ac))]);
   1.125 +           ALLGOALS(asm_simp_tac (simpset() addsimps add_ac))]);
   1.126  
   1.127  Addsimps [mult_0_right, mult_Suc_right];
   1.128  
   1.129 @@ -303,16 +303,16 @@
   1.130  (*addition distributes over multiplication*)
   1.131  qed_goal "add_mult_distrib" Arith.thy "(m + n)*k = (m*k) + ((n*k)::nat)"
   1.132   (fn _ => [induct_tac "m" 1,
   1.133 -           ALLGOALS(asm_simp_tac (!simpset addsimps add_ac))]);
   1.134 +           ALLGOALS(asm_simp_tac (simpset() addsimps add_ac))]);
   1.135  
   1.136  qed_goal "add_mult_distrib2" Arith.thy "k*(m + n) = (k*m) + ((k*n)::nat)"
   1.137   (fn _ => [induct_tac "m" 1,
   1.138 -           ALLGOALS(asm_simp_tac (!simpset addsimps add_ac))]);
   1.139 +           ALLGOALS(asm_simp_tac (simpset() addsimps add_ac))]);
   1.140  
   1.141  (*Associative law for multiplication*)
   1.142  qed_goal "mult_assoc" Arith.thy "(m * n) * k = m * ((n * k)::nat)"
   1.143    (fn _ => [induct_tac "m" 1, 
   1.144 -            ALLGOALS (asm_simp_tac (!simpset addsimps [add_mult_distrib]))]);
   1.145 +            ALLGOALS (asm_simp_tac (simpset() addsimps [add_mult_distrib]))]);
   1.146  
   1.147  qed_goal "mult_left_commute" Arith.thy "x*(y*z) = y*((x*z)::nat)"
   1.148   (fn _ => [rtac trans 1, rtac mult_commute 1, rtac trans 1,
   1.149 @@ -345,11 +345,11 @@
   1.150  qed_spec_mp "add_diff_inverse";
   1.151  
   1.152  goal Arith.thy "!!m. n<=m ==> n+(m-n) = (m::nat)";
   1.153 -by (asm_simp_tac (!simpset addsimps [add_diff_inverse, not_less_iff_le]) 1);
   1.154 +by (asm_simp_tac (simpset() addsimps [add_diff_inverse, not_less_iff_le]) 1);
   1.155  qed "le_add_diff_inverse";
   1.156  
   1.157  goal Arith.thy "!!m. n<=m ==> (m-n)+n = (m::nat)";
   1.158 -by (asm_simp_tac (!simpset addsimps [le_add_diff_inverse, add_commute]) 1);
   1.159 +by (asm_simp_tac (simpset() addsimps [le_add_diff_inverse, add_commute]) 1);
   1.160  qed "le_add_diff_inverse2";
   1.161  
   1.162  Addsimps  [le_add_diff_inverse, le_add_diff_inverse2];
   1.163 @@ -367,7 +367,7 @@
   1.164  goal Arith.thy "m - n < Suc(m)";
   1.165  by (res_inst_tac [("m","m"),("n","n")] diff_induct 1);
   1.166  by (etac less_SucE 3);
   1.167 -by (ALLGOALS (asm_simp_tac (!simpset addsimps [less_Suc_eq])));
   1.168 +by (ALLGOALS (asm_simp_tac (simpset() addsimps [less_Suc_eq])));
   1.169  qed "diff_less_Suc";
   1.170  
   1.171  goal Arith.thy "!!m::nat. m - n <= m";
   1.172 @@ -383,14 +383,14 @@
   1.173  
   1.174  (*This and the next few suggested by Florian Kammueller*)
   1.175  goal Arith.thy "!!i::nat. i-j-k = i-k-j";
   1.176 -by (simp_tac (!simpset addsimps [diff_diff_left, add_commute]) 1);
   1.177 +by (simp_tac (simpset() addsimps [diff_diff_left, add_commute]) 1);
   1.178  qed "diff_commute";
   1.179  
   1.180  goal Arith.thy "!!i j k:: nat. k<=j --> j<=i --> i - (j - k) = i - j + k";
   1.181  by (res_inst_tac [("m","i"),("n","j")] diff_induct 1);
   1.182  by (ALLGOALS Asm_simp_tac);
   1.183  by (asm_simp_tac
   1.184 -    (!simpset addsimps [Suc_diff_n, le_imp_less_Suc, le_Suc_eq]) 1);
   1.185 +    (simpset() addsimps [Suc_diff_n, le_imp_less_Suc, le_Suc_eq]) 1);
   1.186  qed_spec_mp "diff_diff_right";
   1.187  
   1.188  goal Arith.thy "!!i j k:: nat. k<=j --> (i + j) - k = i + (j - k)";
   1.189 @@ -405,7 +405,7 @@
   1.190  Addsimps [diff_add_inverse];
   1.191  
   1.192  goal Arith.thy "!!n::nat.(m+n) - n = m";
   1.193 -by (simp_tac (!simpset addsimps [diff_add_assoc]) 1);
   1.194 +by (simp_tac (simpset() addsimps [diff_add_assoc]) 1);
   1.195  qed "diff_add_inverse2";
   1.196  Addsimps [diff_add_inverse2];
   1.197  
   1.198 @@ -417,7 +417,7 @@
   1.199  val [prem] = goal Arith.thy "m < Suc(n) ==> m-n = 0";
   1.200  by (rtac (prem RS rev_mp) 1);
   1.201  by (res_inst_tac [("m","m"),("n","n")] diff_induct 1);
   1.202 -by (asm_simp_tac (!simpset addsimps [less_Suc_eq]) 1);
   1.203 +by (asm_simp_tac (simpset() addsimps [less_Suc_eq]) 1);
   1.204  by (ALLGOALS Asm_simp_tac);
   1.205  qed "less_imp_diff_is_0";
   1.206  
   1.207 @@ -433,7 +433,7 @@
   1.208  qed "less_imp_diff_positive";
   1.209  
   1.210  goal Arith.thy "Suc(m)-n = (if m<n then 0 else Suc(m-n))";
   1.211 -by (simp_tac (!simpset addsimps [less_imp_diff_is_0, not_less_eq, Suc_diff_n]
   1.212 +by (simp_tac (simpset() addsimps [less_imp_diff_is_0, not_less_eq, Suc_diff_n]
   1.213                         addsplits [expand_if]) 1);
   1.214  qed "if_Suc_diff_n";
   1.215  
   1.216 @@ -456,7 +456,7 @@
   1.217  
   1.218  goal Arith.thy "!!m::nat. (m+k) - (n+k) = m - n";
   1.219  val add_commute_k = read_instantiate [("n","k")] add_commute;
   1.220 -by (asm_simp_tac (!simpset addsimps ([add_commute_k])) 1);
   1.221 +by (asm_simp_tac (simpset() addsimps ([add_commute_k])) 1);
   1.222  qed "diff_cancel2";
   1.223  Addsimps [diff_cancel2];
   1.224  
   1.225 @@ -470,9 +470,9 @@
   1.226  by (subgoal_tac "Suc na <= m --> n <= m --> Suc na <= n --> \
   1.227  \                Suc (m - Suc na) - Suc (n - Suc na) = m-n" 1);
   1.228  by (Asm_full_simp_tac 1);
   1.229 -by (blast_tac (!claset addIs [le_trans]) 1);
   1.230 -by (auto_tac (!claset addIs [Suc_leD], !simpset delsimps [diff_Suc_Suc]));
   1.231 -by (asm_full_simp_tac (!simpset delsimps [Suc_less_eq] 
   1.232 +by (blast_tac (claset() addIs [le_trans]) 1);
   1.233 +by (auto_tac (claset() addIs [Suc_leD], simpset() delsimps [diff_Suc_Suc]));
   1.234 +by (asm_full_simp_tac (simpset() delsimps [Suc_less_eq] 
   1.235  		       addsimps [Suc_diff_n RS sym, le_eq_less_Suc]) 1);
   1.236  qed "diff_right_cancel";
   1.237  
   1.238 @@ -491,7 +491,7 @@
   1.239  
   1.240  goal Arith.thy "!!m::nat. k * (m - n) = (k * m) - (k * n)";
   1.241  val mult_commute_k = read_instantiate [("m","k")] mult_commute;
   1.242 -by (simp_tac (!simpset addsimps [diff_mult_distrib, mult_commute_k]) 1);
   1.243 +by (simp_tac (simpset() addsimps [diff_mult_distrib, mult_commute_k]) 1);
   1.244  qed "diff_mult_distrib2" ;
   1.245  (*NOT added as rewrites, since sometimes they are used from right-to-left*)
   1.246  
   1.247 @@ -500,7 +500,7 @@
   1.248  
   1.249  goal Arith.thy "!!i::nat. i<=j ==> i*k<=j*k";
   1.250  by (induct_tac "k" 1);
   1.251 -by (ALLGOALS (asm_simp_tac (!simpset addsimps [add_le_mono])));
   1.252 +by (ALLGOALS (asm_simp_tac (simpset() addsimps [add_le_mono])));
   1.253  qed "mult_le_mono1";
   1.254  
   1.255  (*<=monotonicity, BOTH arguments*)
   1.256 @@ -509,7 +509,7 @@
   1.257  by (rtac le_trans 1);
   1.258  by (stac mult_commute 2);
   1.259  by (etac mult_le_mono1 2);
   1.260 -by (simp_tac (!simpset addsimps [mult_commute]) 1);
   1.261 +by (simp_tac (simpset() addsimps [mult_commute]) 1);
   1.262  qed "mult_le_mono";
   1.263  
   1.264  (*strict, in 1st argument; proof is by induction on k>0*)
   1.265 @@ -517,12 +517,12 @@
   1.266  by (eres_inst_tac [("i","0")] less_natE 1);
   1.267  by (Asm_simp_tac 1);
   1.268  by (induct_tac "x" 1);
   1.269 -by (ALLGOALS (asm_simp_tac (!simpset addsimps [add_less_mono])));
   1.270 +by (ALLGOALS (asm_simp_tac (simpset() addsimps [add_less_mono])));
   1.271  qed "mult_less_mono2";
   1.272  
   1.273  goal Arith.thy "!!i::nat. [| i<j; 0<k |] ==> i*k < j*k";
   1.274  by (dtac mult_less_mono2 1);
   1.275 -by (ALLGOALS (asm_full_simp_tac (!simpset addsimps [mult_commute])));
   1.276 +by (ALLGOALS (asm_full_simp_tac (simpset() addsimps [mult_commute])));
   1.277  qed "mult_less_mono1";
   1.278  
   1.279  goal Arith.thy "(0 < m*n) = (0<m & 0<n)";
   1.280 @@ -536,18 +536,18 @@
   1.281  by (Simp_tac 1);
   1.282  by (induct_tac "n" 1);
   1.283  by (Simp_tac 1);
   1.284 -by (fast_tac (!claset addss !simpset) 1);
   1.285 +by (fast_tac (claset() addss simpset()) 1);
   1.286  qed "mult_eq_1_iff";
   1.287  
   1.288  goal Arith.thy "!!k. 0<k ==> (m*k < n*k) = (m<n)";
   1.289 -by (safe_tac (!claset addSIs [mult_less_mono1]));
   1.290 +by (safe_tac (claset() addSIs [mult_less_mono1]));
   1.291  by (cut_facts_tac [less_linear] 1);
   1.292 -by (blast_tac (!claset addDs [mult_less_mono1] addEs [less_asym]) 1);
   1.293 +by (blast_tac (claset() addDs [mult_less_mono1] addEs [less_asym]) 1);
   1.294  qed "mult_less_cancel2";
   1.295  
   1.296  goal Arith.thy "!!k. 0<k ==> (k*m < k*n) = (m<n)";
   1.297  by (dtac mult_less_cancel2 1);
   1.298 -by (asm_full_simp_tac (!simpset addsimps [mult_commute]) 1);
   1.299 +by (asm_full_simp_tac (simpset() addsimps [mult_commute]) 1);
   1.300  qed "mult_less_cancel1";
   1.301  Addsimps [mult_less_cancel1, mult_less_cancel2];
   1.302  
   1.303 @@ -561,7 +561,7 @@
   1.304  
   1.305  goal Arith.thy "!!k. 0<k ==> (k*m = k*n) = (m=n)";
   1.306  by (dtac mult_cancel2 1);
   1.307 -by (asm_full_simp_tac (!simpset addsimps [mult_commute]) 1);
   1.308 +by (asm_full_simp_tac (simpset() addsimps [mult_commute]) 1);
   1.309  qed "mult_cancel1";
   1.310  Addsimps [mult_cancel1, mult_cancel2];
   1.311  
   1.312 @@ -572,9 +572,9 @@
   1.313  by (dtac sym 1);
   1.314  by (rtac disjCI 1);
   1.315  by (rtac nat_less_cases 1 THEN assume_tac 2);
   1.316 -by (fast_tac (!claset addSEs [less_SucE] addss !simpset) 1);
   1.317 -by (best_tac (!claset addDs [mult_less_mono2] 
   1.318 -                      addss (!simpset addsimps [zero_less_eq RS sym])) 1);
   1.319 +by (fast_tac (claset() addSEs [less_SucE] addss simpset()) 1);
   1.320 +by (best_tac (claset() addDs [mult_less_mono2] 
   1.321 +                      addss (simpset() addsimps [zero_less_eq RS sym])) 1);
   1.322  qed "mult_eq_self_implies_10";
   1.323  
   1.324  
   1.325 @@ -584,7 +584,7 @@
   1.326  by (subgoal_tac "c+(a-c) < c+(b-c)" 1);
   1.327  by (Full_simp_tac 1);
   1.328  by (subgoal_tac "c <= b" 1);
   1.329 -by (blast_tac (!claset addIs [less_imp_le, le_trans]) 2);
   1.330 +by (blast_tac (claset() addIs [less_imp_le, le_trans]) 2);
   1.331  by (Asm_simp_tac 1);
   1.332  qed "diff_less_mono";
   1.333  
   1.334 @@ -596,18 +596,18 @@
   1.335  
   1.336  goal Arith.thy "!! n. n <= m ==> Suc m - n = Suc (m - n)";
   1.337  by (rtac Suc_diff_n 1);
   1.338 -by (asm_full_simp_tac (!simpset addsimps [le_eq_less_Suc]) 1);
   1.339 +by (asm_full_simp_tac (simpset() addsimps [le_eq_less_Suc]) 1);
   1.340  qed "Suc_diff_le";
   1.341  
   1.342  goal Arith.thy "!! n. Suc i <= n ==> Suc (n - Suc i) = n - i";
   1.343  by (asm_full_simp_tac
   1.344 -    (!simpset addsimps [Suc_diff_n RS sym, le_eq_less_Suc]) 1);
   1.345 +    (simpset() addsimps [Suc_diff_n RS sym, le_eq_less_Suc]) 1);
   1.346  qed "Suc_diff_Suc";
   1.347  
   1.348  goal Arith.thy "!! i::nat. i <= n ==> n - (n - i) = i";
   1.349  by (etac rev_mp 1);
   1.350  by (res_inst_tac [("m","n"),("n","i")] diff_induct 1);
   1.351 -by (ALLGOALS (asm_simp_tac  (!simpset addsimps [Suc_diff_le])));
   1.352 +by (ALLGOALS (asm_simp_tac  (simpset() addsimps [Suc_diff_le])));
   1.353  qed "diff_diff_cancel";
   1.354  Addsimps [diff_diff_cancel];
   1.355  
   1.356 @@ -615,7 +615,7 @@
   1.357  by (etac rev_mp 1);
   1.358  by (res_inst_tac [("m", "k"), ("n", "n")] diff_induct 1);
   1.359  by (Simp_tac 1);
   1.360 -by (simp_tac (!simpset addsimps [less_add_Suc2, less_imp_le]) 1);
   1.361 +by (simp_tac (simpset() addsimps [less_add_Suc2, less_imp_le]) 1);
   1.362  by (Simp_tac 1);
   1.363  qed "le_add_diff";
   1.364  
   1.365 @@ -626,7 +626,7 @@
   1.366  goal Arith.thy "!!n::nat. m<=n --> (m-l) <= (n-l)";
   1.367  by (induct_tac "n" 1);
   1.368  by (Simp_tac 1);
   1.369 -by (simp_tac (!simpset addsimps [le_Suc_eq]) 1);
   1.370 +by (simp_tac (simpset() addsimps [le_Suc_eq]) 1);
   1.371  by (rtac impI 1);
   1.372  by (etac impE 1);
   1.373  by (atac 1);
   1.374 @@ -640,8 +640,8 @@
   1.375  by (Simp_tac 1);
   1.376  by (case_tac "n <= l" 1);
   1.377  by (subgoal_tac "m <= l" 1);
   1.378 -by (asm_simp_tac (!simpset addsimps [Suc_diff_le]) 1);
   1.379 -by (fast_tac (!claset addEs [le_trans]) 1);
   1.380 +by (asm_simp_tac (simpset() addsimps [Suc_diff_le]) 1);
   1.381 +by (fast_tac (claset() addEs [le_trans]) 1);
   1.382  by (dtac not_leE 1);
   1.383 -by (asm_simp_tac (!simpset addsimps [if_Suc_diff_n]) 1);
   1.384 +by (asm_simp_tac (simpset() addsimps [if_Suc_diff_n]) 1);
   1.385  qed_spec_mp "diff_le_mono2";
     2.1 --- a/src/HOL/Divides.ML	Mon Nov 03 12:12:10 1997 +0100
     2.2 +++ b/src/HOL/Divides.ML	Mon Nov 03 12:13:18 1997 +0100
     2.3 @@ -14,7 +14,7 @@
     2.4  by (subgoal_tac "0<n --> ~ m<n --> m - n < m" 1);
     2.5  by (Blast_tac 1);
     2.6  by (res_inst_tac [("m","m"),("n","n")] diff_induct 1);
     2.7 -by (ALLGOALS(asm_simp_tac(!simpset addsimps [diff_less_Suc])));
     2.8 +by (ALLGOALS(asm_simp_tac(simpset() addsimps [diff_less_Suc])));
     2.9  qed "diff_less";
    2.10  
    2.11  val wf_less_trans = [eq_reflection, wf_pred_nat RS wf_trancl] MRS 
    2.12 @@ -24,7 +24,7 @@
    2.13  
    2.14  goal thy "(%m. m mod n) = wfrec (trancl pred_nat) \
    2.15               \                      (%f j. if j<n then j else f (j-n))";
    2.16 -by (simp_tac (!simpset addsimps [mod_def]) 1);
    2.17 +by (simp_tac (simpset() addsimps [mod_def]) 1);
    2.18  qed "mod_eq";
    2.19  
    2.20  goal thy "!!m. m<n ==> m mod n = m";
    2.21 @@ -34,32 +34,32 @@
    2.22  
    2.23  goal thy "!!m. [| 0<n;  ~m<n |] ==> m mod n = (m-n) mod n";
    2.24  by (rtac (mod_eq RS wf_less_trans) 1);
    2.25 -by (asm_simp_tac (!simpset addsimps [diff_less, cut_apply, less_eq]) 1);
    2.26 +by (asm_simp_tac (simpset() addsimps [diff_less, cut_apply, less_eq]) 1);
    2.27  qed "mod_geq";
    2.28  
    2.29  goal thy "m mod 1 = 0";
    2.30  by (induct_tac "m" 1);
    2.31 -by (ALLGOALS (asm_simp_tac (!simpset addsimps [mod_less, mod_geq])));
    2.32 +by (ALLGOALS (asm_simp_tac (simpset() addsimps [mod_less, mod_geq])));
    2.33  qed "mod_1";
    2.34  Addsimps [mod_1];
    2.35  
    2.36  goal thy "!!n. 0<n ==> n mod n = 0";
    2.37 -by (asm_simp_tac (!simpset addsimps [mod_less, mod_geq]) 1);
    2.38 +by (asm_simp_tac (simpset() addsimps [mod_less, mod_geq]) 1);
    2.39  qed "mod_self";
    2.40  
    2.41  goal thy "!!n. 0<n ==> (m+n) mod n = m mod n";
    2.42  by (subgoal_tac "(n + m) mod n = (n+m-n) mod n" 1);
    2.43  by (stac (mod_geq RS sym) 2);
    2.44 -by (ALLGOALS (asm_full_simp_tac (!simpset addsimps [add_commute])));
    2.45 +by (ALLGOALS (asm_full_simp_tac (simpset() addsimps [add_commute])));
    2.46  qed "mod_eq_add";
    2.47  
    2.48  goal thy "!!k. [| 0<k; 0<n |] ==> (m mod n)*k = (m*k) mod (n*k)";
    2.49  by (res_inst_tac [("n","m")] less_induct 1);
    2.50  by (case_tac "na<n" 1);
    2.51  (*case na<n*)
    2.52 -by (asm_simp_tac (!simpset addsimps [mod_less]) 1);
    2.53 +by (asm_simp_tac (simpset() addsimps [mod_less]) 1);
    2.54  (*case n<=na*)
    2.55 -by (asm_simp_tac (!simpset addsimps [mod_geq, diff_less, zero_less_mult_iff, 
    2.56 +by (asm_simp_tac (simpset() addsimps [mod_geq, diff_less, zero_less_mult_iff, 
    2.57  				     diff_mult_distrib]) 1);
    2.58  qed "mod_mult_distrib";
    2.59  
    2.60 @@ -67,17 +67,17 @@
    2.61  by (res_inst_tac [("n","m")] less_induct 1);
    2.62  by (case_tac "na<n" 1);
    2.63  (*case na<n*)
    2.64 -by (asm_simp_tac (!simpset addsimps [mod_less]) 1);
    2.65 +by (asm_simp_tac (simpset() addsimps [mod_less]) 1);
    2.66  (*case n<=na*)
    2.67 -by (asm_simp_tac (!simpset addsimps [mod_geq, diff_less, zero_less_mult_iff, 
    2.68 +by (asm_simp_tac (simpset() addsimps [mod_geq, diff_less, zero_less_mult_iff, 
    2.69  				     diff_mult_distrib2]) 1);
    2.70  qed "mod_mult_distrib2";
    2.71  
    2.72  goal thy "!!n. 0<n ==> m*n mod n = 0";
    2.73  by (induct_tac "m" 1);
    2.74 -by (asm_simp_tac (!simpset addsimps [mod_less]) 1);
    2.75 +by (asm_simp_tac (simpset() addsimps [mod_less]) 1);
    2.76  by (dres_inst_tac [("m","m*n")] mod_eq_add 1);
    2.77 -by (asm_full_simp_tac (!simpset addsimps [add_commute]) 1);
    2.78 +by (asm_full_simp_tac (simpset() addsimps [add_commute]) 1);
    2.79  qed "mod_mult_self_is_0";
    2.80  Addsimps [mod_mult_self_is_0];
    2.81  
    2.82 @@ -85,7 +85,7 @@
    2.83  
    2.84  goal thy "(%m. m div n) = wfrec (trancl pred_nat) \
    2.85                          \            (%f j. if j<n then 0 else Suc (f (j-n)))";
    2.86 -by (simp_tac (!simpset addsimps [div_def]) 1);
    2.87 +by (simp_tac (simpset() addsimps [div_def]) 1);
    2.88  qed "div_eq";
    2.89  
    2.90  goal thy "!!m. m<n ==> m div n = 0";
    2.91 @@ -95,7 +95,7 @@
    2.92  
    2.93  goal thy "!!M. [| 0<n;  ~m<n |] ==> m div n = Suc((m-n) div n)";
    2.94  by (rtac (div_eq RS wf_less_trans) 1);
    2.95 -by (asm_simp_tac (!simpset addsimps [diff_less, cut_apply, less_eq]) 1);
    2.96 +by (asm_simp_tac (simpset() addsimps [diff_less, cut_apply, less_eq]) 1);
    2.97  qed "div_geq";
    2.98  
    2.99  (*Main Result about quotient and remainder.*)
   2.100 @@ -103,19 +103,19 @@
   2.101  by (res_inst_tac [("n","m")] less_induct 1);
   2.102  by (rename_tac "k" 1);    (*Variable name used in line below*)
   2.103  by (case_tac "k<n" 1);
   2.104 -by (ALLGOALS (asm_simp_tac(!simpset addsimps ([add_assoc] @
   2.105 +by (ALLGOALS (asm_simp_tac(simpset() addsimps ([add_assoc] @
   2.106                         [mod_less, mod_geq, div_less, div_geq,
   2.107                          add_diff_inverse, diff_less]))));
   2.108  qed "mod_div_equality";
   2.109  
   2.110  goal thy "m div 1 = m";
   2.111  by (induct_tac "m" 1);
   2.112 -by (ALLGOALS (asm_simp_tac (!simpset addsimps [div_less, div_geq])));
   2.113 +by (ALLGOALS (asm_simp_tac (simpset() addsimps [div_less, div_geq])));
   2.114  qed "div_1";
   2.115  Addsimps [div_1];
   2.116  
   2.117  goal thy "!!n. 0<n ==> n div n = 1";
   2.118 -by (asm_simp_tac (!simpset addsimps [div_less, div_geq]) 1);
   2.119 +by (asm_simp_tac (simpset() addsimps [div_less, div_geq]) 1);
   2.120  qed "div_self";
   2.121  
   2.122  (* Monotonicity of div in first argument *)
   2.123 @@ -125,14 +125,14 @@
   2.124  by (case_tac "na<k" 1);
   2.125  (* 1  case n<k *)
   2.126  by (subgoal_tac "m<k" 1);
   2.127 -by (asm_simp_tac (!simpset addsimps [div_less]) 1);
   2.128 +by (asm_simp_tac (simpset() addsimps [div_less]) 1);
   2.129  by (trans_tac 1);
   2.130  (* 2  case n >= k *)
   2.131  by (case_tac "m<k" 1);
   2.132  (* 2.1  case m<k *)
   2.133 -by (asm_simp_tac (!simpset addsimps [div_less]) 1);
   2.134 +by (asm_simp_tac (simpset() addsimps [div_less]) 1);
   2.135  (* 2.2  case m>=k *)
   2.136 -by (asm_simp_tac (!simpset addsimps [div_geq, diff_less, diff_le_mono]) 1);
   2.137 +by (asm_simp_tac (simpset() addsimps [div_geq, diff_less, diff_le_mono]) 1);
   2.138  qed_spec_mp "div_le_mono";
   2.139  
   2.140  
   2.141 @@ -144,13 +144,13 @@
   2.142  by (Simp_tac 1);
   2.143  by (rename_tac "k" 1);
   2.144  by (case_tac "k<n" 1);
   2.145 - by (asm_simp_tac (!simpset addsimps [div_less]) 1);
   2.146 + by (asm_simp_tac (simpset() addsimps [div_less]) 1);
   2.147  by (subgoal_tac "~(k<m)" 1);
   2.148   by (trans_tac 2);
   2.149 -by (asm_simp_tac (!simpset addsimps [div_geq]) 1);
   2.150 +by (asm_simp_tac (simpset() addsimps [div_geq]) 1);
   2.151  by (subgoal_tac "(k-n) div n <= (k-m) div n" 1);
   2.152 - by (best_tac (!claset addIs [le_trans] 
   2.153 -                       addss (!simpset addsimps [diff_less])) 1);
   2.154 + by (best_tac (claset() addIs [le_trans] 
   2.155 +                       addss (simpset() addsimps [diff_less])) 1);
   2.156  by (REPEAT (eresolve_tac [div_le_mono,diff_le_mono2] 1));
   2.157  qed "div_le_mono2";
   2.158  
   2.159 @@ -168,20 +168,20 @@
   2.160  by (Simp_tac 1);
   2.161  by (rename_tac "m" 1);
   2.162  by (case_tac "m<n" 1);
   2.163 - by (asm_full_simp_tac (!simpset addsimps [div_less]) 1);
   2.164 + by (asm_full_simp_tac (simpset() addsimps [div_less]) 1);
   2.165  by (subgoal_tac "0<n" 1);
   2.166   by (trans_tac 2);
   2.167 -by (asm_full_simp_tac (!simpset addsimps [div_geq]) 1);
   2.168 +by (asm_full_simp_tac (simpset() addsimps [div_geq]) 1);
   2.169  by (case_tac "n<m" 1);
   2.170   by (subgoal_tac "(m-n) div n < (m-n)" 1);
   2.171    by (REPEAT (ares_tac [impI,less_trans_Suc] 1));
   2.172 -  by (asm_full_simp_tac (!simpset addsimps [diff_less]) 1);
   2.173 +  by (asm_full_simp_tac (simpset() addsimps [diff_less]) 1);
   2.174   by (dres_inst_tac [("m","n")] less_imp_diff_positive 1);
   2.175 - by (asm_full_simp_tac (!simpset addsimps [diff_less]) 1);
   2.176 + by (asm_full_simp_tac (simpset() addsimps [diff_less]) 1);
   2.177  (* case n=m *)
   2.178  by (subgoal_tac "m=n" 1);
   2.179   by (trans_tac 2);
   2.180 -by (asm_simp_tac (!simpset addsimps [div_less]) 1);
   2.181 +by (asm_simp_tac (simpset() addsimps [div_less]) 1);
   2.182  qed_spec_mp "div_less_dividend";
   2.183  Addsimps [div_less_dividend];
   2.184  
   2.185 @@ -194,23 +194,23 @@
   2.186  by (excluded_middle_tac "Suc(na)<n" 1);
   2.187  (* case Suc(na) < n *)
   2.188  by (forward_tac [lessI RS less_trans] 2);
   2.189 -by (asm_simp_tac (!simpset addsimps [mod_less, less_not_refl2 RS not_sym]) 2);
   2.190 +by (asm_simp_tac (simpset() addsimps [mod_less, less_not_refl2 RS not_sym]) 2);
   2.191  (* case n <= Suc(na) *)
   2.192 -by (asm_full_simp_tac (!simpset addsimps [not_less_iff_le, mod_geq]) 1);
   2.193 +by (asm_full_simp_tac (simpset() addsimps [not_less_iff_le, mod_geq]) 1);
   2.194  by (etac (le_imp_less_or_eq RS disjE) 1);
   2.195 -by (asm_simp_tac (!simpset addsimps [Suc_diff_n]) 1);
   2.196 -by (asm_full_simp_tac (!simpset addsimps [not_less_eq RS sym, 
   2.197 +by (asm_simp_tac (simpset() addsimps [Suc_diff_n]) 1);
   2.198 +by (asm_full_simp_tac (simpset() addsimps [not_less_eq RS sym, 
   2.199                                            diff_less, mod_geq]) 1);
   2.200 -by (asm_simp_tac (!simpset addsimps [mod_less]) 1);
   2.201 +by (asm_simp_tac (simpset() addsimps [mod_less]) 1);
   2.202  qed "mod_Suc";
   2.203  
   2.204  goal thy "!!m n. 0<n ==> m mod n < n";
   2.205  by (res_inst_tac [("n","m")] less_induct 1);
   2.206  by (excluded_middle_tac "na<n" 1);
   2.207  (*case na<n*)
   2.208 -by (asm_simp_tac (!simpset addsimps [mod_less]) 2);
   2.209 +by (asm_simp_tac (simpset() addsimps [mod_less]) 2);
   2.210  (*case n le na*)
   2.211 -by (asm_full_simp_tac (!simpset addsimps [mod_geq, diff_less]) 1);
   2.212 +by (asm_full_simp_tac (simpset() addsimps [mod_geq, diff_less]) 1);
   2.213  qed "mod_less_divisor";
   2.214  
   2.215  
   2.216 @@ -221,29 +221,29 @@
   2.217  
   2.218  goal thy "!!k b. b<2 ==> k mod 2 = b | k mod 2 = (if b=1 then 0 else 1)";
   2.219  by (subgoal_tac "k mod 2 < 2" 1);
   2.220 -by (asm_simp_tac (!simpset addsimps [mod_less_divisor]) 2);
   2.221 -by (asm_simp_tac (!simpset addsplits [expand_if]) 1);
   2.222 +by (asm_simp_tac (simpset() addsimps [mod_less_divisor]) 2);
   2.223 +by (asm_simp_tac (simpset() addsplits [expand_if]) 1);
   2.224  by (Blast_tac 1);
   2.225  qed "mod2_cases";
   2.226  
   2.227  goal thy "Suc(Suc(m)) mod 2 = m mod 2";
   2.228  by (subgoal_tac "m mod 2 < 2" 1);
   2.229 -by (asm_simp_tac (!simpset addsimps [mod_less_divisor]) 2);
   2.230 +by (asm_simp_tac (simpset() addsimps [mod_less_divisor]) 2);
   2.231  by Safe_tac;
   2.232 -by (ALLGOALS (asm_simp_tac (!simpset addsimps [mod_Suc])));
   2.233 +by (ALLGOALS (asm_simp_tac (simpset() addsimps [mod_Suc])));
   2.234  qed "mod2_Suc_Suc";
   2.235  Addsimps [mod2_Suc_Suc];
   2.236  
   2.237  goal thy "!!m. m mod 2 ~= 0 ==> m mod 2 = 1";
   2.238  by (subgoal_tac "m mod 2 < 2" 1);
   2.239 -by (asm_simp_tac (!simpset addsimps [mod_less_divisor]) 2);
   2.240 -by (safe_tac (!claset addSEs [lessE]));
   2.241 -by (ALLGOALS (blast_tac (!claset addIs [sym])));
   2.242 +by (asm_simp_tac (simpset() addsimps [mod_less_divisor]) 2);
   2.243 +by (safe_tac (claset() addSEs [lessE]));
   2.244 +by (ALLGOALS (blast_tac (claset() addIs [sym])));
   2.245  qed "mod2_neq_0";
   2.246  
   2.247  goal thy "(m+m) mod 2 = 0";
   2.248  by (induct_tac "m" 1);
   2.249 -by (simp_tac (!simpset addsimps [mod_less]) 1);
   2.250 +by (simp_tac (simpset() addsimps [mod_less]) 1);
   2.251  by (Asm_simp_tac 1);
   2.252  qed "mod2_add_self";
   2.253  Addsimps [mod2_add_self];
   2.254 @@ -256,7 +256,7 @@
   2.255  goal thy "!!n. 0<n ==> m*n div n = m";
   2.256  by (cut_inst_tac [("m", "m*n")] mod_div_equality 1);
   2.257  by (assume_tac 1);
   2.258 -by (asm_full_simp_tac (!simpset addsimps [mod_mult_self_is_0]) 1);
   2.259 +by (asm_full_simp_tac (simpset() addsimps [mod_mult_self_is_0]) 1);
   2.260  qed "div_mult_self_is_m";
   2.261  Addsimps [div_mult_self_is_m];
   2.262  
   2.263 @@ -264,13 +264,13 @@
   2.264  goal thy "!!k. [| 0<n; 0<k |] ==> (k*m) div (k*n) = m div n";
   2.265  by (res_inst_tac [("n","m")] less_induct 1);
   2.266  by (case_tac "na<n" 1);
   2.267 -by (asm_simp_tac (!simpset addsimps [div_less, zero_less_mult_iff, 
   2.268 +by (asm_simp_tac (simpset() addsimps [div_less, zero_less_mult_iff, 
   2.269                                       mult_less_mono2]) 1);
   2.270  by (subgoal_tac "~ k*na < k*n" 1);
   2.271  by (asm_simp_tac
   2.272 -     (!simpset addsimps [zero_less_mult_iff, div_geq,
   2.273 +     (simpset() addsimps [zero_less_mult_iff, div_geq,
   2.274                           diff_mult_distrib2 RS sym, diff_less]) 1);
   2.275 -by (asm_full_simp_tac (!simpset addsimps [not_less_iff_le, 
   2.276 +by (asm_full_simp_tac (simpset() addsimps [not_less_iff_le, 
   2.277                                            le_refl RS mult_le_mono]) 1);
   2.278  qed "div_cancel";
   2.279  Addsimps [div_cancel];
   2.280 @@ -278,13 +278,13 @@
   2.281  goal thy "!!k. [| 0<n; 0<k |] ==> (k*m) mod (k*n) = k * (m mod n)";
   2.282  by (res_inst_tac [("n","m")] less_induct 1);
   2.283  by (case_tac "na<n" 1);
   2.284 -by (asm_simp_tac (!simpset addsimps [mod_less, zero_less_mult_iff, 
   2.285 +by (asm_simp_tac (simpset() addsimps [mod_less, zero_less_mult_iff, 
   2.286                                       mult_less_mono2]) 1);
   2.287  by (subgoal_tac "~ k*na < k*n" 1);
   2.288  by (asm_simp_tac
   2.289 -     (!simpset addsimps [zero_less_mult_iff, mod_geq,
   2.290 +     (simpset() addsimps [zero_less_mult_iff, mod_geq,
   2.291                           diff_mult_distrib2 RS sym, diff_less]) 1);
   2.292 -by (asm_full_simp_tac (!simpset addsimps [not_less_iff_le, 
   2.293 +by (asm_full_simp_tac (simpset() addsimps [not_less_iff_le, 
   2.294                                            le_refl RS mult_le_mono]) 1);
   2.295  qed "mult_mod_distrib";
   2.296  
   2.297 @@ -294,12 +294,12 @@
   2.298  (************************************************)
   2.299  
   2.300  goalw thy [dvd_def] "m dvd 0";
   2.301 -by (blast_tac (!claset addIs [mult_0_right RS sym]) 1);
   2.302 +by (blast_tac (claset() addIs [mult_0_right RS sym]) 1);
   2.303  qed "dvd_0_right";
   2.304  Addsimps [dvd_0_right];
   2.305  
   2.306  goalw thy [dvd_def] "!!m. 0 dvd m ==> m = 0";
   2.307 -by (fast_tac (!claset addss !simpset) 1);
   2.308 +by (fast_tac (claset() addss simpset()) 1);
   2.309  qed "dvd_0_left";
   2.310  
   2.311  goalw thy [dvd_def] "1 dvd k";
   2.312 @@ -308,34 +308,34 @@
   2.313  AddIffs [dvd_1_left];
   2.314  
   2.315  goalw thy [dvd_def] "m dvd m";
   2.316 -by (blast_tac (!claset addIs [mult_1_right RS sym]) 1);
   2.317 +by (blast_tac (claset() addIs [mult_1_right RS sym]) 1);
   2.318  qed "dvd_refl";
   2.319  Addsimps [dvd_refl];
   2.320  
   2.321  goalw thy [dvd_def] "!!m n p. [| m dvd n; n dvd p |] ==> m dvd p";
   2.322 -by (blast_tac (!claset addIs [mult_assoc] ) 1);
   2.323 +by (blast_tac (claset() addIs [mult_assoc] ) 1);
   2.324  qed "dvd_trans";
   2.325  
   2.326  goalw thy [dvd_def] "!!m n. [| m dvd n; n dvd m |] ==> m=n";
   2.327 -by (fast_tac (!claset addDs [mult_eq_self_implies_10]
   2.328 -                     addss (!simpset addsimps [mult_assoc, mult_eq_1_iff])) 1);
   2.329 +by (fast_tac (claset() addDs [mult_eq_self_implies_10]
   2.330 +                     addss (simpset() addsimps [mult_assoc, mult_eq_1_iff])) 1);
   2.331  qed "dvd_anti_sym";
   2.332  
   2.333  goalw thy [dvd_def] "!!k. [| k dvd m; k dvd n |] ==> k dvd (m + n)";
   2.334 -by (blast_tac (!claset addIs [add_mult_distrib2 RS sym]) 1);
   2.335 +by (blast_tac (claset() addIs [add_mult_distrib2 RS sym]) 1);
   2.336  qed "dvd_add";
   2.337  
   2.338  goalw thy [dvd_def] "!!k. [| k dvd m; k dvd n |] ==> k dvd (m-n)";
   2.339 -by (blast_tac (!claset addIs [diff_mult_distrib2 RS sym]) 1);
   2.340 +by (blast_tac (claset() addIs [diff_mult_distrib2 RS sym]) 1);
   2.341  qed "dvd_diff";
   2.342  
   2.343  goal thy "!!k. [| k dvd (m-n); k dvd n; n<=m |] ==> k dvd m";
   2.344  by (etac (not_less_iff_le RS iffD2 RS add_diff_inverse RS subst) 1);
   2.345 -by (blast_tac (!claset addIs [dvd_add]) 1);
   2.346 +by (blast_tac (claset() addIs [dvd_add]) 1);
   2.347  qed "dvd_diffD";
   2.348  
   2.349  goalw thy [dvd_def] "!!k. k dvd n ==> k dvd (m*n)";
   2.350 -by (blast_tac (!claset addIs [mult_left_commute]) 1);
   2.351 +by (blast_tac (claset() addIs [mult_left_commute]) 1);
   2.352  qed "dvd_mult";
   2.353  
   2.354  goal thy "!!k. k dvd m ==> k dvd (m*n)";
   2.355 @@ -348,40 +348,40 @@
   2.356  
   2.357  goalw thy [dvd_def] "!!m. [| f dvd m; f dvd n; 0<n |] ==> f dvd (m mod n)";
   2.358  by (Clarify_tac 1);
   2.359 -by (full_simp_tac (!simpset addsimps [zero_less_mult_iff]) 1);
   2.360 +by (full_simp_tac (simpset() addsimps [zero_less_mult_iff]) 1);
   2.361  by (res_inst_tac 
   2.362      [("x", "(((k div ka)*ka + k mod ka) - ((f*k) div (f*ka)) * ka)")] 
   2.363      exI 1);
   2.364 -by (asm_simp_tac (!simpset addsimps [diff_mult_distrib2, 
   2.365 +by (asm_simp_tac (simpset() addsimps [diff_mult_distrib2, 
   2.366                                       mult_mod_distrib, add_mult_distrib2]) 1);
   2.367  qed "dvd_mod";
   2.368  
   2.369  goal thy "!!k. [| k dvd (m mod n); k dvd n; n~=0 |] ==> k dvd m";
   2.370  by (subgoal_tac "k dvd ((m div n)*n + m mod n)" 1);
   2.371 -by (asm_simp_tac (!simpset addsimps [dvd_add, dvd_mult]) 2);
   2.372 -by (asm_full_simp_tac (!simpset addsimps [mod_div_equality, zero_less_eq]) 1);
   2.373 +by (asm_simp_tac (simpset() addsimps [dvd_add, dvd_mult]) 2);
   2.374 +by (asm_full_simp_tac (simpset() addsimps [mod_div_equality, zero_less_eq]) 1);
   2.375  qed "dvd_mod_imp_dvd";
   2.376  
   2.377  goalw thy [dvd_def]  "!!k m n. [| (k*m) dvd (k*n); 0<k |] ==> m dvd n";
   2.378  by (etac exE 1);
   2.379 -by (asm_full_simp_tac (!simpset addsimps mult_ac) 1);
   2.380 +by (asm_full_simp_tac (simpset() addsimps mult_ac) 1);
   2.381  by (Blast_tac 1);
   2.382  qed "dvd_mult_cancel";
   2.383  
   2.384  goalw thy [dvd_def] "!!i j. [| i dvd m; j dvd n|] ==> (i*j) dvd (m*n)";
   2.385  by (Clarify_tac 1);
   2.386  by (res_inst_tac [("x","k*ka")] exI 1);
   2.387 -by (asm_simp_tac (!simpset addsimps mult_ac) 1);
   2.388 +by (asm_simp_tac (simpset() addsimps mult_ac) 1);
   2.389  qed "mult_dvd_mono";
   2.390  
   2.391  goalw thy [dvd_def] "!!c. (i*j) dvd k ==> i dvd k";
   2.392 -by (full_simp_tac (!simpset addsimps [mult_assoc]) 1);
   2.393 +by (full_simp_tac (simpset() addsimps [mult_assoc]) 1);
   2.394  by (Blast_tac 1);
   2.395  qed "dvd_mult_left";
   2.396  
   2.397  goalw thy [dvd_def] "!!n. [| k dvd n; 0 < n |] ==> k <= n";
   2.398  by (Clarify_tac 1);
   2.399 -by (ALLGOALS (full_simp_tac (!simpset addsimps [zero_less_mult_iff])));
   2.400 +by (ALLGOALS (full_simp_tac (simpset() addsimps [zero_less_mult_iff])));
   2.401  by (etac conjE 1);
   2.402  by (rtac le_trans 1);
   2.403  by (rtac (le_refl RS mult_le_mono) 2);
   2.404 @@ -394,6 +394,6 @@
   2.405  by (stac mult_commute 1);
   2.406  by (Asm_simp_tac 1);
   2.407  by (eres_inst_tac [("t","n")] (mod_div_equality RS subst) 1);
   2.408 -by (asm_simp_tac (!simpset addsimps [mult_commute]) 1);
   2.409 +by (asm_simp_tac (simpset() addsimps [mult_commute]) 1);
   2.410  by (Blast_tac 1);
   2.411  qed "dvd_eq_mod_eq_0";
     3.1 --- a/src/HOL/Finite.ML	Mon Nov 03 12:12:10 1997 +0100
     3.2 +++ b/src/HOL/Finite.ML	Mon Nov 03 12:13:18 1997 +0100
     3.3 @@ -17,7 +17,7 @@
     3.4  qed "Fin_mono";
     3.5  
     3.6  goalw Finite.thy Fin.defs "Fin(A) <= Pow(A)";
     3.7 -by (blast_tac (!claset addSIs [lfp_lowerbound]) 1);
     3.8 +by (blast_tac (claset() addSIs [lfp_lowerbound]) 1);
     3.9  qed "Fin_subset_Pow";
    3.10  
    3.11  (* A : Fin(B) ==> A <= B *)
    3.12 @@ -41,7 +41,7 @@
    3.13  \       !!F a. [| finite F; a:A; a ~: F;  P(F) |] ==> P(insert a F) \
    3.14  \    |] ==> F <= A --> P(F)";
    3.15  by (rtac (major RS finite_induct) 1);
    3.16 -by (ALLGOALS (blast_tac (!claset addIs prems)));
    3.17 +by (ALLGOALS (blast_tac (claset() addIs prems)));
    3.18  val lemma = result();
    3.19  
    3.20  val prems = goal Finite.thy 
    3.21 @@ -59,7 +59,7 @@
    3.22  val major::prems = goal Finite.thy
    3.23      "[| finite F;  finite G |] ==> finite(F Un G)";
    3.24  by (rtac (major RS finite_induct) 1);
    3.25 -by (ALLGOALS (asm_simp_tac (!simpset addsimps prems)));
    3.26 +by (ALLGOALS (asm_simp_tac (simpset() addsimps prems)));
    3.27  qed "finite_UnI";
    3.28  
    3.29  (*Every subset of a finite set is finite*)
    3.30 @@ -68,14 +68,14 @@
    3.31              rtac mp, etac spec,
    3.32              rtac subs]);
    3.33  by (rtac (fin RS finite_induct) 1);
    3.34 -by (simp_tac (!simpset addsimps [subset_Un_eq]) 1);
    3.35 -by (safe_tac (!claset addSDs [subset_insert_iff RS iffD1]));
    3.36 +by (simp_tac (simpset() addsimps [subset_Un_eq]) 1);
    3.37 +by (safe_tac (claset() addSDs [subset_insert_iff RS iffD1]));
    3.38  by (eres_inst_tac [("t","C")] (insert_Diff RS subst) 2);
    3.39  by (ALLGOALS Asm_simp_tac);
    3.40  qed "finite_subset";
    3.41  
    3.42  goal Finite.thy "finite(F Un G) = (finite F & finite G)";
    3.43 -by (blast_tac (!claset addIs [finite_UnI] addDs
    3.44 +by (blast_tac (claset() addIs [finite_UnI] addDs
    3.45                  [Un_upper1 RS finite_subset, Un_upper2 RS finite_subset]) 1);
    3.46  qed "finite_Un";
    3.47  AddIffs[finite_Un];
    3.48 @@ -102,7 +102,7 @@
    3.49  by (rtac (major RS finite_induct) 1);
    3.50  by (stac Diff_insert 2);
    3.51  by (ALLGOALS (asm_simp_tac
    3.52 -                (!simpset addsimps (prems@[Diff_subset RS finite_subset]))));
    3.53 +                (simpset() addsimps (prems@[Diff_subset RS finite_subset]))));
    3.54  val lemma = result();
    3.55  
    3.56  val prems = goal Finite.thy 
    3.57 @@ -135,14 +135,14 @@
    3.58  by (Clarify_tac 1);
    3.59  by (subgoal_tac "EX y:A. f y = x & F = f``(A-{y})" 1);
    3.60   by (Clarify_tac 1);
    3.61 - by (full_simp_tac (!simpset addsimps [inj_onto_def]) 1);
    3.62 + by (full_simp_tac (simpset() addsimps [inj_onto_def]) 1);
    3.63   by (Blast_tac 1);
    3.64  by (thin_tac "ALL A. ?PP(A)" 1);
    3.65  by (forward_tac [[equalityD2, insertI1] MRS subsetD] 1);
    3.66  by (Clarify_tac 1);
    3.67  by (res_inst_tac [("x","xa")] bexI 1);
    3.68  by (ALLGOALS 
    3.69 -    (asm_full_simp_tac (!simpset addsimps [inj_onto_image_set_diff])));
    3.70 +    (asm_full_simp_tac (simpset() addsimps [inj_onto_image_set_diff])));
    3.71  val lemma = result();
    3.72  
    3.73  goal Finite.thy "!!A. [| finite(f``A);  inj_onto f A |] ==> finite A";
    3.74 @@ -163,7 +163,7 @@
    3.75  
    3.76  goalw Finite.thy [Sigma_def]
    3.77   "!!A. [| finite A; !a:A. finite(B a) |] ==> finite(SIGMA a:A. B a)";
    3.78 -by(blast_tac (!claset addSIs [finite_UnionI]) 1);
    3.79 +by(blast_tac (claset() addSIs [finite_UnionI]) 1);
    3.80  bind_thm("finite_SigmaI", ballI RSN (2,result()));
    3.81  Addsimps [finite_SigmaI];
    3.82  
    3.83 @@ -174,7 +174,7 @@
    3.84  by (rtac finite_subset 2);
    3.85  by (assume_tac 3);
    3.86  by (ALLGOALS
    3.87 -    (fast_tac (!claset addSDs [rewrite_rule [inj_onto_def] finite_imageD])));
    3.88 +    (fast_tac (claset() addSDs [rewrite_rule [inj_onto_def] finite_imageD])));
    3.89  val lemma = result();
    3.90  
    3.91  goal Finite.thy "finite(Pow A) = finite A";
    3.92 @@ -184,7 +184,7 @@
    3.93  by (etac finite_induct 1);
    3.94  by (ALLGOALS 
    3.95      (asm_simp_tac
    3.96 -     (!simpset addsimps [finite_UnI, finite_imageI, Pow_insert])));
    3.97 +     (simpset() addsimps [finite_UnI, finite_imageI, Pow_insert])));
    3.98  qed "finite_Pow_iff";
    3.99  AddIffs [finite_Pow_iff];
   3.100  
   3.101 @@ -193,9 +193,9 @@
   3.102   by (Asm_simp_tac 1);
   3.103   by (rtac iffI 1);
   3.104    by (etac (rewrite_rule [inj_onto_def] finite_imageD) 1);
   3.105 -  by (simp_tac (!simpset addsplits [expand_split]) 1);
   3.106 +  by (simp_tac (simpset() addsplits [expand_split]) 1);
   3.107   by (etac finite_imageI 1);
   3.108 -by (simp_tac (!simpset addsimps [inverse_def,image_def]) 1);
   3.109 +by (simp_tac (simpset() addsimps [inverse_def,image_def]) 1);
   3.110  by (Auto_tac());
   3.111   by (rtac bexI 1);
   3.112   by (assume_tac 2);
   3.113 @@ -227,7 +227,7 @@
   3.114  by (hyp_subst_tac 1);
   3.115  by (res_inst_tac [("x","Suc n")] exI 1);
   3.116  by (res_inst_tac [("x","%i. if i<n then f i else x")] exI 1);
   3.117 -by (asm_simp_tac (!simpset addsimps [Collect_conv_insert, less_Suc_eq]
   3.118 +by (asm_simp_tac (simpset() addsimps [Collect_conv_insert, less_Suc_eq]
   3.119                            addcongs [rev_conj_cong]) 1);
   3.120  qed "finite_has_card";
   3.121  
   3.122 @@ -244,41 +244,41 @@
   3.123   by (Simp_tac 2);
   3.124   by (Blast_tac 2);
   3.125  by (etac exE 1);
   3.126 -by (simp_tac (!simpset addsimps [less_Suc_eq]) 1);
   3.127 +by (simp_tac (simpset() addsimps [less_Suc_eq]) 1);
   3.128  by (rtac exI 1);
   3.129  by (rtac (refl RS disjI2 RS conjI) 1);
   3.130  by (etac equalityE 1);
   3.131  by (asm_full_simp_tac
   3.132 -     (!simpset addsimps [subset_insert,Collect_conv_insert, less_Suc_eq]) 1);
   3.133 -by (safe_tac (!claset));
   3.134 +     (simpset() addsimps [subset_insert,Collect_conv_insert, less_Suc_eq]) 1);
   3.135 +by (safe_tac (claset()));
   3.136    by (Asm_full_simp_tac 1);
   3.137    by (res_inst_tac [("x","%i. if f i = f m then a else f i")] exI 1);
   3.138 -  by (SELECT_GOAL(safe_tac (!claset))1);
   3.139 +  by (SELECT_GOAL(safe_tac (claset()))1);
   3.140     by (subgoal_tac "x ~= f m" 1);
   3.141      by (Blast_tac 2);
   3.142     by (subgoal_tac "? k. f k = x & k<m" 1);
   3.143      by (Blast_tac 2);
   3.144 -   by (SELECT_GOAL(safe_tac (!claset))1);
   3.145 +   by (SELECT_GOAL(safe_tac (claset()))1);
   3.146     by (res_inst_tac [("x","k")] exI 1);
   3.147     by (Asm_simp_tac 1);
   3.148 -  by (simp_tac (!simpset addsplits [expand_if]) 1);
   3.149 +  by (simp_tac (simpset() addsplits [expand_if]) 1);
   3.150    by (Blast_tac 1);
   3.151   by (dtac sym 1);
   3.152   by (rotate_tac ~1 1);
   3.153   by (Asm_full_simp_tac 1);
   3.154   by (res_inst_tac [("x","%i. if f i = f m then a else f i")] exI 1);
   3.155 - by (SELECT_GOAL(safe_tac (!claset))1);
   3.156 + by (SELECT_GOAL(safe_tac (claset()))1);
   3.157    by (subgoal_tac "x ~= f m" 1);
   3.158     by (Blast_tac 2);
   3.159    by (subgoal_tac "? k. f k = x & k<m" 1);
   3.160     by (Blast_tac 2);
   3.161 -  by (SELECT_GOAL(safe_tac (!claset))1);
   3.162 +  by (SELECT_GOAL(safe_tac (claset()))1);
   3.163    by (res_inst_tac [("x","k")] exI 1);
   3.164    by (Asm_simp_tac 1);
   3.165 - by (simp_tac (!simpset addsplits [expand_if]) 1);
   3.166 + by (simp_tac (simpset() addsplits [expand_if]) 1);
   3.167   by (Blast_tac 1);
   3.168  by (res_inst_tac [("x","%j. if f j = f i then f m else f j")] exI 1);
   3.169 -by (SELECT_GOAL(safe_tac (!claset))1);
   3.170 +by (SELECT_GOAL(safe_tac (claset()))1);
   3.171   by (subgoal_tac "x ~= f i" 1);
   3.172    by (Blast_tac 2);
   3.173   by (case_tac "x = f m" 1);
   3.174 @@ -286,10 +286,10 @@
   3.175    by (Asm_simp_tac 1);
   3.176   by (subgoal_tac "? k. f k = x & k<m" 1);
   3.177    by (Blast_tac 2);
   3.178 - by (SELECT_GOAL(safe_tac (!claset))1);
   3.179 + by (SELECT_GOAL(safe_tac (claset()))1);
   3.180   by (res_inst_tac [("x","k")] exI 1);
   3.181   by (Asm_simp_tac 1);
   3.182 -by (simp_tac (!simpset addsplits [expand_if]) 1);
   3.183 +by (simp_tac (simpset() addsplits [expand_if]) 1);
   3.184  by (Blast_tac 1);
   3.185  val lemma = result();
   3.186  
   3.187 @@ -303,7 +303,7 @@
   3.188   by (res_inst_tac
   3.189     [("x","%i. if i<(LEAST n. ? f. A={f i |i. i < n}) then f i else x")] exI 1);
   3.190   by (simp_tac
   3.191 -    (!simpset addsimps [Collect_conv_insert, less_Suc_eq] 
   3.192 +    (simpset() addsimps [Collect_conv_insert, less_Suc_eq] 
   3.193                addcongs [rev_conj_cong]) 1);
   3.194   by (etac subst 1);
   3.195   by (rtac refl 1);
   3.196 @@ -315,7 +315,7 @@
   3.197  by (etac conjE 1);
   3.198  by (dres_inst_tac [("P","%x. ? g. A = {g i |i. i < x}")] Least_le 1);
   3.199  by (dtac le_less_trans 1 THEN atac 1);
   3.200 -by (asm_full_simp_tac (!simpset addsimps [less_Suc_eq]) 1);
   3.201 +by (asm_full_simp_tac (simpset() addsimps [less_Suc_eq]) 1);
   3.202  by (etac disjE 1);
   3.203  by (etac less_asym 1 THEN atac 1);
   3.204  by (hyp_subst_tac 1);
   3.205 @@ -335,18 +335,18 @@
   3.206  by (Clarify_tac 1);
   3.207  by (case_tac "x:B" 1);
   3.208   by (dres_inst_tac [("A","B")] mk_disjoint_insert 1);
   3.209 - by (SELECT_GOAL(safe_tac (!claset))1);
   3.210 + by (SELECT_GOAL(safe_tac (claset()))1);
   3.211   by (rotate_tac ~1 1);
   3.212 - by (asm_full_simp_tac (!simpset addsimps [subset_insert_iff,finite_subset]) 1);
   3.213 + by (asm_full_simp_tac (simpset() addsimps [subset_insert_iff,finite_subset]) 1);
   3.214  by (rotate_tac ~1 1);
   3.215 -by (asm_full_simp_tac (!simpset addsimps [subset_insert_iff,finite_subset]) 1);
   3.216 +by (asm_full_simp_tac (simpset() addsimps [subset_insert_iff,finite_subset]) 1);
   3.217  qed_spec_mp "card_mono";
   3.218  
   3.219  goal Finite.thy "!!A B. [| finite A; finite B |]\
   3.220  \                       ==> A Int B = {} --> card(A Un B) = card A + card B";
   3.221  by (etac finite_induct 1);
   3.222  by (ALLGOALS 
   3.223 -    (asm_simp_tac (!simpset addsimps [Int_insert_left]
   3.224 +    (asm_simp_tac (simpset() addsimps [Int_insert_left]
   3.225  	                    addsplits [expand_if])));
   3.226  qed_spec_mp "card_Un_disjoint";
   3.227  
   3.228 @@ -359,7 +359,7 @@
   3.229  by (Blast_tac 3);
   3.230  by (ALLGOALS 
   3.231      (asm_simp_tac
   3.232 -     (!simpset addsimps [add_commute, not_less_iff_le, 
   3.233 +     (simpset() addsimps [add_commute, not_less_iff_le, 
   3.234  			 add_diff_inverse, card_mono, finite_subset])));
   3.235  qed "card_Diff_subset";
   3.236  
   3.237 @@ -371,7 +371,7 @@
   3.238  
   3.239  goal Finite.thy "!!A. [| finite A; x: A |] ==> card(A-{x}) < card A";
   3.240  by (rtac Suc_less_SucD 1);
   3.241 -by (asm_simp_tac (!simpset addsimps [card_Suc_Diff]) 1);
   3.242 +by (asm_simp_tac (simpset() addsimps [card_Suc_Diff]) 1);
   3.243  qed "card_Diff";
   3.244  
   3.245  
   3.246 @@ -380,7 +380,7 @@
   3.247  val [major] = goal Finite.thy
   3.248    "finite A ==> card(insert x A) = Suc(card(A-{x}))";
   3.249  by (case_tac "x:A" 1);
   3.250 -by (asm_simp_tac (!simpset addsimps [insert_absorb]) 1);
   3.251 +by (asm_simp_tac (simpset() addsimps [insert_absorb]) 1);
   3.252  by (dtac mk_disjoint_insert 1);
   3.253  by (etac exE 1);
   3.254  by (Asm_simp_tac 1);
   3.255 @@ -388,7 +388,7 @@
   3.256  by (rtac (major RSN (2,finite_subset)) 1);
   3.257  by (Blast_tac 1);
   3.258  by (Blast_tac 1);
   3.259 -by (asm_simp_tac (!simpset addsimps [major RS card_insert_disjoint]) 1);
   3.260 +by (asm_simp_tac (simpset() addsimps [major RS card_insert_disjoint]) 1);
   3.261  qed "card_insert";
   3.262  Addsimps [card_insert];
   3.263  
   3.264 @@ -406,13 +406,13 @@
   3.265  
   3.266  goal thy "!!A. finite A ==> card (Pow A) = 2 ^ card A";
   3.267  by (etac finite_induct 1);
   3.268 -by (ALLGOALS (asm_simp_tac (!simpset addsimps [Pow_insert])));
   3.269 +by (ALLGOALS (asm_simp_tac (simpset() addsimps [Pow_insert])));
   3.270  by (stac card_Un_disjoint 1);
   3.271 -by (EVERY (map (blast_tac (!claset addIs [finite_imageI])) [3,2,1]));
   3.272 +by (EVERY (map (blast_tac (claset() addIs [finite_imageI])) [3,2,1]));
   3.273  by (subgoal_tac "inj_onto (insert x) (Pow F)" 1);
   3.274 -by (asm_simp_tac (!simpset addsimps [card_image, Pow_insert]) 1);
   3.275 +by (asm_simp_tac (simpset() addsimps [card_image, Pow_insert]) 1);
   3.276  by (rewtac inj_onto_def);
   3.277 -by (blast_tac (!claset addSEs [equalityE]) 1);
   3.278 +by (blast_tac (claset() addSEs [equalityE]) 1);
   3.279  qed "card_Pow";
   3.280  Addsimps [card_Pow];
   3.281  
   3.282 @@ -430,12 +430,12 @@
   3.283  by (etac conjE 1);
   3.284  by (hyp_subst_tac 1);
   3.285  by (rotate_tac ~1 1);
   3.286 -by (asm_full_simp_tac (!simpset addsimps [subset_insert_iff,finite_subset]) 1);
   3.287 +by (asm_full_simp_tac (simpset() addsimps [subset_insert_iff,finite_subset]) 1);
   3.288  by (Blast_tac 1);
   3.289  (*2*)
   3.290  by (rotate_tac ~1 1);
   3.291  by (eres_inst_tac [("P","?a<?b")] notE 1);
   3.292 -by (asm_full_simp_tac (!simpset addsimps [subset_insert_iff,finite_subset]) 1);
   3.293 +by (asm_full_simp_tac (simpset() addsimps [subset_insert_iff,finite_subset]) 1);
   3.294  by (case_tac "A=F" 1);
   3.295  by (ALLGOALS Asm_simp_tac);
   3.296  qed_spec_mp "psubset_card" ;
   3.297 @@ -452,7 +452,7 @@
   3.298  by (Clarify_tac 1);
   3.299  by (stac card_Un_disjoint 1);
   3.300  by (ALLGOALS
   3.301 -    (asm_full_simp_tac (!simpset
   3.302 +    (asm_full_simp_tac (simpset()
   3.303  			 addsimps [dvd_add, disjoint_eq_subset_Compl])));
   3.304  by (thin_tac "!c:F. ?PP(c)" 1);
   3.305  by (thin_tac "!c:F. ?PP(c) & ?QQ(c)" 1);
     4.1 --- a/src/HOL/Fun.ML	Mon Nov 03 12:12:10 1997 +0100
     4.2 +++ b/src/HOL/Fun.ML	Mon Nov 03 12:13:18 1997 +0100
     4.3 @@ -23,7 +23,7 @@
     4.4  
     4.5  val prems = goalw Fun.thy [inj_def]
     4.6      "[| !! x y. f(x) = f(y) ==> x=y |] ==> inj(f)";
     4.7 -by (blast_tac (!claset addIs prems) 1);
     4.8 +by (blast_tac (claset() addIs prems) 1);
     4.9  qed "injI";
    4.10  
    4.11  val [major] = goal Fun.thy "(!!x. g(f(x)) = x) ==> inj(f)";
    4.12 @@ -69,7 +69,7 @@
    4.13  
    4.14  val prems = goalw Fun.thy [inj_onto_def]
    4.15      "(!! x y. [| f(x) = f(y);  x:A;  y:A |] ==> x=y) ==> inj_onto f A";
    4.16 -by (blast_tac (!claset addIs prems) 1);
    4.17 +by (blast_tac (claset() addIs prems) 1);
    4.18  qed "inj_ontoI";
    4.19  
    4.20  val [major] = goal Fun.thy 
    4.21 @@ -86,7 +86,7 @@
    4.22  qed "inj_ontoD";
    4.23  
    4.24  goal Fun.thy "!!x y.[| inj_onto f A;  x:A;  y:A |] ==> (f(x)=f(y)) = (x=y)";
    4.25 -by (blast_tac (!claset addSDs [inj_ontoD]) 1);
    4.26 +by (blast_tac (claset() addSDs [inj_ontoD]) 1);
    4.27  qed "inj_onto_iff";
    4.28  
    4.29  val major::prems = goal Fun.thy
    4.30 @@ -106,11 +106,11 @@
    4.31  
    4.32  goalw Fun.thy [o_def]
    4.33      "!!f g. [| inj(f);  inj_onto g (range f) |] ==> inj(g o f)";
    4.34 -by (fast_tac (!claset addIs [injI] addEs [injD, inj_ontoD]) 1);
    4.35 +by (fast_tac (claset() addIs [injI] addEs [injD, inj_ontoD]) 1);
    4.36  qed "comp_inj";
    4.37  
    4.38  val [prem] = goal Fun.thy "inj(f) ==> inj_onto f A";
    4.39 -by (blast_tac (!claset addIs [prem RS injD, inj_ontoI]) 1);
    4.40 +by (blast_tac (claset() addIs [prem RS injD, inj_ontoI]) 1);
    4.41  qed "inj_imp";
    4.42  
    4.43  val [prem] = goalw Fun.thy [inv_def] "y : range(f) ==> f(inv f y) = y";
    4.44 @@ -124,7 +124,7 @@
    4.45  qed "inv_injective";
    4.46  
    4.47  goal Fun.thy "!!f. [| inj(f);  A<=range(f) |] ==> inj_onto (inv f) A";
    4.48 -by (fast_tac (!claset addIs [inj_ontoI] 
    4.49 +by (fast_tac (claset() addIs [inj_ontoI] 
    4.50                        addEs [inv_injective,injD]) 1);
    4.51  qed "inj_onto_inv";
    4.52  
    4.53 @@ -147,4 +147,4 @@
    4.54  qed "image_set_diff";
    4.55  
    4.56  
    4.57 -val set_cs = !claset delrules [equalityI];
    4.58 +val set_cs = claset() delrules [equalityI];
     5.1 --- a/src/HOL/Hoare/Arith2.ML	Mon Nov 03 12:12:10 1997 +0100
     5.2 +++ b/src/HOL/Hoare/Arith2.ML	Mon Nov 03 12:13:18 1997 +0100
     5.3 @@ -29,7 +29,7 @@
     5.4  
     5.5  val prems=goalw thy [cd_def] "[| cd x m n; 0<m; 0<n |] ==> x<=m & x<=n";
     5.6  by (cut_facts_tac prems 1);
     5.7 -by (blast_tac (!claset addIs [dvd_imp_le]) 1);
     5.8 +by (blast_tac (claset() addIs [dvd_imp_le]) 1);
     5.9  qed "cd_le";
    5.10  
    5.11  val prems=goalw thy [cd_def] "cd x m n = cd x n m";
    5.12 @@ -38,12 +38,12 @@
    5.13  
    5.14  val prems=goalw thy [cd_def] "n<=m ==> cd x m n = cd x (m-n) n";
    5.15  by (cut_facts_tac prems 1);
    5.16 -by (blast_tac (!claset addIs [dvd_diff] addDs [dvd_diffD]) 1);
    5.17 +by (blast_tac (claset() addIs [dvd_diff] addDs [dvd_diffD]) 1);
    5.18  qed "cd_diff_l";
    5.19  
    5.20  val prems=goalw thy [cd_def] "m<=n ==> cd x m n = cd x m (n-m)";
    5.21  by (cut_facts_tac prems 1);
    5.22 -by (blast_tac (!claset addIs [dvd_diff] addDs [dvd_diffD]) 1);
    5.23 +by (blast_tac (claset() addIs [dvd_diff] addDs [dvd_diffD]) 1);
    5.24  qed "cd_diff_r";
    5.25  
    5.26  
    5.27 @@ -52,12 +52,12 @@
    5.28  goalw thy [gcd_def] "!!n. 0<n ==> n = gcd n n";
    5.29  by (forward_tac [cd_nnn] 1);
    5.30  by (rtac (select_equality RS sym) 1);
    5.31 -by (blast_tac (!claset addDs [cd_le]) 1);
    5.32 -by (blast_tac (!claset addIs [le_anti_sym] addDs [cd_le]) 1);
    5.33 +by (blast_tac (claset() addDs [cd_le]) 1);
    5.34 +by (blast_tac (claset() addIs [le_anti_sym] addDs [cd_le]) 1);
    5.35  qed "gcd_nnn";
    5.36  
    5.37  val prems = goalw thy [gcd_def] "gcd m n = gcd n m";
    5.38 -by (simp_tac (!simpset addsimps [cd_swap]) 1);
    5.39 +by (simp_tac (simpset() addsimps [cd_swap]) 1);
    5.40  qed "gcd_swap";
    5.41  
    5.42  val prems=goalw thy [gcd_def] "n<=m ==> gcd m n = gcd (m-n) n";
    5.43 @@ -85,7 +85,7 @@
    5.44  
    5.45  goalw thy [pow_def] "m pow (n+k) = m pow n * m pow k";
    5.46  by (nat_ind_tac "k" 1);
    5.47 -by (ALLGOALS (asm_simp_tac (!simpset addsimps [mult_left_commute])));
    5.48 +by (ALLGOALS (asm_simp_tac (simpset() addsimps [mult_left_commute])));
    5.49  qed "pow_add_reduce";
    5.50  
    5.51  goalw thy [pow_def] "m pow n pow k = m pow (n*k)";
     6.1 --- a/src/HOL/Hoare/Examples.ML	Mon Nov 03 12:12:10 1997 +0100
     6.2 +++ b/src/HOL/Hoare/Examples.ML	Mon Nov 03 12:13:18 1997 +0100
     6.3 @@ -15,7 +15,7 @@
     6.4  \ WHILE m ~= a DO {s = m*b} s := s+b; m := Suc(m) END\
     6.5  \ {s = a*b}";
     6.6  by (hoare_tac 1);
     6.7 -by (ALLGOALS (asm_full_simp_tac (!simpset addsimps add_ac)));
     6.8 +by (ALLGOALS (asm_full_simp_tac (simpset() addsimps add_ac)));
     6.9  qed "multiply_by_add";
    6.10  
    6.11  
    6.12 @@ -36,13 +36,13 @@
    6.13  
    6.14  by (hoare_tac 1);
    6.15  (*Now prove the verification conditions*)
    6.16 -by (safe_tac (!claset));
    6.17 +by (safe_tac (claset()));
    6.18  by (etac less_imp_diff_positive 1);
    6.19 -by (asm_simp_tac (!simpset addsimps [less_imp_le, gcd_diff_r]) 1);
    6.20 -by (asm_full_simp_tac (!simpset addsimps [not_less_iff_le, gcd_diff_l]) 2);
    6.21 +by (asm_simp_tac (simpset() addsimps [less_imp_le, gcd_diff_r]) 1);
    6.22 +by (asm_full_simp_tac (simpset() addsimps [not_less_iff_le, gcd_diff_l]) 2);
    6.23  by (etac gcd_nnn 2);
    6.24 -by (full_simp_tac (!simpset addsimps [not_less_iff_le, le_eq_less_or_eq]) 1);
    6.25 -by (blast_tac (!claset addIs [less_imp_diff_positive]) 1);
    6.26 +by (full_simp_tac (simpset() addsimps [not_less_iff_le, le_eq_less_or_eq]) 1);
    6.27 +by (blast_tac (claset() addIs [less_imp_diff_positive]) 1);
    6.28  qed "Euclid_GCD";
    6.29  
    6.30  
    6.31 @@ -65,9 +65,9 @@
    6.32  
    6.33  by (hoare_tac 1);
    6.34  
    6.35 -by (simp_tac ((simpset_of "Arith") addsimps [pow_0]) 3);
    6.36 +by (simp_tac ((simpset_of Arith.thy) addsimps [pow_0]) 3);
    6.37  
    6.38 -by (safe_tac (!claset));
    6.39 +by (safe_tac (claset()));
    6.40  
    6.41  by (subgoal_tac "a*a=a pow 2" 1);
    6.42  by (Asm_simp_tac 1);
    6.43 @@ -77,14 +77,14 @@
    6.44  by (subgoal_tac "0<2" 2);
    6.45  by (dres_inst_tac [("m","b")] mod_div_equality 2);
    6.46  
    6.47 -by (ALLGOALS (asm_full_simp_tac ((simpset_of "Arith") addsimps [pow_0,pow_Suc,mult_assoc])));
    6.48 +by (ALLGOALS (asm_full_simp_tac ((simpset_of Arith.thy) addsimps [pow_0,pow_Suc,mult_assoc])));
    6.49  
    6.50  by (subgoal_tac "b~=0" 1);
    6.51  by (res_inst_tac [("n","b")] natE 1);
    6.52  by (res_inst_tac [("Q","b mod 2 ~= 0")] not_imp_swap 3);
    6.53  by (assume_tac 4);
    6.54  
    6.55 -by (ALLGOALS (asm_full_simp_tac ((simpset_of "Arith") addsimps [pow_0,pow_Suc,mult_assoc])));
    6.56 +by (ALLGOALS (asm_full_simp_tac ((simpset_of Arith.thy) addsimps [pow_0,pow_Suc,mult_assoc])));
    6.57  by (rtac mod_less 1);
    6.58  by (Simp_tac 1);
    6.59  
    6.60 @@ -103,11 +103,11 @@
    6.61  \ {b = fac A}";
    6.62  
    6.63  by (hoare_tac 1);
    6.64 -by (safe_tac (!claset));
    6.65 +by (safe_tac (claset()));
    6.66  by (res_inst_tac [("n","a")] natE 1);
    6.67  by (ALLGOALS
    6.68      (asm_simp_tac
    6.69 -     (!simpset addsimps [add_mult_distrib,add_mult_distrib2,mult_assoc])));
    6.70 +     (simpset() addsimps [add_mult_distrib,add_mult_distrib2,mult_assoc])));
    6.71  by (Fast_tac 1);
    6.72  
    6.73  qed"factorial";
     7.1 --- a/src/HOL/Hoare/Hoare.ML	Mon Nov 03 12:12:10 1997 +0100
     7.2 +++ b/src/HOL/Hoare/Hoare.ML	Mon Nov 03 12:13:18 1997 +0100
     7.3 @@ -12,11 +12,11 @@
     7.4  
     7.5  val SkipRule = prove_goalw thy [Spec_def,Skip_def]
     7.6    "(!!s. p(s) ==> q(s)) ==> Spec p Skip q"
     7.7 -  (fn prems => [fast_tac (!claset addIs prems) 1]);
     7.8 +  (fn prems => [fast_tac (claset() addIs prems) 1]);
     7.9  
    7.10  val AssignRule = prove_goalw thy [Spec_def,Assign_def]
    7.11    "(!!s. p s ==> q(%x. if x=v then e s else s x)) ==> Spec p (Assign v e) q"
    7.12 -  (fn prems => [fast_tac (!claset addIs prems) 1]);
    7.13 +  (fn prems => [fast_tac (claset() addIs prems) 1]);
    7.14  
    7.15  val SeqRule = prove_goalw thy [Spec_def,Seq_def]
    7.16    "[| Spec p c (%s. q s); Spec (%s. q s) c' r |] ==> Spec p (Seq c c') r"
    7.17 @@ -31,12 +31,12 @@
    7.18        REPEAT (rtac impI 1),
    7.19        dtac prem1 1,
    7.20        cut_facts_tac [prem2,prem3] 1,
    7.21 -      fast_tac (!claset addIs [prem1]) 1]);
    7.22 +      fast_tac (claset() addIs [prem1]) 1]);
    7.23  
    7.24  val strenthen_pre = prove_goalw thy [Spec_def]
    7.25    "[| !!s. p s ==> p' s; Spec p' c q |] ==> Spec p c q"
    7.26    (fn [prem1,prem2] =>[cut_facts_tac [prem2] 1,
    7.27 -                       fast_tac (!claset addIs [prem1]) 1]);
    7.28 +                       fast_tac (claset() addIs [prem1]) 1]);
    7.29  
    7.30  val lemma = prove_goalw thy [Spec_def,While_def]
    7.31    "[| Spec (%s. I s & b s) c I; !!s. [| I s; ~b s |] ==> q s |] \
    7.32 @@ -46,9 +46,9 @@
    7.33        etac thin_rl 1, res_inst_tac[("x","s")]spec 1,
    7.34        res_inst_tac[("x","s'")]spec 1, nat_ind_tac "n" 1,
    7.35        Simp_tac 1,
    7.36 -      fast_tac (!claset addIs [prem2]) 1,
    7.37 -      simp_tac (!simpset addsimps [Seq_def]) 1,
    7.38 -      cut_facts_tac [prem1] 1, fast_tac (!claset addIs [prem2]) 1]);
    7.39 +      fast_tac (claset() addIs [prem2]) 1,
    7.40 +      simp_tac (simpset() addsimps [Seq_def]) 1,
    7.41 +      cut_facts_tac [prem1] 1, fast_tac (claset() addIs [prem2]) 1]);
    7.42  
    7.43  val WhileRule = lemma RSN (2,strenthen_pre);
    7.44  
     8.1 --- a/src/HOL/Hoare/List_Examples.ML	Mon Nov 03 12:12:10 1997 +0100
     8.2 +++ b/src/HOL/Hoare/List_Examples.ML	Mon Nov 03 12:13:18 1997 +0100
     8.3 @@ -7,8 +7,8 @@
     8.4  \ END \
     8.5  \{y=rev(X)}";
     8.6  by (hoare_tac 1);
     8.7 -by (asm_full_simp_tac (!simpset addsimps [neq_Nil_conv]) 1);
     8.8 -by (safe_tac (!claset));
     8.9 +by (asm_full_simp_tac (simpset() addsimps [neq_Nil_conv]) 1);
    8.10 +by (safe_tac (claset()));
    8.11  by (Asm_full_simp_tac 1);
    8.12  by (Asm_full_simp_tac 1);
    8.13  qed "imperative_reverse";
    8.14 @@ -22,8 +22,8 @@
    8.15  \ END \
    8.16  \{y = X@Y}";
    8.17  by (hoare_tac 1);
    8.18 -by (asm_full_simp_tac (!simpset addsimps [neq_Nil_conv]) 1);
    8.19 -by (safe_tac (!claset));
    8.20 +by (asm_full_simp_tac (simpset() addsimps [neq_Nil_conv]) 1);
    8.21 +by (safe_tac (claset()));
    8.22  by (Asm_full_simp_tac 1);
    8.23  by (Asm_full_simp_tac 1);
    8.24  qed "imperative_append";
     9.1 --- a/src/HOL/IMP/Denotation.ML	Mon Nov 03 12:12:10 1997 +0100
     9.2 +++ b/src/HOL/IMP/Denotation.ML	Mon Nov 03 12:13:18 1997 +0100
     9.3 @@ -59,5 +59,5 @@
     9.4  (**** Proof of Equivalence ****)
     9.5  
     9.6  goal Denotation.thy "(s,t) : C(c)  =  (<c,s> -c-> t)";
     9.7 -by (fast_tac (!claset addEs [com2] addDs [com1]) 1);
     9.8 +by (fast_tac (claset() addEs [com2] addDs [com1]) 1);
     9.9  qed "denotational_is_natural";
    10.1 --- a/src/HOL/IMP/Expr.ML	Mon Nov 03 12:12:10 1997 +0100
    10.2 +++ b/src/HOL/IMP/Expr.ML	Mon Nov 03 12:13:18 1997 +0100
    10.3 @@ -35,12 +35,12 @@
    10.4  goal Expr.thy "!n. ((a,s) -a-> n) = (n = A a s)";
    10.5  by (aexp.induct_tac "a" 1);                               (* struct. ind. *)
    10.6  by (ALLGOALS Simp_tac);                                   (* rewr. Den.   *)
    10.7 -by (TRYALL (fast_tac (!claset addSIs (evala.intrs@prems)
    10.8 +by (TRYALL (fast_tac (claset() addSIs (evala.intrs@prems)
    10.9                               addSEs evala_elim_cases)));
   10.10  qed_spec_mp "aexp_iff";
   10.11  
   10.12  goal Expr.thy "!w. ((b,s) -b-> w) = (w = B b s)";
   10.13  by (bexp.induct_tac "b" 1);
   10.14 -by (ALLGOALS(asm_simp_tac (!simpset addcongs [conj_cong]
   10.15 +by (ALLGOALS(asm_simp_tac (simpset() addcongs [conj_cong]
   10.16                                      addsimps (aexp_iff::evalb_simps))));
   10.17  qed_spec_mp "bexp_iff";
    11.1 --- a/src/HOL/IMP/Hoare.ML	Mon Nov 03 12:12:10 1997 +0100
    11.2 +++ b/src/HOL/IMP/Hoare.ML	Mon Nov 03 12:13:18 1997 +0100
    11.3 @@ -61,29 +61,29 @@
    11.4  (*Not suitable for rewriting: LOOPS!*)
    11.5  goal Hoare.thy "wp (WHILE b DO c) Q s = \
    11.6  \                 (if b s then wp (c;WHILE b DO c) Q s else Q s)";
    11.7 -by (simp_tac (!simpset addsplits [expand_if]) 1);
    11.8 +by (simp_tac (simpset() addsplits [expand_if]) 1);
    11.9  qed "wp_While_if";
   11.10  
   11.11  goal thy
   11.12    "wp (WHILE b DO c) Q s = \
   11.13  \  (s : gfp(%S.{s. if b s then wp c (%s. s:S) s else Q s}))";
   11.14 -by (simp_tac (!simpset addsplits [expand_if]) 1);
   11.15 +by (simp_tac (simpset() addsplits [expand_if]) 1);
   11.16  by (rtac iffI 1);
   11.17   by (rtac weak_coinduct 1);
   11.18    by (etac CollectI 1);
   11.19 - by (safe_tac (!claset));
   11.20 + by (safe_tac (claset()));
   11.21    by (rotate_tac ~1 1);
   11.22    by (Asm_full_simp_tac 1);
   11.23   by (rotate_tac ~1 1);
   11.24   by (Asm_full_simp_tac 1);
   11.25 -by (asm_full_simp_tac (!simpset addsimps [wp_def,Gamma_def]) 1);
   11.26 +by (asm_full_simp_tac (simpset() addsimps [wp_def,Gamma_def]) 1);
   11.27  by (strip_tac 1);
   11.28  by (rtac mp 1);
   11.29   by (assume_tac 2);
   11.30  by (etac induct2 1);
   11.31 -by (fast_tac (!claset addSIs [monoI]) 1);
   11.32 +by (fast_tac (claset() addSIs [monoI]) 1);
   11.33  by (stac gfp_Tarski 1);
   11.34 - by (fast_tac (!claset addSIs [monoI]) 1);
   11.35 + by (fast_tac (claset() addSIs [monoI]) 1);
   11.36  by (Fast_tac 1);
   11.37  qed "wp_While";
   11.38  
   11.39 @@ -95,7 +95,7 @@
   11.40  by (com.induct_tac "c" 1);
   11.41  by (ALLGOALS Simp_tac);
   11.42  by (REPEAT_FIRST Fast_tac);
   11.43 -by (deepen_tac (!claset addIs [hoare.conseq]) 0 1);
   11.44 +by (deepen_tac (claset() addIs [hoare.conseq]) 0 1);
   11.45  by Safe_tac;
   11.46  by (rtac hoare.conseq 1);
   11.47    by (etac thin_rl 1);
    12.1 --- a/src/HOL/IMP/Natural.ML	Mon Nov 03 12:12:10 1997 +0100
    12.2 +++ b/src/HOL/IMP/Natural.ML	Mon Nov 03 12:13:18 1997 +0100
    12.3 @@ -20,5 +20,5 @@
    12.4  goal Natural.thy "!!c s t. <c,s> -c-> t ==> (!u. <c,s> -c-> u --> u=t)";
    12.5  by (etac evalc.induct 1);
    12.6  by (thin_tac "<?c,s2> -c-> s1" 7);
    12.7 -by (ALLGOALS (deepen_tac (!claset addEs [evalc_WHILE_case]) 4));
    12.8 +by (ALLGOALS (deepen_tac (claset() addEs [evalc_WHILE_case]) 4));
    12.9  qed_spec_mp "com_det";
    13.1 --- a/src/HOL/IMP/Transition.ML	Mon Nov 03 12:12:10 1997 +0100
    13.2 +++ b/src/HOL/IMP/Transition.ML	Mon Nov 03 12:13:18 1997 +0100
    13.3 @@ -34,11 +34,11 @@
    13.4  \              (c;d, s) -*-> (SKIP, u)";
    13.5  by (nat_ind_tac "n" 1);
    13.6   (* case n = 0 *)
    13.7 - by (fast_tac (!claset addIs [rtrancl_into_rtrancl2])1);
    13.8 + by (fast_tac (claset() addIs [rtrancl_into_rtrancl2])1);
    13.9  (* induction step *)
   13.10 -by (safe_tac (!claset addSDs [rel_pow_Suc_D2]));
   13.11 +by (safe_tac (claset() addSDs [rel_pow_Suc_D2]));
   13.12  by (split_all_tac 1);
   13.13 -by (fast_tac (!claset addIs [rtrancl_into_rtrancl2]) 1);
   13.14 +by (fast_tac (claset() addIs [rtrancl_into_rtrancl2]) 1);
   13.15  qed_spec_mp "lemma1";
   13.16  
   13.17  
   13.18 @@ -49,18 +49,18 @@
   13.19  by (rtac rtrancl_refl 1);
   13.20  
   13.21  (* ASSIGN *)
   13.22 -by (fast_tac (!claset addSIs [r_into_rtrancl]) 1);
   13.23 +by (fast_tac (claset() addSIs [r_into_rtrancl]) 1);
   13.24  
   13.25  (* SEMI *)
   13.26 -by (fast_tac (!claset addDs [rtrancl_imp_UN_rel_pow] addIs [lemma1]) 1);
   13.27 +by (fast_tac (claset() addDs [rtrancl_imp_UN_rel_pow] addIs [lemma1]) 1);
   13.28  
   13.29  (* IF *)
   13.30 -by (fast_tac (!claset addIs [rtrancl_into_rtrancl2]) 1);
   13.31 -by (fast_tac (!claset addIs [rtrancl_into_rtrancl2]) 1);
   13.32 +by (fast_tac (claset() addIs [rtrancl_into_rtrancl2]) 1);
   13.33 +by (fast_tac (claset() addIs [rtrancl_into_rtrancl2]) 1);
   13.34  
   13.35  (* WHILE *)
   13.36 -by (fast_tac (!claset addSIs [r_into_rtrancl]) 1);
   13.37 -by (fast_tac (!claset addDs [rtrancl_imp_UN_rel_pow]
   13.38 +by (fast_tac (claset() addSIs [r_into_rtrancl]) 1);
   13.39 +by (fast_tac (claset() addDs [rtrancl_imp_UN_rel_pow]
   13.40                          addIs [rtrancl_into_rtrancl2,lemma1]) 1);
   13.41  
   13.42  qed "evalc_impl_evalc1";
   13.43 @@ -71,31 +71,31 @@
   13.44  \            (? t m. (c,s) -*-> (SKIP,t) & (d,t) -m-> (SKIP,u) & m <= n)";
   13.45  by (nat_ind_tac "n" 1);
   13.46   (* case n = 0 *)
   13.47 - by (fast_tac (!claset addss !simpset) 1);
   13.48 + by (fast_tac (claset() addss simpset()) 1);
   13.49  (* induction step *)
   13.50 -by (fast_tac (!claset addSIs [le_SucI,le_refl]
   13.51 +by (fast_tac (claset() addSIs [le_SucI,le_refl]
   13.52                       addSDs [rel_pow_Suc_D2]
   13.53                       addSEs [rel_pow_imp_rtrancl,rtrancl_into_rtrancl2]) 1);
   13.54  qed_spec_mp "lemma2";
   13.55  
   13.56  goal Transition.thy "!s t. (c,s) -*-> (SKIP,t) --> <c,s> -c-> t";
   13.57  by (com.induct_tac "c" 1);
   13.58 -by (safe_tac (!claset addSDs [rtrancl_imp_UN_rel_pow]));
   13.59 +by (safe_tac (claset() addSDs [rtrancl_imp_UN_rel_pow]));
   13.60  
   13.61  (* SKIP *)
   13.62 -by (fast_tac (!claset addSEs [rel_pow_E2]) 1);
   13.63 +by (fast_tac (claset() addSEs [rel_pow_E2]) 1);
   13.64  
   13.65  (* ASSIGN *)
   13.66 -by (fast_tac (!claset addSDs [hlemma]  addSEs [rel_pow_E2]
   13.67 -                      addss !simpset) 1);
   13.68 +by (fast_tac (claset() addSDs [hlemma]  addSEs [rel_pow_E2]
   13.69 +                      addss simpset()) 1);
   13.70  
   13.71  (* SEMI *)
   13.72 -by (fast_tac (!claset addSDs [lemma2,rel_pow_imp_rtrancl]) 1);
   13.73 +by (fast_tac (claset() addSDs [lemma2,rel_pow_imp_rtrancl]) 1);
   13.74  
   13.75  (* IF *)
   13.76  by (etac rel_pow_E2 1);
   13.77  by (Asm_full_simp_tac 1);
   13.78 -by (fast_tac (!claset addSDs [rel_pow_imp_rtrancl]) 1);
   13.79 +by (fast_tac (claset() addSDs [rel_pow_imp_rtrancl]) 1);
   13.80  
   13.81  (* WHILE, induction on the length of the computation *)
   13.82  by (rotate_tac 1 1);
   13.83 @@ -108,10 +108,10 @@
   13.84  by (eresolve_tac evalc1_Es 1);
   13.85  
   13.86  (* WhileFalse *)
   13.87 - by (fast_tac (!claset addSDs [hlemma]) 1);
   13.88 + by (fast_tac (claset() addSDs [hlemma]) 1);
   13.89  
   13.90  (* WhileTrue *)
   13.91 -by (fast_tac(!claset addSDs[lemma2,le_imp_less_or_eq,less_Suc_eq RS iffD2])1);
   13.92 +by (fast_tac(claset() addSDs[lemma2,le_imp_less_or_eq,less_Suc_eq RS iffD2])1);
   13.93  
   13.94  qed_spec_mp "evalc1_impl_evalc";
   13.95  
   13.96 @@ -129,8 +129,8 @@
   13.97   "!!c1. (c1,s1) -*-> (SKIP,s2) ==> \
   13.98  \ (c2,s2) -*-> cs3 --> (c1;c2,s1) -*-> cs3";
   13.99  by (etac inverse_rtrancl_induct2 1);
  13.100 -by (fast_tac (!claset addIs [rtrancl_into_rtrancl2]) 1);
  13.101 -by (fast_tac (!claset addIs [rtrancl_into_rtrancl2]) 1);
  13.102 +by (fast_tac (claset() addIs [rtrancl_into_rtrancl2]) 1);
  13.103 +by (fast_tac (claset() addIs [rtrancl_into_rtrancl2]) 1);
  13.104  qed_spec_mp "my_lemma1";
  13.105  
  13.106  
  13.107 @@ -141,18 +141,18 @@
  13.108  by (rtac rtrancl_refl 1);
  13.109  
  13.110  (* ASSIGN *)
  13.111 -by (fast_tac (!claset addSIs [r_into_rtrancl]) 1);
  13.112 +by (fast_tac (claset() addSIs [r_into_rtrancl]) 1);
  13.113  
  13.114  (* SEMI *)
  13.115 -by (fast_tac (!claset addIs [my_lemma1]) 1);
  13.116 +by (fast_tac (claset() addIs [my_lemma1]) 1);
  13.117  
  13.118  (* IF *)
  13.119 -by (fast_tac (!claset addIs [rtrancl_into_rtrancl2]) 1);
  13.120 -by (fast_tac (!claset addIs [rtrancl_into_rtrancl2]) 1);
  13.121 +by (fast_tac (claset() addIs [rtrancl_into_rtrancl2]) 1);
  13.122 +by (fast_tac (claset() addIs [rtrancl_into_rtrancl2]) 1);
  13.123  
  13.124  (* WHILE *)
  13.125 -by (fast_tac (!claset addSIs [r_into_rtrancl]) 1);
  13.126 -by (fast_tac (!claset addIs [rtrancl_into_rtrancl2,my_lemma1]) 1);
  13.127 +by (fast_tac (claset() addSIs [r_into_rtrancl]) 1);
  13.128 +by (fast_tac (claset() addIs [rtrancl_into_rtrancl2,my_lemma1]) 1);
  13.129  
  13.130  qed "evalc_impl_evalc1";
  13.131  
  13.132 @@ -201,9 +201,9 @@
  13.133    "(c,s) -*-> (c',s') ==> <c',s'> -c-> t --> <c,s> -c-> t";
  13.134  by (rtac (major RS rtrancl_induct2) 1);
  13.135  by (Fast_tac 1);
  13.136 -by (fast_tac (!claset addIs [FB_lemma3] addbefore split_all_tac) 1);
  13.137 +by (fast_tac (claset() addIs [FB_lemma3] addbefore split_all_tac) 1);
  13.138  qed_spec_mp "FB_lemma2";
  13.139  
  13.140  goal Transition.thy "!!c. (c,s) -*-> (SKIP,t) ==> <c,s> -c-> t";
  13.141 -by (fast_tac (!claset addEs [FB_lemma2]) 1);
  13.142 +by (fast_tac (claset() addEs [FB_lemma2]) 1);
  13.143  qed "evalc1_impl_evalc";
    14.1 --- a/src/HOL/IMP/VC.ML	Mon Nov 03 12:12:10 1997 +0100
    14.2 +++ b/src/HOL/IMP/VC.ML	Mon Nov 03 12:13:18 1997 +0100
    14.3 @@ -71,5 +71,5 @@
    14.4  
    14.5  goal VC.thy "!Q. vcawp c Q = (vc c Q, awp c Q)";
    14.6  by (acom.induct_tac "c" 1);
    14.7 -by (ALLGOALS (asm_simp_tac (!simpset addsimps [Let_def])));
    14.8 +by (ALLGOALS (asm_simp_tac (simpset() addsimps [Let_def])));
    14.9  qed "vcawp_vc_awp";
    15.1 --- a/src/HOL/IOA/Asig.ML	Mon Nov 03 12:12:10 1997 +0100
    15.2 +++ b/src/HOL/IOA/Asig.ML	Mon Nov 03 12:13:18 1997 +0100
    15.3 @@ -11,9 +11,9 @@
    15.4  val asig_projections = [asig_inputs_def, asig_outputs_def, asig_internals_def];
    15.5  
    15.6  goal Asig.thy "!!a.[| a~:internals(S) ;a~:externals(S)|] ==> a~:actions(S)";
    15.7 -by (asm_full_simp_tac (!simpset addsimps [externals_def,actions_def]) 1);
    15.8 +by (asm_full_simp_tac (simpset() addsimps [externals_def,actions_def]) 1);
    15.9  qed"int_and_ext_is_act";
   15.10  
   15.11  goal Asig.thy "!!a.[|a:externals(S)|] ==> a:actions(S)";
   15.12 -by (asm_full_simp_tac (!simpset addsimps [externals_def,actions_def]) 1);
   15.13 +by (asm_full_simp_tac (simpset() addsimps [externals_def,actions_def]) 1);
   15.14  qed"ext_is_act";
    16.1 --- a/src/HOL/IOA/IOA.ML	Mon Nov 03 12:12:10 1997 +0100
    16.2 +++ b/src/HOL/IOA/IOA.ML	Mon Nov 03 12:13:18 1997 +0100
    16.3 @@ -16,7 +16,7 @@
    16.4  
    16.5  goal IOA.thy
    16.6  "asig_of((x,y,z)) = x & starts_of((x,y,z)) = y & trans_of((x,y,z)) = z";
    16.7 -  by (simp_tac (!simpset addsimps ioa_projections) 1);
    16.8 +  by (simp_tac (simpset() addsimps ioa_projections) 1);
    16.9    qed "ioa_triple_proj";
   16.10  
   16.11  goalw IOA.thy [ioa_def,state_trans_def,actions_def, is_asig_def]
   16.12 @@ -28,11 +28,11 @@
   16.13  
   16.14  
   16.15  goal IOA.thy "filter_oseq p (filter_oseq p s) = filter_oseq p s";
   16.16 -  by (simp_tac (!simpset addsimps [filter_oseq_def]) 1);
   16.17 +  by (simp_tac (simpset() addsimps [filter_oseq_def]) 1);
   16.18    by (rtac ext 1);
   16.19    by (exhaust_tac "s(i)" 1);
   16.20    by (Asm_simp_tac 1);
   16.21 -  by (asm_simp_tac (!simpset addsplits [expand_if]) 1);
   16.22 +  by (asm_simp_tac (simpset() addsplits [expand_if]) 1);
   16.23  qed "filter_oseq_idemp";
   16.24  
   16.25  goalw IOA.thy [mk_trace_def,filter_oseq_def]
   16.26 @@ -42,20 +42,20 @@
   16.27  \  (mk_trace A s n = Some(a)) =                                   \
   16.28  \   (s(n)=Some(a) & a : externals(asig_of(A)))";
   16.29    by (exhaust_tac "s(n)" 1);
   16.30 -  by (ALLGOALS (asm_simp_tac (!simpset addsplits [expand_if])));
   16.31 +  by (ALLGOALS (asm_simp_tac (simpset() addsplits [expand_if])));
   16.32    by (Fast_tac 1);
   16.33  qed "mk_trace_thm";
   16.34  
   16.35  goalw IOA.thy [reachable_def] "!!A. s:starts_of(A) ==> reachable A s";
   16.36    by (res_inst_tac [("x","(%i. None,%i. s)")] bexI 1);
   16.37    by (Simp_tac 1);
   16.38 -  by (asm_simp_tac (!simpset addsimps exec_rws) 1);
   16.39 +  by (asm_simp_tac (simpset() addsimps exec_rws) 1);
   16.40  qed "reachable_0";
   16.41  
   16.42  goalw IOA.thy (reachable_def::exec_rws)
   16.43  "!!A. [| reachable A s; (s,a,t) : trans_of(A) |] ==> reachable A t";
   16.44 -  by (asm_full_simp_tac (!simpset delsimps bex_simps) 1);
   16.45 -  by (safe_tac (!claset));
   16.46 +  by (asm_full_simp_tac (simpset() delsimps bex_simps) 1);
   16.47 +  by (safe_tac (claset()));
   16.48    by (res_inst_tac [("x","(%i. if i<n then fst ex i                    \
   16.49  \                            else (if i=n then Some a else None),    \
   16.50  \                         %i. if i<Suc n then snd ex i else t)")] bexI 1);
   16.51 @@ -65,11 +65,11 @@
   16.52    by (REPEAT(rtac allI 1));
   16.53    by (res_inst_tac [("m","na"),("n","n")] (make_elim less_linear) 1);
   16.54    by (etac disjE 1);
   16.55 -  by (asm_simp_tac (!simpset addsimps [less_Suc_eq]) 1);
   16.56 +  by (asm_simp_tac (simpset() addsimps [less_Suc_eq]) 1);
   16.57    by (etac disjE 1);
   16.58    by (Asm_simp_tac 1);
   16.59    by (forward_tac [less_not_sym] 1);
   16.60 -  by (asm_simp_tac (!simpset addsimps [less_not_refl2,less_Suc_eq]) 1);
   16.61 +  by (asm_simp_tac (simpset() addsimps [less_not_refl2,less_Suc_eq]) 1);
   16.62  qed "reachable_n";
   16.63  
   16.64  val [p1,p2] = goalw IOA.thy [invariant_def]
   16.65 @@ -77,22 +77,22 @@
   16.66  \     !!s t a. [|reachable A s; P(s)|] ==> (s,a,t): trans_of(A) --> P(t) |] \
   16.67  \  ==> invariant A P";
   16.68    by (rewrite_goals_tac(reachable_def::Let_def::exec_rws));
   16.69 -  by (safe_tac (!claset));
   16.70 +  by (safe_tac (claset()));
   16.71    by (res_inst_tac [("Q","reachable A (snd ex n)")] conjunct1 1);
   16.72    by (nat_ind_tac "n" 1);
   16.73 -  by (fast_tac (!claset addIs [p1,reachable_0]) 1);
   16.74 +  by (fast_tac (claset() addIs [p1,reachable_0]) 1);
   16.75    by (eres_inst_tac[("x","n")]allE 1);
   16.76    by (exhaust_tac "fst ex n" 1 THEN ALLGOALS Asm_full_simp_tac);
   16.77 -  by (safe_tac (!claset));
   16.78 +  by (safe_tac (claset()));
   16.79    by (etac (p2 RS mp) 1);
   16.80 -  by (ALLGOALS(fast_tac(!claset addDs [reachable_n])));
   16.81 +  by (ALLGOALS(fast_tac(claset() addDs [reachable_n])));
   16.82  qed "invariantI";
   16.83  
   16.84  val [p1,p2] = goal IOA.thy
   16.85   "[| !!s. s : starts_of(A) ==> P(s); \
   16.86  \   !!s t a. reachable A s ==> P(s) --> (s,a,t):trans_of(A) --> P(t) \
   16.87  \ |] ==> invariant A P";
   16.88 -  by (fast_tac (!claset addSIs [invariantI] addSDs [p1,p2]) 1);
   16.89 +  by (fast_tac (claset() addSIs [invariantI] addSDs [p1,p2]) 1);
   16.90  qed "invariantI1";
   16.91  
   16.92  val [p1,p2] = goalw IOA.thy [invariant_def]
   16.93 @@ -102,14 +102,14 @@
   16.94  
   16.95  goal IOA.thy 
   16.96  "actions(asig_comp a b) = actions(a) Un actions(b)";
   16.97 -  by (simp_tac (!simpset addsimps
   16.98 +  by (simp_tac (simpset() addsimps
   16.99                 ([actions_def,asig_comp_def]@asig_projections)) 1);
  16.100    by (Fast_tac 1);
  16.101  qed "actions_asig_comp";
  16.102  
  16.103  goal IOA.thy
  16.104  "starts_of(A || B) = {p. fst(p):starts_of(A) & snd(p):starts_of(B)}";
  16.105 -  by (simp_tac (!simpset addsimps (par_def::ioa_projections)) 1);
  16.106 +  by (simp_tac (simpset() addsimps (par_def::ioa_projections)) 1);
  16.107  qed "starts_of_par";
  16.108  
  16.109  (* Every state in an execution is reachable *)
  16.110 @@ -133,7 +133,7 @@
  16.111  \  (if a:actions(asig_of(D)) then                                            \
  16.112  \     (snd(snd(snd(s))),a,snd(snd(snd(t)))):trans_of(D)                      \
  16.113  \   else snd(snd(snd(t)))=snd(snd(snd(s)))))";
  16.114 -  by (simp_tac (!simpset addsimps ([par_def,actions_asig_comp,Pair_fst_snd_eq]@
  16.115 +  by (simp_tac (simpset() addsimps ([par_def,actions_asig_comp,Pair_fst_snd_eq]@
  16.116                              ioa_projections)
  16.117                    addsplits [expand_if]) 1);
  16.118  qed "trans_of_par4";
  16.119 @@ -141,18 +141,18 @@
  16.120  goal IOA.thy "starts_of(restrict ioa acts) = starts_of(ioa) &     \
  16.121  \             trans_of(restrict ioa acts) = trans_of(ioa) &       \
  16.122  \             reachable (restrict ioa acts) s = reachable ioa s";
  16.123 -by (simp_tac (!simpset addsimps ([is_execution_fragment_def,executions_def,
  16.124 +by (simp_tac (simpset() addsimps ([is_execution_fragment_def,executions_def,
  16.125                             reachable_def,restrict_def]@ioa_projections)) 1);
  16.126  qed "cancel_restrict";
  16.127  
  16.128  goal IOA.thy "asig_of(A || B) = asig_comp (asig_of A) (asig_of B)";
  16.129 -  by (simp_tac (!simpset addsimps (par_def::ioa_projections)) 1);
  16.130 +  by (simp_tac (simpset() addsimps (par_def::ioa_projections)) 1);
  16.131  qed "asig_of_par";
  16.132  
  16.133  
  16.134  goal IOA.thy "externals(asig_of(A1||A2)) =    \
  16.135  \  (externals(asig_of(A1)) Un externals(asig_of(A2)))";
  16.136 -by (asm_full_simp_tac (!simpset addsimps [externals_def,asig_of_par,asig_comp_def,asig_inputs_def,asig_outputs_def,Un_def,set_diff_def]) 1);
  16.137 +by (asm_full_simp_tac (simpset() addsimps [externals_def,asig_of_par,asig_comp_def,asig_inputs_def,asig_outputs_def,Un_def,set_diff_def]) 1);
  16.138  by (rtac set_ext 1); 
  16.139  by (Fast_tac 1);
  16.140  qed"externals_of_par"; 
  16.141 @@ -160,13 +160,13 @@
  16.142  goalw IOA.thy [externals_def,actions_def,compat_ioas_def,compat_asigs_def]
  16.143   "!! a. [| compat_ioas A1 A2; a:externals(asig_of(A1))|] ==> a~:internals(asig_of(A2))";
  16.144  by (Asm_full_simp_tac 1);
  16.145 -by (best_tac (!claset addEs [equalityCE]) 1);
  16.146 +by (best_tac (claset() addEs [equalityCE]) 1);
  16.147  qed"ext1_is_not_int2";
  16.148  
  16.149  goalw IOA.thy [externals_def,actions_def,compat_ioas_def,compat_asigs_def]
  16.150   "!! a. [| compat_ioas A2 A1 ; a:externals(asig_of(A1))|] ==> a~:internals(asig_of(A2))";
  16.151  by (Asm_full_simp_tac 1);
  16.152 -by (best_tac (!claset addEs [equalityCE]) 1);
  16.153 +by (best_tac (claset() addEs [equalityCE]) 1);
  16.154  qed"ext2_is_not_int1";
  16.155  
  16.156  val ext1_ext2_is_not_act2 = ext1_is_not_int2 RS int_and_ext_is_act;
    17.1 --- a/src/HOL/IOA/Solve.ML	Mon Nov 03 12:12:10 1997 +0100
    17.2 +++ b/src/HOL/IOA/Solve.ML	Mon Nov 03 12:13:18 1997 +0100
    17.3 @@ -14,8 +14,8 @@
    17.4    "!!f. [| IOA(C); IOA(A); externals(asig_of(C)) = externals(asig_of(A)); \
    17.5  \          is_weak_pmap f C A |] ==> traces(C) <= traces(A)";
    17.6  
    17.7 -  by (simp_tac(!simpset addsimps [has_trace_def])1);
    17.8 -  by (safe_tac (!claset));
    17.9 +  by (simp_tac(simpset() addsimps [has_trace_def])1);
   17.10 +  by (safe_tac (claset()));
   17.11  
   17.12    (* choose same trace, therefore same NF *)
   17.13    by (res_inst_tac[("x","mk_trace  C (fst ex)")] exI 1);
   17.14 @@ -25,22 +25,22 @@
   17.15    by (res_inst_tac[("x","(mk_trace A (fst ex),%i. f(snd ex i))")] bexI 1);
   17.16  
   17.17    (* Traces coincide *)
   17.18 -  by (asm_simp_tac (!simpset addsimps [mk_trace_def,filter_oseq_idemp])1);
   17.19 +  by (asm_simp_tac (simpset() addsimps [mk_trace_def,filter_oseq_idemp])1);
   17.20  
   17.21    (* Use lemma *)
   17.22    by (forward_tac [states_of_exec_reachable] 1);
   17.23  
   17.24    (* Now show that it's an execution *)
   17.25 -  by (asm_full_simp_tac(!simpset addsimps [executions_def]) 1);
   17.26 -  by (safe_tac (!claset));
   17.27 +  by (asm_full_simp_tac(simpset() addsimps [executions_def]) 1);
   17.28 +  by (safe_tac (claset()));
   17.29  
   17.30    (* Start states map to start states *)
   17.31    by (dtac bspec 1);
   17.32    by (atac 1);
   17.33  
   17.34    (* Show that it's an execution fragment *)
   17.35 -  by (asm_full_simp_tac (!simpset addsimps [is_execution_fragment_def])1);
   17.36 -  by (safe_tac (!claset));
   17.37 +  by (asm_full_simp_tac (simpset() addsimps [is_execution_fragment_def])1);
   17.38 +  by (safe_tac (claset()));
   17.39  
   17.40    by (eres_inst_tac [("x","snd ex n")] allE 1);
   17.41    by (eres_inst_tac [("x","snd ex (Suc n)")] allE 1);
   17.42 @@ -51,7 +51,7 @@
   17.43  (* Lemmata *)
   17.44  
   17.45  val prems = goal HOL.thy "(P ==> Q-->R) ==> P&Q --> R";
   17.46 -  by(fast_tac (!claset addDs prems) 1);
   17.47 +  by(fast_tac (claset() addDs prems) 1);
   17.48  val imp_conj_lemma = result();
   17.49  
   17.50  
   17.51 @@ -60,12 +60,12 @@
   17.52  \  (a:externals(asig_of(A1)) & a:externals(asig_of(A2)) |  \
   17.53  \  a:externals(asig_of(A1)) & a~:externals(asig_of(A2)) |  \
   17.54  \  a~:externals(asig_of(A1)) & a:externals(asig_of(A2)))";
   17.55 -by (asm_full_simp_tac (!simpset addsimps [externals_def,asig_of_par,asig_comp_def,asig_inputs_def,asig_outputs_def]) 1);
   17.56 +by (asm_full_simp_tac (simpset() addsimps [externals_def,asig_of_par,asig_comp_def,asig_inputs_def,asig_outputs_def]) 1);
   17.57   by (Fast_tac 1);
   17.58  val externals_of_par_extra = result(); 
   17.59  
   17.60  goal Solve.thy "!!s.[| reachable (C1||C2) s |] ==> reachable C1 (fst s)";
   17.61 -by (asm_full_simp_tac (!simpset addsimps [reachable_def]) 1); 
   17.62 +by (asm_full_simp_tac (simpset() addsimps [reachable_def]) 1); 
   17.63  by (etac bexE 1);
   17.64  by (res_inst_tac [("x",
   17.65     "(filter_oseq (%a. a:actions(asig_of(C1))) \
   17.66 @@ -76,7 +76,7 @@
   17.67   by (Fast_tac 1);
   17.68  (* projected execution is indeed an execution *)
   17.69  by (asm_full_simp_tac
   17.70 -      (!simpset addsimps [executions_def,is_execution_fragment_def,
   17.71 +      (simpset() addsimps [executions_def,is_execution_fragment_def,
   17.72                            par_def,starts_of_def,trans_of_def,filter_oseq_def]
   17.73                  addsplits [expand_if,split_option_case]) 1);
   17.74  qed"comp1_reachable";
   17.75 @@ -85,7 +85,7 @@
   17.76  (* Exact copy of proof of comp1_reachable for the second 
   17.77     component of a parallel composition.     *)
   17.78  goal Solve.thy "!!s.[| reachable (C1||C2) s|] ==> reachable C2 (snd s)";
   17.79 -by (asm_full_simp_tac (!simpset addsimps [reachable_def]) 1); 
   17.80 +by (asm_full_simp_tac (simpset() addsimps [reachable_def]) 1); 
   17.81  by (etac bexE 1);
   17.82  by (res_inst_tac [("x",
   17.83     "(filter_oseq (%a. a:actions(asig_of(C2)))\
   17.84 @@ -96,7 +96,7 @@
   17.85   by (Fast_tac 1);
   17.86  (* projected execution is indeed an execution *)
   17.87  by (asm_full_simp_tac
   17.88 -      (!simpset addsimps [executions_def,is_execution_fragment_def,
   17.89 +      (simpset() addsimps [executions_def,is_execution_fragment_def,
   17.90                            par_def,starts_of_def,trans_of_def,filter_oseq_def]
   17.91                  addsplits [expand_if,split_option_case]) 1);
   17.92  qed"comp2_reachable";
   17.93 @@ -112,27 +112,27 @@
   17.94  \  ==> is_weak_pmap (%p.(f(fst(p)),g(snd(p)))) (C1||C2) (A1||A2)";
   17.95   by (rtac conjI 1);
   17.96  (* start_states *)
   17.97 - by (asm_full_simp_tac (!simpset addsimps [par_def, starts_of_def]) 1);
   17.98 + by (asm_full_simp_tac (simpset() addsimps [par_def, starts_of_def]) 1);
   17.99  (* transitions *)
  17.100  by (REPEAT (rtac allI 1));
  17.101  by (rtac imp_conj_lemma 1);
  17.102  by (REPEAT(etac conjE 1));
  17.103 -by (simp_tac (!simpset addsimps [externals_of_par_extra]) 1);
  17.104 -by (simp_tac (!simpset addsimps [par_def]) 1);
  17.105 -by (asm_full_simp_tac (!simpset addsimps [trans_of_def]) 1);
  17.106 +by (simp_tac (simpset() addsimps [externals_of_par_extra]) 1);
  17.107 +by (simp_tac (simpset() addsimps [par_def]) 1);
  17.108 +by (asm_full_simp_tac (simpset() addsimps [trans_of_def]) 1);
  17.109  by (rtac (expand_if RS ssubst) 1);
  17.110  by (rtac conjI 1);
  17.111  by (rtac impI 1); 
  17.112  by (etac disjE 1);
  17.113  (* case 1      a:e(A1) | a:e(A2) *)
  17.114 -by (asm_full_simp_tac (!simpset addsimps [comp1_reachable,comp2_reachable,
  17.115 +by (asm_full_simp_tac (simpset() addsimps [comp1_reachable,comp2_reachable,
  17.116                                      ext_is_act]) 1);
  17.117  by (etac disjE 1);
  17.118  (* case 2      a:e(A1) | a~:e(A2) *)
  17.119 -by (asm_full_simp_tac (!simpset addsimps [comp1_reachable,comp2_reachable,
  17.120 +by (asm_full_simp_tac (simpset() addsimps [comp1_reachable,comp2_reachable,
  17.121               ext_is_act,ext1_ext2_is_not_act2]) 1);
  17.122  (* case 3      a:~e(A1) | a:e(A2) *)
  17.123 -by (asm_full_simp_tac (!simpset addsimps [comp1_reachable,comp2_reachable,
  17.124 +by (asm_full_simp_tac (simpset() addsimps [comp1_reachable,comp2_reachable,
  17.125               ext_is_act,ext1_ext2_is_not_act1]) 1);
  17.126  (* case 4      a:~e(A1) | a~:e(A2) *)
  17.127  by (rtac impI 1);
  17.128 @@ -140,16 +140,16 @@
  17.129  (* delete auxiliary subgoal *)
  17.130  by (Asm_full_simp_tac 2);
  17.131  by (Fast_tac 2);
  17.132 -by (simp_tac (!simpset addsimps [conj_disj_distribR] addcongs [conj_cong]
  17.133 +by (simp_tac (simpset() addsimps [conj_disj_distribR] addcongs [conj_cong]
  17.134                   addsplits [expand_if]) 1);
  17.135  by(REPEAT((resolve_tac [conjI,impI] 1 ORELSE etac conjE 1) THEN
  17.136 -        asm_full_simp_tac(!simpset addsimps[comp1_reachable,
  17.137 +        asm_full_simp_tac(simpset() addsimps[comp1_reachable,
  17.138                                        comp2_reachable])1));
  17.139  qed"fxg_is_weak_pmap_of_product_IOA";
  17.140  
  17.141  
  17.142  goal Solve.thy "!!s.[| reachable (rename C g) s |] ==> reachable C s";
  17.143 -by (asm_full_simp_tac (!simpset addsimps [reachable_def]) 1); 
  17.144 +by (asm_full_simp_tac (simpset() addsimps [reachable_def]) 1); 
  17.145  by (etac bexE 1);
  17.146  by (res_inst_tac [("x",
  17.147     "((%i. case (fst ex i) \
  17.148 @@ -158,23 +158,23 @@
  17.149  by (Simp_tac 1);
  17.150  (* execution is indeed an execution of C *)
  17.151  by (asm_full_simp_tac
  17.152 -      (!simpset addsimps [executions_def,is_execution_fragment_def,
  17.153 +      (simpset() addsimps [executions_def,is_execution_fragment_def,
  17.154                            par_def,starts_of_def,trans_of_def,rename_def]
  17.155                  addsplits [split_option_case]) 1);
  17.156 -by (best_tac (!claset addSDs [spec] addDs [sym] addss (!simpset)) 1);
  17.157 +by (best_tac (claset() addSDs [spec] addDs [sym] addss (simpset())) 1);
  17.158  qed"reachable_rename_ioa";
  17.159  
  17.160  
  17.161  goal Solve.thy "!!f.[| is_weak_pmap f C A |]\
  17.162  \                      ==> (is_weak_pmap f (rename C g) (rename A g))";
  17.163 -by (asm_full_simp_tac (!simpset addsimps [is_weak_pmap_def]) 1);
  17.164 +by (asm_full_simp_tac (simpset() addsimps [is_weak_pmap_def]) 1);
  17.165  by (rtac conjI 1);
  17.166 -by (asm_full_simp_tac (!simpset addsimps [rename_def,starts_of_def]) 1);
  17.167 +by (asm_full_simp_tac (simpset() addsimps [rename_def,starts_of_def]) 1);
  17.168  by (REPEAT (rtac allI 1));
  17.169  by (rtac imp_conj_lemma 1);
  17.170 -by (simp_tac (!simpset addsimps [rename_def]) 1);
  17.171 -by (asm_full_simp_tac (!simpset addsimps [externals_def,asig_inputs_def,asig_outputs_def,asig_of_def,trans_of_def]) 1);
  17.172 -by (safe_tac (!claset));
  17.173 +by (simp_tac (simpset() addsimps [rename_def]) 1);
  17.174 +by (asm_full_simp_tac (simpset() addsimps [externals_def,asig_inputs_def,asig_outputs_def,asig_of_def,trans_of_def]) 1);
  17.175 +by (safe_tac (claset()));
  17.176  by (rtac (expand_if RS ssubst) 1);
  17.177   by (rtac conjI 1);
  17.178   by (rtac impI 1);
  17.179 @@ -200,7 +200,7 @@
  17.180  by (assume_tac 1);
  17.181  by (Asm_full_simp_tac 1);
  17.182  (* x is internal *)
  17.183 -by (simp_tac (!simpset addsimps [de_Morgan_disj, de_Morgan_conj, not_ex] 
  17.184 +by (simp_tac (simpset() addsimps [de_Morgan_disj, de_Morgan_conj, not_ex] 
  17.185  	               addcongs [conj_cong]) 1);
  17.186  by (rtac impI 1);
  17.187  by (etac conjE 1);
    18.1 --- a/src/HOL/Induct/Acc.ML	Mon Nov 03 12:12:10 1997 +0100
    18.2 +++ b/src/HOL/Induct/Acc.ML	Mon Nov 03 12:13:18 1997 +0100
    18.3 @@ -14,7 +14,7 @@
    18.4  (*The intended introduction rule*)
    18.5  val prems = goal Acc.thy
    18.6      "[| !!b. (b,a):r ==> b: acc(r) |] ==> a: acc(r)";
    18.7 -by (fast_tac (!claset addIs (prems @ 
    18.8 +by (fast_tac (claset() addIs (prems @ 
    18.9                              map (rewrite_rule [pred_def]) acc.intrs)) 1);
   18.10  qed "accI";
   18.11  
   18.12 @@ -54,7 +54,7 @@
   18.13  val [major] = goal Acc.thy "wf(r) ==> r <= (acc r) Times (acc r)";
   18.14  by (rtac subsetI 1);
   18.15  by (res_inst_tac [("p", "x")] PairE 1);
   18.16 -by (fast_tac (!claset addSIs [SigmaI,
   18.17 +by (fast_tac (claset() addSIs [SigmaI,
   18.18                               major RS acc_wfD_lemma RS spec RS mp]) 1);
   18.19  qed "acc_wfD";
   18.20  
    19.1 --- a/src/HOL/Induct/Com.ML	Mon Nov 03 12:12:10 1997 +0100
    19.2 +++ b/src/HOL/Induct/Com.ML	Mon Nov 03 12:13:18 1997 +0100
    19.3 @@ -30,7 +30,7 @@
    19.4  
    19.5  (*Command execution is functional (deterministic) provided evaluation is*)
    19.6  goal thy "!!x. Function ev ==> Function(exec ev)";
    19.7 -by (simp_tac (!simpset addsimps [Function_def, Unique_def]) 1);
    19.8 +by (simp_tac (simpset() addsimps [Function_def, Unique_def]) 1);
    19.9  by (REPEAT (rtac allI 1));
   19.10  by (rtac impI 1);
   19.11  by (etac exec.induct 1);
   19.12 @@ -39,7 +39,7 @@
   19.13  by (rewrite_goals_tac [Function_def, Unique_def]);
   19.14  by (thin_tac "(?c,s1) -[ev]-> s2" 5);
   19.15  (*SLOW (23s) due to proof reconstruction; needs 60s if thin_tac is omitted*)
   19.16 -by (REPEAT (blast_tac (!claset addEs [exec_WHILE_case]) 1));
   19.17 +by (REPEAT (blast_tac (claset() addEs [exec_WHILE_case]) 1));
   19.18  qed "Function_exec";
   19.19  
   19.20  
   19.21 @@ -53,7 +53,7 @@
   19.22  
   19.23  goalw thy [assign_def] "s[s x/x] = s";
   19.24  by (rtac ext 1);
   19.25 -by (simp_tac (!simpset addsplits [expand_if]) 1);
   19.26 +by (simp_tac (simpset() addsplits [expand_if]) 1);
   19.27  qed "assign_triv";
   19.28  
   19.29  Addsimps [assign_same, assign_different, assign_triv];
    20.1 --- a/src/HOL/Induct/Comb.ML	Mon Nov 03 12:12:10 1997 +0100
    20.2 +++ b/src/HOL/Induct/Comb.ML	Mon Nov 03 12:13:18 1997 +0100
    20.3 @@ -67,12 +67,12 @@
    20.4  
    20.5  goal Comb.thy "!!x z. x ---> y ==> x#z ---> y#z";
    20.6  by (etac rtrancl_induct 1);
    20.7 -by (ALLGOALS (blast_tac (!claset addIs [r_into_rtrancl, rtrancl_trans])));
    20.8 +by (ALLGOALS (blast_tac (claset() addIs [r_into_rtrancl, rtrancl_trans])));
    20.9  qed "Ap_reduce1";
   20.10  
   20.11  goal Comb.thy "!!x z. x ---> y ==> z#x ---> z#y";
   20.12  by (etac rtrancl_induct 1);
   20.13 -by (ALLGOALS (blast_tac (!claset addIs [r_into_rtrancl, rtrancl_trans])));
   20.14 +by (ALLGOALS (blast_tac (claset() addIs [r_into_rtrancl, rtrancl_trans])));
   20.15  qed "Ap_reduce2";
   20.16  
   20.17  (** Counterexample to the diamond property for -1-> **)
   20.18 @@ -90,7 +90,7 @@
   20.19  qed "KIII_contract3";
   20.20  
   20.21  goalw Comb.thy [diamond_def] "~ diamond(contract)";
   20.22 -by (blast_tac (!claset addIs [KIII_contract1,KIII_contract2,KIII_contract3]) 1);
   20.23 +by (blast_tac (claset() addIs [KIII_contract1,KIII_contract2,KIII_contract3]) 1);
   20.24  qed "not_diamond_contract";
   20.25  
   20.26  
   20.27 @@ -169,7 +169,7 @@
   20.28  qed "reduce_eq_parreduce";
   20.29  
   20.30  goal Comb.thy "diamond(contract^*)";
   20.31 -by (simp_tac (!simpset addsimps [reduce_eq_parreduce, diamond_rtrancl, 
   20.32 +by (simp_tac (simpset() addsimps [reduce_eq_parreduce, diamond_rtrancl, 
   20.33                                   diamond_parcontract]) 1);
   20.34  qed "diamond_reduce";
   20.35  
    21.1 --- a/src/HOL/Induct/Exp.ML	Mon Nov 03 12:12:10 1997 +0100
    21.2 +++ b/src/HOL/Induct/Exp.ML	Mon Nov 03 12:13:18 1997 +0100
    21.3 @@ -53,11 +53,11 @@
    21.4  \        ==> P (VALOF c RESULTIS e) s n s1                       \
    21.5  \  |] ==> P e s n s'";
    21.6  by (rtac (major RS eval.induct) 1);
    21.7 -by (blast_tac (!claset addIs prems) 1);
    21.8 -by (blast_tac (!claset addIs prems) 1);
    21.9 -by (blast_tac (!claset addIs prems) 1);
   21.10 +by (blast_tac (claset() addIs prems) 1);
   21.11 +by (blast_tac (claset() addIs prems) 1);
   21.12 +by (blast_tac (claset() addIs prems) 1);
   21.13  by (forward_tac [impOfSubs (Int_lower1 RS exec_mono)] 1);
   21.14 -by (fast_tac (!claset addIs prems addss (!simpset addsimps [split_lemma])) 1);
   21.15 +by (fast_tac (claset() addIs prems addss (simpset() addsimps [split_lemma])) 1);
   21.16  qed "eval_induct";
   21.17  
   21.18  
   21.19 @@ -78,7 +78,7 @@
   21.20  by (Blast_tac 1);
   21.21  by (Blast_tac 1);
   21.22  by (Blast_tac 1);
   21.23 -by (blast_tac (!claset addEs [exec_WHILE_case]) 1);
   21.24 +by (blast_tac (claset() addEs [exec_WHILE_case]) 1);
   21.25  by (thin_tac "(?c,s2) -[?ev]-> s3" 1);
   21.26  by (Clarify_tac 1);
   21.27  by (etac exec_WHILE_case 1);
   21.28 @@ -88,12 +88,12 @@
   21.29  
   21.30  (*Expression evaluation is functional, or deterministic*)
   21.31  goal thy "Function eval";
   21.32 -by (simp_tac (!simpset addsimps [Function_def]) 1);
   21.33 +by (simp_tac (simpset() addsimps [Function_def]) 1);
   21.34  by (REPEAT (rtac allI 1));
   21.35  by (rtac impI 1);
   21.36  by (etac eval_induct 1);
   21.37  by (dtac com_Unique 4);
   21.38 -by (ALLGOALS (full_simp_tac (!simpset addsimps [Unique_def])));
   21.39 +by (ALLGOALS (full_simp_tac (simpset() addsimps [Unique_def])));
   21.40  by (ALLGOALS Blast_tac);
   21.41  qed "Function_eval";
   21.42  
   21.43 @@ -136,7 +136,7 @@
   21.44  
   21.45  goal thy "((IF e THEN c;;(WHILE e DO c) ELSE SKIP, s) -[eval]-> t)  =  \
   21.46  \         ((WHILE e DO c, s) -[eval]-> t)";
   21.47 -by (blast_tac (!claset addIs [while_if1, while_if2]) 1);
   21.48 +by (blast_tac (claset() addIs [while_if1, while_if2]) 1);
   21.49  qed "while_if";
   21.50  
   21.51  
   21.52 @@ -164,7 +164,7 @@
   21.53  
   21.54  goal thy "(((IF e THEN c1 ELSE c2);;c, s) -[eval]-> t)  =  \
   21.55  \         ((IF e THEN (c1;;c) ELSE (c2;;c), s) -[eval]-> t)";
   21.56 -by (blast_tac (!claset addIs [if_semi1, if_semi2]) 1);
   21.57 +by (blast_tac (claset() addIs [if_semi1, if_semi2]) 1);
   21.58  qed "if_semi";
   21.59  
   21.60  
   21.61 @@ -193,7 +193,7 @@
   21.62  
   21.63  goal thy "((VALOF c1 RESULTIS (VALOF c2 RESULTIS e), s) -|-> (v,s'))  =  \
   21.64  \         ((VALOF c1;;c2 RESULTIS e, s) -|-> (v,s'))";
   21.65 -by (blast_tac (!claset addIs [valof_valof1, valof_valof2]) 1);
   21.66 +by (blast_tac (claset() addIs [valof_valof1, valof_valof2]) 1);
   21.67  qed "valof_valof";
   21.68  
   21.69  
   21.70 @@ -212,7 +212,7 @@
   21.71  qed "valof_skip2";
   21.72  
   21.73  goal thy "((VALOF SKIP RESULTIS e, s) -|-> (v,s'))  =  ((e, s) -|-> (v,s'))";
   21.74 -by (blast_tac (!claset addIs [valof_skip1, valof_skip2]) 1);
   21.75 +by (blast_tac (claset() addIs [valof_skip1, valof_skip2]) 1);
   21.76  qed "valof_skip";
   21.77  
   21.78  
    22.1 --- a/src/HOL/Induct/LList.ML	Mon Nov 03 12:12:10 1997 +0100
    22.2 +++ b/src/HOL/Induct/LList.ML	Mon Nov 03 12:13:18 1997 +0100
    22.3 @@ -10,7 +10,7 @@
    22.4  
    22.5  (** Simplification **)
    22.6  
    22.7 -simpset := !simpset addsplits [expand_split, expand_sum_case];
    22.8 +simpset_ref() := simpset() addsplits [expand_split, expand_sum_case];
    22.9  
   22.10  (*For adding _eqI rules to a simpset; we must remove Pair_eq because
   22.11    it may turn an instance of reflexivity into a conjunction!*)
   22.12 @@ -27,7 +27,7 @@
   22.13  
   22.14  goal LList.thy "llist(A) = {Numb(0)} <+> (A <*> llist(A))";
   22.15  let val rew = rewrite_rule [NIL_def, CONS_def] in  
   22.16 -by (fast_tac (!claset addSIs (map rew llist.intrs)
   22.17 +by (fast_tac (claset() addSIs (map rew llist.intrs)
   22.18                        addEs [rew llist.elim]) 1)
   22.19  end;
   22.20  qed "llist_unfold";
   22.21 @@ -63,16 +63,16 @@
   22.22  
   22.23  (*A continuity result?*)
   22.24  goalw LList.thy [CONS_def] "CONS M (UN x. f(x)) = (UN x. CONS M (f x))";
   22.25 -by (simp_tac (!simpset addsimps [In1_UN1, Scons_UN1_y]) 1);
   22.26 +by (simp_tac (simpset() addsimps [In1_UN1, Scons_UN1_y]) 1);
   22.27  qed "CONS_UN1";
   22.28  
   22.29  (*UNUSED; obsolete?
   22.30  goal Prod.thy "split p (%x y. UN z. f x y z) = (UN z. split p (%x y. f x y z))";
   22.31 -by (simp_tac (!simpset addsplits [expand_split]) 1);
   22.32 +by (simp_tac (simpset() addsplits [expand_split]) 1);
   22.33  qed "split_UN1";
   22.34  
   22.35  goal Sum.thy "sum_case s f (%y. UN z. g y z) = (UN z. sum_case s f (%y. g y z))";
   22.36 -by (simp_tac (!simpset addsplits [expand_sum_case]) 1);
   22.37 +by (simp_tac (simpset() addsplits [expand_sum_case]) 1);
   22.38  qed "sum_case2_UN1";
   22.39  *)
   22.40  
   22.41 @@ -98,8 +98,8 @@
   22.42  goalw LList.thy [LList_corec_def]
   22.43      "sum_case (%u. NIL) (split(%z w. CONS z (LList_corec w f))) (f a) <= \
   22.44  \    LList_corec a f";
   22.45 -by (simp_tac (!simpset addsimps [CONS_UN1]) 1);
   22.46 -by (safe_tac (!claset));
   22.47 +by (simp_tac (simpset() addsimps [CONS_UN1]) 1);
   22.48 +by (safe_tac (claset()));
   22.49  by (ALLGOALS (res_inst_tac [("x","Suc(?k)")] UN1_I THEN' Asm_simp_tac));
   22.50  qed "LList_corec_subset2";
   22.51  
   22.52 @@ -124,9 +124,9 @@
   22.53  goal LList.thy "LList_corec a f : llist({u. True})";
   22.54  by (res_inst_tac [("X", "range(%x. LList_corec x ?g)")] llist_coinduct 1);
   22.55  by (rtac rangeI 1);
   22.56 -by (safe_tac (!claset));
   22.57 +by (safe_tac (claset()));
   22.58  by (stac LList_corec 1);
   22.59 -by (simp_tac (!simpset addsimps [list_Fun_NIL_I, list_Fun_CONS_I, CollectI]
   22.60 +by (simp_tac (simpset() addsimps [list_Fun_NIL_I, list_Fun_CONS_I, CollectI]
   22.61                         |> add_eqI) 1);
   22.62  qed "LList_corec_type";
   22.63  
   22.64 @@ -136,10 +136,10 @@
   22.65  \   llist(range Leaf)";
   22.66  by (res_inst_tac [("X", "range(%x. LList_corec x ?g)")] llist_coinduct 1);
   22.67  by (rtac rangeI 1);
   22.68 -by (safe_tac (!claset));
   22.69 +by (safe_tac (claset()));
   22.70  by (stac LList_corec 1);
   22.71 -by (asm_simp_tac (!simpset addsimps [list_Fun_NIL_I]) 1);
   22.72 -by (fast_tac (!claset addSIs [list_Fun_CONS_I]) 1);
   22.73 +by (asm_simp_tac (simpset() addsimps [list_Fun_NIL_I]) 1);
   22.74 +by (fast_tac (claset() addSIs [list_Fun_CONS_I]) 1);
   22.75  qed "LList_corec_type2";
   22.76  
   22.77  
   22.78 @@ -148,22 +148,22 @@
   22.79  (*This theorem is actually used, unlike the many similar ones in ZF*)
   22.80  goal LList.thy "LListD(r) = diag({Numb(0)}) <++> (r <**> LListD(r))";
   22.81  let val rew = rewrite_rule [NIL_def, CONS_def] in  
   22.82 -by (fast_tac (!claset addSIs (map rew LListD.intrs)
   22.83 +by (fast_tac (claset() addSIs (map rew LListD.intrs)
   22.84                        addEs [rew LListD.elim]) 1)
   22.85  end;
   22.86  qed "LListD_unfold";
   22.87  
   22.88  goal LList.thy "!M N. (M,N) : LListD(diag(A)) --> ntrunc k M = ntrunc k N";
   22.89  by (res_inst_tac [("n", "k")] less_induct 1);
   22.90 -by (safe_tac ((claset_of "Fun") delrules [equalityI]));
   22.91 +by (safe_tac ((claset_of Fun.thy) delrules [equalityI]));
   22.92  by (etac LListD.elim 1);
   22.93 -by (safe_tac (claset_of "Prod" delrules [equalityI] addSEs [diagE]));
   22.94 +by (safe_tac (claset_of Prod.thy delrules [equalityI] addSEs [diagE]));
   22.95  by (res_inst_tac [("n", "n")] natE 1);
   22.96 -by (asm_simp_tac (!simpset addsimps [ntrunc_0]) 1);
   22.97 +by (asm_simp_tac (simpset() addsimps [ntrunc_0]) 1);
   22.98  by (rename_tac "n'" 1);
   22.99  by (res_inst_tac [("n", "n'")] natE 1);
  22.100 -by (asm_simp_tac (!simpset addsimps [CONS_def, ntrunc_one_In1]) 1);
  22.101 -by (asm_simp_tac (!simpset addsimps [CONS_def, ntrunc_In1, ntrunc_Scons, less_Suc_eq]) 1);
  22.102 +by (asm_simp_tac (simpset() addsimps [CONS_def, ntrunc_one_In1]) 1);
  22.103 +by (asm_simp_tac (simpset() addsimps [CONS_def, ntrunc_In1, ntrunc_Scons, less_Suc_eq]) 1);
  22.104  qed "LListD_implies_ntrunc_equality";
  22.105  
  22.106  (*The domain of the LListD relation*)
  22.107 @@ -180,7 +180,7 @@
  22.108  goal LList.thy "LListD(diag(A)) <= diag(llist(A))";
  22.109  by (rtac subsetI 1);
  22.110  by (res_inst_tac [("p","x")] PairE 1);
  22.111 -by (safe_tac (!claset));
  22.112 +by (safe_tac (claset()));
  22.113  by (rtac diag_eqI 1);
  22.114  by (rtac (LListD_implies_ntrunc_equality RS spec RS spec RS mp RS 
  22.115            ntrunc_equality) 1);
  22.116 @@ -229,7 +229,7 @@
  22.117  by (etac ssubst 1);
  22.118  by (eresolve_tac [llist.elim] 1);
  22.119  by (ALLGOALS
  22.120 -    (asm_simp_tac (!simpset addsimps [diagI, LListD_Fun_NIL_I,
  22.121 +    (asm_simp_tac (simpset() addsimps [diagI, LListD_Fun_NIL_I,
  22.122                                        LListD_Fun_CONS_I])));
  22.123  qed "diag_subset_LListD";
  22.124  
  22.125 @@ -242,7 +242,7 @@
  22.126      "!!M N. M: llist(A) ==> (M,M) : LListD_Fun (diag A) (X Un diag(llist(A)))";
  22.127  by (rtac (LListD_eq_diag RS subst) 1);
  22.128  by (rtac LListD_Fun_LListD_I 1);
  22.129 -by (asm_simp_tac (!simpset addsimps [LListD_eq_diag, diagI]) 1);
  22.130 +by (asm_simp_tac (simpset() addsimps [LListD_eq_diag, diagI]) 1);
  22.131  qed "LListD_Fun_diag_I";
  22.132  
  22.133  
  22.134 @@ -254,8 +254,8 @@
  22.135  \         |] ==>  M=N";
  22.136  by (rtac (LListD_subset_diag RS subsetD RS diagE) 1);
  22.137  by (etac LListD_coinduct 1);
  22.138 -by (asm_simp_tac (!simpset addsimps [LListD_eq_diag]) 1);
  22.139 -by (safe_tac (!claset));
  22.140 +by (asm_simp_tac (simpset() addsimps [LListD_eq_diag]) 1);
  22.141 +by (safe_tac (claset()));
  22.142  qed "LList_equalityI";
  22.143  
  22.144  
  22.145 @@ -271,10 +271,10 @@
  22.146  by (res_inst_tac [("A", "{u. True}"),
  22.147                    ("r", "range(%u. (h1(u),h2(u)))")] LList_equalityI 1);
  22.148  by (rtac rangeI 1);
  22.149 -by (safe_tac (!claset));
  22.150 +by (safe_tac (claset()));
  22.151  by (stac prem1 1);
  22.152  by (stac prem2 1);
  22.153 -by (simp_tac (!simpset addsimps [LListD_Fun_NIL_I,
  22.154 +by (simp_tac (simpset() addsimps [LListD_Fun_NIL_I,
  22.155                                   CollectI RS LListD_Fun_CONS_I]
  22.156                         |> add_eqI) 1);
  22.157  qed "LList_corec_unique";
  22.158 @@ -294,7 +294,7 @@
  22.159  
  22.160  goalw LList.thy [CONS_def]
  22.161      "ntrunc (Suc(Suc(k))) (CONS M N) = CONS (ntrunc k M) (ntrunc k N)";
  22.162 -by (simp_tac (!simpset addsimps [ntrunc_Scons,ntrunc_In1]) 1);
  22.163 +by (simp_tac (simpset() addsimps [ntrunc_Scons,ntrunc_In1]) 1);
  22.164  qed "ntrunc_CONS";
  22.165  
  22.166  val [prem1,prem2] = goal LList.thy
  22.167 @@ -310,12 +310,12 @@
  22.168  by (rename_tac "y" 1);
  22.169  by (stac prem1 1);
  22.170  by (stac prem2 1);
  22.171 -by (simp_tac (!simpset addsplits [expand_sum_case]) 1);
  22.172 +by (simp_tac (simpset() addsplits [expand_sum_case]) 1);
  22.173  by (strip_tac 1);
  22.174  by (res_inst_tac [("n", "n")] natE 1);
  22.175  by (rename_tac "m" 2);
  22.176  by (res_inst_tac [("n", "m")] natE 2);
  22.177 -by (ALLGOALS(asm_simp_tac(!simpset addsimps
  22.178 +by (ALLGOALS(asm_simp_tac(simpset() addsimps
  22.179              [ntrunc_0,ntrunc_one_CONS,ntrunc_CONS, less_Suc_eq])));
  22.180  result();
  22.181  
  22.182 @@ -333,7 +333,7 @@
  22.183    The containing set is simply the singleton {Lconst(M)}. *)
  22.184  goal LList.thy "!!M A. M:A ==> Lconst(M): llist(A)";
  22.185  by (rtac (singletonI RS llist_coinduct) 1);
  22.186 -by (safe_tac (!claset));
  22.187 +by (safe_tac (claset()));
  22.188  by (res_inst_tac [("P", "%u. u: ?A")] (Lconst RS ssubst) 1);
  22.189  by (REPEAT (ares_tac [list_Fun_CONS_I, singletonI, UnI1] 1));
  22.190  qed "Lconst_type";
  22.191 @@ -392,7 +392,7 @@
  22.192  (** Injectiveness of CONS and LCons **)
  22.193  
  22.194  goalw LList.thy [CONS_def] "(CONS M N=CONS M' N') = (M=M' & N=N')";
  22.195 -by (fast_tac (!claset addSEs [Scons_inject]) 1);
  22.196 +by (fast_tac (claset() addSEs [Scons_inject]) 1);
  22.197  qed "CONS_CONS_eq2";
  22.198  
  22.199  bind_thm ("CONS_inject", (CONS_CONS_eq RS iffD1 RS conjE));
  22.200 @@ -460,9 +460,9 @@
  22.201  val [major,minor] = goal LList.thy
  22.202      "[| M: llist(A);  !!x. x:A ==> f(x):B |] ==> Lmap f M: llist(B)";
  22.203  by (rtac (major RS imageI RS llist_coinduct) 1);
  22.204 -by (safe_tac (!claset));
  22.205 +by (safe_tac (claset()));
  22.206  by (etac llist.elim 1);
  22.207 -by (ALLGOALS (asm_simp_tac (!simpset addsimps [Lmap_NIL,Lmap_CONS])));
  22.208 +by (ALLGOALS (asm_simp_tac (simpset() addsimps [Lmap_NIL,Lmap_CONS])));
  22.209  by (REPEAT (ares_tac [list_Fun_NIL_I, list_Fun_CONS_I, 
  22.210                        minor, imageI, UnI1] 1));
  22.211  qed "Lmap_type";
  22.212 @@ -478,18 +478,18 @@
  22.213  val [prem] = goalw LList.thy [o_def]
  22.214      "M: llist(A) ==> Lmap (f o g) M = Lmap f (Lmap g M)";
  22.215  by (rtac (prem RS imageI RS LList_equalityI) 1);
  22.216 -by (safe_tac (!claset));
  22.217 +by (safe_tac (claset()));
  22.218  by (etac llist.elim 1);
  22.219 -by (ALLGOALS (asm_simp_tac (!simpset addsimps [Lmap_NIL,Lmap_CONS])));
  22.220 +by (ALLGOALS (asm_simp_tac (simpset() addsimps [Lmap_NIL,Lmap_CONS])));
  22.221  by (REPEAT (ares_tac [LListD_Fun_NIL_I, imageI, UnI1,
  22.222                        rangeI RS LListD_Fun_CONS_I] 1));
  22.223  qed "Lmap_compose";
  22.224  
  22.225  val [prem] = goal LList.thy "M: llist(A) ==> Lmap (%x. x) M = M";
  22.226  by (rtac (prem RS imageI RS LList_equalityI) 1);
  22.227 -by (safe_tac (!claset));
  22.228 +by (safe_tac (claset()));
  22.229  by (etac llist.elim 1);
  22.230 -by (ALLGOALS (asm_simp_tac (!simpset addsimps [Lmap_NIL,Lmap_CONS])));
  22.231 +by (ALLGOALS (asm_simp_tac (simpset() addsimps [Lmap_NIL,Lmap_CONS])));
  22.232  by (REPEAT (ares_tac [LListD_Fun_NIL_I, imageI RS UnI1,
  22.233                        rangeI RS LListD_Fun_CONS_I] 1));
  22.234  qed "Lmap_ident";
  22.235 @@ -536,12 +536,12 @@
  22.236  by (res_inst_tac
  22.237      [("X", "UN u:llist(A). UN v: llist(A). {Lappend u v}")] llist_coinduct 1);
  22.238  by (Fast_tac 1);
  22.239 -by (safe_tac (!claset));
  22.240 +by (safe_tac (claset()));
  22.241  by (eres_inst_tac [("a", "u")] llist.elim 1);
  22.242  by (eres_inst_tac [("a", "v")] llist.elim 1);
  22.243  by (ALLGOALS
  22.244      (Asm_simp_tac THEN'
  22.245 -     fast_tac (!claset addSIs [llist.NIL_I, list_Fun_NIL_I, list_Fun_CONS_I])));
  22.246 +     fast_tac (claset() addSIs [llist.NIL_I, list_Fun_NIL_I, list_Fun_CONS_I])));
  22.247  qed "Lappend_type";
  22.248  
  22.249  (*strong co-induction: bisimulation and case analysis on one variable*)
  22.250 @@ -552,9 +552,9 @@
  22.251  by (rtac subsetI 1);
  22.252  by (etac imageE 1);
  22.253  by (eres_inst_tac [("a", "u")] llist.elim 1);
  22.254 -by (asm_simp_tac (!simpset addsimps [Lappend_NIL, list_Fun_llist_I]) 1);
  22.255 +by (asm_simp_tac (simpset() addsimps [Lappend_NIL, list_Fun_llist_I]) 1);
  22.256  by (Asm_simp_tac 1);
  22.257 -by (fast_tac (!claset addSIs [list_Fun_CONS_I]) 1);
  22.258 +by (fast_tac (claset() addSIs [list_Fun_CONS_I]) 1);
  22.259  qed "Lappend_type";
  22.260  
  22.261  (**** Lazy lists as the type 'a llist -- strongly typed versions of above ****)
  22.262 @@ -583,7 +583,7 @@
  22.263  by (assume_tac 1);
  22.264  by (etac rangeE 1);
  22.265  by (rtac (inj_Rep_llist RS injD RS prem2) 1);
  22.266 -by (asm_simp_tac (!simpset delsimps [CONS_CONS_eq] addsimps [Rep_llist_LCons]) 1);
  22.267 +by (asm_simp_tac (simpset() delsimps [CONS_CONS_eq] addsimps [Rep_llist_LCons]) 1);
  22.268  by (etac (Abs_llist_inverse RS ssubst) 1);
  22.269  by (rtac refl 1);
  22.270  qed "llistE";
  22.271 @@ -595,11 +595,11 @@
  22.272  \                           (split(%z w. LCons z (llist_corec w f))) (f a)";
  22.273  by (stac LList_corec 1);
  22.274  by (res_inst_tac [("s","f(a)")] sumE 1);
  22.275 -by (asm_simp_tac (!simpset addsimps [LList_corec_type2]) 1);
  22.276 +by (asm_simp_tac (simpset() addsimps [LList_corec_type2]) 1);
  22.277  by (res_inst_tac [("p","y")] PairE 1);
  22.278 -by (asm_simp_tac (!simpset addsimps [LList_corec_type2]) 1);
  22.279 +by (asm_simp_tac (simpset() addsimps [LList_corec_type2]) 1);
  22.280  (*FIXME: correct case splits usd to be found automatically:
  22.281 -by (ASM_SIMP_TAC(!simpset addsimps [LList_corec_type2]) 1);*)
  22.282 +by (ASM_SIMP_TAC(simpset() addsimps [LList_corec_type2]) 1);*)
  22.283  qed "llist_corec";
  22.284  
  22.285  (*definitional version of same*)
  22.286 @@ -618,31 +618,31 @@
  22.287      "!!r A. r <= (llist A) Times (llist A) ==> \
  22.288  \           LListD_Fun (diag A) r <= (llist A) Times (llist A)";
  22.289  by (stac llist_unfold 1);
  22.290 -by (simp_tac (!simpset addsimps [NIL_def, CONS_def]) 1);
  22.291 +by (simp_tac (simpset() addsimps [NIL_def, CONS_def]) 1);
  22.292  by (Fast_tac 1);
  22.293  qed "LListD_Fun_subset_Sigma_llist";
  22.294  
  22.295  goal LList.thy
  22.296      "prod_fun Rep_llist Rep_llist `` r <= \
  22.297  \    (llist(range Leaf)) Times (llist(range Leaf))";
  22.298 -by (fast_tac (!claset addIs [Rep_llist]) 1);
  22.299 +by (fast_tac (claset() addIs [Rep_llist]) 1);
  22.300  qed "subset_Sigma_llist";
  22.301  
  22.302  val [prem] = goal LList.thy
  22.303      "r <= (llist(range Leaf)) Times (llist(range Leaf)) ==> \
  22.304  \    prod_fun (Rep_llist o Abs_llist) (Rep_llist o Abs_llist) `` r <= r";
  22.305 -by (safe_tac (!claset));
  22.306 +by (safe_tac (claset()));
  22.307  by (rtac (prem RS subsetD RS SigmaE2) 1);
  22.308  by (assume_tac 1);
  22.309 -by (asm_simp_tac (!simpset addsimps [o_def,prod_fun,Abs_llist_inverse]) 1);
  22.310 +by (asm_simp_tac (simpset() addsimps [o_def,prod_fun,Abs_llist_inverse]) 1);
  22.311  qed "prod_fun_lemma";
  22.312  
  22.313  goal LList.thy
  22.314      "prod_fun Rep_llist  Rep_llist `` range(%x. (x, x)) = \
  22.315  \    diag(llist(range Leaf))";
  22.316  by (rtac equalityI 1);
  22.317 -by (fast_tac (!claset addIs [Rep_llist]) 1);
  22.318 -by (fast_tac (!claset addSEs [Abs_llist_inverse RS subst]) 1);
  22.319 +by (fast_tac (claset() addIs [Rep_llist]) 1);
  22.320 +by (fast_tac (claset() addSEs [Abs_llist_inverse RS subst]) 1);
  22.321  qed "prod_fun_range_eq_diag";
  22.322  
  22.323  (*Surprisingly hard to prove.  Used with lfilter*)
  22.324 @@ -650,8 +650,8 @@
  22.325      "!!A B. A<=B ==> llistD_Fun A <= llistD_Fun B";
  22.326  by (Auto_tac());
  22.327  by (rtac image_eqI 1);
  22.328 -by (fast_tac (!claset addss (!simpset)) 1);
  22.329 -by (blast_tac (!claset addIs [impOfSubs LListD_Fun_mono]) 1);
  22.330 +by (fast_tac (claset() addss (simpset())) 1);
  22.331 +by (blast_tac (claset() addIs [impOfSubs LListD_Fun_mono]) 1);
  22.332  qed "llistD_Fun_mono";
  22.333  
  22.334  (** To show two llists are equal, exhibit a bisimulation! 
  22.335 @@ -757,7 +757,7 @@
  22.336  by (res_inst_tac [("r", "range(%u.(lmap f (iterates f u),iterates f (f u)))")] 
  22.337      llist_equalityI 1);
  22.338  by (rtac rangeI 1);
  22.339 -by (safe_tac (!claset));
  22.340 +by (safe_tac (claset()));
  22.341  by (res_inst_tac [("x1", "f(u)")] (iterates RS ssubst) 1);
  22.342  by (res_inst_tac [("x1", "u")] (iterates RS ssubst) 1);
  22.343  by (Simp_tac 1);
  22.344 @@ -797,7 +797,7 @@
  22.345  \                    nat_rec (iterates f u) (%m y. lmap f y) n))")] 
  22.346      llist_equalityI 1);
  22.347  by (REPEAT (resolve_tac [UN1_I, range_eqI, Pair_cong, nat_rec_0 RS sym] 1));
  22.348 -by (safe_tac (!claset));
  22.349 +by (safe_tac (claset()));
  22.350  by (stac iterates 1);
  22.351  by (stac prem 1);
  22.352  by (stac fun_power_lmap 1);
  22.353 @@ -849,7 +849,7 @@
  22.354  by (res_inst_tac [("r", "range(%u.(lappend (iterates f u) N,iterates f u))")] 
  22.355      llist_equalityI 1);
  22.356  by (rtac rangeI 1);
  22.357 -by (safe_tac (!claset));
  22.358 +by (safe_tac (claset()));
  22.359  by (stac iterates 1);
  22.360  by (Simp_tac 1);
  22.361  qed "lappend_iterates";
  22.362 @@ -864,7 +864,7 @@
  22.363      llist_equalityI 1);
  22.364  by (rtac UN1_I 1);
  22.365  by (rtac rangeI 1);
  22.366 -by (safe_tac (!claset));
  22.367 +by (safe_tac (claset()));
  22.368  by (res_inst_tac [("l", "l")] llistE 1);
  22.369  by (res_inst_tac [("l", "n")] llistE 1);
  22.370  by (ALLGOALS Asm_simp_tac);
    23.1 --- a/src/HOL/Induct/Mutil.ML	Mon Nov 03 12:12:10 1997 +0100
    23.2 +++ b/src/HOL/Induct/Mutil.ML	Mon Nov 03 12:13:18 1997 +0100
    23.3 @@ -16,8 +16,8 @@
    23.4  \              u: tiling A --> t <= Compl u --> t Un u : tiling A";
    23.5  by (etac tiling.induct 1);
    23.6  by (Simp_tac 1);
    23.7 -by (simp_tac (!simpset addsimps [Un_assoc]) 1);
    23.8 -by (blast_tac (!claset addIs tiling.intrs) 1);
    23.9 +by (simp_tac (simpset() addsimps [Un_assoc]) 1);
   23.10 +by (blast_tac (claset() addIs tiling.intrs) 1);
   23.11  qed_spec_mp "tiling_UnI";
   23.12  
   23.13  
   23.14 @@ -35,33 +35,33 @@
   23.15  
   23.16  goalw thy [below_def]
   23.17      "below(Suc n) Times B = ({n} Times B) Un ((below n) Times B)";
   23.18 -by (simp_tac (!simpset addsimps [less_Suc_eq]) 1);
   23.19 +by (simp_tac (simpset() addsimps [less_Suc_eq]) 1);
   23.20  by (Blast_tac 1);
   23.21  qed "Sigma_Suc1";
   23.22  
   23.23  goalw thy [below_def]
   23.24      "A Times below(Suc n) = (A Times {n}) Un (A Times (below n))";
   23.25 -by (simp_tac (!simpset addsimps [less_Suc_eq]) 1);
   23.26 +by (simp_tac (simpset() addsimps [less_Suc_eq]) 1);
   23.27  by (Blast_tac 1);
   23.28  qed "Sigma_Suc2";
   23.29  
   23.30  goal thy "{i} Times below(n+n) : tiling domino";
   23.31  by (nat_ind_tac "n" 1);
   23.32 -by (ALLGOALS (asm_simp_tac (!simpset addsimps [Un_assoc RS sym, Sigma_Suc2])));
   23.33 +by (ALLGOALS (asm_simp_tac (simpset() addsimps [Un_assoc RS sym, Sigma_Suc2])));
   23.34  by (resolve_tac tiling.intrs 1);
   23.35  by (assume_tac 2);
   23.36  by (subgoal_tac    (*seems the easiest way of turning one to the other*)
   23.37      "({i} Times {Suc(n+n)}) Un ({i} Times {n+n}) = \
   23.38  \    {(i, n+n), (i, Suc(n+n))}" 1);
   23.39  by (Blast_tac 2);
   23.40 -by (asm_simp_tac (!simpset addsimps [domino.horiz]) 1);
   23.41 +by (asm_simp_tac (simpset() addsimps [domino.horiz]) 1);
   23.42  by (Auto_tac());
   23.43  qed "dominoes_tile_row";
   23.44  
   23.45  goal thy "(below m) Times below(n+n) : tiling domino";
   23.46  by (nat_ind_tac "m" 1);
   23.47 -by (ALLGOALS (asm_simp_tac (!simpset addsimps [Sigma_Suc1])));
   23.48 -by (blast_tac (!claset addSIs [tiling_UnI, dominoes_tile_row]
   23.49 +by (ALLGOALS (asm_simp_tac (simpset() addsimps [Sigma_Suc1])));
   23.50 +by (blast_tac (claset() addSIs [tiling_UnI, dominoes_tile_row]
   23.51                         addSEs [below_less_iff RS iffD1 RS less_irrefl]) 1);
   23.52  qed "dominoes_tile_matrix";
   23.53  
   23.54 @@ -94,7 +94,7 @@
   23.55  goalw thy [evnodd_def]
   23.56      "evnodd (insert (i,j) C) b = \
   23.57  \      (if (i+j) mod 2 = b then insert (i,j) (evnodd C b) else evnodd C b)";
   23.58 -by (simp_tac (!simpset addsplits [expand_if]) 1);
   23.59 +by (simp_tac (simpset() addsplits [expand_if]) 1);
   23.60  by (Blast_tac 1);
   23.61  qed "evnodd_insert";
   23.62  
   23.63 @@ -109,13 +109,13 @@
   23.64  by (res_inst_tac [("k1", "i+j")] (mod2_cases RS disjE) 1);
   23.65  by (REPEAT_FIRST assume_tac);
   23.66  (*Four similar cases: case (i+j) mod 2 = b, 2#-b, ...*)
   23.67 -by (REPEAT (asm_full_simp_tac (!simpset addsimps [less_Suc_eq, mod_Suc] 
   23.68 +by (REPEAT (asm_full_simp_tac (simpset() addsimps [less_Suc_eq, mod_Suc] 
   23.69                            addsplits [expand_if]) 1
   23.70             THEN Blast_tac 1));
   23.71  qed "domino_singleton";
   23.72  
   23.73  goal thy "!!d. d:domino ==> finite d";
   23.74 -by (blast_tac (!claset addSEs [domino.elim]) 1);
   23.75 +by (blast_tac (claset() addSEs [domino.elim]) 1);
   23.76  qed "domino_finite";
   23.77  
   23.78  
   23.79 @@ -124,20 +124,20 @@
   23.80  goal thy "!!t. t:tiling domino ==> finite t";
   23.81  by (eresolve_tac [tiling.induct] 1);
   23.82  by (rtac Finites.emptyI 1);
   23.83 -by (blast_tac (!claset addSIs [finite_UnI] addIs [domino_finite]) 1);
   23.84 +by (blast_tac (claset() addSIs [finite_UnI] addIs [domino_finite]) 1);
   23.85  qed "tiling_domino_finite";
   23.86  
   23.87  goal thy "!!t. t: tiling domino ==> card(evnodd t 0) = card(evnodd t 1)";
   23.88  by (eresolve_tac [tiling.induct] 1);
   23.89 -by (simp_tac (!simpset addsimps [evnodd_def]) 1);
   23.90 +by (simp_tac (simpset() addsimps [evnodd_def]) 1);
   23.91  by (res_inst_tac [("b1","0")] (domino_singleton RS exE) 1);
   23.92  by (Simp_tac 2 THEN assume_tac 1);
   23.93  by (res_inst_tac [("b1","1")] (domino_singleton RS exE) 1);
   23.94  by (Simp_tac 2 THEN assume_tac 1);
   23.95  by (Clarify_tac 1);
   23.96  by (subgoal_tac "ALL p b. p : evnodd a b --> p ~: evnodd ta b" 1);
   23.97 -by (asm_simp_tac (!simpset addsimps [tiling_domino_finite]) 1);
   23.98 -by (blast_tac (!claset addSDs [evnodd_subset RS subsetD] addEs [equalityE]) 1);
   23.99 +by (asm_simp_tac (simpset() addsimps [tiling_domino_finite]) 1);
  23.100 +by (blast_tac (claset() addSDs [evnodd_subset RS subsetD] addEs [equalityE]) 1);
  23.101  qed "tiling_domino_0_1";
  23.102  
  23.103  goal thy "!!m n. [| t = below(Suc m + Suc m) Times below(Suc n + Suc n);   \
  23.104 @@ -151,12 +151,12 @@
  23.105  (*Requires a small simpset that won't move the Suc applications*)
  23.106  by (asm_simp_tac (HOL_ss addsimps [dominoes_tile_matrix]) 2);
  23.107  by (subgoal_tac "(m+m)+(n+n) = (m+n)+(m+n)" 1);
  23.108 -by (asm_simp_tac (!simpset addsimps add_ac) 2);
  23.109 +by (asm_simp_tac (simpset() addsimps add_ac) 2);
  23.110  by (asm_full_simp_tac 
  23.111 -    (!simpset addsimps [mod_less, tiling_domino_0_1 RS sym]) 1);
  23.112 +    (simpset() addsimps [mod_less, tiling_domino_0_1 RS sym]) 1);
  23.113  by (rtac less_trans 1);
  23.114  by (REPEAT
  23.115      (rtac card_Diff 1 
  23.116 -     THEN asm_simp_tac (!simpset addsimps [tiling_domino_finite]) 1 
  23.117 -     THEN asm_simp_tac (!simpset addsimps [mod_less, evnodd_iff]) 1));
  23.118 +     THEN asm_simp_tac (simpset() addsimps [tiling_domino_finite]) 1 
  23.119 +     THEN asm_simp_tac (simpset() addsimps [mod_less, evnodd_iff]) 1));
  23.120  qed "mutil_not_tiling";
    24.1 --- a/src/HOL/Induct/Perm.ML	Mon Nov 03 12:12:10 1997 +0100
    24.2 +++ b/src/HOL/Induct/Perm.ML	Mon Nov 03 12:13:18 1997 +0100
    24.3 @@ -41,7 +41,7 @@
    24.4  goal Perm.thy "!!xs. [| xs <~~> ys |] ==> x mem xs --> x mem ys";
    24.5  by (etac perm.induct 1);
    24.6  by (Fast_tac 4);
    24.7 -by (ALLGOALS (asm_simp_tac (!simpset addsplits [expand_if])));
    24.8 +by (ALLGOALS (asm_simp_tac (simpset() addsplits [expand_if])));
    24.9  val perm_mem_lemma = result();
   24.10  
   24.11  bind_thm ("perm_mem", perm_mem_lemma RS mp);
   24.12 @@ -51,7 +51,7 @@
   24.13  (*We can insert the head anywhere in the list*)
   24.14  goal Perm.thy "a # xs @ ys <~~> xs @ a # ys";
   24.15  by (list.induct_tac "xs" 1);
   24.16 -by (simp_tac (!simpset addsimps [perm_refl]) 1);
   24.17 +by (simp_tac (simpset() addsimps [perm_refl]) 1);
   24.18  by (Simp_tac 1);
   24.19  by (etac ([perm.swap, perm.Cons] MRS perm.trans) 1);
   24.20  qed "perm_append_Cons";
   24.21 @@ -64,7 +64,7 @@
   24.22  
   24.23  goal Perm.thy "xs@ys <~~> ys@xs";
   24.24  by (list.induct_tac "xs" 1);
   24.25 -by (simp_tac (!simpset addsimps [perm_refl]) 1);
   24.26 +by (simp_tac (simpset() addsimps [perm_refl]) 1);
   24.27  by (Simp_tac 1);
   24.28  by (etac ([perm.Cons, perm_append_Cons] MRS perm.trans) 1);
   24.29  qed "perm_append_swap";
   24.30 @@ -73,12 +73,12 @@
   24.31  goal Perm.thy "a # xs <~~> xs @ [a]";
   24.32  by (rtac perm.trans 1);
   24.33  by (rtac perm_append_swap 2);
   24.34 -by (simp_tac (!simpset addsimps [perm_refl]) 1);
   24.35 +by (simp_tac (simpset() addsimps [perm_refl]) 1);
   24.36  qed "perm_append_single";
   24.37  
   24.38  goal Perm.thy "rev xs <~~> xs";
   24.39  by (list.induct_tac "xs" 1);
   24.40 -by (simp_tac (!simpset addsimps [perm_refl]) 1);
   24.41 +by (simp_tac (simpset() addsimps [perm_refl]) 1);
   24.42  by (Simp_tac 1);
   24.43  by (rtac (perm_append_single RS perm_sym RS perm.trans) 1);
   24.44  by (etac perm.Cons 1);
   24.45 @@ -87,7 +87,7 @@
   24.46  goal Perm.thy "!!xs. xs <~~> ys ==> l@xs <~~> l@ys";
   24.47  by (list.induct_tac "l" 1);
   24.48  by (Simp_tac 1);
   24.49 -by (asm_simp_tac (!simpset addsimps [perm.Cons]) 1);
   24.50 +by (asm_simp_tac (simpset() addsimps [perm.Cons]) 1);
   24.51  qed "perm_append1";
   24.52  
   24.53  goal Perm.thy "!!xs. xs <~~> ys ==> xs@l <~~> ys@l";
    25.1 --- a/src/HOL/Induct/PropLog.ML	Mon Nov 03 12:12:10 1997 +0100
    25.2 +++ b/src/HOL/Induct/PropLog.ML	Mon Nov 03 12:13:18 1997 +0100
    25.3 @@ -18,7 +18,7 @@
    25.4  
    25.5  (*Rule is called I for Identity Combinator, not for Introduction*)
    25.6  goal PropLog.thy "H |- p->p";
    25.7 -by (best_tac (!claset addIs [thms.K,thms.S,thms.MP]) 1);
    25.8 +by (best_tac (claset() addIs [thms.K,thms.S,thms.MP]) 1);
    25.9  qed "thms_I";
   25.10  
   25.11  (** Weakening, left and right **)
   25.12 @@ -35,14 +35,14 @@
   25.13  val weaken_left_Un2  =    Un_upper2 RS weaken_left;
   25.14  
   25.15  goal PropLog.thy "!!H. H |- q ==> H |- p->q";
   25.16 -by (fast_tac (!claset addIs [thms.K,thms.MP]) 1);
   25.17 +by (fast_tac (claset() addIs [thms.K,thms.MP]) 1);
   25.18  qed "weaken_right";
   25.19  
   25.20  (*The deduction theorem*)
   25.21  goal PropLog.thy "!!H. insert p H |- q  ==>  H |- p->q";
   25.22  by (etac thms.induct 1);
   25.23  by (ALLGOALS 
   25.24 -    (fast_tac (!claset addIs [thms_I, thms.H, thms.K, thms.S, thms.DN, 
   25.25 +    (fast_tac (claset() addIs [thms_I, thms.H, thms.K, thms.S, thms.DN, 
   25.26                               thms.S RS thms.MP RS thms.MP, weaken_right])));
   25.27  qed "deduction";
   25.28  
   25.29 @@ -77,7 +77,7 @@
   25.30  (*Soundness of the rules wrt truth-table semantics*)
   25.31  goalw PropLog.thy [sat_def] "!!H. H |- p ==> H |= p";
   25.32  by (etac thms.induct 1);
   25.33 -by (fast_tac (!claset addSDs [eval_imp RS iffD1 RS mp]) 5);
   25.34 +by (fast_tac (claset() addSDs [eval_imp RS iffD1 RS mp]) 5);
   25.35  by (ALLGOALS Asm_simp_tac);
   25.36  qed "soundness";
   25.37  
   25.38 @@ -103,8 +103,8 @@
   25.39  goal PropLog.thy "hyps p tt |- (if tt[p] then p else p->false)";
   25.40  by (rtac (expand_if RS iffD2) 1);
   25.41  by (PropLog.pl.induct_tac "p" 1);
   25.42 -by (ALLGOALS (simp_tac (!simpset addsimps [thms_I, thms.H])));
   25.43 -by (fast_tac (!claset addIs [weaken_left_Un1, weaken_left_Un2, 
   25.44 +by (ALLGOALS (simp_tac (simpset() addsimps [thms_I, thms.H])));
   25.45 +by (fast_tac (claset() addIs [weaken_left_Un1, weaken_left_Un2, 
   25.46                             weaken_right, imp_false]
   25.47                      addSEs [false_imp]) 1);
   25.48  qed "hyps_thms_if";
   25.49 @@ -125,7 +125,7 @@
   25.50  goal PropLog.thy "H |- (p->q) -> ((p->false)->q) -> q";
   25.51  by (rtac (deduction RS deduction) 1);
   25.52  by (rtac (thms.DN RS thms.MP) 1);
   25.53 -by (ALLGOALS (best_tac (!claset addSIs prems)));
   25.54 +by (ALLGOALS (best_tac (claset() addSIs prems)));
   25.55  qed "thms_excluded_middle";
   25.56  
   25.57  (*Hard to prove directly because it requires cuts*)
   25.58 @@ -142,7 +142,7 @@
   25.59  goal PropLog.thy "hyps p (t-{v}) <= insert (#v->false) ((hyps p t)-{#v})";
   25.60  by (PropLog.pl.induct_tac "p" 1);
   25.61  by (Simp_tac 1);
   25.62 -by (simp_tac (!simpset addsplits [expand_if]) 1);
   25.63 +by (simp_tac (simpset() addsplits [expand_if]) 1);
   25.64  by (Simp_tac 1);
   25.65  by (Fast_tac 1);
   25.66  qed "hyps_Diff";
   25.67 @@ -152,7 +152,7 @@
   25.68  goal PropLog.thy "hyps p (insert v t) <= insert (#v) (hyps p t-{#v->false})";
   25.69  by (PropLog.pl.induct_tac "p" 1);
   25.70  by (Simp_tac 1);
   25.71 -by (simp_tac (!simpset addsplits [expand_if]) 1);
   25.72 +by (simp_tac (simpset() addsplits [expand_if]) 1);
   25.73  by (Simp_tac 1);
   25.74  by (Fast_tac 1);
   25.75  qed "hyps_insert";
   25.76 @@ -174,7 +174,7 @@
   25.77  
   25.78  goal PropLog.thy "hyps p t <= (UN v. {#v, #v->false})";
   25.79  by (PropLog.pl.induct_tac "p" 1);
   25.80 -by (ALLGOALS (simp_tac (!simpset addsplits [expand_if])));
   25.81 +by (ALLGOALS (simp_tac (simpset() addsplits [expand_if])));
   25.82  by (Blast_tac 1);
   25.83  qed "hyps_subset";
   25.84  
   25.85 @@ -185,7 +185,7 @@
   25.86  val [sat] = goal PropLog.thy
   25.87      "{} |= p ==> !t. hyps p t - hyps p t0 |- p";
   25.88  by (rtac (hyps_subset RS (hyps_finite RS finite_subset_induct)) 1);
   25.89 -by (simp_tac (!simpset addsimps [sat RS sat_thms_p]) 1);
   25.90 +by (simp_tac (simpset() addsimps [sat RS sat_thms_p]) 1);
   25.91  by Safe_tac;
   25.92  (*Case hyps(p,t)-insert(#v,Y) |- p *)
   25.93  by (rtac thms_excluded_middle_rule 1);
   25.94 @@ -217,14 +217,14 @@
   25.95  
   25.96  goal PropLog.thy "!!H. finite H ==> !p. H |= p --> H |- p";
   25.97  by (etac finite_induct 1);
   25.98 -by (safe_tac ((claset_of "Fun") addSIs [completeness_0]));
   25.99 +by (safe_tac ((claset_of Fun.thy) addSIs [completeness_0]));
  25.100  by (rtac (weaken_left_insert RS thms.MP) 1);
  25.101 -by (fast_tac ((claset_of "Fun") addSIs [sat_imp]) 1);
  25.102 +by (fast_tac ((claset_of Fun.thy) addSIs [sat_imp]) 1);
  25.103  by (Fast_tac 1);
  25.104  qed "completeness_lemma";
  25.105  
  25.106  val completeness = completeness_lemma RS spec RS mp;
  25.107  
  25.108  goal PropLog.thy "!!H. finite H ==> (H |- p) = (H |= p)";
  25.109 -by (fast_tac (!claset addSEs [soundness, completeness]) 1);
  25.110 +by (fast_tac (claset() addSEs [soundness, completeness]) 1);
  25.111  qed "syntax_iff_semantics";
    26.1 --- a/src/HOL/Induct/SList.ML	Mon Nov 03 12:12:10 1997 +0100
    26.2 +++ b/src/HOL/Induct/SList.ML	Mon Nov 03 12:13:18 1997 +0100
    26.3 @@ -12,7 +12,7 @@
    26.4  
    26.5  goal SList.thy "list(A) = {Numb(0)} <+> (A <*> list(A))";
    26.6  let val rew = rewrite_rule list_con_defs in  
    26.7 -by (fast_tac (!claset addSIs (equalityI :: map rew list.intrs)
    26.8 +by (fast_tac (claset() addSIs (equalityI :: map rew list.intrs)
    26.9                        addEs [rew list.elim]) 1)
   26.10  end;
   26.11  qed "list_unfold";
   26.12 @@ -26,7 +26,7 @@
   26.13  (*Type checking -- list creates well-founded sets*)
   26.14  goalw SList.thy (list_con_defs @ list.defs) "list(sexp) <= sexp";
   26.15  by (rtac lfp_lowerbound 1);
   26.16 -by (fast_tac (!claset addIs sexp.intrs@[sexp_In0I,sexp_In1I]) 1);
   26.17 +by (fast_tac (claset() addIs sexp.intrs@[sexp_In0I,sexp_In1I]) 1);
   26.18  qed "list_sexp";
   26.19  
   26.20  (* A <= sexp ==> list(A) <= sexp *)
   26.21 @@ -79,7 +79,7 @@
   26.22  (** Injectiveness of CONS and Cons **)
   26.23  
   26.24  goalw SList.thy [CONS_def] "(CONS K M=CONS L N) = (K=L & M=N)";
   26.25 -by (fast_tac (!claset addSEs [Scons_inject, make_elim In1_inject]) 1);
   26.26 +by (fast_tac (claset() addSEs [Scons_inject, make_elim In1_inject]) 1);
   26.27  qed "CONS_CONS_eq";
   26.28  
   26.29  (*For reasoning about abstract list constructors*)
   26.30 @@ -104,7 +104,7 @@
   26.31  val prems = goalw SList.thy [CONS_def,In1_def]
   26.32      "CONS M N: sexp ==> M: sexp & N: sexp";
   26.33  by (cut_facts_tac prems 1);
   26.34 -by (fast_tac (!claset addSDs [Scons_D]) 1);
   26.35 +by (fast_tac (claset() addSDs [Scons_D]) 1);
   26.36  qed "sexp_CONS_D";
   26.37  
   26.38  
   26.39 @@ -138,7 +138,7 @@
   26.40  qed "List_case_NIL";
   26.41  
   26.42  goalw SList.thy [List_case_def,CONS_def]  "List_case c h (CONS M N) = h M N";
   26.43 -by (simp_tac (!simpset addsimps [Split,Case_In1]) 1);
   26.44 +by (simp_tac (simpset() addsimps [Split,Case_In1]) 1);
   26.45  qed "List_case_CONS";
   26.46  
   26.47  (*** List_rec -- by wf recursion on pred_sexp ***)
   26.48 @@ -185,13 +185,13 @@
   26.49  
   26.50  goal SList.thy "List_rec NIL c h = c";
   26.51  by (rtac (List_rec_unfold RS trans) 1);
   26.52 -by (simp_tac (!simpset addsimps [List_case_NIL]) 1);
   26.53 +by (simp_tac (simpset() addsimps [List_case_NIL]) 1);
   26.54  qed "List_rec_NIL";
   26.55  
   26.56  goal SList.thy "!!M. [| M: sexp;  N: sexp |] ==> \
   26.57  \    List_rec (CONS M N) c h = h M N (List_rec N c h)";
   26.58  by (rtac (List_rec_unfold RS trans) 1);
   26.59 -by (asm_simp_tac (!simpset addsimps [List_case_CONS, pred_sexp_CONS_I2]) 1);
   26.60 +by (asm_simp_tac (simpset() addsimps [List_case_CONS, pred_sexp_CONS_I2]) 1);
   26.61  qed "List_rec_CONS";
   26.62  
   26.63  (*** list_rec -- by List_rec ***)
   26.64 @@ -207,11 +207,11 @@
   26.65  in
   26.66    val list_rec_Nil = prove_goalw SList.thy [list_rec_def, Nil_def]
   26.67        "list_rec Nil c h = c"
   26.68 -   (fn _=> [simp_tac (!simpset addsimps list_rec_simps) 1]);
   26.69 +   (fn _=> [simp_tac (simpset() addsimps list_rec_simps) 1]);
   26.70  
   26.71    val list_rec_Cons = prove_goalw SList.thy [list_rec_def, Cons_def]
   26.72        "list_rec (a#l) c h = h a l (list_rec l c h)"
   26.73 -   (fn _=> [simp_tac (!simpset addsimps list_rec_simps) 1]);
   26.74 +   (fn _=> [simp_tac (simpset() addsimps list_rec_simps) 1]);
   26.75  end;
   26.76  
   26.77  Addsimps [List_rec_NIL, List_rec_CONS, list_rec_Nil, list_rec_Cons];
   26.78 @@ -227,7 +227,7 @@
   26.79  val sexp_ListA_I = A_subset_sexp RS list_subset_sexp RS subsetD;
   26.80  val sexp_A_I = A_subset_sexp RS subsetD;
   26.81  by (rtac (major RS list.induct) 1);
   26.82 -by (ALLGOALS(asm_simp_tac (!simpset addsimps ([sexp_A_I,sexp_ListA_I]@prems))));
   26.83 +by (ALLGOALS(asm_simp_tac (simpset() addsimps ([sexp_A_I,sexp_ListA_I]@prems))));
   26.84  qed "List_rec_type";
   26.85  
   26.86  (** Generalized map functionals **)
   26.87 @@ -312,12 +312,12 @@
   26.88  
   26.89  goal SList.thy "x mem (xs@ys) = (x mem xs | x mem ys)";
   26.90  by (list_ind_tac "xs" 1);
   26.91 -by (ALLGOALS(asm_simp_tac (!simpset addsplits [expand_if])));
   26.92 +by (ALLGOALS(asm_simp_tac (simpset() addsplits [expand_if])));
   26.93  qed "mem_append2";
   26.94  
   26.95  goal SList.thy "x mem [x:xs. P(x)] = (x mem xs & P(x))";
   26.96  by (list_ind_tac "xs" 1);
   26.97 -by (ALLGOALS(asm_simp_tac (!simpset addsplits [expand_if])));
   26.98 +by (ALLGOALS(asm_simp_tac (simpset() addsplits [expand_if])));
   26.99  qed "mem_filter2";
  26.100  
  26.101  
  26.102 @@ -329,7 +329,7 @@
  26.103      "[| M: list(A);  A<=sexp;  !!z. z: A ==> f(g(z)) = z |] \
  26.104  \    ==> Rep_map f (Abs_map g M) = M";
  26.105  by (rtac (major RS list.induct) 1);
  26.106 -by (ALLGOALS (asm_simp_tac (!simpset addsimps [sexp_A_I,sexp_ListA_I,minor])));
  26.107 +by (ALLGOALS (asm_simp_tac (simpset() addsimps [sexp_A_I,sexp_ListA_I,minor])));
  26.108  qed "Abs_map_inverse";
  26.109  
  26.110  (*Rep_map_inverse is obtained via Abs_Rep_map and map_ident*)
  26.111 @@ -364,7 +364,7 @@
  26.112  goal SList.thy "!!f. (!!x. f(x): sexp) ==> \
  26.113  \       Abs_map g (Rep_map f xs) = map (%t. g(f(t))) xs";
  26.114  by (list_ind_tac "xs" 1);
  26.115 -by (ALLGOALS(asm_simp_tac(!simpset addsimps
  26.116 +by (ALLGOALS(asm_simp_tac(simpset() addsimps
  26.117         [Rep_map_type,list_sexp RS subsetD])));
  26.118  qed "Abs_Rep_map";
  26.119  
    27.1 --- a/src/HOL/Induct/Simult.ML	Mon Nov 03 12:12:10 1997 +0100
    27.2 +++ b/src/HOL/Induct/Simult.ML	Mon Nov 03 12:13:18 1997 +0100
    27.3 @@ -29,7 +29,7 @@
    27.4  
    27.5  goalw Simult.thy [TF_def] "TF(sexp) <= sexp";
    27.6  by (rtac lfp_lowerbound 1);
    27.7 -by (blast_tac (!claset addIs  sexp.intrs@[sexp_In0I, sexp_In1I]
    27.8 +by (blast_tac (claset() addIs  sexp.intrs@[sexp_In0I, sexp_In1I]
    27.9                        addSEs [PartE]) 1);
   27.10  qed "TF_sexp";
   27.11  
   27.12 @@ -50,7 +50,7 @@
   27.13  \            |] ==> R(FCONS M N)    \
   27.14  \    |] ==> R(i)";
   27.15  by (rtac ([TF_def, TF_fun_mono, major] MRS def_induct) 1);
   27.16 -by (blast_tac (!claset addIs (prems@[PartI])
   27.17 +by (blast_tac (claset() addIs (prems@[PartI])
   27.18                         addEs [usumE, uprodE, PartE]) 1);
   27.19  qed "TF_induct";
   27.20  
   27.21 @@ -78,7 +78,7 @@
   27.22            right overloading of equality.  The injectiveness properties for
   27.23            type 'a item hold only for set types.*)
   27.24  val PartE' = read_instantiate [("'a", "?'c set")] PartE;
   27.25 -by (ALLGOALS (blast_tac (!claset addSEs [PartE'] addIs prems)));
   27.26 +by (ALLGOALS (blast_tac (claset() addSEs [PartE'] addIs prems)));
   27.27  qed "Tree_Forest_induct";
   27.28  
   27.29  (*Induction for the abstract types 'a tree, 'a forest*)
   27.30 @@ -91,11 +91,11 @@
   27.31                    ("Q1","%z. Q(Abs_Forest(z))")] 
   27.32      (Tree_Forest_induct RS conjE) 1);
   27.33  (*Instantiates ?A1 to range(Leaf). *)
   27.34 -by (fast_tac (!claset addSEs [Rep_Tree_inverse RS subst, 
   27.35 +by (fast_tac (claset() addSEs [Rep_Tree_inverse RS subst, 
   27.36  			      Rep_Forest_inverse RS subst] 
   27.37                         addSIs [Rep_Tree,Rep_Forest]) 4);
   27.38  (*Cannot use simplifier: the rewrites work in the wrong direction!*)
   27.39 -by (ALLGOALS (fast_tac (!claset addSEs [Abs_Tree_inverse RS subst,
   27.40 +by (ALLGOALS (fast_tac (claset() addSEs [Abs_Tree_inverse RS subst,
   27.41  					Abs_Forest_inverse RS subst] 
   27.42                                  addSIs prems)));
   27.43  qed "tree_forest_induct";
   27.44 @@ -247,8 +247,8 @@
   27.45      "!!M N. [| M: sexp;  N: sexp |] ==>         \
   27.46  \           TF_rec (TCONS M N) b c d = b M N (TF_rec N b c d)";
   27.47  by (rtac (TF_rec_unfold RS trans) 1);
   27.48 -by (simp_tac (!simpset addsimps [Case_In0, Split]) 1);
   27.49 -by (asm_simp_tac (!simpset addsimps [In0_def]) 1);
   27.50 +by (simp_tac (simpset() addsimps [Case_In0, Split]) 1);
   27.51 +by (asm_simp_tac (simpset() addsimps [In0_def]) 1);
   27.52  qed "TF_rec_TCONS";
   27.53  
   27.54  goalw Simult.thy [FNIL_def] "TF_rec FNIL b c d = c";
   27.55 @@ -261,7 +261,7 @@
   27.56  \        TF_rec (FCONS M N) b c d = d M N (TF_rec M b c d) (TF_rec N b c d)";
   27.57  by (rtac (TF_rec_unfold RS trans) 1);
   27.58  by (simp_tac (HOL_ss addsimps [Case_In1, List_case_CONS]) 1);
   27.59 -by (asm_simp_tac (!simpset addsimps [CONS_def,In1_def]) 1);
   27.60 +by (asm_simp_tac (simpset() addsimps [CONS_def,In1_def]) 1);
   27.61  qed "TF_rec_FCONS";
   27.62  
   27.63  
    28.1 --- a/src/HOL/Induct/Term.ML	Mon Nov 03 12:12:10 1997 +0100
    28.2 +++ b/src/HOL/Induct/Term.ML	Mon Nov 03 12:13:18 1997 +0100
    28.3 @@ -12,7 +12,7 @@
    28.4  (*** Monotonicity and unfolding of the function ***)
    28.5  
    28.6  goal Term.thy "term(A) = A <*> list(term(A))";
    28.7 -by (fast_tac (!claset addSIs term.intrs
    28.8 +by (fast_tac (claset() addSIs term.intrs
    28.9                        addEs [term.elim]) 1);
   28.10  qed "term_unfold";
   28.11  
   28.12 @@ -25,7 +25,7 @@
   28.13  
   28.14  goalw Term.thy term.defs "term(sexp) <= sexp";
   28.15  by (rtac lfp_lowerbound 1);
   28.16 -by (fast_tac (!claset addIs [sexp.SconsI, list_sexp RS subsetD]) 1);
   28.17 +by (fast_tac (claset() addIs [sexp.SconsI, list_sexp RS subsetD]) 1);
   28.18  qed "term_sexp";
   28.19  
   28.20  (* A <= sexp ==> term(A) <= sexp *)
   28.21 @@ -98,7 +98,7 @@
   28.22  by (rtac term_induct 1);  (*types force good instantiation*)
   28.23  by (etac rev_mp 1);
   28.24  by (rtac list_induct2 1);  (*types force good instantiation*)
   28.25 -by (ALLGOALS (asm_simp_tac (!simpset addsimps prems)));
   28.26 +by (ALLGOALS (asm_simp_tac (simpset() addsimps prems)));
   28.27  qed "term_induct2";
   28.28  
   28.29  (*Perform induction on xs. *)
   28.30 @@ -134,7 +134,7 @@
   28.31  by (Simp_tac 1);
   28.32  by (strip_tac 1);
   28.33  by (etac (pred_sexp_CONS_D RS conjE) 1);
   28.34 -by (asm_simp_tac (!simpset addsimps [trancl_pred_sexpD1]) 1);
   28.35 +by (asm_simp_tac (simpset() addsimps [trancl_pred_sexpD1]) 1);
   28.36  qed "Abs_map_lemma";
   28.37  
   28.38  val [prem1,prem2,A_subset_sexp] = goal Term.thy
    29.1 --- a/src/HOL/Integ/Bin.ML	Mon Nov 03 12:12:10 1997 +0100
    29.2 +++ b/src/HOL/Integ/Bin.ML	Mon Nov 03 12:13:18 1997 +0100
    29.3 @@ -71,7 +71,7 @@
    29.4  
    29.5  qed_goal "bin_add_Bcons_Bcons0" Bin.thy
    29.6      "bin_add (Bcons v False) (Bcons w y) = norm_Bcons (bin_add v w) y"
    29.7 - (fn _ => [(simp_tac (!simpset addsimps [lemma]) 1)]);
    29.8 + (fn _ => [(simp_tac (simpset() addsimps [lemma]) 1)]);
    29.9  
   29.10  qed_goal "bin_add_Bcons_Plus" Bin.thy
   29.11      "bin_add (Bcons v x) PlusSign = Bcons v x"
   29.12 @@ -100,7 +100,7 @@
   29.13  
   29.14  (**** The carry/borrow functions, bin_succ and bin_pred ****)
   29.15  
   29.16 -val if_ss = !simpset addsplits [expand_if];
   29.17 +val if_ss = simpset() addsplits [expand_if];
   29.18  
   29.19  
   29.20  (**** integ_of_bin ****)
   29.21 @@ -228,7 +228,7 @@
   29.22    by (ALLGOALS(asm_simp_tac (HOL_ss addsimps [integ_of_bin_add]))); 
   29.23    by (ALLGOALS(int_case_tac "integ_of_bin w")); 
   29.24    by (ALLGOALS(asm_simp_tac 
   29.25 -               (!simpset addsimps[zminus_zadd_distrib RS sym, 
   29.26 +               (simpset() addsimps[zminus_zadd_distrib RS sym, 
   29.27                                  znat_add RS sym]))); 
   29.28    by (stac eq_False_conv 1); 
   29.29    by (rtac notI 1); 
   29.30 @@ -258,7 +258,7 @@
   29.31    by (ALLGOALS(asm_simp_tac (HOL_ss addsimps [integ_of_bin_add]))); 
   29.32    by (ALLGOALS(int_case_tac "integ_of_bin w")); 
   29.33    by (ALLGOALS(asm_simp_tac 
   29.34 -               (!simpset addsimps[zminus_zadd_distrib RS sym, 
   29.35 +               (simpset() addsimps[zminus_zadd_distrib RS sym, 
   29.36                                  znat_add RS sym]))); 
   29.37    by (stac (zadd_zminus_inverse RS sym) 1); 
   29.38    by (rtac zadd_zless_mono1 1); 
    30.1 --- a/src/HOL/Integ/Equiv.ML	Mon Nov 03 12:12:10 1997 +0100
    30.2 +++ b/src/HOL/Integ/Equiv.ML	Mon Nov 03 12:13:18 1997 +0100
    30.3 @@ -18,7 +18,7 @@
    30.4  
    30.5  goalw Equiv.thy [trans_def,sym_def,inverse_def]
    30.6      "!!r. [| sym(r); trans(r) |] ==> r^-1 O r <= r";
    30.7 -by (blast_tac (!claset addSEs [inverseD]) 1);
    30.8 +by (blast_tac (claset() addSEs [inverseD]) 1);
    30.9  qed "sym_trans_comp_subset";
   30.10  
   30.11  goalw Equiv.thy [refl_def]
   30.12 @@ -84,13 +84,13 @@
   30.13  
   30.14  goal Equiv.thy
   30.15      "!!A r. equiv A r ==> ((x,y): r) = (r^^{x} = r^^{y} & x:A & y:A)";
   30.16 -by (blast_tac (!claset addSIs [equiv_class_eq]
   30.17 +by (blast_tac (claset() addSIs [equiv_class_eq]
   30.18  	               addDs [eq_equiv_class, equiv_type]) 1);
   30.19  qed "equiv_class_eq_iff";
   30.20  
   30.21  goal Equiv.thy
   30.22      "!!A r. [| equiv A r;  x: A;  y: A |] ==> (r^^{x} = r^^{y}) = ((x,y): r)";
   30.23 -by (blast_tac (!claset addSIs [equiv_class_eq]
   30.24 +by (blast_tac (claset() addSIs [equiv_class_eq]
   30.25  	               addDs [eq_equiv_class, equiv_type]) 1);
   30.26  qed "eq_equiv_class_iff";
   30.27  
   30.28 @@ -113,15 +113,15 @@
   30.29  
   30.30  goalw Equiv.thy [equiv_def,refl_def,quotient_def]
   30.31      "!!A r. equiv A r ==> Union(A/r) = A";
   30.32 -by (blast_tac (!claset addSIs [equalityI]) 1);
   30.33 +by (blast_tac (claset() addSIs [equalityI]) 1);
   30.34  qed "Union_quotient";
   30.35  
   30.36  goalw Equiv.thy [quotient_def]
   30.37      "!!A r. [| equiv A r;  X: A/r;  Y: A/r |] ==> X=Y | (X Int Y = {})";
   30.38 -by (safe_tac (!claset addSIs [equiv_class_eq]));
   30.39 +by (safe_tac (claset() addSIs [equiv_class_eq]));
   30.40  by (assume_tac 1);
   30.41  by (rewrite_goals_tac [equiv_def,trans_def,sym_def]);
   30.42 -by (blast_tac (!claset addSIs [equalityI]) 1);
   30.43 +by (blast_tac (claset() addSIs [equalityI]) 1);
   30.44  qed "quotient_disj";
   30.45  
   30.46  
   30.47 @@ -129,7 +129,7 @@
   30.48  
   30.49  (* theorem needed to prove UN_equiv_class *)
   30.50  goal Set.thy "!!A. [| a:A; ! y:A. b(y)=b(a) |] ==> (UN y:A. b(y))=b(a)";
   30.51 -by (fast_tac (!claset addSEs [equalityE] addSIs [equalityI]) 1);
   30.52 +by (fast_tac (claset() addSEs [equalityE] addSIs [equalityI]) 1);
   30.53  qed "UN_singleton_lemma";
   30.54  val UN_singleton = ballI RSN (2,UN_singleton_lemma);
   30.55  
   30.56 @@ -187,7 +187,7 @@
   30.57  \    congruent r (%x1. UN x2:r^^{a}. b x1 x2)";
   30.58  by (Clarify_tac 1);
   30.59  by (rtac (equiv_type RS subsetD RS SigmaE2) 1 THEN REPEAT (assume_tac 1));
   30.60 -by (asm_simp_tac (!simpset addsimps [UN_equiv_class,
   30.61 +by (asm_simp_tac (simpset() addsimps [UN_equiv_class,
   30.62                                       congruent2_implies_congruent]) 1);
   30.63  by (rewrite_goals_tac [congruent2_def,equiv_def,refl_def]);
   30.64  by (Blast_tac 1);
   30.65 @@ -196,7 +196,7 @@
   30.66  goal Equiv.thy
   30.67      "!!A r. [| equiv A r;  congruent2 r b;  a1: A;  a2: A |]  \
   30.68  \    ==> (UN x1:r^^{a1}. UN x2:r^^{a2}. b x1 x2) = b a1 a2";
   30.69 -by (asm_simp_tac (!simpset addsimps [UN_equiv_class,
   30.70 +by (asm_simp_tac (simpset() addsimps [UN_equiv_class,
   30.71                                       congruent2_implies_congruent,
   30.72                                       congruent2_implies_congruent_UN]) 1);
   30.73  qed "UN_equiv_class2";
   30.74 @@ -224,7 +224,7 @@
   30.75  \    |] ==> congruent2 r b";
   30.76  by (cut_facts_tac prems 1);
   30.77  by (Clarify_tac 1);
   30.78 -by (blast_tac (!claset addIs (trans::prems)) 1);
   30.79 +by (blast_tac (claset() addIs (trans::prems)) 1);
   30.80  qed "congruent2I";
   30.81  
   30.82  val [equivA,commute,congt] = goal Equiv.thy
   30.83 @@ -263,8 +263,8 @@
   30.84  by (rtac (Union_quotient RS subst) 1);
   30.85  by (assume_tac 1);
   30.86  by (rtac dvd_partition 1);
   30.87 -by (blast_tac (!claset delrules [equalityI] addEs [quotient_disj RS disjE]) 4);
   30.88 +by (blast_tac (claset() delrules [equalityI] addEs [quotient_disj RS disjE]) 4);
   30.89  by (ALLGOALS 
   30.90 -    (asm_simp_tac (!simpset addsimps [Union_quotient, equiv_type, 
   30.91 +    (asm_simp_tac (simpset() addsimps [Union_quotient, equiv_type, 
   30.92  				      finite_quotient])));
   30.93  qed "equiv_imp_dvd_card";
    31.1 --- a/src/HOL/Integ/Group.ML	Mon Nov 03 12:12:10 1997 +0100
    31.2 +++ b/src/HOL/Integ/Group.ML	Mon Nov 03 12:13:18 1997 +0100
    31.3 @@ -70,7 +70,7 @@
    31.4   by (rtac plus_assoc 2);
    31.5  by (rtac trans 1);
    31.6   by (rtac plus_cong 2);
    31.7 -  by (simp_tac (!simpset addsimps [left_inv,left_inv2,right_inv,right_inv2]) 2);
    31.8 +  by (simp_tac (simpset() addsimps [left_inv,left_inv2,right_inv,right_inv2]) 2);
    31.9   by (rtac refl 2);
   31.10  by (rtac (zeroL RS sym) 1);
   31.11  qed "inv_plus";
    32.1 --- a/src/HOL/Integ/Integ.ML	Mon Nov 03 12:12:10 1997 +0100
    32.2 +++ b/src/HOL/Integ/Integ.ML	Mon Nov 03 12:13:18 1997 +0100
    32.3 @@ -35,7 +35,7 @@
    32.4  val prems = goalw Integ.thy [intrel_def]
    32.5      "[| x1+y2 = x2+y1|] ==> \
    32.6  \    ((x1,y1),(x2,y2)): intrel";
    32.7 -by (fast_tac (!claset addIs prems) 1);
    32.8 +by (fast_tac (claset() addIs prems) 1);
    32.9  qed "intrelI";
   32.10  
   32.11  (*intrelE is hard to derive because fast_tac tries hyp_subst_tac so soon*)
   32.12 @@ -66,7 +66,7 @@
   32.13  
   32.14  goalw Integ.thy [equiv_def, refl_def, sym_def, trans_def]
   32.15      "equiv {x::(nat*nat).True} intrel";
   32.16 -by (fast_tac (!claset addSIs [intrel_refl] 
   32.17 +by (fast_tac (claset() addSIs [intrel_refl] 
   32.18                          addSEs [sym, integ_trans_lemma]) 1);
   32.19  qed "equiv_intrel";
   32.20  
   32.21 @@ -105,7 +105,7 @@
   32.22  by (dtac eq_equiv_class 1);
   32.23  by (rtac equiv_intrel 1);
   32.24  by (Fast_tac 1);
   32.25 -by (safe_tac (!claset));
   32.26 +by (safe_tac (claset()));
   32.27  by (Asm_full_simp_tac 1);
   32.28  qed "inj_znat";
   32.29  
   32.30 @@ -114,8 +114,8 @@
   32.31  
   32.32  goalw Integ.thy [congruent_def]
   32.33    "congruent intrel (%p. split (%x y. intrel^^{(y,x)}) p)";
   32.34 -by (safe_tac (!claset));
   32.35 -by (asm_simp_tac (!simpset addsimps add_ac) 1);
   32.36 +by (safe_tac (claset()));
   32.37 +by (asm_simp_tac (simpset() addsimps add_ac) 1);
   32.38  qed "zminus_congruent";
   32.39  
   32.40  
   32.41 @@ -125,7 +125,7 @@
   32.42  goalw Integ.thy [zminus_def]
   32.43        "$~ Abs_Integ(intrel^^{(x,y)}) = Abs_Integ(intrel ^^ {(y,x)})";
   32.44  by (res_inst_tac [("f","Abs_Integ")] arg_cong 1);
   32.45 -by (simp_tac (!simpset addsimps 
   32.46 +by (simp_tac (simpset() addsimps 
   32.47     [intrel_in_integ RS Abs_Integ_inverse,zminus_ize UN_equiv_class]) 1);
   32.48  qed "zminus";
   32.49  
   32.50 @@ -137,22 +137,22 @@
   32.51  by (dres_inst_tac [("f","Abs_Integ")] arg_cong 1);
   32.52  by (res_inst_tac [("p","x")] PairE 1);
   32.53  by (rtac prem 1);
   32.54 -by (asm_full_simp_tac (!simpset addsimps [Rep_Integ_inverse]) 1);
   32.55 +by (asm_full_simp_tac (simpset() addsimps [Rep_Integ_inverse]) 1);
   32.56  qed "eq_Abs_Integ";
   32.57  
   32.58  goal Integ.thy "$~ ($~ z) = z";
   32.59  by (res_inst_tac [("z","z")] eq_Abs_Integ 1);
   32.60 -by (asm_simp_tac (!simpset addsimps [zminus]) 1);
   32.61 +by (asm_simp_tac (simpset() addsimps [zminus]) 1);
   32.62  qed "zminus_zminus";
   32.63  
   32.64  goal Integ.thy "inj(zminus)";
   32.65  by (rtac injI 1);
   32.66  by (dres_inst_tac [("f","zminus")] arg_cong 1);
   32.67 -by (asm_full_simp_tac (!simpset addsimps [zminus_zminus]) 1);
   32.68 +by (asm_full_simp_tac (simpset() addsimps [zminus_zminus]) 1);
   32.69  qed "inj_zminus";
   32.70  
   32.71  goalw Integ.thy [znat_def] "$~ ($#0) = $#0";
   32.72 -by (simp_tac (!simpset addsimps [zminus]) 1);
   32.73 +by (simp_tac (simpset() addsimps [zminus]) 1);
   32.74  qed "zminus_0";
   32.75  
   32.76  
   32.77 @@ -160,7 +160,7 @@
   32.78  
   32.79  goal Arith.thy "!!m x n::nat. n+m=x ==> m<=x";
   32.80  by (dtac (disjI2 RS less_or_eq_imp_le) 1);
   32.81 -by (asm_full_simp_tac (!simpset addsimps add_ac) 1);
   32.82 +by (asm_full_simp_tac (simpset() addsimps add_ac) 1);
   32.83  by (dtac add_leD1 1);
   32.84  by (assume_tac 1);
   32.85  qed "not_znegative_znat_lemma";
   32.86 @@ -169,16 +169,16 @@
   32.87  goalw Integ.thy [znegative_def, znat_def]
   32.88      "~ znegative($# n)";
   32.89  by (Simp_tac 1);
   32.90 -by (safe_tac (!claset));
   32.91 +by (safe_tac (claset()));
   32.92  by (rtac ccontr 1);
   32.93  by (etac notE 1);
   32.94  by (Asm_full_simp_tac 1);
   32.95  by (dtac not_znegative_znat_lemma 1);
   32.96 -by (fast_tac (!claset addDs [leD]) 1);
   32.97 +by (fast_tac (claset() addDs [leD]) 1);
   32.98  qed "not_znegative_znat";
   32.99  
  32.100  goalw Integ.thy [znegative_def, znat_def] "znegative($~ $# Suc(n))";
  32.101 -by (simp_tac (!simpset addsimps [zminus]) 1);
  32.102 +by (simp_tac (simpset() addsimps [zminus]) 1);
  32.103  by (REPEAT (ares_tac [exI, conjI] 1));
  32.104  by (rtac (intrelI RS ImageI) 2);
  32.105  by (rtac singletonI 3);
  32.106 @@ -201,19 +201,19 @@
  32.107  
  32.108  goalw Integ.thy [congruent_def]
  32.109      "congruent intrel (split (%x y. intrel^^{((y-x) + (x-(y::nat)),0)}))";
  32.110 -by (safe_tac (!claset));
  32.111 +by (safe_tac (claset()));
  32.112  by (Asm_simp_tac 1);
  32.113  by (etac rev_mp 1);
  32.114  by (res_inst_tac [("m","x1"),("n","y1")] diff_induct 1);
  32.115 -by (asm_simp_tac (!simpset addsimps [inj_Suc RS inj_eq]) 3);
  32.116 -by (asm_simp_tac (!simpset addsimps [diff_add_inverse,diff_add_0]) 2);
  32.117 +by (asm_simp_tac (simpset() addsimps [inj_Suc RS inj_eq]) 3);
  32.118 +by (asm_simp_tac (simpset() addsimps [diff_add_inverse,diff_add_0]) 2);
  32.119  by (Asm_simp_tac 1);
  32.120  by (rtac impI 1);
  32.121  by (etac subst 1);
  32.122  by (res_inst_tac [("m1","x")] (add_commute RS ssubst) 1);
  32.123 -by (asm_simp_tac (!simpset addsimps [diff_add_inverse,diff_add_0]) 1);
  32.124 +by (asm_simp_tac (simpset() addsimps [diff_add_inverse,diff_add_0]) 1);
  32.125  by (rtac impI 1);
  32.126 -by (asm_simp_tac (!simpset addsimps
  32.127 +by (asm_simp_tac (simpset() addsimps
  32.128                    [diff_add_inverse, diff_add_0, diff_Suc_add_0,
  32.129                     diff_Suc_add_inverse]) 1);
  32.130  qed "zmagnitude_congruent";
  32.131 @@ -226,15 +226,15 @@
  32.132      "zmagnitude (Abs_Integ(intrel^^{(x,y)})) = \
  32.133  \    Abs_Integ(intrel^^{((y - x) + (x - y),0)})";
  32.134  by (res_inst_tac [("f","Abs_Integ")] arg_cong 1);
  32.135 -by (asm_simp_tac (!simpset addsimps [zmagnitude_ize UN_equiv_class]) 1);
  32.136 +by (asm_simp_tac (simpset() addsimps [zmagnitude_ize UN_equiv_class]) 1);
  32.137  qed "zmagnitude";
  32.138  
  32.139  goalw Integ.thy [znat_def] "zmagnitude($# n) = $#n";
  32.140 -by (asm_simp_tac (!simpset addsimps [zmagnitude]) 1);
  32.141 +by (asm_simp_tac (simpset() addsimps [zmagnitude]) 1);
  32.142  qed "zmagnitude_znat";
  32.143  
  32.144  goalw Integ.thy [znat_def] "zmagnitude($~ $# n) = $#n";
  32.145 -by (asm_simp_tac (!simpset addsimps [zmagnitude, zminus]) 1);
  32.146 +by (asm_simp_tac (simpset() addsimps [zmagnitude, zminus]) 1);
  32.147  qed "zmagnitude_zminus_znat";
  32.148  
  32.149  
  32.150 @@ -246,12 +246,12 @@
  32.151      "congruent2 intrel (%p1 p2.                  \
  32.152  \         split (%x1 y1. split (%x2 y2. intrel^^{(x1+x2, y1+y2)}) p2) p1)";
  32.153  (*Proof via congruent2_commuteI seems longer*)
  32.154 -by (safe_tac (!claset));
  32.155 -by (asm_simp_tac (!simpset addsimps [add_assoc]) 1);
  32.156 +by (safe_tac (claset()));
  32.157 +by (asm_simp_tac (simpset() addsimps [add_assoc]) 1);
  32.158  (*The rest should be trivial, but rearranging terms is hard*)
  32.159  by (res_inst_tac [("x1","x1a")] (add_left_commute RS ssubst) 1);
  32.160 -by (asm_simp_tac (!simpset addsimps [add_assoc RS sym]) 1);
  32.161 -by (asm_simp_tac (!simpset addsimps add_ac) 1);
  32.162 +by (asm_simp_tac (simpset() addsimps [add_assoc RS sym]) 1);
  32.163 +by (asm_simp_tac (simpset() addsimps add_ac) 1);
  32.164  qed "zadd_congruent2";
  32.165  
  32.166  (*Resolve th against the corresponding facts for zadd*)
  32.167 @@ -261,31 +261,31 @@
  32.168    "Abs_Integ(intrel^^{(x1,y1)}) + Abs_Integ(intrel^^{(x2,y2)}) = \
  32.169  \  Abs_Integ(intrel^^{(x1+x2, y1+y2)})";
  32.170  by (asm_simp_tac
  32.171 -    (!simpset addsimps [zadd_ize UN_equiv_class2]) 1);
  32.172 +    (simpset() addsimps [zadd_ize UN_equiv_class2]) 1);
  32.173  qed "zadd";
  32.174  
  32.175  goalw Integ.thy [znat_def] "$#0 + z = z";
  32.176  by (res_inst_tac [("z","z")] eq_Abs_Integ 1);
  32.177 -by (asm_simp_tac (!simpset addsimps [zadd]) 1);
  32.178 +by (asm_simp_tac (simpset() addsimps [zadd]) 1);
  32.179  qed "zadd_0";
  32.180  
  32.181  goal Integ.thy "$~ (z + w) = $~ z + $~ w";
  32.182  by (res_inst_tac [("z","z")] eq_Abs_Integ 1);
  32.183  by (res_inst_tac [("z","w")] eq_Abs_Integ 1);
  32.184 -by (asm_simp_tac (!simpset addsimps [zminus,zadd]) 1);
  32.185 +by (asm_simp_tac (simpset() addsimps [zminus,zadd]) 1);
  32.186  qed "zminus_zadd_distrib";
  32.187  
  32.188  goal Integ.thy "(z::int) + w = w + z";
  32.189  by (res_inst_tac [("z","z")] eq_Abs_Integ 1);
  32.190  by (res_inst_tac [("z","w")] eq_Abs_Integ 1);
  32.191 -by (asm_simp_tac (!simpset addsimps (add_ac @ [zadd])) 1);
  32.192 +by (asm_simp_tac (simpset() addsimps (add_ac @ [zadd])) 1);
  32.193  qed "zadd_commute";
  32.194  
  32.195  goal Integ.thy "((z1::int) + z2) + z3 = z1 + (z2 + z3)";
  32.196  by (res_inst_tac [("z","z1")] eq_Abs_Integ 1);
  32.197  by (res_inst_tac [("z","z2")] eq_Abs_Integ 1);
  32.198  by (res_inst_tac [("z","z3")] eq_Abs_Integ 1);
  32.199 -by (asm_simp_tac (!simpset addsimps [zadd, add_assoc]) 1);
  32.200 +by (asm_simp_tac (simpset() addsimps [zadd, add_assoc]) 1);
  32.201  qed "zadd_assoc";
  32.202  
  32.203  (*For AC rewriting*)
  32.204 @@ -299,12 +299,12 @@
  32.205  val zadd_ac = [zadd_assoc,zadd_commute,zadd_left_commute];
  32.206  
  32.207  goalw Integ.thy [znat_def] "$# (m + n) = ($#m) + ($#n)";
  32.208 -by (asm_simp_tac (!simpset addsimps [zadd]) 1);
  32.209 +by (asm_simp_tac (simpset() addsimps [zadd]) 1);
  32.210  qed "znat_add";
  32.211  
  32.212  goalw Integ.thy [znat_def] "z + ($~ z) = $#0";
  32.213  by (res_inst_tac [("z","z")] eq_Abs_Integ 1);
  32.214 -by (asm_simp_tac (!simpset addsimps [zminus, zadd, add_commute]) 1);
  32.215 +by (asm_simp_tac (simpset() addsimps [zminus, zadd, add_commute]) 1);
  32.216  qed "zadd_zminus_inverse";
  32.217  
  32.218  goal Integ.thy "($~ z) + z = $#0";
  32.219 @@ -322,7 +322,7 @@
  32.220  
  32.221  qed_goal "zadd_assoc_cong" Integ.thy
  32.222      "!!z. (z::int) + v = z' + v' ==> z + (v + w) = z' + (v' + w)"
  32.223 - (fn _ => [(asm_simp_tac (!simpset addsimps [zadd_assoc RS sym]) 1)]);
  32.224 + (fn _ => [(asm_simp_tac (simpset() addsimps [zadd_assoc RS sym]) 1)]);
  32.225  
  32.226  qed_goal "zadd_assoc_swap" Integ.thy "(z::int) + (v + w) = v + (z + w)"
  32.227   (fn _ => [(REPEAT (ares_tac [zadd_commute RS zadd_assoc_cong] 1))]);
  32.228 @@ -335,7 +335,7 @@
  32.229  (** Congruence property for multiplication **)
  32.230  
  32.231  goal Integ.thy "((k::nat) + l) + (m + n) = (k + m) + (n + l)";
  32.232 -by (simp_tac (!simpset addsimps add_ac) 1);
  32.233 +by (simp_tac (simpset() addsimps add_ac) 1);
  32.234  qed "zmult_congruent_lemma";
  32.235  
  32.236  goal Integ.thy 
  32.237 @@ -343,18 +343,18 @@
  32.238  \               split (%x1 y1. split (%x2 y2.   \
  32.239  \                   intrel^^{(x1*x2 + y1*y2, x1*y2 + y1*x2)}) p2) p1)";
  32.240  by (rtac (equiv_intrel RS congruent2_commuteI) 1);
  32.241 -by (safe_tac (!claset));
  32.242 +by (safe_tac (claset()));
  32.243  by (rewtac split_def);
  32.244 -by (simp_tac (!simpset addsimps add_ac@mult_ac) 1);
  32.245 -by (asm_simp_tac (!simpset delsimps [equiv_intrel_iff]
  32.246 +by (simp_tac (simpset() addsimps add_ac@mult_ac) 1);
  32.247 +by (asm_simp_tac (simpset() delsimps [equiv_intrel_iff]
  32.248                             addsimps add_ac@mult_ac) 1);
  32.249  by (rtac (intrelI RS(equiv_intrel RS equiv_class_eq)) 1);
  32.250  by (rtac (zmult_congruent_lemma RS trans) 1);
  32.251  by (rtac (zmult_congruent_lemma RS trans RS sym) 1);
  32.252  by (rtac (zmult_congruent_lemma RS trans RS sym) 1);
  32.253  by (rtac (zmult_congruent_lemma RS trans RS sym) 1);
  32.254 -by (asm_simp_tac (!simpset addsimps [add_mult_distrib RS sym]) 1);
  32.255 -by (asm_simp_tac (!simpset addsimps add_ac@mult_ac) 1);
  32.256 +by (asm_simp_tac (simpset() addsimps [add_mult_distrib RS sym]) 1);
  32.257 +by (asm_simp_tac (simpset() addsimps add_ac@mult_ac) 1);
  32.258  qed "zmult_congruent2";
  32.259  
  32.260  (*Resolve th against the corresponding facts for zmult*)
  32.261 @@ -363,36 +363,36 @@
  32.262  goalw Integ.thy [zmult_def]
  32.263     "Abs_Integ((intrel^^{(x1,y1)})) * Abs_Integ((intrel^^{(x2,y2)})) =   \
  32.264  \   Abs_Integ(intrel ^^ {(x1*x2 + y1*y2, x1*y2 + y1*x2)})";
  32.265 -by (simp_tac (!simpset addsimps [zmult_ize UN_equiv_class2]) 1);
  32.266 +by (simp_tac (simpset() addsimps [zmult_ize UN_equiv_class2]) 1);
  32.267  qed "zmult";
  32.268  
  32.269  goalw Integ.thy [znat_def] "$#0 * z = $#0";
  32.270  by (res_inst_tac [("z","z")] eq_Abs_Integ 1);
  32.271 -by (asm_simp_tac (!simpset addsimps [zmult]) 1);
  32.272 +by (asm_simp_tac (simpset() addsimps [zmult]) 1);
  32.273  qed "zmult_0";
  32.274  
  32.275  goalw Integ.thy [znat_def] "$#Suc(0) * z = z";
  32.276  by (res_inst_tac [("z","z")] eq_Abs_Integ 1);
  32.277 -by (asm_simp_tac (!simpset addsimps [zmult]) 1);
  32.278 +by (asm_simp_tac (simpset() addsimps [zmult]) 1);
  32.279  qed "zmult_1";
  32.280  
  32.281  goal Integ.thy "($~ z) * w = $~ (z * w)";
  32.282  by (res_inst_tac [("z","z")] eq_Abs_Integ 1);
  32.283  by (res_inst_tac [("z","w")] eq_Abs_Integ 1);
  32.284 -by (asm_simp_tac (!simpset addsimps ([zminus, zmult] @ add_ac)) 1);
  32.285 +by (asm_simp_tac (simpset() addsimps ([zminus, zmult] @ add_ac)) 1);
  32.286  qed "zmult_zminus";
  32.287  
  32.288  
  32.289  goal Integ.thy "($~ z) * ($~ w) = (z * w)";
  32.290  by (res_inst_tac [("z","z")] eq_Abs_Integ 1);
  32.291  by (res_inst_tac [("z","w")] eq_Abs_Integ 1);
  32.292 -by (asm_simp_tac (!simpset addsimps ([zminus, zmult] @ add_ac)) 1);
  32.293 +by (asm_simp_tac (simpset() addsimps ([zminus, zmult] @ add_ac)) 1);
  32.294  qed "zmult_zminus_zminus";
  32.295  
  32.296  goal Integ.thy "(z::int) * w = w * z";
  32.297  by (res_inst_tac [("z","z")] eq_Abs_Integ 1);
  32.298  by (res_inst_tac [("z","w")] eq_Abs_Integ 1);
  32.299 -by (asm_simp_tac (!simpset addsimps ([zmult] @ add_ac @ mult_ac)) 1);
  32.300 +by (asm_simp_tac (simpset() addsimps ([zmult] @ add_ac @ mult_ac)) 1);
  32.301  qed "zmult_commute";
  32.302  
  32.303  goal Integ.thy "z * $# 0 = $#0";
  32.304 @@ -407,7 +407,7 @@
  32.305  by (res_inst_tac [("z","z1")] eq_Abs_Integ 1);
  32.306  by (res_inst_tac [("z","z2")] eq_Abs_Integ 1);
  32.307  by (res_inst_tac [("z","z3")] eq_Abs_Integ 1);
  32.308 -by (asm_simp_tac (!simpset addsimps ([add_mult_distrib2,zmult] @ 
  32.309 +by (asm_simp_tac (simpset() addsimps ([add_mult_distrib2,zmult] @ 
  32.310                                       add_ac @ mult_ac)) 1);
  32.311  qed "zmult_assoc";
  32.312  
  32.313 @@ -425,18 +425,18 @@
  32.314  by (res_inst_tac [("z","z2")] eq_Abs_Integ 1);
  32.315  by (res_inst_tac [("z","w")] eq_Abs_Integ 1);
  32.316  by (asm_simp_tac 
  32.317 -    (!simpset addsimps ([add_mult_distrib2, zadd, zmult] @ 
  32.318 +    (simpset() addsimps ([add_mult_distrib2, zadd, zmult] @ 
  32.319                          add_ac @ mult_ac)) 1);
  32.320  qed "zadd_zmult_distrib";
  32.321  
  32.322  val zmult_commute'= read_instantiate [("z","w")] zmult_commute;
  32.323  
  32.324  goal Integ.thy "w * ($~ z) = $~ (w * z)";
  32.325 -by (simp_tac (!simpset addsimps [zmult_commute', zmult_zminus]) 1);
  32.326 +by (simp_tac (simpset() addsimps [zmult_commute', zmult_zminus]) 1);
  32.327  qed "zmult_zminus_right";
  32.328  
  32.329  goal Integ.thy "(w::int) * (z1 + z2) = (w * z1) + (w * z2)";
  32.330 -by (simp_tac (!simpset addsimps [zmult_commute',zadd_zmult_distrib]) 1);
  32.331 +by (simp_tac (simpset() addsimps [zmult_commute',zadd_zmult_distrib]) 1);
  32.332  qed "zadd_zmult_distrib2";
  32.333  
  32.334  val zadd_simps = 
  32.335 @@ -455,7 +455,7 @@
  32.336  
  32.337  (* Some Theorems about zsuc and zpred *)
  32.338  goalw Integ.thy [zsuc_def] "$#(Suc(n)) = zsuc($# n)";
  32.339 -by (simp_tac (!simpset addsimps [znat_add RS sym]) 1);
  32.340 +by (simp_tac (simpset() addsimps [znat_add RS sym]) 1);
  32.341  qed "znat_Suc";
  32.342  
  32.343  goalw Integ.thy [zpred_def,zsuc_def,zdiff_def] "$~ zsuc(z) = zpred($~ z)";
  32.344 @@ -468,85 +468,85 @@
  32.345  
  32.346  goalw Integ.thy [zsuc_def,zpred_def,zdiff_def]
  32.347     "zpred(zsuc(z)) = z";
  32.348 -by (simp_tac (!simpset addsimps [zadd_assoc]) 1);
  32.349 +by (simp_tac (simpset() addsimps [zadd_assoc]) 1);
  32.350  qed "zpred_zsuc";
  32.351  
  32.352  goalw Integ.thy [zsuc_def,zpred_def,zdiff_def]
  32.353     "zsuc(zpred(z)) = z";
  32.354 -by (simp_tac (!simpset addsimps [zadd_assoc]) 1);
  32.355 +by (simp_tac (simpset() addsimps [zadd_assoc]) 1);
  32.356  qed "zsuc_zpred";
  32.357  
  32.358  goal Integ.thy "(zpred(z)=w) = (z=zsuc(w))";
  32.359 -by (safe_tac (!claset));
  32.360 +by (safe_tac (claset()));
  32.361  by (rtac (zsuc_zpred RS sym) 1);
  32.362  by (rtac zpred_zsuc 1);
  32.363  qed "zpred_to_zsuc";
  32.364  
  32.365  goal Integ.thy "(zsuc(z)=w)=(z=zpred(w))";
  32.366 -by (safe_tac (!claset));
  32.367 +by (safe_tac (claset()));
  32.368  by (rtac (zpred_zsuc RS sym) 1);
  32.369  by (rtac zsuc_zpred 1);
  32.370  qed "zsuc_to_zpred";
  32.371  
  32.372  goal Integ.thy "($~ z = w) = (z = $~ w)";
  32.373 -by (safe_tac (!claset));
  32.374 +by (safe_tac (claset()));
  32.375  by (rtac (zminus_zminus RS sym) 1);
  32.376  by (rtac zminus_zminus 1);
  32.377  qed "zminus_exchange";
  32.378  
  32.379  goal Integ.thy"(zsuc(z)=zsuc(w)) = (z=w)";
  32.380 -by (safe_tac (!claset));
  32.381 +by (safe_tac (claset()));
  32.382  by (dres_inst_tac [("f","zpred")] arg_cong 1);
  32.383 -by (asm_full_simp_tac (!simpset addsimps [zpred_zsuc]) 1);
  32.384 +by (asm_full_simp_tac (simpset() addsimps [zpred_zsuc]) 1);
  32.385  qed "bijective_zsuc";
  32.386  
  32.387  goal Integ.thy"(zpred(z)=zpred(w)) = (z=w)";
  32.388 -by (safe_tac (!claset));
  32.389 +by (safe_tac (claset()));
  32.390  by (dres_inst_tac [("f","zsuc")] arg_cong 1);
  32.391 -by (asm_full_simp_tac (!simpset addsimps [zsuc_zpred]) 1);
  32.392 +by (asm_full_simp_tac (simpset() addsimps [zsuc_zpred]) 1);
  32.393  qed "bijective_zpred";
  32.394  
  32.395  (* Additional Theorems about zadd *)
  32.396  
  32.397  goalw Integ.thy [zsuc_def] "zsuc(z) + w = zsuc(z+w)";
  32.398 -by (simp_tac (!simpset addsimps zadd_ac) 1);
  32.399 +by (simp_tac (simpset() addsimps zadd_ac) 1);
  32.400  qed "zadd_zsuc";
  32.401  
  32.402  goalw Integ.thy [zsuc_def] "w + zsuc(z) = zsuc(w+z)";
  32.403 -by (simp_tac (!simpset addsimps zadd_ac) 1);
  32.404 +by (simp_tac (simpset() addsimps zadd_ac) 1);
  32.405  qed "zadd_zsuc_right";
  32.406  
  32.407  goalw Integ.thy [zpred_def,zdiff_def] "zpred(z) + w = zpred(z+w)";
  32.408 -by (simp_tac (!simpset addsimps zadd_ac) 1);
  32.409 +by (simp_tac (simpset() addsimps zadd_ac) 1);
  32.410  qed "zadd_zpred";
  32.411  
  32.412  goalw Integ.thy [zpred_def,zdiff_def] "w + zpred(z) = zpred(w+z)";
  32.413 -by (simp_tac (!simpset addsimps zadd_ac) 1);
  32.414 +by (simp_tac (simpset() addsimps zadd_ac) 1);
  32.415  qed "zadd_zpred_right";
  32.416  
  32.417  
  32.418  (* Additional Theorems about zmult *)
  32.419  
  32.420  goalw Integ.thy [zsuc_def] "zsuc(w) * z = z + w * z";
  32.421 -by (simp_tac (!simpset addsimps [zadd_zmult_distrib, zadd_commute]) 1);
  32.422 +by (simp_tac (simpset() addsimps [zadd_zmult_distrib, zadd_commute]) 1);
  32.423  qed "zmult_zsuc";
  32.424  
  32.425  goalw Integ.thy [zsuc_def] "z * zsuc(w) = z + w * z";
  32.426  by (simp_tac 
  32.427 -    (!simpset addsimps [zadd_zmult_distrib2, zadd_commute, zmult_commute]) 1);
  32.428 +    (simpset() addsimps [zadd_zmult_distrib2, zadd_commute, zmult_commute]) 1);
  32.429  qed "zmult_zsuc_right";
  32.430  
  32.431  goalw Integ.thy [zpred_def, zdiff_def] "zpred(w) * z = w * z - z";
  32.432 -by (simp_tac (!simpset addsimps [zadd_zmult_distrib]) 1);
  32.433 +by (simp_tac (simpset() addsimps [zadd_zmult_distrib]) 1);
  32.434  qed "zmult_zpred";
  32.435  
  32.436  goalw Integ.thy [zpred_def, zdiff_def] "z * zpred(w) = w * z - z";
  32.437 -by (simp_tac (!simpset addsimps [zadd_zmult_distrib2, zmult_commute]) 1);
  32.438 +by (simp_tac (simpset() addsimps [zadd_zmult_distrib2, zmult_commute]) 1);
  32.439  qed "zmult_zpred_right";
  32.440  
  32.441  (* Further Theorems about zsuc and zpred *)
  32.442  goal Integ.thy "$#Suc(m) ~= $#0";
  32.443 -by (simp_tac (!simpset addsimps [inj_znat RS inj_eq]) 1);
  32.444 +by (simp_tac (simpset() addsimps [inj_znat RS inj_eq]) 1);
  32.445  qed "znat_Suc_not_znat_Zero";
  32.446  
  32.447  bind_thm ("znat_Zero_not_znat_Suc", (znat_Suc_not_znat_Zero RS not_sym));
  32.448 @@ -554,15 +554,15 @@
  32.449  
  32.450  goalw Integ.thy [zsuc_def,znat_def] "w ~= zsuc(w)";
  32.451  by (res_inst_tac [("z","w")] eq_Abs_Integ 1);
  32.452 -by (asm_full_simp_tac (!simpset addsimps [zadd]) 1);
  32.453 +by (asm_full_simp_tac (simpset() addsimps [zadd]) 1);
  32.454  qed "n_not_zsuc_n";
  32.455  
  32.456  val zsuc_n_not_n = n_not_zsuc_n RS not_sym;
  32.457  
  32.458  goal Integ.thy "w ~= zpred(w)";
  32.459 -by (safe_tac (!claset));
  32.460 +by (safe_tac (claset()));
  32.461  by (dres_inst_tac [("x","w"),("f","zsuc")] arg_cong 1);
  32.462 -by (asm_full_simp_tac (!simpset addsimps [zsuc_zpred,zsuc_n_not_n]) 1);
  32.463 +by (asm_full_simp_tac (simpset() addsimps [zsuc_zpred,zsuc_n_not_n]) 1);
  32.464  qed "n_not_zpred_n";
  32.465  
  32.466  val zpred_n_not_n = n_not_zpred_n RS not_sym;
  32.467 @@ -574,33 +574,33 @@
  32.468      "!!w. w<z ==> ? n. z = w + $#(Suc(n))";
  32.469  by (res_inst_tac [("z","z")] eq_Abs_Integ 1);
  32.470  by (res_inst_tac [("z","w")] eq_Abs_Integ 1);
  32.471 -by (safe_tac (!claset));
  32.472 -by (asm_full_simp_tac (!simpset addsimps [zadd, zminus]) 1);
  32.473 -by (safe_tac (!claset addSDs [less_eq_Suc_add]));
  32.474 +by (safe_tac (claset()));
  32.475 +by (asm_full_simp_tac (simpset() addsimps [zadd, zminus]) 1);
  32.476 +by (safe_tac (claset() addSDs [less_eq_Suc_add]));
  32.477  by (rename_tac "k" 1);
  32.478  by (res_inst_tac [("x","k")] exI 1);
  32.479  (*To cancel x2, rename it to be first!*)
  32.480  by (rename_tac "a b c" 1);
  32.481  by (Asm_full_simp_tac 1);
  32.482 -by (asm_full_simp_tac (!simpset delsimps [add_Suc_right]
  32.483 +by (asm_full_simp_tac (simpset() delsimps [add_Suc_right]
  32.484                                  addsimps ([add_Suc_right RS sym] @ add_ac)) 1);
  32.485  qed "zless_eq_zadd_Suc";
  32.486  
  32.487  goalw Integ.thy [zless_def, znegative_def, zdiff_def, znat_def] 
  32.488      "z < z + $#(Suc(n))";
  32.489  by (res_inst_tac [("z","z")] eq_Abs_Integ 1);
  32.490 -by (safe_tac (!claset));
  32.491 -by (simp_tac (!simpset addsimps [zadd, zminus]) 1);
  32.492 +by (safe_tac (claset()));
  32.493 +by (simp_tac (simpset() addsimps [zadd, zminus]) 1);
  32.494  by (REPEAT_SOME (ares_tac [refl, exI, singletonI, ImageI, conjI, intrelI]));
  32.495  by (rtac le_less_trans 1);
  32.496  by (rtac lessI 2);
  32.497 -by (asm_simp_tac (!simpset addsimps ([le_add1,add_left_cancel_le]@add_ac)) 1);
  32.498 +by (asm_simp_tac (simpset() addsimps ([le_add1,add_left_cancel_le]@add_ac)) 1);
  32.499  qed "zless_zadd_Suc";
  32.500  
  32.501  goal Integ.thy "!!z1 z2 z3. [| z1<z2; z2<z3 |] ==> z1 < (z3::int)";
  32.502 -by (safe_tac (!claset addSDs [zless_eq_zadd_Suc]));
  32.503 +by (safe_tac (claset() addSDs [zless_eq_zadd_Suc]));
  32.504  by (simp_tac 
  32.505 -    (!simpset addsimps [zadd_assoc, zless_zadd_Suc, znat_add RS sym]) 1);
  32.506 +    (simpset() addsimps [zadd_assoc, zless_zadd_Suc, znat_add RS sym]) 1);
  32.507  qed "zless_trans";
  32.508  
  32.509  goalw Integ.thy [zsuc_def] "z<zsuc(z)";
  32.510 @@ -610,12 +610,12 @@
  32.511  val zless_zsucI = zlessI RSN (2,zless_trans);
  32.512  
  32.513  goal Integ.thy "!!z w::int. z<w ==> ~w<z";
  32.514 -by (safe_tac (!claset addSDs [zless_eq_zadd_Suc]));
  32.515 +by (safe_tac (claset() addSDs [zless_eq_zadd_Suc]));
  32.516  by (res_inst_tac [("z","z")] eq_Abs_Integ 1);
  32.517 -by (safe_tac (!claset));
  32.518 -by (asm_full_simp_tac (!simpset addsimps ([znat_def, zadd])) 1);
  32.519 +by (safe_tac (claset()));
  32.520 +by (asm_full_simp_tac (simpset() addsimps ([znat_def, zadd])) 1);
  32.521  by (asm_full_simp_tac
  32.522 - (!simpset delsimps [add_Suc_right] addsimps [add_left_cancel, add_assoc, add_Suc_right RS sym]) 1);
  32.523 + (simpset() delsimps [add_Suc_right] addsimps [add_left_cancel, add_assoc, add_Suc_right RS sym]) 1);
  32.524  by (resolve_tac [less_not_refl2 RS notE] 1);
  32.525  by (etac sym 2);
  32.526  by (REPEAT (resolve_tac [lessI, trans_less_add2, less_SucI] 1));
  32.527 @@ -633,7 +633,7 @@
  32.528  bind_thm ("zless_irrefl", (zless_not_refl RS notE));
  32.529  
  32.530  goal Integ.thy "!!w. z<w ==> w ~= (z::int)";
  32.531 -by (fast_tac (!claset addEs [zless_irrefl]) 1);
  32.532 +by (fast_tac (claset() addEs [zless_irrefl]) 1);
  32.533  qed "zless_not_refl2";
  32.534  
  32.535  
  32.536 @@ -642,11 +642,11 @@
  32.537      "z<w | z=w | w<(z::int)";
  32.538  by (res_inst_tac [("z","z")] eq_Abs_Integ 1);
  32.539  by (res_inst_tac [("z","w")] eq_Abs_Integ 1);
  32.540 -by (safe_tac (!claset));
  32.541 +by (safe_tac (claset()));
  32.542  by (asm_full_simp_tac
  32.543 -    (!simpset addsimps [zadd, zminus, Image_iff, Bex_def]) 1);
  32.544 +    (simpset() addsimps [zadd, zminus, Image_iff, Bex_def]) 1);
  32.545  by (res_inst_tac [("m1", "x+ya"), ("n1", "xa+y")] (less_linear RS disjE) 1);
  32.546 -by (REPEAT (fast_tac (!claset addss (!simpset addsimps add_ac)) 1));
  32.547 +by (REPEAT (fast_tac (claset() addss (simpset() addsimps add_ac)) 1));
  32.548  qed "zless_linear";
  32.549  
  32.550  
  32.551 @@ -655,12 +655,12 @@
  32.552  goalw Integ.thy  [zless_def, znegative_def, zdiff_def, znat_def]
  32.553      "($#m < $#n) = (m<n)";
  32.554  by (simp_tac
  32.555 -    (!simpset addsimps [zadd, zminus, Image_iff, Bex_def]) 1);
  32.556 -by (fast_tac (!claset addIs [add_commute] addSEs [less_add_eq_less]) 1);
  32.557 +    (simpset() addsimps [zadd, zminus, Image_iff, Bex_def]) 1);
  32.558 +by (fast_tac (claset() addIs [add_commute] addSEs [less_add_eq_less]) 1);
  32.559  qed "zless_eq_less";
  32.560  
  32.561  goalw Integ.thy [zle_def, le_def] "($#m <= $#n) = (m<=n)";
  32.562 -by (simp_tac (!simpset addsimps [zless_eq_less]) 1);
  32.563 +by (simp_tac (simpset() addsimps [zless_eq_less]) 1);
  32.564  qed "zle_eq_le";
  32.565  
  32.566  goalw Integ.thy [zle_def] "!!w. ~(w<z) ==> z<=(w::int)";
  32.567 @@ -678,17 +678,17 @@
  32.568  qed "not_zleE";
  32.569  
  32.570  goalw Integ.thy [zle_def] "!!z. z < w ==> z <= (w::int)";
  32.571 -by (fast_tac (!claset addEs [zless_asym]) 1);
  32.572 +by (fast_tac (claset() addEs [zless_asym]) 1);
  32.573  qed "zless_imp_zle";
  32.574  
  32.575  goalw Integ.thy [zle_def] "!!z. z <= w ==> z < w | z=(w::int)";
  32.576  by (cut_facts_tac [zless_linear] 1);
  32.577 -by (fast_tac (!claset addEs [zless_irrefl,zless_asym]) 1);
  32.578 +by (fast_tac (claset() addEs [zless_irrefl,zless_asym]) 1);
  32.579  qed "zle_imp_zless_or_eq";
  32.580  
  32.581  goalw Integ.thy [zle_def] "!!z. z<w | z=w ==> z <=(w::int)";
  32.582  by (cut_facts_tac [zless_linear] 1);
  32.583 -by (fast_tac (!claset addEs [zless_irrefl,zless_asym]) 1);
  32.584 +by (fast_tac (claset() addEs [zless_irrefl,zless_asym]) 1);
  32.585  qed "zless_or_eq_imp_zle";
  32.586  
  32.587  goal Integ.thy "(x <= (y::int)) = (x < y | x=y)";
  32.588 @@ -696,48 +696,48 @@
  32.589  qed "zle_eq_zless_or_eq";
  32.590  
  32.591  goal Integ.thy "w <= (w::int)";
  32.592 -by (simp_tac (!simpset addsimps [zle_eq_zless_or_eq]) 1);
  32.593 +by (simp_tac (simpset() addsimps [zle_eq_zless_or_eq]) 1);
  32.594  qed "zle_refl";
  32.595  
  32.596  val prems = goal Integ.thy "!!i. [| i <= j; j < k |] ==> i < (k::int)";
  32.597  by (dtac zle_imp_zless_or_eq 1);
  32.598 -by (fast_tac (!claset addIs [zless_trans]) 1);
  32.599 +by (fast_tac (claset() addIs [zless_trans]) 1);
  32.600  qed "zle_zless_trans";
  32.601  
  32.602  goal Integ.thy "!!i. [| i <= j; j <= k |] ==> i <= (k::int)";
  32.603  by (EVERY1 [dtac zle_imp_zless_or_eq, dtac zle_imp_zless_or_eq,
  32.604 -            rtac zless_or_eq_imp_zle, fast_tac (!claset addIs [zless_trans])]);
  32.605 +            rtac zless_or_eq_imp_zle, fast_tac (claset() addIs [zless_trans])]);
  32.606  qed "zle_trans";
  32.607  
  32.608  goal Integ.thy "!!z. [| z <= w; w <= z |] ==> z = (w::int)";
  32.609  by (EVERY1 [dtac zle_imp_zless_or_eq, dtac zle_imp_zless_or_eq,
  32.610 -            fast_tac (!claset addEs [zless_irrefl,zless_asym])]);
  32.611 +            fast_tac (claset() addEs [zless_irrefl,zless_asym])]);
  32.612  qed "zle_anti_sym";
  32.613  
  32.614  
  32.615  goal Integ.thy "!!w w' z::int. z + w' = z + w ==> w' = w";
  32.616  by (dres_inst_tac [("f", "%x. x + $~z")] arg_cong 1);
  32.617 -by (asm_full_simp_tac (!simpset addsimps zadd_ac) 1);
  32.618 +by (asm_full_simp_tac (simpset() addsimps zadd_ac) 1);
  32.619  qed "zadd_left_cancel";
  32.620  
  32.621  
  32.622  (*** Monotonicity results ***)
  32.623  
  32.624  goal Integ.thy "!!v w z::int. v < w ==> v + z < w + z";
  32.625 -by (safe_tac (!claset addSDs [zless_eq_zadd_Suc]));
  32.626 -by (simp_tac (!simpset addsimps zadd_ac) 1);
  32.627 -by (simp_tac (!simpset addsimps [zadd_assoc RS sym, zless_zadd_Suc]) 1);
  32.628 +by (safe_tac (claset() addSDs [zless_eq_zadd_Suc]));
  32.629 +by (simp_tac (simpset() addsimps zadd_ac) 1);
  32.630 +by (simp_tac (simpset() addsimps [zadd_assoc RS sym, zless_zadd_Suc]) 1);
  32.631  qed "zadd_zless_mono1";
  32.632  
  32.633  goal Integ.thy "!!v w z::int. (v+z < w+z) = (v < w)";
  32.634 -by (safe_tac (!claset addSEs [zadd_zless_mono1]));
  32.635 +by (safe_tac (claset() addSEs [zadd_zless_mono1]));
  32.636  by (dres_inst_tac [("z", "$~z")] zadd_zless_mono1 1);
  32.637 -by (asm_full_simp_tac (!simpset addsimps [zadd_assoc]) 1);
  32.638 +by (asm_full_simp_tac (simpset() addsimps [zadd_assoc]) 1);
  32.639  qed "zadd_left_cancel_zless";
  32.640  
  32.641  goal Integ.thy "!!v w z::int. (v+z <= w+z) = (v <= w)";
  32.642  by (asm_full_simp_tac
  32.643 -    (!simpset addsimps [zle_def, zadd_left_cancel_zless]) 1);
  32.644 +    (simpset() addsimps [zle_def, zadd_left_cancel_zless]) 1);
  32.645  qed "zadd_left_cancel_zle";
  32.646  
  32.647  (*"v<=w ==> v+z <= w+z"*)
  32.648 @@ -746,14 +746,14 @@
  32.649  
  32.650  goal Integ.thy "!!z' z::int. [| w'<=w; z'<=z |] ==> w' + z' <= w + z";
  32.651  by (etac (zadd_zle_mono1 RS zle_trans) 1);
  32.652 -by (simp_tac (!simpset addsimps [zadd_commute]) 1);
  32.653 +by (simp_tac (simpset() addsimps [zadd_commute]) 1);
  32.654  (*w moves to the end because it is free while z', z are bound*)
  32.655  by (etac zadd_zle_mono1 1);
  32.656  qed "zadd_zle_mono";
  32.657  
  32.658  goal Integ.thy "!!w z::int. z<=$#0 ==> w+z <= w";
  32.659  by (dres_inst_tac [("z", "w")] zadd_zle_mono1 1);
  32.660 -by (asm_full_simp_tac (!simpset addsimps [zadd_commute]) 1);
  32.661 +by (asm_full_simp_tac (simpset() addsimps [zadd_commute]) 1);
  32.662  qed "zadd_zle_self";
  32.663  
  32.664  
  32.665 @@ -776,7 +776,7 @@
  32.666  
  32.667  goal Integ.thy "($~ x < $~ y) = (y < x)";
  32.668    by (rewrite_goals_tac [zless_def,zdiff_def]); 
  32.669 -  by (simp_tac (!simpset addsimps zadd_ac ) 1); 
  32.670 +  by (simp_tac (simpset() addsimps zadd_ac ) 1); 
  32.671  qed "zminus_zless_zminus"; 
  32.672  
  32.673  goal Integ.thy "($~ x <= $~ y) = (y <= x)";
  32.674 @@ -785,12 +785,12 @@
  32.675  
  32.676  goal Integ.thy "(x < $~ y) = (y < $~ x)";
  32.677    by (rewrite_goals_tac [zless_def,zdiff_def]); 
  32.678 -  by (simp_tac (!simpset addsimps zadd_ac ) 1); 
  32.679 +  by (simp_tac (simpset() addsimps zadd_ac ) 1); 
  32.680  qed "zless_zminus"; 
  32.681  
  32.682  goal Integ.thy "($~ x < y) = ($~ y < x)";
  32.683    by (rewrite_goals_tac [zless_def,zdiff_def]); 
  32.684 -  by (simp_tac (!simpset addsimps zadd_ac ) 1); 
  32.685 +  by (simp_tac (simpset() addsimps zadd_ac ) 1); 
  32.686  qed "zminus_zless"; 
  32.687  
  32.688  goal Integ.thy "(x <= $~ y) = (y <=  $~ x)";
  32.689 @@ -870,7 +870,7 @@
  32.690    by (etac exE 1); 
  32.691    by (rtac exI 1);
  32.692    by (dres_inst_tac [("f","(% z. z + $~ $# Suc n )")] arg_cong 1); 
  32.693 -  by (auto_tac(!claset, !simpset addsimps [zadd_assoc])); 
  32.694 +  by (auto_tac(claset(), simpset() addsimps [zadd_assoc])); 
  32.695  qed "znegativeD"; 
  32.696  
  32.697  goal Integ.thy "!! x. ~znegative x ==> ? n. x = $# n"; 
    33.1 --- a/src/HOL/Integ/Ring.ML	Mon Nov 03 12:12:10 1997 +0100
    33.2 +++ b/src/HOL/Integ/Ring.ML	Mon Nov 03 12:13:18 1997 +0100
    33.3 @@ -141,7 +141,7 @@
    33.4  (*** The order [minus_plusL3,minus_plusL2] is important because minus_plusL3
    33.5       MUST be tried first ***)
    33.6  val cring_simp =
    33.7 -  let val phase1 = !simpset addsimps
    33.8 +  let val phase1 = simpset() addsimps
    33.9                     [plus_minusL,minus_plusR,minus_minusR,plus_minusR]
   33.10        val phase2 = HOL_ss addsimps [minus_plusL3,minus_plusL2,
   33.11                                      zeroL,zeroR,mult_zeroL,mult_zeroR]
    34.1 --- a/src/HOL/Lambda/Commutation.ML	Mon Nov 03 12:12:10 1997 +0100
    34.2 +++ b/src/HOL/Lambda/Commutation.ML	Mon Nov 03 12:13:18 1997 +0100
    34.3 @@ -29,24 +29,24 @@
    34.4  by (strip_tac 1);
    34.5  by (etac rtrancl_induct 1);
    34.6  by (Blast_tac 1);
    34.7 -by (blast_tac (!claset addIs [rtrancl_into_rtrancl]) 1);
    34.8 +by (blast_tac (claset() addIs [rtrancl_into_rtrancl]) 1);
    34.9  qed "square_rtrancl";
   34.10  
   34.11  goalw Commutation.thy [commute_def]
   34.12   "!!R. square R S (S^*) (R^=) ==> commute (R^*) (S^*)";
   34.13 -by (fast_tac (!claset addDs [square_reflcl,square_sym RS square_rtrancl]
   34.14 +by (fast_tac (claset() addDs [square_reflcl,square_sym RS square_rtrancl]
   34.15                       addEs [r_into_rtrancl]
   34.16 -                     addss !simpset) 1);
   34.17 +                     addss simpset()) 1);
   34.18  qed "square_rtrancl_reflcl_commute";
   34.19  
   34.20  (*** commute ***)
   34.21  
   34.22  goalw Commutation.thy [commute_def] "!!R. commute R S ==> commute S R";
   34.23 -by (blast_tac (!claset addIs [square_sym]) 1);
   34.24 +by (blast_tac (claset() addIs [square_sym]) 1);
   34.25  qed "commute_sym";
   34.26  
   34.27  goalw Commutation.thy [commute_def] "!!R. commute R S ==> commute (R^*) (S^*)";
   34.28 -by (blast_tac (!claset addIs [square_rtrancl,square_sym]) 1);
   34.29 +by (blast_tac (claset() addIs [square_rtrancl,square_sym]) 1);
   34.30  qed "commute_rtrancl";
   34.31  
   34.32  goalw Commutation.thy [commute_def,square_def]
   34.33 @@ -67,7 +67,7 @@
   34.34  
   34.35  goalw Commutation.thy [diamond_def]
   34.36    "!!R. square R R (R^=) (R^=) ==> confluent R";
   34.37 -by (fast_tac (!claset addIs [square_rtrancl_reflcl_commute, r_into_rtrancl]
   34.38 +by (fast_tac (claset() addIs [square_rtrancl_reflcl_commute, r_into_rtrancl]
   34.39                        addEs [square_subset]) 1);
   34.40  qed "square_reflcl_confluent";
   34.41  
   34.42 @@ -75,13 +75,13 @@
   34.43   "!!R. [| confluent R; confluent S; commute (R^*) (S^*) |] \
   34.44  \      ==> confluent(R Un S)";
   34.45  by (rtac (rtrancl_Un_rtrancl RS subst) 1);
   34.46 -by (blast_tac (!claset addDs [diamond_Un] addIs [diamond_confluent]) 1);
   34.47 +by (blast_tac (claset() addDs [diamond_Un] addIs [diamond_confluent]) 1);
   34.48  qed "confluent_Un";
   34.49  
   34.50  goal Commutation.thy
   34.51    "!!R.[| diamond(R); T <= R; R <= T^* |] ==> confluent(T)";
   34.52 -by (fast_tac (!claset addIs [diamond_confluent]
   34.53 -                    addDs [rtrancl_subset RS sym] addss !simpset) 1);
   34.54 +by (fast_tac (claset() addIs [diamond_confluent]
   34.55 +                    addDs [rtrancl_subset RS sym] addss simpset()) 1);
   34.56  qed "diamond_to_confluence";
   34.57  
   34.58  (*** Church_Rosser ***)
   34.59 @@ -94,6 +94,6 @@
   34.60         rtrancl_inverseI, inverseI, Un_upper1 RS rtrancl_mono RS subsetD])1);
   34.61  by (etac rtrancl_induct 1);
   34.62   by (Blast_tac 1);
   34.63 -by (Blast.depth_tac (!claset delrules [rtrancl_refl] 
   34.64 +by (Blast.depth_tac (claset() delrules [rtrancl_refl] 
   34.65                         addIs [r_into_rtrancl, rtrancl_trans]) 12 1);
   34.66  qed "Church_Rosser_confluent";
    35.1 --- a/src/HOL/Lambda/Eta.ML	Mon Nov 03 12:12:10 1997 +0100
    35.2 +++ b/src/HOL/Lambda/Eta.ML	Mon Nov 03 12:13:18 1997 +0100
    35.3 @@ -26,7 +26,7 @@
    35.4  
    35.5  goal Eta.thy "!i t u. ~free s i --> s[t/i] = s[u/i]";
    35.6  by (dB.induct_tac "s" 1);
    35.7 -by (ALLGOALS(simp_tac (addsplit (!simpset))));
    35.8 +by (ALLGOALS(simp_tac (addsplit (simpset()))));
    35.9  by (Blast_tac 1);
   35.10  by (Blast_tac 1);
   35.11  qed_spec_mp "subst_not_free";
   35.12 @@ -35,9 +35,9 @@
   35.13  goal Eta.thy "!i k. free (lift t k) i = \
   35.14  \                   (i < k & free t i | k < i & free t (pred i))";
   35.15  by (dB.induct_tac "t" 1);
   35.16 -by (ALLGOALS(asm_full_simp_tac (addsplit (!simpset) addcongs [conj_cong])));
   35.17 +by (ALLGOALS(asm_full_simp_tac (addsplit (simpset()) addcongs [conj_cong])));
   35.18  by (Blast_tac 2);
   35.19 -by(simp_tac (!simpset addsimps [pred_def] addsplits [expand_nat_case]) 1);
   35.20 +by(simp_tac (simpset() addsimps [pred_def] addsplits [expand_nat_case]) 1);
   35.21  by (safe_tac HOL_cs);
   35.22  by (ALLGOALS trans_tac);
   35.23  qed "free_lift";
   35.24 @@ -48,8 +48,8 @@
   35.25  by (dB.induct_tac "s" 1);
   35.26  by (Asm_simp_tac 2);
   35.27  by (Blast_tac 2);
   35.28 -by (asm_full_simp_tac (addsplit (!simpset)) 2);
   35.29 -by(simp_tac (!simpset addsimps [pred_def,subst_Var]
   35.30 +by (asm_full_simp_tac (addsplit (simpset())) 2);
   35.31 +by(simp_tac (simpset() addsimps [pred_def,subst_Var]
   35.32                        addsplits [expand_if,expand_nat_case]) 1);
   35.33  by (safe_tac (HOL_cs addSEs [nat_neqE]));
   35.34  by (ALLGOALS trans_tac);
   35.35 @@ -58,16 +58,16 @@
   35.36  
   35.37  goal Eta.thy "!!s. s -e> t ==> !i. free t i = free s i";
   35.38  by (etac eta.induct 1);
   35.39 -by (ALLGOALS(asm_simp_tac (!simpset addcongs [conj_cong])));
   35.40 +by (ALLGOALS(asm_simp_tac (simpset() addcongs [conj_cong])));
   35.41  qed_spec_mp "free_eta";
   35.42  
   35.43  goal Eta.thy "!!s. [| s -e> t; ~free s i |] ==> ~free t i";
   35.44 -by (asm_simp_tac (!simpset addsimps [free_eta]) 1);
   35.45 +by (asm_simp_tac (simpset() addsimps [free_eta]) 1);
   35.46  qed "not_free_eta";
   35.47  
   35.48  goal Eta.thy "!!s. s -e> t ==> !u i. s[u/i] -e> t[u/i]";
   35.49  by (etac eta.induct 1);
   35.50 -by (ALLGOALS(asm_simp_tac (!simpset addsimps [subst_subst RS sym])));
   35.51 +by (ALLGOALS(asm_simp_tac (simpset() addsimps [subst_subst RS sym])));
   35.52  qed_spec_mp "eta_subst";
   35.53  Addsimps [eta_subst];
   35.54  
   35.55 @@ -77,10 +77,10 @@
   35.56  by (rtac (impI RS allI RS allI) 1);
   35.57  by (Simp_tac 1);
   35.58  by (etac eta.induct 1);
   35.59 -by (slow_tac (!claset addIs [subst_not_free,eta_subst]
   35.60 -                      addIs [free_eta RS iffD1] addss !simpset) 1);
   35.61 -by (safe_tac (!claset));
   35.62 -by (blast_tac (!claset addSIs [eta_subst] addIs [free_eta RS iffD1]) 5);
   35.63 +by (slow_tac (claset() addIs [subst_not_free,eta_subst]
   35.64 +                      addIs [free_eta RS iffD1] addss simpset()) 1);
   35.65 +by (safe_tac (claset()));
   35.66 +by (blast_tac (claset() addSIs [eta_subst] addIs [free_eta RS iffD1]) 5);
   35.67  by (ALLGOALS Blast_tac);
   35.68  qed "square_eta";
   35.69  
   35.70 @@ -92,21 +92,21 @@
   35.71  
   35.72  goal Eta.thy "!!s. s -e>> s' ==> Abs s -e>> Abs s'";
   35.73  by (etac rtrancl_induct 1);
   35.74 -by (ALLGOALS(blast_tac (!claset addIs [rtrancl_refl,rtrancl_into_rtrancl])));
   35.75 +by (ALLGOALS(blast_tac (claset() addIs [rtrancl_refl,rtrancl_into_rtrancl])));
   35.76  qed "rtrancl_eta_Abs";
   35.77  
   35.78  goal Eta.thy "!!s. s -e>> s' ==> s @ t -e>> s' @ t";
   35.79  by (etac rtrancl_induct 1);
   35.80 -by (ALLGOALS(blast_tac (!claset addIs [rtrancl_refl,rtrancl_into_rtrancl])));
   35.81 +by (ALLGOALS(blast_tac (claset() addIs [rtrancl_refl,rtrancl_into_rtrancl])));
   35.82  qed "rtrancl_eta_AppL";
   35.83  
   35.84  goal Eta.thy "!!s. t -e>> t' ==> s @ t -e>> s @ t'";
   35.85  by (etac rtrancl_induct 1);
   35.86 -by (ALLGOALS(blast_tac (!claset addIs [rtrancl_refl,rtrancl_into_rtrancl])));
   35.87 +by (ALLGOALS(blast_tac (claset() addIs [rtrancl_refl,rtrancl_into_rtrancl])));
   35.88  qed "rtrancl_eta_AppR";
   35.89  
   35.90  goal Eta.thy "!!s. [| s -e>> s'; t -e>> t' |] ==> s @ t -e>> s' @ t'";
   35.91 -by (blast_tac (!claset addSIs [rtrancl_eta_AppL, rtrancl_eta_AppR]
   35.92 +by (blast_tac (claset() addSIs [rtrancl_eta_AppL, rtrancl_eta_AppR]
   35.93                         addIs [rtrancl_trans]) 1);
   35.94  qed "rtrancl_eta_App";
   35.95  
   35.96 @@ -119,13 +119,13 @@
   35.97  
   35.98  goal Eta.thy "!!s t. s -> t ==> !u i. s[u/i] -> t[u/i]";
   35.99  by (etac beta.induct 1);
  35.100 -by (ALLGOALS(asm_full_simp_tac (!simpset addsimps [subst_subst RS sym])));
  35.101 +by (ALLGOALS(asm_full_simp_tac (simpset() addsimps [subst_subst RS sym])));
  35.102  qed_spec_mp "beta_subst";
  35.103  AddIs [beta_subst];
  35.104  
  35.105  goal Eta.thy "!i. t[Var i/i] = t[Var(i)/Suc i]";
  35.106  by (dB.induct_tac "t" 1);
  35.107 -by (ALLGOALS (asm_simp_tac (addsplit (!simpset))));
  35.108 +by (ALLGOALS (asm_simp_tac (addsplit (simpset()))));
  35.109  by(safe_tac (HOL_cs addSEs [nat_neqE]));
  35.110  by(ALLGOALS trans_tac);
  35.111  qed_spec_mp "subst_Var_Suc";
  35.112 @@ -133,30 +133,30 @@
  35.113  
  35.114  goal Eta.thy "!!s t. s -e> t ==> (!i. lift s i -e> lift t i)";
  35.115  by (etac eta.induct 1);
  35.116 -by (ALLGOALS(asm_simp_tac (addsplit (!simpset))));
  35.117 +by (ALLGOALS(asm_simp_tac (addsplit (simpset()))));
  35.118  qed_spec_mp "eta_lift";
  35.119  Addsimps [eta_lift];
  35.120  
  35.121  goal Eta.thy "!s t i. s -e> t --> u[s/i] -e>> u[t/i]";
  35.122  by (dB.induct_tac "u" 1);
  35.123 -by (ALLGOALS(asm_simp_tac (addsplit (!simpset))));
  35.124 -by (blast_tac (!claset addIs [r_into_rtrancl]) 1);
  35.125 -by (blast_tac (!claset addSIs [rtrancl_eta_App]) 1);
  35.126 -by (blast_tac (!claset addSIs [rtrancl_eta_Abs,eta_lift]) 1);
  35.127 +by (ALLGOALS(asm_simp_tac (addsplit (simpset()))));
  35.128 +by (blast_tac (claset() addIs [r_into_rtrancl]) 1);
  35.129 +by (blast_tac (claset() addSIs [rtrancl_eta_App]) 1);
  35.130 +by (blast_tac (claset() addSIs [rtrancl_eta_Abs,eta_lift]) 1);
  35.131  qed_spec_mp "rtrancl_eta_subst";
  35.132  
  35.133  goalw Eta.thy [square_def] "square beta eta (eta^*) (beta^=)";
  35.134  by (rtac (impI RS allI RS allI) 1);
  35.135  by (etac beta.induct 1);
  35.136 -by (slow_tac (!claset addIs [r_into_rtrancl,rtrancl_eta_subst,eta_subst]
  35.137 -                      addss !simpset) 1);
  35.138 -by (blast_tac (!claset addIs [r_into_rtrancl,rtrancl_eta_AppL]) 1);
  35.139 -by (blast_tac (!claset addIs [r_into_rtrancl,rtrancl_eta_AppR]) 1);
  35.140 +by (slow_tac (claset() addIs [r_into_rtrancl,rtrancl_eta_subst,eta_subst]
  35.141 +                      addss simpset()) 1);
  35.142 +by (blast_tac (claset() addIs [r_into_rtrancl,rtrancl_eta_AppL]) 1);
  35.143 +by (blast_tac (claset() addIs [r_into_rtrancl,rtrancl_eta_AppR]) 1);
  35.144  (*23 seconds?*)
  35.145  DelIffs dB.distinct;
  35.146  Addsimps dB.distinct;
  35.147 -by (slow_tac (!claset addIs [r_into_rtrancl,rtrancl_eta_Abs,free_beta]
  35.148 -                      addss !simpset) 1);
  35.149 +by (slow_tac (claset() addIs [r_into_rtrancl,rtrancl_eta_Abs,free_beta]
  35.150 +                      addss simpset()) 1);
  35.151  qed "square_beta_eta";
  35.152  
  35.153  goal Eta.thy "confluent(beta Un eta)";
  35.154 @@ -168,7 +168,7 @@
  35.155  
  35.156  goal Eta.thy "!i. (~free s i) = (? t. s = lift t i)";
  35.157  by (dB.induct_tac "s" 1);
  35.158 -  by (simp_tac (!simpset addsplits [expand_if]) 1);
  35.159 +  by (simp_tac (simpset() addsplits [expand_if]) 1);
  35.160    by (SELECT_GOAL(safe_tac HOL_cs)1);
  35.161     by(etac nat_neqE 1);
  35.162      by (res_inst_tac [("x","Var nat")] exI 1);
  35.163 @@ -179,7 +179,7 @@
  35.164     by (assume_tac 2);
  35.165    by (etac thin_rl 1);
  35.166    by (res_inst_tac [("dB","t")] dB_case_distinction 1);
  35.167 -    by (simp_tac (!simpset addsplits [expand_if]) 1);
  35.168 +    by (simp_tac (simpset() addsplits [expand_if]) 1);
  35.169      by (blast_tac (HOL_cs addDs [less_not_refl2]) 1);
  35.170     by (Simp_tac 1);
  35.171    by (Simp_tac 1);
  35.172 @@ -195,7 +195,7 @@
  35.173   by (etac exE 1);
  35.174   by (etac rev_mp 1);
  35.175   by (res_inst_tac [("dB","t")] dB_case_distinction 1);
  35.176 -   by (simp_tac (!simpset addsplits [expand_if]) 1);
  35.177 +   by (simp_tac (simpset() addsplits [expand_if]) 1);
  35.178    by (Simp_tac 1);
  35.179    by (Blast_tac 1);
  35.180   by (Simp_tac 1);
  35.181 @@ -209,7 +209,7 @@
  35.182  by (etac exE 1);
  35.183  by (etac rev_mp 1);
  35.184  by (res_inst_tac [("dB","t")] dB_case_distinction 1);
  35.185 -  by (simp_tac (!simpset addsplits [expand_if]) 1);
  35.186 +  by (simp_tac (simpset() addsplits [expand_if]) 1);
  35.187   by (Simp_tac 1);
  35.188  by (Simp_tac 1);
  35.189  by (Blast_tac 1);
  35.190 @@ -217,5 +217,5 @@
  35.191  
  35.192  goal Eta.thy "(!s u. (~free s 0) --> R(Abs(s @ Var 0))(s[u/0])) = \
  35.193  \             (!s. R(Abs(lift s 0 @ Var 0))(s))";
  35.194 -by (fast_tac (HOL_cs addss (!simpset addsimps [not_free_iff_lifted])) 1);
  35.195 +by (fast_tac (HOL_cs addss (simpset() addsimps [not_free_iff_lifted])) 1);
  35.196  qed "explicit_is_implicit";
    36.1 --- a/src/HOL/Lambda/Lambda.ML	Mon Nov 03 12:12:10 1997 +0100
    36.2 +++ b/src/HOL/Lambda/Lambda.ML	Mon Nov 03 12:13:18 1997 +0100
    36.3 @@ -23,22 +23,22 @@
    36.4  
    36.5  goal Lambda.thy "!!s. s ->> s' ==> Abs s ->> Abs s'";
    36.6  by (etac rtrancl_induct 1);
    36.7 -by (ALLGOALS (blast_tac (!claset addIs [rtrancl_into_rtrancl])));
    36.8 +by (ALLGOALS (blast_tac (claset() addIs [rtrancl_into_rtrancl])));
    36.9  qed "rtrancl_beta_Abs";
   36.10  AddSIs [rtrancl_beta_Abs];
   36.11  
   36.12  goal Lambda.thy "!!s. s ->> s' ==> s @ t ->> s' @ t";
   36.13  by (etac rtrancl_induct 1);
   36.14 -by (ALLGOALS (blast_tac (!claset addIs [rtrancl_into_rtrancl])));
   36.15 +by (ALLGOALS (blast_tac (claset() addIs [rtrancl_into_rtrancl])));
   36.16  qed "rtrancl_beta_AppL";
   36.17  
   36.18  goal Lambda.thy "!!s. t ->> t' ==> s @ t ->> s @ t'";
   36.19  by (etac rtrancl_induct 1);
   36.20 -by (ALLGOALS (blast_tac (!claset addIs [rtrancl_into_rtrancl])));
   36.21 +by (ALLGOALS (blast_tac (claset() addIs [rtrancl_into_rtrancl])));
   36.22  qed "rtrancl_beta_AppR";
   36.23  
   36.24  goal Lambda.thy "!!s. [| s ->> s'; t ->> t' |] ==> s @ t ->> s' @ t'";
   36.25 -by (blast_tac (!claset addSIs [rtrancl_beta_AppL, rtrancl_beta_AppR]
   36.26 +by (blast_tac (claset() addSIs [rtrancl_beta_AppL, rtrancl_beta_AppR]
   36.27                         addIs  [rtrancl_trans]) 1);
   36.28  qed "rtrancl_beta_App";
   36.29  AddIs [rtrancl_beta_App];
   36.30 @@ -49,15 +49,15 @@
   36.31                       setloop (split_inside_tac [expand_if]);
   36.32  
   36.33  goal Lambda.thy "(Var k)[u/k] = u";
   36.34 -by (asm_full_simp_tac(addsplit(!simpset)) 1);
   36.35 +by (asm_full_simp_tac(addsplit(simpset())) 1);
   36.36  qed "subst_eq";
   36.37  
   36.38  goal Lambda.thy "!!s. i<j ==> (Var j)[u/i] = Var(pred j)";
   36.39 -by (asm_full_simp_tac(addsplit(!simpset)) 1);
   36.40 +by (asm_full_simp_tac(addsplit(simpset())) 1);
   36.41  qed "subst_gt";
   36.42  
   36.43  goal Lambda.thy "!!s. j<i ==> (Var j)[u/i] = Var(j)";
   36.44 -by (asm_full_simp_tac (addsplit(!simpset) addsimps
   36.45 +by (asm_full_simp_tac (addsplit(simpset()) addsimps
   36.46                            [less_not_refl2 RS not_sym,less_SucI]) 1);
   36.47  qed "subst_lt";
   36.48  
   36.49 @@ -66,7 +66,7 @@
   36.50  goal Lambda.thy
   36.51    "!i k. i < Suc k --> lift (lift t i) (Suc k) = lift (lift t k) i";
   36.52  by (dB.induct_tac "t" 1);
   36.53 -by (ALLGOALS(asm_simp_tac (!simpset addsplits [expand_if]
   36.54 +by (ALLGOALS(asm_simp_tac (simpset() addsplits [expand_if]
   36.55                                      addSolver cut_trans_tac)));
   36.56  by (safe_tac HOL_cs);
   36.57  by (ALLGOALS trans_tac);
   36.58 @@ -75,7 +75,7 @@
   36.59  goal Lambda.thy "!i j s. j < Suc i --> \
   36.60  \         lift (t[s/j]) i = (lift t (Suc i)) [lift s i / j]";
   36.61  by (dB.induct_tac "t" 1);
   36.62 -by (ALLGOALS(asm_simp_tac (!simpset addsimps [pred_def,subst_Var,lift_lift]
   36.63 +by (ALLGOALS(asm_simp_tac (simpset() addsimps [pred_def,subst_Var,lift_lift]
   36.64                                  addsplits [expand_if,expand_nat_case]
   36.65                                  addSolver cut_trans_tac)));
   36.66  by (safe_tac HOL_cs);
   36.67 @@ -87,7 +87,7 @@
   36.68    "!i j s. i < Suc j -->\
   36.69  \         lift (t[s/j]) i = (lift t i) [lift s i / Suc j]";
   36.70  by (dB.induct_tac "t" 1);
   36.71 -by (ALLGOALS(asm_simp_tac (!simpset addsimps [subst_Var,lift_lift]
   36.72 +by (ALLGOALS(asm_simp_tac (simpset() addsimps [subst_Var,lift_lift]
   36.73                                  addsplits [expand_if]
   36.74                                  addSolver cut_trans_tac)));
   36.75  by (safe_tac (HOL_cs addSEs [nat_neqE]));
   36.76 @@ -96,7 +96,7 @@
   36.77  
   36.78  goal Lambda.thy "!k s. (lift t k)[s/k] = t";
   36.79  by (dB.induct_tac "t" 1);
   36.80 -by (ALLGOALS (asm_full_simp_tac (!simpset addsplits [expand_if])));
   36.81 +by (ALLGOALS (asm_full_simp_tac (simpset() addsplits [expand_if])));
   36.82  qed "subst_lift";
   36.83  Addsimps [subst_lift];
   36.84  
   36.85 @@ -105,7 +105,7 @@
   36.86  \ t[lift v i / Suc j][u[v/j]/i] = t[u/i][v/j]";
   36.87  by (dB.induct_tac "t" 1);
   36.88  by (ALLGOALS(asm_simp_tac
   36.89 -      (!simpset addsimps [pred_def,subst_Var,lift_lift RS sym,lift_subst_lt]
   36.90 +      (simpset() addsimps [pred_def,subst_Var,lift_lift RS sym,lift_subst_lt]
   36.91                  addsplits [expand_if,expand_nat_case]
   36.92                  addSolver cut_trans_tac)));
   36.93  by (safe_tac (HOL_cs addSEs [nat_neqE]));
   36.94 @@ -117,20 +117,20 @@
   36.95  
   36.96  goal Lambda.thy "!k. liftn 0 t k = t";
   36.97  by (dB.induct_tac "t" 1);
   36.98 -by (ALLGOALS(asm_simp_tac(addsplit(!simpset))));
   36.99 +by (ALLGOALS(asm_simp_tac(addsplit(simpset()))));
  36.100  qed "liftn_0";
  36.101  Addsimps [liftn_0];
  36.102  
  36.103  goal Lambda.thy "!k. liftn (Suc n) t k = lift (liftn n t k) k";
  36.104  by (dB.induct_tac "t" 1);
  36.105 -by (ALLGOALS(asm_simp_tac(addsplit(!simpset))));
  36.106 -by (blast_tac (!claset addDs [add_lessD1]) 1);
  36.107 +by (ALLGOALS(asm_simp_tac(addsplit(simpset()))));
  36.108 +by (blast_tac (claset() addDs [add_lessD1]) 1);
  36.109  qed "liftn_lift";
  36.110  Addsimps [liftn_lift];
  36.111  
  36.112  goal Lambda.thy "!n. substn t s n = t[liftn n s 0 / n]";
  36.113  by (dB.induct_tac "t" 1);
  36.114 -by (ALLGOALS(asm_simp_tac(addsplit(!simpset))));
  36.115 +by (ALLGOALS(asm_simp_tac(addsplit(simpset()))));
  36.116  qed "substn_subst_n";
  36.117  Addsimps [substn_subst_n];
  36.118  
    37.1 --- a/src/HOL/Lambda/ParRed.ML	Mon Nov 03 12:12:10 1997 +0100
    37.2 +++ b/src/HOL/Lambda/ParRed.ML	Mon Nov 03 12:13:18 1997 +0100
    37.3 @@ -36,7 +36,7 @@
    37.4  by (rtac subsetI 1);
    37.5  by (split_all_tac 1);
    37.6  by (etac beta.induct 1);
    37.7 -by (ALLGOALS(blast_tac (!claset addSIs [par_beta_refl])));
    37.8 +by (ALLGOALS(blast_tac (claset() addSIs [par_beta_refl])));
    37.9  qed "beta_subset_par_beta";
   37.10  
   37.11  goal ParRed.thy "par_beta <= beta^*";
   37.12 @@ -45,7 +45,7 @@
   37.13  by (etac par_beta.induct 1);
   37.14  by (Blast_tac 1);
   37.15  (* rtrancl_refl complicates the proof by increasing the branching factor*)
   37.16 -by (ALLGOALS (blast_tac (!claset delrules [rtrancl_refl]
   37.17 +by (ALLGOALS (blast_tac (claset() delrules [rtrancl_refl]
   37.18  				 addIs [rtrancl_into_rtrancl])));
   37.19  qed "par_beta_subset_beta";
   37.20  
   37.21 @@ -53,20 +53,20 @@
   37.22  
   37.23  goal ParRed.thy "!t' n. t => t' --> lift t n => lift t' n";
   37.24  by (dB.induct_tac "t" 1);
   37.25 -by (ALLGOALS(fast_tac (!claset addss (!simpset))));
   37.26 +by (ALLGOALS(fast_tac (claset() addss (simpset()))));
   37.27  qed_spec_mp "par_beta_lift";
   37.28  Addsimps [par_beta_lift];
   37.29  
   37.30  goal ParRed.thy
   37.31    "!s s' t' n. s => s' --> t => t' --> t[s/n] => t'[s'/n]";
   37.32  by (dB.induct_tac "t" 1);
   37.33 -  by (asm_simp_tac (addsplit(!simpset)) 1);
   37.34 +  by (asm_simp_tac (addsplit(simpset())) 1);
   37.35   by (strip_tac 1);
   37.36   by (eresolve_tac par_beta_cases 1);
   37.37    by (Asm_simp_tac 1);
   37.38 - by (asm_simp_tac (!simpset addsimps [subst_subst RS sym]) 1);
   37.39 - by (fast_tac (!claset addSIs [par_beta_lift] addss (!simpset)) 1);
   37.40 -by (fast_tac (!claset addss (!simpset)) 1);
   37.41 + by (asm_simp_tac (simpset() addsimps [subst_subst RS sym]) 1);
   37.42 + by (fast_tac (claset() addSIs [par_beta_lift] addss (simpset())) 1);
   37.43 +by (fast_tac (claset() addss (simpset())) 1);
   37.44  qed_spec_mp "par_beta_subst";
   37.45  
   37.46  (*** Confluence (directly) ***)
   37.47 @@ -74,7 +74,7 @@
   37.48  goalw ParRed.thy [diamond_def,commute_def,square_def] "diamond(par_beta)";
   37.49  by (rtac (impI RS allI RS allI) 1);
   37.50  by (etac par_beta.induct 1);
   37.51 -by (ALLGOALS(blast_tac (!claset addSIs [par_beta_subst])));
   37.52 +by (ALLGOALS(blast_tac (claset() addSIs [par_beta_subst])));
   37.53  qed "diamond_par_beta";
   37.54  
   37.55  
   37.56 @@ -85,14 +85,14 @@
   37.57    by (Simp_tac 1);
   37.58   by (etac rev_mp 1);
   37.59   by (dB.induct_tac "dB1" 1);
   37.60 - by (ALLGOALS(fast_tac (!claset addSIs [par_beta_subst] 
   37.61 -                                addss (!simpset))));
   37.62 + by (ALLGOALS(fast_tac (claset() addSIs [par_beta_subst] 
   37.63 +                                addss (simpset()))));
   37.64  qed_spec_mp "par_beta_cd";
   37.65  
   37.66  (*** Confluence (via cd) ***)
   37.67  
   37.68  goalw ParRed.thy [diamond_def,commute_def,square_def] "diamond(par_beta)";
   37.69 -by (blast_tac (!claset addIs [par_beta_cd]) 1);
   37.70 +by (blast_tac (claset() addIs [par_beta_cd]) 1);
   37.71  qed "diamond_par_beta2";
   37.72  
   37.73  goal ParRed.thy "confluent(beta)";
    38.1 --- a/src/HOL/Lex/Auto.ML	Mon Nov 03 12:12:10 1997 +0100
    38.2 +++ b/src/HOL/Lex/Auto.ML	Mon Nov 03 12:13:18 1997 +0100
    38.3 @@ -23,15 +23,15 @@
    38.4  
    38.5  goalw Auto.thy [acc_prefix_def]
    38.6   "acc_prefix A s (x#xs) = (fin A (next A s x) | acc_prefix A (next A s x) xs)";
    38.7 -by(simp_tac (!simpset addsimps [prefix_Cons]) 1);
    38.8 -by(safe_tac (!claset));
    38.9 +by(simp_tac (simpset() addsimps [prefix_Cons]) 1);
   38.10 +by(safe_tac (claset()));
   38.11    by(Asm_full_simp_tac 1);
   38.12    by (case_tac "zs=[]" 1);
   38.13     by(hyp_subst_tac 1);
   38.14     by(Asm_full_simp_tac 1);
   38.15    by(Fast_tac 1);
   38.16   by(res_inst_tac [("x","[x]")] exI 1);
   38.17 - by(asm_simp_tac (!simpset addsimps [eq_sym_conv]) 1);
   38.18 + by(asm_simp_tac (simpset() addsimps [eq_sym_conv]) 1);
   38.19  by(res_inst_tac [("x","x#us")] exI 1);
   38.20  by(Asm_simp_tac 1);
   38.21  qed"acc_prefix_Cons";
    39.1 --- a/src/HOL/Lex/AutoChopper.ML	Mon Nov 03 12:12:10 1997 +0100
    39.2 +++ b/src/HOL/Lex/AutoChopper.ML	Mon Nov 03 12:13:18 1997 +0100
    39.3 @@ -18,7 +18,7 @@
    39.4  goal AutoChopper.thy "!st us p y ys. acc xs st (ys@[y]) us p A ~= ([],zs)";
    39.5  by (list.induct_tac "xs" 1);
    39.6  by (Simp_tac 1);
    39.7 -by (asm_simp_tac (!simpset addsplits [expand_if]) 1);
    39.8 +by (asm_simp_tac (simpset() addsplits [expand_if]) 1);
    39.9  val accept_not_Nil = result() repeat_RS spec;
   39.10  Addsimps [accept_not_Nil];
   39.11  
   39.12 @@ -26,12 +26,12 @@
   39.13  "!st us. acc xs st [] us ([],ys) A = ([], zs) --> \
   39.14  \        zs = ys & (!ys. ys ~= [] & ys<=xs --> ~fin A (nexts A st ys))";
   39.15  by (list.induct_tac "xs" 1);
   39.16 -by (simp_tac (!simpset addcongs [conj_cong]) 1);
   39.17 -by (simp_tac (!simpset addsplits [expand_if]) 1);
   39.18 +by (simp_tac (simpset() addcongs [conj_cong]) 1);
   39.19 +by (simp_tac (simpset() addsplits [expand_if]) 1);
   39.20  by (strip_tac 1);
   39.21  by (rtac conjI 1);
   39.22  by (Fast_tac 1);
   39.23 -by (simp_tac (!simpset addsimps [prefix_Cons] addcongs [conj_cong]) 1);
   39.24 +by (simp_tac (simpset() addsimps [prefix_Cons] addcongs [conj_cong]) 1);
   39.25  by (strip_tac 1);
   39.26  by (REPEAT(eresolve_tac [conjE,exE] 1));
   39.27  by (hyp_subst_tac 1);
   39.28 @@ -53,17 +53,17 @@
   39.29  \    acc xs st erk r (l,rst) A = (ys#yss, zs) --> \
   39.30  \    ys@concat(yss)@zs = (if acc_prefix A st xs then r@xs else erk@concat(l)@rst)";
   39.31  by (list.induct_tac "xs" 1);
   39.32 - by (simp_tac (!simpset addcongs [conj_cong] addsplits [expand_if]) 1);
   39.33 -by (asm_simp_tac (!simpset addsplits [expand_if]) 1);
   39.34 + by (simp_tac (simpset() addcongs [conj_cong] addsplits [expand_if]) 1);
   39.35 +by (asm_simp_tac (simpset() addsplits [expand_if]) 1);
   39.36  by (res_inst_tac [("p","acc list (start A) [] [] ([],list) A")] PairE 1);
   39.37  by (rename_tac "vss lrst" 1);  
   39.38 -by (asm_simp_tac (!simpset addsplits [expand_if]) 1);
   39.39 +by (asm_simp_tac (simpset() addsplits [expand_if]) 1);
   39.40  by (res_inst_tac[("xs","vss")] list_eq_cases 1);
   39.41   by (hyp_subst_tac 1);
   39.42   by (Simp_tac 1);
   39.43 - by (fast_tac (!claset addSDs [no_acc]) 1);
   39.44 + by (fast_tac (claset() addSDs [no_acc]) 1);
   39.45  by (hyp_subst_tac 1);
   39.46 -by (asm_simp_tac (!simpset addsplits [expand_if]) 1);
   39.47 +by (asm_simp_tac (simpset() addsplits [expand_if]) 1);
   39.48  val step2_a = (result() repeat_RS spec) RS mp;
   39.49  
   39.50  
   39.51 @@ -73,11 +73,11 @@
   39.52  \     (if acc_prefix A st xs \
   39.53  \      then ys ~= [] \
   39.54  \      else ys ~= [] | (erk=[] & (l,rest) = (ys#yss,zs)))";
   39.55 -by (simp_tac (!simpset addsplits [expand_if]) 1);
   39.56 +by (simp_tac (simpset() addsplits [expand_if]) 1);
   39.57  by (list.induct_tac "xs" 1);
   39.58 - by (simp_tac (!simpset addcongs [conj_cong] addsplits [expand_if]) 1);
   39.59 + by (simp_tac (simpset() addcongs [conj_cong] addsplits [expand_if]) 1);
   39.60   by (Fast_tac 1);
   39.61 -by (asm_simp_tac (!simpset addcongs [conj_cong] addsplits [expand_if]) 1);
   39.62 +by (asm_simp_tac (simpset() addcongs [conj_cong] addsplits [expand_if]) 1);
   39.63  by (res_inst_tac [("p","acc list (start A) [] [] ([],list) A")] PairE 1);
   39.64  by (rename_tac "vss lrst" 1);  
   39.65  by (Asm_simp_tac 1);
   39.66 @@ -96,11 +96,11 @@
   39.67  \     (if acc_prefix A st xs                   \
   39.68  \      then ? g. ys=r@g & fin A (nexts A st g)  \
   39.69  \      else (erk~=[] & erk=ys) | (erk=[] & (l,rest) = (ys#yss,zs)))";
   39.70 -by (simp_tac (!simpset addsplits [expand_if]) 1);
   39.71 +by (simp_tac (simpset() addsplits [expand_if]) 1);
   39.72  by (list.induct_tac "xs" 1);
   39.73 - by (simp_tac (!simpset addcongs [conj_cong] addsplits [expand_if]) 1);
   39.74 + by (simp_tac (simpset() addcongs [conj_cong] addsplits [expand_if]) 1);
   39.75   by (Fast_tac 1);
   39.76 -by (asm_simp_tac (!simpset addcongs [conj_cong] addsplits [expand_if]) 1);
   39.77 +by (asm_simp_tac (simpset() addcongs [conj_cong] addsplits [expand_if]) 1);
   39.78  by (strip_tac 1);
   39.79  by (rtac conjI 1);
   39.80   by (res_inst_tac [("p","acc list (start A) [] [] ([],list) A")] PairE 1);
   39.81 @@ -135,11 +135,11 @@
   39.82  \     (if acc_prefix A st xs       \
   39.83  \      then acc(concat(yss)@zs)(start A) [] [] ([],concat(yss)@zs) A = (yss,zs) \
   39.84  \      else (erk~=[] & (l,rest)=(yss,zs)) | (erk=[] & (l, rest)=(ys#yss,zs)))";
   39.85 -by (simp_tac (!simpset addsplits [expand_if]) 1);
   39.86 +by (simp_tac (simpset() addsplits [expand_if]) 1);
   39.87  by (list.induct_tac "xs" 1);
   39.88 - by (simp_tac (!simpset addcongs [conj_cong] addsplits [expand_if]) 1);
   39.89 + by (simp_tac (simpset() addcongs [conj_cong] addsplits [expand_if]) 1);
   39.90   by (Fast_tac 1);
   39.91 -by (asm_simp_tac (!simpset addcongs [conj_cong] addsplits [expand_if]) 1);
   39.92 +by (asm_simp_tac (simpset() addcongs [conj_cong] addsplits [expand_if]) 1);
   39.93  by (res_inst_tac [("p","acc list (start A) [] [] ([],list) A")] PairE 1);
   39.94  by (rename_tac "vss lrst" 1);  
   39.95  by (Asm_simp_tac 1);
   39.96 @@ -157,14 +157,14 @@
   39.97  by (case_tac "yss = []" 1);
   39.98   by (Asm_simp_tac 1);
   39.99   by (hyp_subst_tac 1);
  39.100 - by (fast_tac (!claset addSDs [no_acc]) 1);
  39.101 + by (fast_tac (claset() addSDs [no_acc]) 1);
  39.102  by (etac ((neq_Nil_conv RS iffD1) RS exE) 1);
  39.103  by (etac exE 1);
  39.104  by (hyp_subst_tac 1);
  39.105  by (Simp_tac 1);
  39.106  by (rtac trans 1);
  39.107   by (etac step2_a 1);
  39.108 -by (simp_tac (!simpset addsplits [expand_if]) 1);
  39.109 +by (simp_tac (simpset() addsplits [expand_if]) 1);
  39.110  val step2_d = (result() repeat_RS spec) RS mp;
  39.111  
  39.112  Delsimps [split_paired_All];
  39.113 @@ -174,11 +174,11 @@
  39.114  \  (if acc_prefix A st xs  \
  39.115  \   then ? g. ys=r@g & (!as. as<=xs & g<=as & g~=as --> ~fin A (nexts A st as))\
  39.116  \   else (erk~=[] & ys=erk) | (erk=[] & (ys#yss,zs)=p))";
  39.117 -by (simp_tac (!simpset addsplits [expand_if]) 1);
  39.118 +by (simp_tac (simpset() addsplits [expand_if]) 1);
  39.119  by (list.induct_tac "xs" 1);
  39.120 - by (simp_tac (!simpset addcongs [conj_cong] addsplits [expand_if]) 1);
  39.121 + by (simp_tac (simpset() addcongs [conj_cong] addsplits [expand_if]) 1);
  39.122   by (Fast_tac 1);
  39.123 -by (asm_simp_tac (!simpset addcongs [conj_cong] addsplits [expand_if]) 1);
  39.124 +by (asm_simp_tac (simpset() addcongs [conj_cong] addsplits [expand_if]) 1);
  39.125  by (strip_tac 1);
  39.126  by (case_tac "acc_prefix A (next A st a) list" 1);
  39.127   by (rtac conjI 1);
  39.128 @@ -192,7 +192,7 @@
  39.129    by (Asm_simp_tac 1);
  39.130    by (rtac list_cases 1);
  39.131     by (Simp_tac 1);
  39.132 -  by (asm_simp_tac (!simpset addcongs[conj_cong]) 1);
  39.133 +  by (asm_simp_tac (simpset() addcongs[conj_cong]) 1);
  39.134   by (strip_tac 1);
  39.135   by (res_inst_tac [("f","%k. a#k")] ex_special 1);
  39.136   by (res_inst_tac [("t","%k. ys=r@a#k"),("s","%k. ys=(r@[a])@k")] subst 1);
  39.137 @@ -203,7 +203,7 @@
  39.138   by (Asm_simp_tac 1);
  39.139   by (rtac list_cases 1);
  39.140    by (Simp_tac 1);
  39.141 - by (asm_simp_tac (!simpset addcongs[conj_cong]) 1);
  39.142 + by (asm_simp_tac (simpset() addcongs[conj_cong]) 1);
  39.143  by (Asm_simp_tac 1);
  39.144  by (strip_tac 1);
  39.145  by (res_inst_tac [("x","[a]")] exI 1);
  39.146 @@ -213,7 +213,7 @@
  39.147   by (Simp_tac 1);
  39.148  by (rtac list_cases 1);
  39.149   by (Simp_tac 1);
  39.150 -by (asm_full_simp_tac (!simpset addsimps [acc_prefix_def] addcongs[conj_cong]) 1);
  39.151 +by (asm_full_simp_tac (simpset() addsimps [acc_prefix_def] addcongs[conj_cong]) 1);
  39.152  by (etac thin_rl 1); (* speed up *)
  39.153  by (Fast_tac 1);
  39.154  val step2_e = (result() repeat_RS spec) RS mp;
  39.155 @@ -225,18 +225,18 @@
  39.156  by (REPEAT(ares_tac [no_acc,allI,impI,conjI] 1));
  39.157   by (rtac mp 1);
  39.158    by (etac step2_b 2);
  39.159 - by (simp_tac (!simpset addsplits [expand_if]) 1);
  39.160 + by (simp_tac (simpset() addsplits [expand_if]) 1);
  39.161  by (rtac conjI 1);
  39.162   by (rtac mp 1);
  39.163    by (etac step2_c 2);
  39.164 - by (simp_tac (!simpset addsplits [expand_if]) 1);
  39.165 + by (simp_tac (simpset() addsplits [expand_if]) 1);
  39.166  by (rtac conjI 1);
  39.167 - by (asm_simp_tac (!simpset addsimps [step2_a] addsplits [expand_if]) 1);
  39.168 + by (asm_simp_tac (simpset() addsimps [step2_a] addsplits [expand_if]) 1);
  39.169  by (rtac conjI 1);
  39.170   by (rtac mp 1);
  39.171    by (etac step2_d 2);
  39.172 - by (simp_tac (!simpset addsplits [expand_if]) 1);
  39.173 + by (simp_tac (simpset() addsplits [expand_if]) 1);
  39.174  by (rtac mp 1);
  39.175   by (etac step2_e 2);
  39.176 - by (simp_tac (!simpset addsplits [expand_if]) 1);
  39.177 + by (simp_tac (simpset() addsplits [expand_if]) 1);
  39.178  qed"auto_chopper_is_auto_chopper";
    40.1 --- a/src/HOL/Lex/Prefix.ML	Mon Nov 03 12:12:10 1997 +0100
    40.2 +++ b/src/HOL/Lex/Prefix.ML	Mon Nov 03 12:13:18 1997 +0100
    40.3 @@ -14,7 +14,7 @@
    40.4  val list_cases = result();
    40.5  
    40.6  goalw Prefix.thy [prefix_def] "[] <= xs";
    40.7 -by (simp_tac (!simpset addsimps [eq_sym_conv]) 1);
    40.8 +by (simp_tac (simpset() addsimps [eq_sym_conv]) 1);
    40.9  qed "Nil_prefix";
   40.10  Addsimps[Nil_prefix];
   40.11  
    41.1 --- a/src/HOL/List.ML	Mon Nov 03 12:12:10 1997 +0100
    41.2 +++ b/src/HOL/List.ML	Mon Nov 03 12:13:18 1997 +0100
    41.3 @@ -40,8 +40,8 @@
    41.4  
    41.5  goal thy "lists (A Int B) = lists A Int lists B";
    41.6  br (mono_Int RS equalityI) 1;
    41.7 -by (simp_tac (!simpset addsimps [mono_def, lists_mono]) 1);
    41.8 -by (blast_tac (!claset addSIs [lists_IntI]) 1);
    41.9 +by (simp_tac (simpset() addsimps [mono_def, lists_mono]) 1);
   41.10 +by (blast_tac (claset() addSIs [lists_IntI]) 1);
   41.11  qed "lists_Int_eq";
   41.12  Addsimps [lists_Int_eq];
   41.13  
   41.14 @@ -155,11 +155,11 @@
   41.15   by(rtac allI 1);
   41.16   by(exhaust_tac "ys" 1);
   41.17    by(Asm_simp_tac 1);
   41.18 - by(fast_tac (!claset addIs [less_add_Suc2] addss !simpset
   41.19 + by(fast_tac (claset() addIs [less_add_Suc2] addss simpset()
   41.20                        addEs [less_not_refl2 RSN (2,rev_notE)]) 1);
   41.21  by(rtac allI 1);
   41.22  by(exhaust_tac "ys" 1);
   41.23 - by(fast_tac (!claset addIs [less_add_Suc2] addss !simpset
   41.24 + by(fast_tac (claset() addIs [less_add_Suc2] addss simpset()
   41.25                        addEs [(less_not_refl2 RS not_sym) RSN (2,rev_notE)]) 1);
   41.26  by(Asm_simp_tac 1);
   41.27  qed_spec_mp "append_eq_append_conv";
   41.28 @@ -194,17 +194,17 @@
   41.29  qed "hd_append";
   41.30  
   41.31  goal thy "!!xs. xs ~= [] ==> hd(xs @ ys) = hd xs";
   41.32 -by (asm_simp_tac (!simpset addsimps [hd_append]
   41.33 +by (asm_simp_tac (simpset() addsimps [hd_append]
   41.34                             addsplits [split_list_case]) 1);
   41.35  qed "hd_append2";
   41.36  Addsimps [hd_append2];
   41.37  
   41.38  goal thy "tl(xs@ys) = (case xs of [] => tl(ys) | z#zs => zs@ys)";
   41.39 -by (simp_tac (!simpset addsplits [split_list_case]) 1);
   41.40 +by (simp_tac (simpset() addsplits [split_list_case]) 1);
   41.41  qed "tl_append";
   41.42  
   41.43  goal thy "!!xs. xs ~= [] ==> tl(xs @ ys) = (tl xs) @ ys";
   41.44 -by (asm_simp_tac (!simpset addsimps [tl_append]
   41.45 +by (asm_simp_tac (simpset() addsimps [tl_append]
   41.46                             addsplits [split_list_case]) 1);
   41.47  qed "tl_append2";
   41.48  Addsimps [tl_append2];
   41.49 @@ -301,13 +301,13 @@
   41.50  
   41.51  goal thy "x mem (xs@ys) = (x mem xs | x mem ys)";
   41.52  by (induct_tac "xs" 1);
   41.53 -by (ALLGOALS (asm_simp_tac (!simpset addsplits [expand_if])));
   41.54 +by (ALLGOALS (asm_simp_tac (simpset() addsplits [expand_if])));
   41.55  qed "mem_append";
   41.56  Addsimps[mem_append];
   41.57  
   41.58  goal thy "x mem [x:xs. P(x)] = (x mem xs & P(x))";
   41.59  by (induct_tac "xs" 1);
   41.60 -by (ALLGOALS (asm_simp_tac (!simpset addsplits [expand_if])));
   41.61 +by (ALLGOALS (asm_simp_tac (simpset() addsplits [expand_if])));
   41.62  qed "mem_filter";
   41.63  Addsimps[mem_filter];
   41.64  
   41.65 @@ -323,7 +323,7 @@
   41.66  
   41.67  goal thy "(x mem xs) = (x: set xs)";
   41.68  by (induct_tac "xs" 1);
   41.69 -by (ALLGOALS (asm_simp_tac (!simpset addsplits [expand_if])));
   41.70 +by (ALLGOALS (asm_simp_tac (simpset() addsplits [expand_if])));
   41.71  by (Blast_tac 1);
   41.72  qed "set_mem_eq";
   41.73  
   41.74 @@ -369,7 +369,7 @@
   41.75  
   41.76  goal thy "list_all P xs = (!x. x mem xs --> P(x))";
   41.77  by (induct_tac "xs" 1);
   41.78 -by (ALLGOALS (asm_simp_tac (!simpset addsplits [expand_if])));
   41.79 +by (ALLGOALS (asm_simp_tac (simpset() addsplits [expand_if])));
   41.80  by (Blast_tac 1);
   41.81  qed "list_all_mem_conv";
   41.82  
   41.83 @@ -380,13 +380,13 @@
   41.84  
   41.85  goal thy "filter P (xs@ys) = filter P xs @ filter P ys";
   41.86  by (induct_tac "xs" 1);
   41.87 - by (ALLGOALS (asm_simp_tac (!simpset addsplits [expand_if])));
   41.88 + by (ALLGOALS (asm_simp_tac (simpset() addsplits [expand_if])));
   41.89  qed "filter_append";
   41.90  Addsimps [filter_append];
   41.91  
   41.92  goal thy "size (filter P xs) <= size xs";
   41.93  by (induct_tac "xs" 1);
   41.94 - by (ALLGOALS (asm_simp_tac (!simpset addsplits [expand_if])));
   41.95 + by (ALLGOALS (asm_simp_tac (simpset() addsplits [expand_if])));
   41.96  qed "filter_size";
   41.97  
   41.98  
   41.99 @@ -481,7 +481,7 @@
  41.100  (* case 0 *)
  41.101  by (Asm_full_simp_tac 1);
  41.102  (* case Suc x *)
  41.103 -by (asm_full_simp_tac (!simpset addsplits [expand_if]) 1);
  41.104 +by (asm_full_simp_tac (simpset() addsplits [expand_if]) 1);
  41.105  qed_spec_mp "nth_mem";
  41.106  Addsimps [nth_mem];
  41.107  
  41.108 @@ -489,35 +489,35 @@
  41.109  
  41.110  goal thy "last(xs@[x]) = x";
  41.111  by(induct_tac "xs" 1);
  41.112 -by(ALLGOALS (asm_simp_tac (!simpset addsplits [expand_if])));
  41.113 +by(ALLGOALS (asm_simp_tac (simpset() addsplits [expand_if])));
  41.114  qed "last_snoc";
  41.115  Addsimps [last_snoc];
  41.116  
  41.117  goal thy "butlast(xs@[x]) = xs";
  41.118  by(induct_tac "xs" 1);
  41.119 -by(ALLGOALS (asm_simp_tac (!simpset addsplits [expand_if])));
  41.120 +by(ALLGOALS (asm_simp_tac (simpset() addsplits [expand_if])));
  41.121  qed "butlast_snoc";
  41.122  Addsimps [butlast_snoc];
  41.123  
  41.124  goal thy
  41.125    "!ys. butlast (xs@ys) = (if ys=[] then butlast xs else xs@butlast ys)";
  41.126  by(induct_tac "xs" 1);
  41.127 -by(ALLGOALS(asm_simp_tac (!simpset addsplits [expand_if])));
  41.128 +by(ALLGOALS(asm_simp_tac (simpset() addsplits [expand_if])));
  41.129  qed_spec_mp "butlast_append";
  41.130  
  41.131  goal thy "x:set(butlast xs) --> x:set xs";
  41.132  by(induct_tac "xs" 1);
  41.133 -by(ALLGOALS (asm_simp_tac (!simpset addsplits [expand_if])));
  41.134 +by(ALLGOALS (asm_simp_tac (simpset() addsplits [expand_if])));
  41.135  qed_spec_mp "in_set_butlastD";
  41.136  
  41.137  goal thy "!!xs. x:set(butlast xs) ==> x:set(butlast(xs@ys))";
  41.138 -by(asm_simp_tac (!simpset addsimps [butlast_append]
  41.139 +by(asm_simp_tac (simpset() addsimps [butlast_append]
  41.140                            addsplits [expand_if]) 1);
  41.141 -by(blast_tac (!claset addDs [in_set_butlastD]) 1);
  41.142 +by(blast_tac (claset() addDs [in_set_butlastD]) 1);
  41.143  qed "in_set_butlast_appendI1";
  41.144  
  41.145  goal thy "!!xs. x:set(butlast ys) ==> x:set(butlast(xs@ys))";
  41.146 -by(asm_simp_tac (!simpset addsimps [butlast_append]
  41.147 +by(asm_simp_tac (simpset() addsimps [butlast_append]
  41.148                            addsplits [expand_if]) 1);
  41.149  by(Clarify_tac 1);
  41.150  by(Full_simp_tac 1);
  41.151 @@ -670,14 +670,14 @@
  41.152  goal thy "takeWhile P xs @ dropWhile P xs = xs";
  41.153  by (induct_tac "xs" 1);
  41.154   by (Simp_tac 1);
  41.155 -by (asm_full_simp_tac (!simpset addsplits [expand_if]) 1);
  41.156 +by (asm_full_simp_tac (simpset() addsplits [expand_if]) 1);
  41.157  qed "takeWhile_dropWhile_id";
  41.158  Addsimps [takeWhile_dropWhile_id];
  41.159  
  41.160  goal thy  "x:set xs & ~P(x) --> takeWhile P (xs @ ys) = takeWhile P xs";
  41.161  by (induct_tac "xs" 1);
  41.162   by (Simp_tac 1);
  41.163 -by (asm_full_simp_tac (!simpset addsplits [expand_if]) 1);
  41.164 +by (asm_full_simp_tac (simpset() addsplits [expand_if]) 1);
  41.165  by (Blast_tac 1);
  41.166  bind_thm("takeWhile_append1", conjI RS (result() RS mp));
  41.167  Addsimps [takeWhile_append1];
  41.168 @@ -686,7 +686,7 @@
  41.169    "(!x:set xs. P(x)) --> takeWhile P (xs @ ys) = xs @ takeWhile P ys";
  41.170  by (induct_tac "xs" 1);
  41.171   by (Simp_tac 1);
  41.172 -by (asm_full_simp_tac (!simpset addsplits [expand_if]) 1);
  41.173 +by (asm_full_simp_tac (simpset() addsplits [expand_if]) 1);
  41.174  bind_thm("takeWhile_append2", ballI RS (result() RS mp));
  41.175  Addsimps [takeWhile_append2];
  41.176  
  41.177 @@ -694,7 +694,7 @@
  41.178    "x:set xs & ~P(x) --> dropWhile P (xs @ ys) = (dropWhile P xs)@ys";
  41.179  by (induct_tac "xs" 1);
  41.180   by (Simp_tac 1);
  41.181 -by (asm_full_simp_tac (!simpset addsplits [expand_if]) 1);
  41.182 +by (asm_full_simp_tac (simpset() addsplits [expand_if]) 1);
  41.183  by (Blast_tac 1);
  41.184  bind_thm("dropWhile_append1", conjI RS (result() RS mp));
  41.185  Addsimps [dropWhile_append1];
  41.186 @@ -703,14 +703,14 @@
  41.187    "(!x:set xs. P(x)) --> dropWhile P (xs @ ys) = dropWhile P ys";
  41.188  by (induct_tac "xs" 1);
  41.189   by (Simp_tac 1);
  41.190 -by (asm_full_simp_tac (!simpset addsplits [expand_if]) 1);
  41.191 +by (asm_full_simp_tac (simpset() addsplits [expand_if]) 1);
  41.192  bind_thm("dropWhile_append2", ballI RS (result() RS mp));
  41.193  Addsimps [dropWhile_append2];
  41.194  
  41.195  goal thy "x:set(takeWhile P xs) --> x:set xs & P x";
  41.196  by (induct_tac "xs" 1);
  41.197   by (Simp_tac 1);
  41.198 -by (asm_full_simp_tac (!simpset addsplits [expand_if]) 1);
  41.199 +by (asm_full_simp_tac (simpset() addsplits [expand_if]) 1);
  41.200  qed_spec_mp"set_take_whileD";
  41.201  
  41.202  (** replicate **)
  41.203 @@ -722,6 +722,6 @@
  41.204  val lemma = result();
  41.205  
  41.206  goal thy "!!n. n ~= 0 ==> set(replicate n x) = {x}";
  41.207 -by(fast_tac (!claset addSDs [not0_implies_Suc] addSIs [lemma]) 1);
  41.208 +by(fast_tac (claset() addSDs [not0_implies_Suc] addSIs [lemma]) 1);
  41.209  qed "set_replicate";
  41.210  Addsimps [set_replicate];
    42.1 --- a/src/HOL/Map.ML	Mon Nov 03 12:12:10 1997 +0100
    42.2 +++ b/src/HOL/Map.ML	Mon Nov 03 12:13:18 1997 +0100
    42.3 @@ -33,14 +33,14 @@
    42.4  
    42.5  goalw thy [override_def]
    42.6   "((m ++ n) k = Some x) = (n k = Some x | n k = None & m k = Some x)";
    42.7 -by(simp_tac (!simpset addsplits [split_option_case]) 1);
    42.8 +by(simp_tac (simpset() addsplits [split_option_case]) 1);
    42.9  qed_spec_mp "override_Some_iff";
   42.10  
   42.11  bind_thm("override_SomeD", standard(override_Some_iff RS iffD1));
   42.12  
   42.13  goalw thy [override_def]
   42.14   "((m ++ n) k = None) = (n k = None & m k = None)";
   42.15 -by(simp_tac (!simpset addsplits [split_option_case]) 1);
   42.16 +by(simp_tac (simpset() addsplits [split_option_case]) 1);
   42.17  qed "override_None";
   42.18  AddIffs [override_None];
   42.19  
   42.20 @@ -48,7 +48,7 @@
   42.21  by(induct_tac "xs" 1);
   42.22  by(Simp_tac 1);
   42.23  br ext 1;
   42.24 -by(asm_simp_tac (!simpset addsplits [expand_if,split_option_case]) 1);
   42.25 +by(asm_simp_tac (simpset() addsplits [expand_if,split_option_case]) 1);
   42.26  qed "map_of_append";
   42.27  Addsimps [map_of_append];
   42.28  
   42.29 @@ -60,7 +60,7 @@
   42.30  Addsimps [dom_empty];
   42.31  
   42.32  goalw thy [dom_def] "dom(m[a|->b]) = insert a (dom m)";
   42.33 -by(simp_tac (!simpset addsplits [expand_if]) 1);
   42.34 +by(simp_tac (simpset() addsplits [expand_if]) 1);
   42.35  by(Blast_tac 1);
   42.36  qed "dom_update";
   42.37  Addsimps [dom_update];
    43.1 --- a/src/HOL/MiniML/Generalize.ML	Mon Nov 03 12:12:10 1997 +0100
    43.2 +++ b/src/HOL/MiniML/Generalize.ML	Mon Nov 03 12:13:18 1997 +0100
    43.3 @@ -45,8 +45,8 @@
    43.4  by (typ.induct_tac "t1" 1);
    43.5  by (Simp_tac 1);
    43.6  by (case_tac "nat : free_tv A" 1);
    43.7 -by (asm_simp_tac (!simpset addsplits [expand_if]) 1);
    43.8 -by (asm_simp_tac (!simpset addsplits [expand_if]) 1);
    43.9 +by (asm_simp_tac (simpset() addsplits [expand_if]) 1);
   43.10 +by (asm_simp_tac (simpset() addsplits [expand_if]) 1);
   43.11  by (Fast_tac 1);
   43.12  by (Asm_simp_tac 1);
   43.13  by (Fast_tac 1);
   43.14 @@ -65,8 +65,8 @@
   43.15  
   43.16  goalw thy [gen_ML_def] "!!A. gen A t = gen_ML A t";
   43.17  by (typ.induct_tac "t" 1);
   43.18 -by (simp_tac (!simpset addsimps [free_tv_ML_scheme_list]) 1);
   43.19 -by (asm_simp_tac (!simpset addsimps [free_tv_ML_scheme_list]) 1);
   43.20 +by (simp_tac (simpset() addsimps [free_tv_ML_scheme_list]) 1);
   43.21 +by (asm_simp_tac (simpset() addsimps [free_tv_ML_scheme_list]) 1);
   43.22  qed "gen_eq_gen_ML";
   43.23  
   43.24  goal thy "!!S. (free_tv S) Int ((free_tv t) - (free_tv A)) = {} \
   43.25 @@ -78,7 +78,7 @@
   43.26  by (Asm_full_simp_tac 1);
   43.27  by (subgoal_tac "nat ~: free_tv S" 1);
   43.28  by (Fast_tac 2);
   43.29 -by (asm_full_simp_tac (!simpset addsimps [free_tv_subst,dom_def,de_Morgan_disj]) 1);
   43.30 +by (asm_full_simp_tac (simpset() addsimps [free_tv_subst,dom_def,de_Morgan_disj]) 1);
   43.31  by (split_tac [expand_if] 1);
   43.32  by (cut_facts_tac [free_tv_app_subst_scheme_list] 1);
   43.33  by (Fast_tac 1);
   43.34 @@ -95,21 +95,21 @@
   43.35  
   43.36  goalw Generalize.thy [le_type_scheme_def,is_bound_typ_instance]
   43.37    "gen ($ S A) ($ S t) <= $ S (gen A t)";
   43.38 -by (safe_tac (!claset));
   43.39 +by (safe_tac (claset()));
   43.40  by (rename_tac "R" 1);
   43.41  by (res_inst_tac [("x", "(%a. bound_typ_inst R (gen ($S A) (S a)))")] exI 1);
   43.42  by (typ.induct_tac "t" 1);
   43.43 - by (simp_tac (!simpset addsplits [expand_if]) 1);
   43.44 + by (simp_tac (simpset() addsplits [expand_if]) 1);
   43.45  by (Asm_simp_tac 1);
   43.46  qed "gen_bound_typ_instance";
   43.47  
   43.48  goalw Generalize.thy [le_type_scheme_def,is_bound_typ_instance]
   43.49    "!!A B. free_tv B <= free_tv A ==> gen A t <= gen B t";
   43.50 -by (safe_tac (!claset));
   43.51 +by (safe_tac (claset()));
   43.52  by (rename_tac "S" 1);
   43.53  by (res_inst_tac [("x","%b. if b:free_tv A then TVar b else S b")] exI 1);
   43.54  by (typ.induct_tac "t" 1);
   43.55 - by (asm_simp_tac (!simpset addsplits [expand_if]) 1);
   43.56 + by (asm_simp_tac (simpset() addsplits [expand_if]) 1);
   43.57   by (Fast_tac 1);
   43.58  by (Asm_simp_tac 1);
   43.59  qed "free_tv_subset_gen_le";
   43.60 @@ -123,15 +123,15 @@
   43.61  by (typ.induct_tac "t" 1);
   43.62  by (Simp_tac 1);
   43.63  by (case_tac "nat : free_tv A" 1);
   43.64 -by (asm_simp_tac (!simpset addsplits [expand_if]) 1);
   43.65 -by (asm_simp_tac (!simpset addsplits [expand_if]) 1);
   43.66 +by (asm_simp_tac (simpset() addsplits [expand_if]) 1);
   43.67 +by (asm_simp_tac (simpset() addsplits [expand_if]) 1);
   43.68  by (subgoal_tac "n <= n + nat" 1);
   43.69  by (forw_inst_tac [("t","A")] new_tv_le 1);
   43.70  by (assume_tac 1);
   43.71  by (dtac new_tv_not_free_tv 1);
   43.72  by (dtac new_tv_not_free_tv 1);
   43.73 -by (asm_simp_tac (!simpset addsimps [diff_add_inverse]) 1);
   43.74 -by (simp_tac (!simpset addsimps [le_add1]) 1);
   43.75 +by (asm_simp_tac (simpset() addsimps [diff_add_inverse]) 1);
   43.76 +by (simp_tac (simpset() addsimps [le_add1]) 1);
   43.77  by (Asm_simp_tac 1);
   43.78  qed_spec_mp "gen_t_le_gen_alpha_t";
   43.79  
    44.1 --- a/src/HOL/MiniML/Instance.ML	Mon Nov 03 12:12:10 1997 +0100
    44.2 +++ b/src/HOL/MiniML/Instance.ML	Mon Nov 03 12:13:18 1997 +0100
    44.3 @@ -50,7 +50,7 @@
    44.4  \         (? S. !x:bound_tv sch. B x = mk_scheme (S x))";
    44.5  by (type_scheme.induct_tac "sch" 1);
    44.6  by (Simp_tac 1);
    44.7 -by (safe_tac (!claset));
    44.8 +by (safe_tac (claset()));
    44.9  by (rtac exI 1);
   44.10  by (rtac ballI 1);
   44.11  by (rtac sym 1);
   44.12 @@ -62,12 +62,12 @@
   44.13  by (dtac sym 1);
   44.14  by (dtac sym 1);
   44.15  by (REPEAT ((dtac mp 1) THEN (Fast_tac 1)));
   44.16 -by (safe_tac (!claset));
   44.17 +by (safe_tac (claset()));
   44.18  by (rename_tac "S1 S2" 1);
   44.19  by (res_inst_tac [("x","%x. if x:bound_tv type_scheme1 then (S1 x) else (S2 x)")] exI 1);
   44.20 -by (safe_tac (!claset));
   44.21 -by (asm_simp_tac (!simpset addsplits [expand_if]) 1);
   44.22 -by (asm_simp_tac (!simpset addsplits [expand_if]) 1);
   44.23 +by (safe_tac (claset()));
   44.24 +by (asm_simp_tac (simpset() addsplits [expand_if]) 1);
   44.25 +by (asm_simp_tac (simpset() addsplits [expand_if]) 1);
   44.26  by (strip_tac 1);
   44.27  by (dres_inst_tac [("x","x")] bspec 1);
   44.28  by (assume_tac 1);
   44.29 @@ -82,8 +82,8 @@
   44.30  goal thy "!!sch. new_tv n sch --> subst_to_scheme (%k. if n <= k then BVar (k - n) else FVar k) \
   44.31  \                                                 (bound_typ_inst (%k. TVar (k + n)) sch) = sch";
   44.32  by (type_scheme.induct_tac "sch" 1);
   44.33 -by (simp_tac (!simpset addsimps [leD] addsplits [expand_if]) 1);
   44.34 -by (simp_tac (!simpset addsimps [le_add2,diff_add_inverse2] addsplits [expand_if]) 1);
   44.35 +by (simp_tac (simpset() addsimps [leD] addsplits [expand_if]) 1);
   44.36 +by (simp_tac (simpset() addsimps [le_add2,diff_add_inverse2] addsplits [expand_if]) 1);
   44.37  by (Asm_simp_tac 1);
   44.38  qed_spec_mp "subst_to_scheme_inverse";
   44.39  
   44.40 @@ -96,9 +96,9 @@
   44.41  \        (subst_to_scheme (%k. if n <= k then BVar (k - n) else FVar k) (bound_typ_inst S sch) = \
   44.42  \                         bound_scheme_inst ((subst_to_scheme (%k. if n <= k then BVar (k - n) else FVar k)) o S) sch)";
   44.43  by (type_scheme.induct_tac "sch" 1);
   44.44 -by (simp_tac (!simpset addsplits [expand_if] addsimps [leD]) 1);
   44.45 +by (simp_tac (simpset() addsplits [expand_if] addsimps [leD]) 1);
   44.46  by (Asm_simp_tac 1);
   44.47 -by (asm_full_simp_tac (!simpset addsplits [expand_if] addsimps [leD]) 1);
   44.48 +by (asm_full_simp_tac (simpset() addsplits [expand_if] addsimps [leD]) 1);
   44.49  val aux2 = result () RS mp;
   44.50  
   44.51  
   44.52 @@ -120,10 +120,10 @@
   44.53  by (etac exE 1);
   44.54  by (REPEAT (etac conjE 1));
   44.55  by (dres_inst_tac [("n","n")] aux 1);
   44.56 -by (asm_full_simp_tac (!simpset addsimps [subst_to_scheme_inverse]) 1);
   44.57 +by (asm_full_simp_tac (simpset() addsimps [subst_to_scheme_inverse]) 1);
   44.58  by (res_inst_tac [("x","(subst_to_scheme (%k. if n <= k then BVar (k - n) else FVar k)) o S")] exI 1);
   44.59 -by (asm_simp_tac (!simpset addsimps [aux2]) 1);
   44.60 -by (safe_tac (!claset));
   44.61 +by (asm_simp_tac (simpset() addsimps [aux2]) 1);
   44.62 +by (safe_tac (claset()));
   44.63  by (res_inst_tac [("x","%n. bound_typ_inst S (B n)")] exI 1);
   44.64  by (type_scheme.induct_tac "sch" 1);
   44.65  by (Simp_tac 1);
   44.66 @@ -132,7 +132,7 @@
   44.67  qed "le_type_scheme_def2";
   44.68  
   44.69  goalw thy [is_bound_typ_instance] "(mk_scheme t) <= sch = t <| sch";
   44.70 -by (simp_tac (!simpset addsimps [le_type_scheme_def2]) 1); 
   44.71 +by (simp_tac (simpset() addsimps [le_type_scheme_def2]) 1); 
   44.72  by (rtac iffI 1); 
   44.73  by (etac exE 1); 
   44.74  by (forward_tac [bound_scheme_inst_type] 1);
   44.75 @@ -162,7 +162,7 @@
   44.76    "(sch # A <= sch' # B) = (sch <= (sch'::type_scheme) & A <= B)";
   44.77  by (Simp_tac 1);
   44.78  by (rtac iffI 1);
   44.79 - by (SELECT_GOAL(safe_tac (!claset))1);
   44.80 + by (SELECT_GOAL(safe_tac (claset()))1);
   44.81    by (eres_inst_tac [("x","0")] allE 1);
   44.82    by (Asm_full_simp_tac 1);
   44.83   by (eres_inst_tac [("x","Suc i")] allE 1);
   44.84 @@ -184,15 +184,15 @@
   44.85  qed "is_bound_typ_instance_closed_subst";
   44.86  
   44.87  goal thy "!!(sch::type_scheme) sch'. sch' <= sch ==> $S sch' <= $ S sch";
   44.88 -by (asm_full_simp_tac (!simpset addsimps [le_type_scheme_def2]) 1);
   44.89 +by (asm_full_simp_tac (simpset() addsimps [le_type_scheme_def2]) 1);
   44.90  by (etac exE 1);
   44.91 -by (asm_full_simp_tac (!simpset addsimps [substitution_lemma]) 1);
   44.92 +by (asm_full_simp_tac (simpset() addsimps [substitution_lemma]) 1);
   44.93  by (Fast_tac 1);
   44.94  qed "S_compatible_le_scheme";
   44.95  
   44.96  goalw thy [le_env_def,app_subst_list] "!!(A::type_scheme list) A'. A' <= A ==> $S A' <= $ S A";
   44.97 -by (simp_tac (!simpset addcongs [conj_cong]) 1);
   44.98 -by (fast_tac (!claset addSIs [S_compatible_le_scheme]) 1);
   44.99 +by (simp_tac (simpset() addcongs [conj_cong]) 1);
  44.100 +by (fast_tac (claset() addSIs [S_compatible_le_scheme]) 1);
  44.101  qed "S_compatible_le_scheme_lists";
  44.102  
  44.103  goalw thy [le_type_scheme_def] "!!t.[| t <| sch; sch <= sch' |] ==> t <| sch'";
  44.104 @@ -220,7 +220,7 @@
  44.105  by (type_scheme.induct_tac "sch" 1);
  44.106    by (Simp_tac 1);
  44.107   by (Simp_tac 1);
  44.108 - by (SELECT_GOAL(safe_tac(!claset))1);
  44.109 + by (SELECT_GOAL(safe_tac(claset()))1);
  44.110   by (eres_inst_tac [("x","TVar n -> TVar n")] allE 1);
  44.111   by (Asm_full_simp_tac 1);
  44.112   by (Fast_tac 1);
  44.113 @@ -248,7 +248,7 @@
  44.114  
  44.115  goalw thy [le_type_scheme_def,is_bound_typ_instance]
  44.116    "!!sch1. (sch1 =-> sch2 <= sch1' =-> sch2') ==> sch1 <= sch1' & sch2 <= sch2'";
  44.117 -by (fast_tac (!claset addss !simpset) 1);
  44.118 +by (fast_tac (claset() addss simpset()) 1);
  44.119  qed "Fun_le_FunD";
  44.120  
  44.121  goal thy "(sch' <= sch1 =-> sch2) --> (? sch'1 sch'2. sch' = sch'1 =-> sch'2)";
  44.122 @@ -285,7 +285,7 @@
  44.123   by (Simp_tac 1);
  44.124  by (rtac allI 1);
  44.125  by (list.induct_tac "A" 1);
  44.126 - by (simp_tac (!simpset addsimps [le_env_def]) 1);
  44.127 + by (simp_tac (simpset() addsimps [le_env_def]) 1);
  44.128  by (Simp_tac 1);
  44.129 -by (fast_tac (!claset addDs [le_type_scheme_free_tv]) 1);
  44.130 +by (fast_tac (claset() addDs [le_type_scheme_free_tv]) 1);
  44.131  qed_spec_mp "le_env_free_tv";
    45.1 --- a/src/HOL/MiniML/Maybe.ML	Mon Nov 03 12:12:10 1997 +0100
    45.2 +++ b/src/HOL/MiniML/Maybe.ML	Mon Nov 03 12:13:18 1997 +0100
    45.3 @@ -23,12 +23,12 @@
    45.4  
    45.5  goal thy
    45.6    "((option_bind m f) = None) = ((m=None) | (? p. m = Some p & f p = None))";
    45.7 -by(simp_tac (!simpset addsplits [split_option_bind]) 1);
    45.8 +by(simp_tac (simpset() addsplits [split_option_bind]) 1);
    45.9  qed "option_bind_eq_None";
   45.10  
   45.11  Addsimps [option_bind_eq_None];
   45.12  
   45.13  (* auxiliary lemma *)
   45.14  goal Maybe.thy "(y = Some x) = (Some x = y)";
   45.15 -by( simp_tac (!simpset addsimps [eq_sym_conv]) 1);
   45.16 +by( simp_tac (simpset() addsimps [eq_sym_conv]) 1);
   45.17  qed "rotate_Some";
    46.1 --- a/src/HOL/MiniML/MiniML.ML	Mon Nov 03 12:12:10 1997 +0100
    46.2 +++ b/src/HOL/MiniML/MiniML.ML	Mon Nov 03 12:13:18 1997 +0100
    46.3 @@ -12,14 +12,14 @@
    46.4  
    46.5  goal thy "!!t::typ. $(%n. if n : (free_tv A) Un (free_tv t) then (S n) else (TVar n)) t = $S t";
    46.6  by (rtac typ_substitutions_only_on_free_variables 1);
    46.7 -by (asm_full_simp_tac (!simpset addsimps [Ball_def]) 1);
    46.8 +by (asm_full_simp_tac (simpset() addsimps [Ball_def]) 1);
    46.9  qed "s'_t_equals_s_t";
   46.10  
   46.11  Addsimps [s'_t_equals_s_t];
   46.12  
   46.13  goal thy "!!A::type_scheme list. $(%n. if n : (free_tv A) Un (free_tv t) then (S n) else (TVar n)) A = $S A";
   46.14  by (rtac scheme_list_substitutions_only_on_free_variables 1);
   46.15 -by (asm_full_simp_tac (!simpset addsimps [Ball_def]) 1);
   46.16 +by (asm_full_simp_tac (simpset() addsimps [Ball_def]) 1);
   46.17  qed "s'_a_equals_s_a";
   46.18  
   46.19  Addsimps [s'_a_equals_s_a];
   46.20 @@ -37,7 +37,7 @@
   46.21  
   46.22  goal thy "!!A::type_scheme list. $ (%x. TVar (if x : free_tv A then x else n + x)) A = $ id_subst A";
   46.23  by (rtac scheme_list_substitutions_only_on_free_variables 1);
   46.24 -by (asm_full_simp_tac (!simpset addsimps [id_subst_def]) 1);
   46.25 +by (asm_full_simp_tac (simpset() addsimps [id_subst_def]) 1);
   46.26  qed "alpha_A'";
   46.27  
   46.28  goal thy "!!A::type_scheme list. $ (%x. TVar (if x : free_tv A then x else n + x)) A = A";
   46.29 @@ -82,7 +82,7 @@
   46.30  goalw thy [free_tv_subst,dom_def]
   46.31            "!!A. dom (%n. if n : free_tv A Un free_tv t then S n else TVar n) <= \
   46.32  \               free_tv A Un free_tv t";
   46.33 -by (simp_tac (!simpset addsplits [expand_if]) 1);
   46.34 +by (simp_tac (simpset() addsplits [expand_if]) 1);
   46.35  by (Fast_tac 1);
   46.36  qed "dom_S'";
   46.37  
   46.38 @@ -95,7 +95,7 @@
   46.39  by (dtac (dom_S' RS subsetD) 1);
   46.40  by (rotate_tac 1 1);
   46.41  by (Asm_full_simp_tac 1);
   46.42 -by (fast_tac (!claset addDs [free_tv_of_substitutions_extend_to_scheme_lists] 
   46.43 +by (fast_tac (claset() addDs [free_tv_of_substitutions_extend_to_scheme_lists] 
   46.44                        addIs [free_tv_of_substitutions_extend_to_types RS subsetD]) 1);
   46.45  qed "cod_S'";
   46.46  
   46.47 @@ -103,14 +103,14 @@
   46.48            "!!(A::type_scheme list) (t::typ). \
   46.49  \               free_tv (%n. if n : free_tv A Un free_tv t then S n else TVar n) <= \
   46.50  \               free_tv A Un free_tv ($ S A) Un free_tv t Un free_tv ($ S t)";
   46.51 -by (fast_tac (!claset addDs [dom_S' RS subsetD,cod_S' RS subsetD]) 1);
   46.52 +by (fast_tac (claset() addDs [dom_S' RS subsetD,cod_S' RS subsetD]) 1);
   46.53  qed "free_tv_S'";
   46.54  
   46.55  goal thy "!!t1::typ. \
   46.56  \         (free_tv ($ (%x. TVar (if x : free_tv A then x else n + x)) t1) - free_tv A) <= \
   46.57  \         {x. ? y. x = n + y}";
   46.58  by (typ.induct_tac "t1" 1);
   46.59 -by (simp_tac (!simpset addsplits [expand_if]) 1);
   46.60 +by (simp_tac (simpset() addsplits [expand_if]) 1);
   46.61  by (Fast_tac 1);
   46.62  by (Simp_tac 1);
   46.63  by (Fast_tac 1);
   46.64 @@ -149,7 +149,7 @@
   46.65  by (list.induct_tac "A" 1);
   46.66  by (Simp_tac 1);
   46.67  by (Simp_tac 1);
   46.68 -by (fast_tac (!claset addDs [new_tv_Int_free_tv_empty_scheme ]) 1);
   46.69 +by (fast_tac (claset() addDs [new_tv_Int_free_tv_empty_scheme ]) 1);
   46.70  val new_tv_Int_free_tv_empty_scheme_list = result ();
   46.71  
   46.72  goalw thy [le_type_scheme_def,is_bound_typ_instance] 
   46.73 @@ -167,7 +167,7 @@
   46.74  by (assume_tac 1);
   46.75  by (dtac new_tv_not_free_tv 1);
   46.76  by (dtac new_tv_not_free_tv 1);
   46.77 -by (asm_simp_tac (!simpset addsimps [diff_add_inverse ]) 1);
   46.78 +by (asm_simp_tac (simpset() addsimps [diff_add_inverse ]) 1);
   46.79  by (Simp_tac 1);
   46.80  by (Asm_simp_tac 1);
   46.81  qed_spec_mp "gen_t_le_gen_alpha_t";
   46.82 @@ -176,11 +176,11 @@
   46.83  
   46.84  goal thy "!!e. A |- e::t ==> !B. A <= B -->  B |- e::t";
   46.85  by (etac has_type.induct 1);
   46.86 -   by (simp_tac (!simpset addsimps [le_env_def]) 1);
   46.87 -   by (fast_tac (!claset addEs [bound_typ_instance_trans] addss !simpset) 1);
   46.88 +   by (simp_tac (simpset() addsimps [le_env_def]) 1);
   46.89 +   by (fast_tac (claset() addEs [bound_typ_instance_trans] addss simpset()) 1);
   46.90    by (Asm_full_simp_tac 1);
   46.91   by (Fast_tac 1);
   46.92 -by (slow_tac (!claset addEs [le_env_free_tv RS free_tv_subset_gen_le]) 1);
   46.93 +by (slow_tac (claset() addEs [le_env_free_tv RS free_tv_subset_gen_le]) 1);
   46.94  qed_spec_mp "has_type_le_env";
   46.95  
   46.96  (* has_type is closed w.r.t. substitution *)
   46.97 @@ -189,8 +189,8 @@
   46.98  (* case VarI *)
   46.99     by (rtac allI 1);
  46.100     by (rtac has_type.VarI 1);
  46.101 -    by (asm_full_simp_tac (!simpset addsimps [app_subst_list]) 1);
  46.102 -   by (asm_simp_tac (!simpset addsimps [app_subst_list]) 1);
  46.103 +    by (asm_full_simp_tac (simpset() addsimps [app_subst_list]) 1);
  46.104 +   by (asm_simp_tac (simpset() addsimps [app_subst_list]) 1);
  46.105    (* case AbsI *)
  46.106    by (rtac allI 1);
  46.107    by (Simp_tac 1);  
    47.1 --- a/src/HOL/MiniML/Type.ML	Mon Nov 03 12:12:10 1997 +0100
    47.2 +++ b/src/HOL/MiniML/Type.ML	Mon Nov 03 12:13:18 1997 +0100
    47.3 @@ -62,12 +62,12 @@
    47.4  
    47.5  goalw thy [new_tv_def]
    47.6    "new_tv n (TVar m) = (m<n)";
    47.7 -by (fast_tac (HOL_cs addss !simpset) 1);
    47.8 +by (fast_tac (HOL_cs addss simpset()) 1);
    47.9  qed "new_tv_TVar";
   47.10  
   47.11  goalw thy [new_tv_def]
   47.12    "new_tv n (FVar m) = (m<n)";
   47.13 -by (fast_tac (HOL_cs addss !simpset) 1);
   47.14 +by (fast_tac (HOL_cs addss simpset()) 1);
   47.15  qed "new_tv_FVar";
   47.16  
   47.17  goalw thy [new_tv_def]
   47.18 @@ -77,12 +77,12 @@
   47.19  
   47.20  goalw thy [new_tv_def]
   47.21    "new_tv n (t1 -> t2) = (new_tv n t1 & new_tv n t2)";
   47.22 -by (fast_tac (HOL_cs addss !simpset) 1);
   47.23 +by (fast_tac (HOL_cs addss simpset()) 1);
   47.24  qed "new_tv_Fun";
   47.25  
   47.26  goalw thy [new_tv_def]
   47.27    "new_tv n (t1 =-> t2) = (new_tv n t1 & new_tv n t2)";
   47.28 -by (fast_tac (HOL_cs addss !simpset) 1);
   47.29 +by (fast_tac (HOL_cs addss simpset()) 1);
   47.30  qed "new_tv_Fun2";
   47.31  
   47.32  goalw thy [new_tv_def]
   47.33 @@ -92,12 +92,12 @@
   47.34  
   47.35  goalw thy [new_tv_def]
   47.36    "new_tv n (x#l) = (new_tv n x & new_tv n l)";
   47.37 -by (fast_tac (HOL_cs addss !simpset) 1);
   47.38 +by (fast_tac (HOL_cs addss simpset()) 1);
   47.39  qed "new_tv_Cons";
   47.40  
   47.41  goalw thy [new_tv_def] "!!n. new_tv n TVar";
   47.42  by (strip_tac 1);
   47.43 -by (asm_full_simp_tac (!simpset addsimps [free_tv_subst,dom_def,cod_def]) 1);
   47.44 +by (asm_full_simp_tac (simpset() addsimps [free_tv_subst,dom_def,cod_def]) 1);
   47.45  qed "new_tv_TVar_subst";
   47.46  
   47.47  Addsimps [new_tv_TVar,new_tv_FVar,new_tv_BVar,new_tv_Fun,new_tv_Fun2,new_tv_Nil,new_tv_Cons,new_tv_TVar_subst];
   47.48 @@ -181,7 +181,7 @@
   47.49  goal thy
   47.50    "!!t. (!n. n:(free_tv t) --> S1 n = S2 n) ==> $ S1 (t::typ) = $ S2 t";
   47.51  by (rtac typ_substitutions_only_on_free_variables 1);
   47.52 -by (simp_tac (!simpset addsimps [Ball_def]) 1);
   47.53 +by (simp_tac (simpset() addsimps [Ball_def]) 1);
   47.54  qed "eq_free_eq_subst_te";
   47.55  
   47.56  goal thy "!!S S'. (!x:free_tv sch. (S x) = (S' x)) --> $ S (sch::type_scheme) = $ S' sch";
   47.57 @@ -194,16 +194,16 @@
   47.58  goal thy
   47.59    "!!sch. (!n. n:(free_tv sch) --> S1 n = S2 n) ==> $ S1 (sch::type_scheme) = $ S2 sch";
   47.60  by (rtac scheme_substitutions_only_on_free_variables 1);
   47.61 -by (simp_tac (!simpset addsimps [Ball_def]) 1);
   47.62 +by (simp_tac (simpset() addsimps [Ball_def]) 1);
   47.63  qed "eq_free_eq_subst_type_scheme";
   47.64  
   47.65  goal thy
   47.66    "(!n. n:(free_tv A) --> S1 n = S2 n) --> $S1 (A::type_scheme list) = $S2 A";
   47.67  by (list.induct_tac "A" 1); 
   47.68  (* case [] *)
   47.69 -by (fast_tac (HOL_cs addss !simpset) 1);
   47.70 +by (fast_tac (HOL_cs addss simpset()) 1);
   47.71  (* case x#xl *)
   47.72 -by (fast_tac (HOL_cs addIs [eq_free_eq_subst_type_scheme] addss (!simpset)) 1);
   47.73 +by (fast_tac (HOL_cs addIs [eq_free_eq_subst_type_scheme] addss (simpset())) 1);
   47.74  qed_spec_mp "eq_free_eq_subst_scheme_list";
   47.75  
   47.76  goal thy "!!P Q. ((!x:A. (P x)) --> Q) ==> ((!x:A Un B. (P x)) --> Q)";
   47.77 @@ -223,9 +223,9 @@
   47.78    "$ S1 (t::typ) = $ S2 t --> n:(free_tv t) --> S1 n = S2 n";
   47.79  by (typ.induct_tac "t" 1);
   47.80  (* case TVar n *)
   47.81 -by (fast_tac (HOL_cs addss !simpset) 1);
   47.82 +by (fast_tac (HOL_cs addss simpset()) 1);
   47.83  (* case Fun t1 t2 *)
   47.84 -by (fast_tac (HOL_cs addss !simpset) 1);
   47.85 +by (fast_tac (HOL_cs addss simpset()) 1);
   47.86  qed_spec_mp "eq_subst_te_eq_free";
   47.87  
   47.88  goal thy
   47.89 @@ -245,9 +245,9 @@
   47.90    "$S1 (A::type_scheme list) = $S2 A --> n:(free_tv A) --> S1 n = S2 n";
   47.91  by (list.induct_tac "A" 1);
   47.92  (* case [] *)
   47.93 -by (fast_tac (HOL_cs addss !simpset) 1);
   47.94 +by (fast_tac (HOL_cs addss simpset()) 1);
   47.95  (* case x#xl *)
   47.96 -by (fast_tac (HOL_cs addIs [eq_subst_type_scheme_eq_free] addss (!simpset)) 1);
   47.97 +by (fast_tac (HOL_cs addIs [eq_subst_type_scheme_eq_free] addss (simpset())) 1);
   47.98  qed_spec_mp "eq_subst_scheme_list_eq_free";
   47.99  
  47.100  goalw thy [free_tv_subst] 
  47.101 @@ -278,28 +278,28 @@
  47.102  goal thy 
  47.103       "free_tv (S (v::nat)) <= insert v (cod S)";
  47.104  by (expand_case_tac "v:dom S" 1);
  47.105 -by (fast_tac (set_cs addss (!simpset addsimps [cod_def])) 1);
  47.106 -by (fast_tac (set_cs addss (!simpset addsimps [dom_def])) 1);
  47.107 +by (fast_tac (set_cs addss (simpset() addsimps [cod_def])) 1);
  47.108 +by (fast_tac (set_cs addss (simpset() addsimps [dom_def])) 1);
  47.109  qed "free_tv_subst_var";
  47.110  
  47.111  goal thy 
  47.112       "free_tv ($ S (t::typ)) <= cod S Un free_tv t";
  47.113  by (typ.induct_tac "t" 1);
  47.114  (* case TVar n *)
  47.115 -by (simp_tac (!simpset addsimps [free_tv_subst_var]) 1);
  47.116 +by (simp_tac (simpset() addsimps [free_tv_subst_var]) 1);
  47.117  (* case Fun t1 t2 *)
  47.118 -by (fast_tac (set_cs addss !simpset) 1);
  47.119 +by (fast_tac (set_cs addss simpset()) 1);
  47.120  qed "free_tv_app_subst_te";     
  47.121  
  47.122  goal thy 
  47.123       "free_tv ($ S (sch::type_scheme)) <= cod S Un free_tv sch";
  47.124  by (type_scheme.induct_tac "sch" 1);
  47.125  (* case FVar n *)
  47.126 -by (simp_tac (!simpset addsimps [free_tv_subst_var]) 1);
  47.127 +by (simp_tac (simpset() addsimps [free_tv_subst_var]) 1);
  47.128  (* case BVar n *)
  47.129  by (Simp_tac 1);
  47.130  (* case Fun t1 t2 *)
  47.131 -by (fast_tac (set_cs addss !simpset) 1);
  47.132 +by (fast_tac (set_cs addss simpset()) 1);
  47.133  qed "free_tv_app_subst_type_scheme";  
  47.134  
  47.135  goal thy 
  47.136 @@ -309,7 +309,7 @@
  47.137  by (Simp_tac 1);
  47.138  (* case a#al *)
  47.139  by (cut_facts_tac [free_tv_app_subst_type_scheme] 1);
  47.140 -by (fast_tac (set_cs addss !simpset) 1);
  47.141 +by (fast_tac (set_cs addss simpset()) 1);
  47.142  qed "free_tv_app_subst_scheme_list";
  47.143  
  47.144  goalw thy [free_tv_subst,dom_def]
  47.145 @@ -317,7 +317,7 @@
  47.146  \     free_tv s1 Un free_tv s2";
  47.147  by (fast_tac (set_cs addSDs [free_tv_app_subst_te RS subsetD,
  47.148                               free_tv_subst_var RS subsetD] 
  47.149 -                     addss (!simpset delsimps bex_simps
  47.150 +                     addss (simpset() delsimps bex_simps
  47.151                                       addsimps [cod_def,dom_def])) 1);
  47.152  qed "free_tv_comp_subst";
  47.153  
  47.154 @@ -345,14 +345,14 @@
  47.155  by (list.induct_tac "A" 1);
  47.156  by (Simp_tac 1);
  47.157  by (Simp_tac 1);
  47.158 -by (fast_tac (!claset addDs [free_tv_of_substitutions_extend_to_schemes]) 1);
  47.159 +by (fast_tac (claset() addDs [free_tv_of_substitutions_extend_to_schemes]) 1);
  47.160  qed_spec_mp "free_tv_of_substitutions_extend_to_scheme_lists";
  47.161  
  47.162  Addsimps [free_tv_of_substitutions_extend_to_scheme_lists];
  47.163  
  47.164  goal thy "!!sch::type_scheme. (n : free_tv sch) = (n mem free_tv_ML sch)";
  47.165  by (type_scheme.induct_tac "sch" 1);
  47.166 -by (ALLGOALS (asm_simp_tac (!simpset addsplits [expand_if])));
  47.167 +by (ALLGOALS (asm_simp_tac (simpset() addsplits [expand_if])));
  47.168  by (strip_tac 1);
  47.169  by (Fast_tac 1);
  47.170  qed "free_tv_ML_scheme";
  47.171 @@ -360,7 +360,7 @@
  47.172  goal thy "!!A::type_scheme list. (n : free_tv A) = (n mem free_tv_ML A)";
  47.173  by (list.induct_tac "A" 1);
  47.174  by (Simp_tac 1);
  47.175 -by (asm_simp_tac (!simpset addsimps [free_tv_ML_scheme]) 1);
  47.176 +by (asm_simp_tac (simpset() addsimps [free_tv_ML_scheme]) 1);
  47.177  qed "free_tv_ML_scheme_list";
  47.178  
  47.179  
  47.180 @@ -396,13 +396,13 @@
  47.181  \                (! l. l < n --> new_tv n (S l) ))";
  47.182  by (safe_tac HOL_cs );
  47.183  (* ==> *)
  47.184 -by (fast_tac (HOL_cs addDs [leD] addss (!simpset addsimps [free_tv_subst,dom_def])) 1);
  47.185 +by (fast_tac (HOL_cs addDs [leD] addss (simpset() addsimps [free_tv_subst,dom_def])) 1);
  47.186  by (subgoal_tac "m:cod S | S l = TVar l" 1);
  47.187  by (safe_tac HOL_cs );
  47.188 -by (fast_tac (HOL_cs addDs [UnI2] addss (!simpset addsimps [free_tv_subst])) 1);
  47.189 +by (fast_tac (HOL_cs addDs [UnI2] addss (simpset() addsimps [free_tv_subst])) 1);
  47.190  by (dres_inst_tac [("P","%x. m:free_tv x")] subst 1 THEN atac 1);
  47.191  by (Asm_full_simp_tac 1);
  47.192 -by (fast_tac (set_cs addss (!simpset addsimps [free_tv_subst,cod_def,dom_def])) 1);
  47.193 +by (fast_tac (set_cs addss (simpset() addsimps [free_tv_subst,cod_def,dom_def])) 1);
  47.194  (* <== *)
  47.195  by (rewrite_goals_tac [free_tv_subst,cod_def,dom_def] );
  47.196  by (safe_tac set_cs );
  47.197 @@ -423,14 +423,14 @@
  47.198  goal thy
  47.199    "new_tv n (t::typ) --> $(%x. if x=n then t' else S x) t = $S t";
  47.200  by (typ.induct_tac "t" 1);
  47.201 -by (ALLGOALS(asm_simp_tac (!simpset addsplits [expand_if])));
  47.202 +by (ALLGOALS(asm_simp_tac (simpset() addsplits [expand_if])));
  47.203  qed "subst_te_new_tv";
  47.204  Addsimps [subst_te_new_tv];
  47.205  
  47.206  goal thy
  47.207    "new_tv n (sch::type_scheme) --> $(%x. if x=n then sch' else S x) sch = $S sch";
  47.208  by (type_scheme.induct_tac "sch" 1);
  47.209 -by (ALLGOALS(asm_simp_tac (!simpset addsplits [expand_if])));
  47.210 +by (ALLGOALS(asm_simp_tac (simpset() addsplits [expand_if])));
  47.211  qed_spec_mp "subst_te_new_type_scheme";
  47.212  Addsimps [subst_te_new_type_scheme];
  47.213  
  47.214 @@ -444,7 +444,7 @@
  47.215  (* all greater variables are also new *)
  47.216  goalw thy [new_tv_def] 
  47.217    "!!n m. n<=m ==> new_tv n t ==> new_tv m t";
  47.218 -by (safe_tac (!claset));
  47.219 +by (safe_tac (claset()));
  47.220  by (dtac spec 1);
  47.221  by (mp_tac 1);
  47.222  by (trans_tac 1);
  47.223 @@ -452,27 +452,27 @@
  47.224  Addsimps [lessI RS less_imp_le RS new_tv_le];
  47.225  
  47.226  goal thy "!!n m. n<=m ==> new_tv n (t::typ) ==> new_tv m t";
  47.227 -by (asm_simp_tac (!simpset addsimps [new_tv_le]) 1);
  47.228 +by (asm_simp_tac (simpset() addsimps [new_tv_le]) 1);
  47.229  qed "new_tv_typ_le";
  47.230  
  47.231  goal thy "!!n m. n<=m ==> new_tv n (A::type_scheme list) ==> new_tv m A";
  47.232 -by (asm_simp_tac (!simpset addsimps [new_tv_le]) 1);
  47.233 +by (asm_simp_tac (simpset() addsimps [new_tv_le]) 1);
  47.234  qed "new_scheme_list_le";
  47.235  
  47.236  goal thy "!!n m. n<=m ==> new_tv n (S::subst) ==> new_tv m S";
  47.237 -by (asm_simp_tac (!simpset addsimps [new_tv_le]) 1);
  47.238 +by (asm_simp_tac (simpset() addsimps [new_tv_le]) 1);
  47.239  qed "new_tv_subst_le";
  47.240  
  47.241  (* new_tv property remains if a substitution is applied *)
  47.242  goal thy
  47.243    "!!n. [| n<m; new_tv m (S::subst) |] ==> new_tv m (S n)";
  47.244 -by (asm_full_simp_tac (!simpset addsimps [new_tv_subst]) 1);
  47.245 +by (asm_full_simp_tac (simpset() addsimps [new_tv_subst]) 1);
  47.246  qed "new_tv_subst_var";
  47.247  
  47.248  goal thy
  47.249    "new_tv n S --> new_tv n (t::typ) --> new_tv n ($ S t)";
  47.250  by (typ.induct_tac "t" 1);
  47.251 -by (ALLGOALS(fast_tac (HOL_cs addss (!simpset addsimps [new_tv_subst]))));
  47.252 +by (ALLGOALS(fast_tac (HOL_cs addss (simpset() addsimps [new_tv_subst]))));
  47.253  qed_spec_mp "new_tv_subst_te";
  47.254  Addsimps [new_tv_subst_te];
  47.255  
  47.256 @@ -480,7 +480,7 @@
  47.257  by (type_scheme.induct_tac "sch" 1);
  47.258  by (ALLGOALS (Asm_full_simp_tac));
  47.259  by (rewtac new_tv_def);
  47.260 -by (simp_tac (!simpset addsimps [free_tv_subst,dom_def,cod_def]) 1);
  47.261 +by (simp_tac (simpset() addsimps [free_tv_subst,dom_def,cod_def]) 1);
  47.262  by (strip_tac 1);
  47.263  by (case_tac "S nat = TVar nat" 1);
  47.264  by (rotate_tac 3 1);
  47.265 @@ -493,13 +493,13 @@
  47.266  goal thy
  47.267    "new_tv n S --> new_tv n (A::type_scheme list) --> new_tv n ($ S A)";
  47.268  by (list.induct_tac "A" 1);
  47.269 -by (ALLGOALS(fast_tac (HOL_cs addss (!simpset))));
  47.270 +by (ALLGOALS(fast_tac (HOL_cs addss (simpset()))));
  47.271  qed_spec_mp "new_tv_subst_scheme_list";
  47.272  Addsimps [new_tv_subst_scheme_list];
  47.273  
  47.274  goal thy
  47.275    "new_tv n A --> new_tv (Suc n) ((TVar n)#A)";
  47.276 -by (simp_tac (!simpset addsimps [new_tv_list]) 1);
  47.277 +by (simp_tac (simpset() addsimps [new_tv_list]) 1);
  47.278  by (list.induct_tac "A" 1);
  47.279  by (ALLGOALS Asm_full_simp_tac);
  47.280  qed "new_tv_Suc_list";
  47.281 @@ -527,13 +527,13 @@
  47.282  goal thy 
  47.283       "!! n. [| new_tv n (S::subst); new_tv n R |] ==> \
  47.284  \           new_tv n (($ R) o S)";
  47.285 -by (asm_full_simp_tac (!simpset addsimps [new_tv_subst]) 1);
  47.286 +by (asm_full_simp_tac (simpset() addsimps [new_tv_subst]) 1);
  47.287  qed "new_tv_subst_comp_1";
  47.288  
  47.289  goal thy
  47.290       "!! n. [| new_tv n (S::subst); new_tv n R |] ==>  \ 
  47.291  \     new_tv n (%v.$ R (S v))";
  47.292 -by (asm_full_simp_tac (!simpset addsimps [new_tv_subst]) 1);
  47.293 +by (asm_full_simp_tac (simpset() addsimps [new_tv_subst]) 1);
  47.294  qed "new_tv_subst_comp_2";
  47.295  
  47.296  Addsimps [new_tv_subst_comp_1,new_tv_subst_comp_2];
  47.297 @@ -546,14 +546,14 @@
  47.298  Addsimps [new_tv_not_free_tv];
  47.299  
  47.300  goalw thy [max_def] "!!n::nat. m < n ==> m < max n n'";
  47.301 -by (simp_tac (!simpset addsplits [expand_if]) 1);
  47.302 -by (safe_tac (!claset));
  47.303 +by (simp_tac (simpset() addsplits [expand_if]) 1);
  47.304 +by (safe_tac (claset()));
  47.305  by (trans_tac 1);
  47.306  qed "less_maxL";
  47.307  
  47.308  goalw thy [max_def] "!!n::nat. m < n' ==> m < max n n'";
  47.309 -by (simp_tac (!simpset addsplits [expand_if]) 1);
  47.310 -by (fast_tac (!claset addDs [not_leE] addIs [less_trans]) 1);
  47.311 +by (simp_tac (simpset() addsplits [expand_if]) 1);
  47.312 +by (fast_tac (claset() addDs [not_leE] addIs [less_trans]) 1);
  47.313  val less_maxR = result();
  47.314  
  47.315  goalw thy [new_tv_def] "!!t::typ. ? n. (new_tv n t)";
  47.316 @@ -564,7 +564,7 @@
  47.317  by (rename_tac "n'" 1);
  47.318  by (res_inst_tac [("x","max n n'")] exI 1);
  47.319  by (Simp_tac 1);
  47.320 -by (fast_tac (!claset addIs [less_maxR,less_maxL]) 1);
  47.321 +by (fast_tac (claset() addIs [less_maxR,less_maxL]) 1);
  47.322  qed "fresh_variable_types";
  47.323  
  47.324  Addsimps [fresh_variable_types];
  47.325 @@ -579,18 +579,18 @@
  47.326  by (rename_tac "n'" 1);
  47.327  by (res_inst_tac [("x","max n n'")] exI 1);
  47.328  by (Simp_tac 1);
  47.329 -by (fast_tac (!claset addIs [less_maxR,less_maxL]) 1);
  47.330 +by (fast_tac (claset() addIs [less_maxR,less_maxL]) 1);
  47.331  qed "fresh_variable_type_schemes";
  47.332  
  47.333  Addsimps [fresh_variable_type_schemes];
  47.334  
  47.335  goalw thy [max_def] "!!n::nat. n <= (max n n')";
  47.336 -by (simp_tac (!simpset addsplits [expand_if]) 1);
  47.337 +by (simp_tac (simpset() addsplits [expand_if]) 1);
  47.338  val le_maxL = result();
  47.339  
  47.340  goalw thy [max_def] "!!n'::nat. n' <= (max n n')";
  47.341 -by (simp_tac (!simpset addsplits [expand_if]) 1);
  47.342 -by (fast_tac (!claset addDs [not_leE] addIs [less_or_eq_imp_le]) 1);
  47.343 +by (simp_tac (simpset() addsplits [expand_if]) 1);
  47.344 +by (fast_tac (claset() addDs [not_leE] addIs [less_or_eq_imp_le]) 1);
  47.345  val le_maxR = result();
  47.346  
  47.347  goal thy "!!A::type_scheme list. ? n. (new_tv n A)";
  47.348 @@ -604,8 +604,8 @@
  47.349  by (res_inst_tac [("x","(max n n')")] exI 1);
  47.350  by (subgoal_tac "n <= (max n n')" 1);
  47.351  by (subgoal_tac "n' <= (max n n')" 1);
  47.352 -by (fast_tac (!claset addDs [new_tv_le]) 1);
  47.353 -by (ALLGOALS (simp_tac (!simpset addsimps [le_maxR,le_maxL])));
  47.354 +by (fast_tac (claset() addDs [new_tv_le]) 1);
  47.355 +by (ALLGOALS (simp_tac (simpset() addsimps [le_maxR,le_maxL])));
  47.356  qed "fresh_variable_type_scheme_lists";
  47.357  
  47.358  Addsimps [fresh_variable_type_scheme_lists];
  47.359 @@ -616,8 +616,8 @@
  47.360  by (res_inst_tac [("x","(max n1 n2)")] exI 1);
  47.361  by (subgoal_tac "n1 <= max n1 n2" 1);
  47.362  by (subgoal_tac "n2 <= max n1 n2" 1);
  47.363 -by (fast_tac (!claset addDs [new_tv_le]) 1);
  47.364 -by (ALLGOALS (simp_tac (!simpset addsimps [le_maxL,le_maxR])));
  47.365 +by (fast_tac (claset() addDs [new_tv_le]) 1);
  47.366 +by (ALLGOALS (simp_tac (simpset() addsimps [le_maxL,le_maxR])));
  47.367  qed "make_one_new_out_of_two";
  47.368  
  47.369  goal thy "!!(A::type_scheme list) (A'::type_scheme list) (t::typ) (t'::typ). \
  47.370 @@ -637,7 +637,7 @@
  47.371  by (rename_tac "n2 n1" 1);
  47.372  by (res_inst_tac [("x","(max n1 n2)")] exI 1);
  47.373  by (rewtac new_tv_def);
  47.374 -by (fast_tac (!claset addIs [less_maxL,less_maxR]) 1);
  47.375 +by (fast_tac (claset() addIs [less_maxL,less_maxR]) 1);
  47.376  qed "ex_fresh_variable";
  47.377  
  47.378  (* mgu does not introduce new type variables *)
  47.379 @@ -665,7 +665,7 @@
  47.380  
  47.381  goal thy "!!A::type_scheme list. $ TVar A = A";
  47.382  by (rtac list.induct 1);
  47.383 -by (ALLGOALS (asm_full_simp_tac (!simpset addsimps [app_subst_list])));
  47.384 +by (ALLGOALS (asm_full_simp_tac (simpset() addsimps [app_subst_list])));
  47.385  qed "subst_TVar_scheme_list";
  47.386  
  47.387  Addsimps [subst_TVar_scheme_list];
  47.388 @@ -698,7 +698,7 @@
  47.389  
  47.390  goal thy "!!sch::type_scheme. $ id_subst sch = sch";
  47.391  by (type_scheme.induct_tac "sch" 1);
  47.392 -by (ALLGOALS (asm_full_simp_tac (!simpset addsimps [id_subst_def])));
  47.393 +by (ALLGOALS (asm_full_simp_tac (simpset() addsimps [id_subst_def])));
  47.394  qed "id_subst_sch";
  47.395  
  47.396  Addsimps [id_subst_sch];
  47.397 @@ -736,12 +736,12 @@
  47.398  (* case [] *)
  47.399  by (Simp_tac 1);
  47.400  (* case x#xl *)
  47.401 -by (asm_full_simp_tac (!simpset addsimps [subst_comp_type_scheme]) 1);
  47.402 +by (asm_full_simp_tac (simpset() addsimps [subst_comp_type_scheme]) 1);
  47.403  qed "subst_comp_scheme_list";
  47.404  
  47.405  goal thy "!!A::type_scheme list. !x : free_tv A. S x = (TVar x) ==> $ S A = $ id_subst A";
  47.406  by (rtac scheme_list_substitutions_only_on_free_variables 1);
  47.407 -by (asm_full_simp_tac (!simpset addsimps [id_subst_def]) 1);
  47.408 +by (asm_full_simp_tac (simpset() addsimps [id_subst_def]) 1);
  47.409  qed "subst_id_on_type_scheme_list'";
  47.410  
  47.411  goal thy "!!A::type_scheme list. !x : free_tv A. S x = (TVar x) ==> $ S A = A";
    48.1 --- a/src/HOL/MiniML/W.ML	Mon Nov 03 12:12:10 1997 +0100
    48.2 +++ b/src/HOL/MiniML/W.ML	Mon Nov 03 12:13:18 1997 +0100
    48.3 @@ -18,23 +18,23 @@
    48.4          "!A n S t m. W e A n  = Some (S,t,m) --> n<=m";
    48.5  by (expr.induct_tac "e" 1);
    48.6  (* case Var(n) *)
    48.7 -by (simp_tac (!simpset addsplits [split_option_bind,expand_if]) 1);
    48.8 +by (simp_tac (simpset() addsplits [split_option_bind,expand_if]) 1);
    48.9  (* case Abs e *)
   48.10 -by (simp_tac (!simpset addsplits [split_option_bind]) 1);
   48.11 +by (simp_tac (simpset() addsplits [split_option_bind]) 1);
   48.12  by (fast_tac (HOL_cs addDs [Suc_leD]) 1);
   48.13  (* case App e1 e2 *)
   48.14 -by (simp_tac (!simpset addsplits [split_option_bind]) 1);
   48.15 -by(blast_tac (!claset addIs [le_SucI,le_trans]) 1);
   48.16 +by (simp_tac (simpset() addsplits [split_option_bind]) 1);
   48.17 +by(blast_tac (claset() addIs [le_SucI,le_trans]) 1);
   48.18  (* case LET e1 e2 *)
   48.19 -by (simp_tac (!simpset addsplits [split_option_bind]) 1);
   48.20 -by(blast_tac (!claset addIs [le_trans]) 1);
   48.21 +by (simp_tac (simpset() addsplits [split_option_bind]) 1);
   48.22 +by(blast_tac (claset() addIs [le_trans]) 1);
   48.23  qed_spec_mp "W_var_ge";
   48.24  
   48.25  Addsimps [W_var_ge];
   48.26  
   48.27  goal thy
   48.28          "!! s. Some (S,t,m) = W e A n ==> n<=m";
   48.29 -by (asm_full_simp_tac (!simpset addsimps [eq_sym_conv]) 1);
   48.30 +by (asm_full_simp_tac (simpset() addsimps [eq_sym_conv]) 1);
   48.31  qed "W_var_geD";
   48.32  
   48.33  goal thy "!! s. new_tv n A ==> Some (S,t,m) = W e A n ==> new_tv m A";
   48.34 @@ -47,7 +47,7 @@
   48.35  goal thy "!!sch. new_tv n sch --> new_tv (n + (min_new_bound_tv sch)) (bound_typ_inst (%b. TVar (b + n)) sch)";
   48.36  by (type_scheme.induct_tac "sch" 1);
   48.37  by (Asm_full_simp_tac 1);
   48.38 -by (asm_full_simp_tac (!simpset addsimps [add_commute]) 1);
   48.39 +by (asm_full_simp_tac (simpset() addsimps [add_commute]) 1);
   48.40  by (strip_tac 1);
   48.41  by (Asm_full_simp_tac 1);
   48.42  by (etac conjE 1);
   48.43 @@ -58,7 +58,7 @@
   48.44  by (assume_tac 2);
   48.45  by (rtac add_le_mono 1);
   48.46  by (Simp_tac 1);
   48.47 -by (simp_tac (!simpset addsplits [expand_if] addsimps [max_def]) 1);
   48.48 +by (simp_tac (simpset() addsplits [expand_if] addsimps [max_def]) 1);
   48.49  by (strip_tac 1);
   48.50  by (rtac new_tv_le 1);
   48.51  by (mp_tac 2);
   48.52 @@ -66,7 +66,7 @@
   48.53  by (assume_tac 2);
   48.54  by (rtac add_le_mono 1);
   48.55  by (Simp_tac 1);
   48.56 -by (simp_tac (!simpset addsplits [expand_if] addsimps [max_def]) 1);
   48.57 +by (simp_tac (simpset() addsplits [expand_if] addsimps [max_def]) 1);
   48.58  by (strip_tac 1);
   48.59  by (dtac not_leE 1);
   48.60  by (rtac less_or_eq_imp_le 1);
   48.61 @@ -81,21 +81,21 @@
   48.62  \                 new_tv m S & new_tv m t";
   48.63  by (expr.induct_tac "e" 1);
   48.64  (* case Var n *)
   48.65 -by (simp_tac (!simpset addsplits [split_option_bind,expand_if]) 1);
   48.66 +by (simp_tac (simpset() addsplits [split_option_bind,expand_if]) 1);
   48.67  by (strip_tac 1);
   48.68  by (dtac new_tv_nth_nat_A 1);
   48.69  by (assume_tac 1);
   48.70  by (Asm_simp_tac 1);
   48.71  (* case Abs e *)
   48.72 -by (simp_tac (!simpset addsimps [new_tv_subst,new_tv_Suc_list] 
   48.73 +by (simp_tac (simpset() addsimps [new_tv_subst,new_tv_Suc_list] 
   48.74      addsplits [split_option_bind]) 1);
   48.75  by (strip_tac 1);
   48.76  by (eres_inst_tac [("x","Suc n")] allE 1);
   48.77  by (eres_inst_tac [("x","(FVar n)#A")] allE 1);
   48.78 -by (fast_tac (HOL_cs addss (!simpset
   48.79 +by (fast_tac (HOL_cs addss (simpset()
   48.80                addsimps [new_tv_subst,new_tv_Suc_list])) 1);
   48.81  (* case App e1 e2 *)
   48.82 -by (simp_tac (!simpset addsplits [split_option_bind]) 1);
   48.83 +by (simp_tac (simpset() addsplits [split_option_bind]) 1);
   48.84  by (strip_tac 1);
   48.85  by (rename_tac "S1 t1 n1 S2 t2 n2 S3" 1);
   48.86  by (eres_inst_tac [("x","n")] allE 1);
   48.87 @@ -104,18 +104,18 @@
   48.88  by (eres_inst_tac [("x","t1")] allE 1);
   48.89  by (eres_inst_tac [("x","n1")] allE 1);
   48.90  by (eres_inst_tac [("x","n1")] allE 1);
   48.91 -by (asm_full_simp_tac (!simpset addsimps [eq_sym_conv] delsimps all_simps) 1);
   48.92 +by (asm_full_simp_tac (simpset() addsimps [eq_sym_conv] delsimps all_simps) 1);
   48.93  by (eres_inst_tac [("x","$S1 A")] allE 1);
   48.94  by (eres_inst_tac [("x","S2")] allE 1);
   48.95  by (eres_inst_tac [("x","t2")] allE 1);
   48.96  by (eres_inst_tac [("x","n2")] allE 1);
   48.97 -by ( asm_full_simp_tac (!simpset addsimps [o_def,rotate_Some]) 1);
   48.98 +by ( asm_full_simp_tac (simpset() addsimps [o_def,rotate_Some]) 1);
   48.99  by (rtac conjI 1);
  48.100  by (rtac new_tv_subst_comp_2 1);
  48.101  by (rtac new_tv_subst_comp_2 1);
  48.102  by (rtac (lessI RS less_imp_le RS new_tv_le) 1); 
  48.103  by (res_inst_tac [("n","n1")] new_tv_subst_le 1); 
  48.104 -by (asm_full_simp_tac (!simpset addsimps [rotate_Some]) 1);
  48.105 +by (asm_full_simp_tac (simpset() addsimps [rotate_Some]) 1);
  48.106  by (Asm_simp_tac 1);
  48.107  by (fast_tac (HOL_cs addDs [W_var_geD] addIs
  48.108       [new_scheme_list_le,new_tv_subst_scheme_list,lessI RS less_imp_le RS new_tv_subst_le])
  48.109 @@ -126,18 +126,18 @@
  48.110     new_tv_subst_le,new_tv_le]) 1);
  48.111  by (fast_tac (HOL_cs addDs [W_var_geD] addIs
  48.112       [new_scheme_list_le,new_tv_subst_scheme_list,new_tv_le] 
  48.113 -        addss (!simpset)) 1);
  48.114 +        addss (simpset())) 1);
  48.115  by (rtac (lessI RS new_tv_subst_var) 1);
  48.116  by (etac (sym RS mgu_new) 1);
  48.117  by (best_tac (HOL_cs addSIs [lessI RS less_imp_le RS new_tv_le,new_tv_subst_te]
  48.118     addDs [W_var_geD] addIs
  48.119     [new_scheme_list_le,new_tv_subst_scheme_list,lessI RS less_imp_le RS
  48.120 -   new_tv_subst_le,new_tv_le] addss !simpset) 1);
  48.121 +   new_tv_subst_le,new_tv_le] addss simpset()) 1);
  48.122  by (fast_tac (HOL_cs addDs [W_var_geD] addIs
  48.123       [new_scheme_list_le,new_tv_subst_scheme_list,new_tv_le]
  48.124 -     addss (!simpset)) 1);
  48.125 +     addss (simpset())) 1);
  48.126  (* 41: case LET e1 e2 *)
  48.127 -by (simp_tac (!simpset addsplits [split_option_bind]) 1);
  48.128 +by (simp_tac (simpset() addsplits [split_option_bind]) 1);
  48.129  by (strip_tac 1);
  48.130  by(EVERY1[etac allE,etac allE,etac allE,etac allE,etac allE,mp_tac,mp_tac]);
  48.131  by (etac conjE 1);
  48.132 @@ -150,7 +150,7 @@
  48.133  by (strip_tac 1);
  48.134  by (SELECT_GOAL(rewtac free_tv_subst) 1);
  48.135  by (dtac (free_tv_app_subst_scheme_list RS subsetD) 1);
  48.136 -by (best_tac (!claset addEs [less_le_trans]) 1);
  48.137 +by (best_tac (claset() addEs [less_le_trans]) 1);
  48.138  by (etac conjE 1);
  48.139  by (rtac conjI 1);
  48.140  by (rtac new_tv_subst_comp_2 1);
  48.141 @@ -177,18 +177,18 @@
  48.142  \         (v:free_tv S | v:free_tv t) --> v<n --> v:free_tv A";
  48.143  by (expr.induct_tac "e" 1);
  48.144  (* case Var n *)
  48.145 -by (simp_tac (!simpset addsimps
  48.146 +by (simp_tac (simpset() addsimps
  48.147      [free_tv_subst] addsplits [split_option_bind,expand_if]) 1);
  48.148  by (strip_tac 1);
  48.149  by (case_tac "v : free_tv (nth nat A)" 1);
  48.150  by (Asm_full_simp_tac 1);
  48.151  by (dtac free_tv_bound_typ_inst1 1);
  48.152 -by (simp_tac (!simpset addsimps [o_def]) 1);
  48.153 +by (simp_tac (simpset() addsimps [o_def]) 1);
  48.154  by (etac exE 1);
  48.155  by (rotate_tac 3 1);
  48.156  by (Asm_full_simp_tac 1);
  48.157  (* case Abs e *)
  48.158 -by (asm_full_simp_tac (!simpset addsimps
  48.159 +by (asm_full_simp_tac (simpset() addsimps
  48.160      [free_tv_subst] addsplits [split_option_bind] delsimps all_simps) 1);
  48.161  by (strip_tac 1);
  48.162  by (rename_tac "S t n1 S1 t1 m v" 1);
  48.163 @@ -199,9 +199,9 @@
  48.164  by (eres_inst_tac [("x","n1")] allE 1);
  48.165  by (eres_inst_tac [("x","v")] allE 1);
  48.166  by (best_tac (HOL_cs addIs [cod_app_subst]
  48.167 -                     addss (!simpset addsimps [less_Suc_eq])) 1);
  48.168 +                     addss (simpset() addsimps [less_Suc_eq])) 1);
  48.169  (* case App e1 e2 *)
  48.170 -by (simp_tac (!simpset addsplits [split_option_bind] delsimps all_simps) 1);
  48.171 +by (simp_tac (simpset() addsplits [split_option_bind] delsimps all_simps) 1);
  48.172  by (strip_tac 1); 
  48.173  by (rename_tac "S t n1 S1 t1 n2 S2 S3 t2 m v" 1);
  48.174  by (eres_inst_tac [("x","n")] allE 1);
  48.175 @@ -218,7 +218,7 @@
  48.176  by (eres_inst_tac [("x","n2")] allE 1);
  48.177  by (eres_inst_tac [("x","v")] allE 1);
  48.178  by (safe_tac (empty_cs addSIs [conjI,impI] addSEs [conjE]) ); 
  48.179 -by (asm_full_simp_tac (!simpset addsimps [rotate_Some,o_def]) 1);
  48.180 +by (asm_full_simp_tac (simpset() addsimps [rotate_Some,o_def]) 1);
  48.181  by (dtac W_var_geD 1);
  48.182  by (dtac W_var_geD 1);
  48.183  by ( (forward_tac [less_le_trans] 1) THEN (assume_tac 1) );
  48.184 @@ -226,7 +226,7 @@
  48.185      codD,free_tv_app_subst_te RS subsetD,free_tv_app_subst_scheme_list RS subsetD,
  48.186      less_le_trans,less_not_refl2,subsetD]
  48.187    addEs [UnE] 
  48.188 -  addss !simpset) 1);
  48.189 +  addss simpset()) 1);
  48.190  by (Asm_full_simp_tac 1); 
  48.191  by (dtac (sym RS W_var_geD) 1);
  48.192  by (dtac (sym RS W_var_geD) 1);
  48.193 @@ -235,9 +235,9 @@
  48.194      free_tv_app_subst_te RS subsetD,free_tv_app_subst_scheme_list RS subsetD,
  48.195      less_le_trans,subsetD]
  48.196    addEs [UnE]
  48.197 -  addss !simpset) 1);
  48.198 +  addss simpset()) 1);
  48.199  (* LET e1 e2 *)
  48.200 -by (simp_tac (!simpset addsplits [split_option_bind] delsimps all_simps) 1);
  48.201 +by (simp_tac (simpset() addsplits [split_option_bind] delsimps all_simps) 1);
  48.202  by (strip_tac 1); 
  48.203  by (rename_tac "nat A S1 t1 n2 S2 t2 m2 S t m v" 1);
  48.204  by (eres_inst_tac [("x","nat")] allE 1);
  48.205 @@ -253,9 +253,9 @@
  48.206  by (mp_tac 1);
  48.207  by (Asm_full_simp_tac 1);
  48.208  by (rtac conjI 1);
  48.209 -by (fast_tac (!claset addSDs [codD,free_tv_app_subst_scheme_list RS subsetD,free_tv_o_subst RS subsetD,W_var_ge] 
  48.210 +by (fast_tac (claset() addSDs [codD,free_tv_app_subst_scheme_list RS subsetD,free_tv_o_subst RS subsetD,W_var_ge] 
  48.211                addDs [less_le_trans]) 1);
  48.212 -by (fast_tac (!claset addSDs [codD,free_tv_app_subst_scheme_list RS subsetD,W_var_ge] 
  48.213 +by (fast_tac (claset() addSDs [codD,free_tv_app_subst_scheme_list RS subsetD,W_var_ge] 
  48.214                addDs [less_le_trans]) 1);
  48.215  qed_spec_mp "free_tv_W"; 
  48.216  
  48.217 @@ -272,15 +272,15 @@
  48.218          "!A S t m n . new_tv n A --> Some (S,t,m) = W e A n --> $S A |- e :: t";
  48.219  by (expr.induct_tac "e" 1);
  48.220  (* case Var n *)
  48.221 -by (asm_full_simp_tac (!simpset addsplits [expand_if]) 1);
  48.222 +by (asm_full_simp_tac (simpset() addsplits [expand_if]) 1);
  48.223  by (strip_tac 1);
  48.224  by (rtac has_type.VarI 1);
  48.225  by (Simp_tac 1);
  48.226 -by (simp_tac (!simpset addsimps [is_bound_typ_instance]) 1);
  48.227 +by (simp_tac (simpset() addsimps [is_bound_typ_instance]) 1);
  48.228  by (rtac exI 1);
  48.229  by (rtac refl 1);
  48.230  (* case Abs e *)
  48.231 -by (asm_full_simp_tac (!simpset addsimps [app_subst_list]
  48.232 +by (asm_full_simp_tac (simpset() addsimps [app_subst_list]
  48.233                          addsplits [split_option_bind]) 1);
  48.234  by (strip_tac 1);
  48.235  by (eres_inst_tac [("x","(mk_scheme (TVar n)) # A")] allE 1);
  48.236 @@ -294,7 +294,7 @@
  48.237  by (Asm_simp_tac 1);
  48.238  by (assume_tac 1);
  48.239  (* case App e1 e2 *)
  48.240 -by (simp_tac (!simpset addsplits [split_option_bind]) 1);
  48.241 +by (simp_tac (simpset() addsplits [split_option_bind]) 1);
  48.242  by (strip_tac 1);
  48.243  by (rename_tac "S1 t1 n1 S2 t2 n2 S3" 1);
  48.244  by (res_inst_tac [("t2.0","$ S3 t2")] has_type.AppI 1);
  48.245 @@ -304,8 +304,8 @@
  48.246  by (Asm_full_simp_tac 1);
  48.247  by (simp_tac (HOL_ss addsimps [subst_comp_scheme_list RS sym]) 1);
  48.248  by ((rtac (has_type_cl_sub RS spec) 1) THEN (rtac (has_type_cl_sub RS spec) 1));
  48.249 -by (asm_full_simp_tac (!simpset addsimps [eq_sym_conv]) 1);
  48.250 -by (asm_full_simp_tac (!simpset addsimps [subst_comp_scheme_list RS sym,o_def,has_type_cl_sub,eq_sym_conv]) 1);
  48.251 +by (asm_full_simp_tac (simpset() addsimps [eq_sym_conv]) 1);
  48.252 +by (asm_full_simp_tac (simpset() addsimps [subst_comp_scheme_list RS sym,o_def,has_type_cl_sub,eq_sym_conv]) 1);
  48.253  by (rtac (has_type_cl_sub RS spec) 1);
  48.254  by (forward_tac [new_tv_W] 1);
  48.255  by (assume_tac 1);
  48.256 @@ -326,11 +326,11 @@
  48.257  by (mp_tac 1);
  48.258  by (assume_tac 1);
  48.259  (* case Let e1 e2 *)
  48.260 -by (simp_tac (!simpset addsplits [split_option_bind]) 1);
  48.261 +by (simp_tac (simpset() addsplits [split_option_bind]) 1);
  48.262  by (strip_tac 1);
  48.263  by (rename_tac "w q m1 S1 t1 m2 S2 t n2" 1); 
  48.264  by (res_inst_tac [("t1.0","$ S2 t1")] has_type.LETI 1);
  48.265 -by (simp_tac (!simpset addsimps [o_def]) 1);
  48.266 +by (simp_tac (simpset() addsimps [o_def]) 1);
  48.267  by (simp_tac (HOL_ss addsimps [subst_comp_scheme_list RS sym]) 1);
  48.268  by (rtac (has_type_cl_sub RS spec) 1);
  48.269  by (dres_inst_tac [("x","A")] spec 1);
  48.270 @@ -340,8 +340,8 @@
  48.271  by (rotate_tac 4 1);
  48.272  by (dres_inst_tac [("x","m1")] spec 1);
  48.273  by (mp_tac 1);
  48.274 -by (asm_full_simp_tac (!simpset addsimps [eq_sym_conv]) 1);
  48.275 -by (simp_tac (!simpset addsimps [o_def]) 1);
  48.276 +by (asm_full_simp_tac (simpset() addsimps [eq_sym_conv]) 1);
  48.277 +by (simp_tac (simpset() addsimps [o_def]) 1);
  48.278  by (simp_tac (HOL_ss addsimps [subst_comp_scheme_list RS sym]) 1);
  48.279  by (rtac (gen_subst_commutes RS sym RS subst) 1);
  48.280  by (rtac (app_subst_Cons RS subst) 2);
  48.281 @@ -385,7 +385,7 @@
  48.282  by (rtac new_tv_not_free_tv 1);
  48.283  by (rtac new_tv_le 1);
  48.284  by (assume_tac 2);
  48.285 -by (asm_full_simp_tac (!simpset addsimps [not_less_iff_le]) 1);
  48.286 +by (asm_full_simp_tac (simpset() addsimps [not_less_iff_le]) 1);
  48.287  qed_spec_mp "W_correct_lemma";
  48.288  
  48.289  goal Arith.thy "!!n::nat. ~ k+n < n";
  48.290 @@ -403,16 +403,16 @@
  48.291  by (expr.induct_tac "e" 1);
  48.292  (* case Var n *)
  48.293  by (strip_tac 1);
  48.294 -by (simp_tac (!simpset addcongs [conj_cong] addsplits [expand_if]) 1);
  48.295 +by (simp_tac (simpset() addcongs [conj_cong] addsplits [expand_if]) 1);
  48.296  by (eresolve_tac has_type_casesE 1); 
  48.297 -by (asm_full_simp_tac (!simpset addsimps [is_bound_typ_instance]) 1);
  48.298 +by (asm_full_simp_tac (simpset() addsimps [is_bound_typ_instance]) 1);
  48.299  by (etac exE 1);
  48.300  by (hyp_subst_tac 1);
  48.301  by (rename_tac "S" 1);
  48.302  by (res_inst_tac [("x","%x. (if x < n then S' x else S (x - n))")] exI 1);
  48.303  by (rtac conjI 1);
  48.304  by (Asm_simp_tac 1);
  48.305 -by (asm_simp_tac (!simpset addsimps [(bound_typ_inst_composed_subst RS sym),new_tv_nth_nat_A,o_def,nth_subst] 
  48.306 +by (asm_simp_tac (simpset() addsimps [(bound_typ_inst_composed_subst RS sym),new_tv_nth_nat_A,o_def,nth_subst] 
  48.307                             delsimps [bound_typ_inst_composed_subst]) 1);
  48.308  (** LEVEL 12 **)
  48.309  (* case Abs e *)
  48.310 @@ -423,7 +423,7 @@
  48.311  by (eres_inst_tac [("x","t2")] allE 1);
  48.312  by (eres_inst_tac [("x","Suc n")] allE 1);
  48.313  by (best_tac (HOL_cs addSDs [mk_scheme_injective] 
  48.314 -                  addss (!simpset addcongs [conj_cong] 
  48.315 +                  addss (simpset() addcongs [conj_cong] 
  48.316                                  addsplits [split_option_bind])) 1);
  48.317  (** LEVEL 19 **)
  48.318  
  48.319 @@ -455,7 +455,7 @@
  48.320  by (res_inst_tac [("t","$ (%x. if x = ma then t' else \
  48.321  \   (if x:(free_tv t - free_tv Sa) then R x else Ra x)) ($ Sa t)"),
  48.322      ("s","($ Ra ta) -> t'")] ssubst 2);
  48.323 -by (asm_simp_tac (!simpset addsimps [subst_comp_te]) 2);
  48.324 +by (asm_simp_tac (simpset() addsimps [subst_comp_te]) 2);
  48.325  by (rtac eq_free_eq_subst_te 2);  
  48.326  by (strip_tac 2);
  48.327  by (subgoal_tac "na ~=ma" 2);
  48.328 @@ -464,7 +464,7 @@
  48.329  by (case_tac "na:free_tv Sa" 2);
  48.330  (* n1 ~: free_tv S1 *)
  48.331  by (forward_tac [not_free_impl_id] 3);
  48.332 -by (asm_simp_tac (!simpset addsplits [expand_if]) 3);
  48.333 +by (asm_simp_tac (simpset() addsplits [expand_if]) 3);
  48.334  (* na : free_tv Sa *)
  48.335  by (dres_inst_tac [("A1","$ S A")] (subst_comp_scheme_list RSN (2,trans)) 2);
  48.336  by (dtac eq_subst_scheme_list_eq_free 2);
  48.337 @@ -472,7 +472,7 @@
  48.338  by (Asm_simp_tac 2); 
  48.339  by (case_tac "na:dom Sa" 2);
  48.340  (* na ~: dom Sa *)
  48.341 -by (asm_full_simp_tac (!simpset addsimps [dom_def] addsplits [expand_if]) 3);
  48.342 +by (asm_full_simp_tac (simpset() addsimps [dom_def] addsplits [expand_if]) 3);
  48.343  (* na : dom Sa *)
  48.344  by (rtac eq_free_eq_subst_te 2);
  48.345  by (strip_tac 2);
  48.346 @@ -482,8 +482,8 @@
  48.347  by (dtac new_tv_subst_scheme_list 3);
  48.348  by (fast_tac (HOL_cs addIs [new_scheme_list_le] addDs [sym RS W_var_geD]) 3);
  48.349  by (fast_tac (set_cs addDs [new_tv_W,new_tv_not_free_tv] addss 
  48.350 -    (!simpset addsimps [cod_def,free_tv_subst])) 3);
  48.351 -by (fast_tac (set_cs addss (!simpset addsimps [cod_def,free_tv_subst] 
  48.352 +    (simpset() addsimps [cod_def,free_tv_subst])) 3);
  48.353 +by (fast_tac (set_cs addss (simpset() addsimps [cod_def,free_tv_subst] 
  48.354                                       addsplits [expand_if])) 2);
  48.355  by (Simp_tac 2);  
  48.356  by (rtac eq_free_eq_subst_te 2);
  48.357 @@ -495,31 +495,31 @@
  48.358  by (fast_tac (HOL_cs addDs [new_scheme_list_le,new_tv_subst_scheme_list,new_tv_W,new_tv_not_free_tv]) 3);
  48.359  by (case_tac "na: free_tv t - free_tv Sa" 2);
  48.360  (* case na ~: free_tv t - free_tv Sa *)
  48.361 -by ( asm_full_simp_tac (!simpset addsplits [expand_if]) 3);
  48.362 +by ( asm_full_simp_tac (simpset() addsplits [expand_if]) 3);
  48.363  by (Fast_tac 3);
  48.364  (* case na : free_tv t - free_tv Sa *)
  48.365 -by ( asm_full_simp_tac (!simpset addsplits [expand_if]) 2);
  48.366 +by ( asm_full_simp_tac (simpset() addsplits [expand_if]) 2);
  48.367  by (dres_inst_tac [("A1","$ S A")] (subst_comp_scheme_list RSN (2,trans)) 2);
  48.368  by (dtac eq_subst_scheme_list_eq_free 2);
  48.369  by (fast_tac (HOL_cs addIs [free_tv_W,free_tv_le_new_tv] addDs [new_tv_W]) 2);
  48.370  (** LEVEL 75 **)
  48.371 -by (asm_full_simp_tac (!simpset addsimps [free_tv_subst,dom_def]) 2);
  48.372 -by (asm_simp_tac (!simpset addsplits [split_option_bind]) 1); 
  48.373 +by (asm_full_simp_tac (simpset() addsimps [free_tv_subst,dom_def]) 2);
  48.374 +by (asm_simp_tac (simpset() addsplits [split_option_bind]) 1); 
  48.375  by (safe_tac HOL_cs );
  48.376  by (dtac mgu_Some 1);
  48.377 -by ( fast_tac (HOL_cs addss !simpset) 1);
  48.378 +by ( fast_tac (HOL_cs addss simpset()) 1);
  48.379  (** LEVEL 80 *)
  48.380  by ((dtac mgu_mg 1) THEN (atac 1));
  48.381  by (etac exE 1);
  48.382  by (res_inst_tac [("x","Rb")] exI 1);
  48.383  by (rtac conjI 1);
  48.384  by (dres_inst_tac [("x","ma")] fun_cong 2);
  48.385 -by ( asm_full_simp_tac (!simpset addsimps [eq_sym_conv]) 2);
  48.386 -by (simp_tac (!simpset addsimps [subst_comp_scheme_list]) 1);
  48.387 -by (simp_tac (!simpset addsimps [subst_comp_scheme_list RS sym]) 1);
  48.388 +by ( asm_full_simp_tac (simpset() addsimps [eq_sym_conv]) 2);
  48.389 +by (simp_tac (simpset() addsimps [subst_comp_scheme_list]) 1);
  48.390 +by (simp_tac (simpset() addsimps [subst_comp_scheme_list RS sym]) 1);
  48.391  by (res_inst_tac [("A2","($ Sa ($ S A))")]
  48.392         ((subst_comp_scheme_list RS sym) RSN (2,trans)) 1);
  48.393 -by ( asm_full_simp_tac (!simpset addsimps [o_def,eq_sym_conv]) 1);
  48.394 +by ( asm_full_simp_tac (simpset() addsimps [o_def,eq_sym_conv]) 1);
  48.395  by (rtac eq_free_eq_subst_scheme_list 1);
  48.396  by ( safe_tac HOL_cs );
  48.397  by (subgoal_tac "ma ~= na" 1);
  48.398 @@ -534,12 +534,12 @@
  48.399      new_tv_not_free_tv]) 2);
  48.400  by (case_tac "na: free_tv t - free_tv Sa" 1);
  48.401  (* case na ~: free_tv t - free_tv Sa *)
  48.402 -by (asm_full_simp_tac (!simpset addsplits [expand_if]) 2);
  48.403 +by (asm_full_simp_tac (simpset() addsplits [expand_if]) 2);
  48.404  (* case na : free_tv t - free_tv Sa *)
  48.405 -by (asm_full_simp_tac (!simpset addsplits [expand_if]) 1);
  48.406 +by (asm_full_simp_tac (simpset() addsplits [expand_if]) 1);
  48.407  by (dtac (free_tv_app_subst_scheme_list RS subsetD) 1);
  48.408  by (fast_tac (set_cs addDs [codD,subst_comp_scheme_list RSN (2,trans),
  48.409 -    eq_subst_scheme_list_eq_free] addss ((!simpset addsimps 
  48.410 +    eq_subst_scheme_list_eq_free] addss ((simpset() addsimps 
  48.411      [free_tv_subst,dom_def]))) 1);
  48.412  by (Fast_tac 1);
  48.413  (* case Let e1 e2 *)
  48.414 @@ -567,11 +567,11 @@
  48.415  by (forward_tac [new_tv_compatible_W] 1);
  48.416  by (rtac sym 1);
  48.417  by (assume_tac 1);
  48.418 -by (fast_tac (!claset addDs [new_tv_compatible_gen,new_tv_subst_scheme_list,new_tv_W]) 1);
  48.419 +by (fast_tac (claset() addDs [new_tv_compatible_gen,new_tv_subst_scheme_list,new_tv_W]) 1);
  48.420  by (safe_tac HOL_cs);
  48.421  by (Asm_full_simp_tac 1);
  48.422  by (res_inst_tac [("x","Ra")] exI 1);
  48.423 -by (simp_tac (!simpset addsimps [o_def,subst_comp_scheme_list RS sym]) 1);
  48.424 +by (simp_tac (simpset() addsimps [o_def,subst_comp_scheme_list RS sym]) 1);
  48.425  qed_spec_mp "W_complete_lemma";
  48.426  
  48.427  goal W.thy
    49.1 --- a/src/HOL/Modelcheck/MCSyn.ML	Mon Nov 03 12:12:10 1997 +0100
    49.2 +++ b/src/HOL/Modelcheck/MCSyn.ML	Mon Nov 03 12:13:18 1997 +0100
    49.3 @@ -36,5 +36,5 @@
    49.4  
    49.5  
    49.6  val MC_ss =
    49.7 -  !simpset addsimprocs [pair_eta_expand_proc]
    49.8 +  simpset() addsimprocs [pair_eta_expand_proc]
    49.9      addsimps [split_paired_Ex, Let_def];
    50.1 --- a/src/HOL/NatDef.ML	Mon Nov 03 12:12:10 1997 +0100
    50.2 +++ b/src/HOL/NatDef.ML	Mon Nov 03 12:13:18 1997 +0100
    50.3 @@ -28,7 +28,7 @@
    50.4      "[| i: Nat;  P(Zero_Rep);   \
    50.5  \       !!j. [| j: Nat; P(j) |] ==> P(Suc_Rep(j)) |]  ==> P(i)";
    50.6  by (rtac ([Nat_def, Nat_fun_mono, major] MRS def_induct) 1);
    50.7 -by (blast_tac (!claset addIs prems) 1);
    50.8 +by (blast_tac (claset() addIs prems) 1);
    50.9  qed "Nat_induct";
   50.10  
   50.11  val prems = goalw thy [Zero_def,Suc_def]
   50.12 @@ -64,7 +64,7 @@
   50.13  val prems = goal thy 
   50.14      "[| n=0 ==> P;  !!x. n = Suc(x) ==> P |] ==> P";
   50.15  by (subgoal_tac "n=0 | (EX x. n = Suc(x))" 1);
   50.16 -by (fast_tac (!claset addSEs prems) 1);
   50.17 +by (fast_tac (claset() addSEs prems) 1);
   50.18  by (nat_ind_tac "n" 1);
   50.19  by (rtac (refl RS disjI1) 1);
   50.20  by (Blast_tac 1);
   50.21 @@ -144,11 +144,11 @@
   50.22  (*** nat_case -- the selection operator for nat ***)
   50.23  
   50.24  goalw thy [nat_case_def] "nat_case a f 0 = a";
   50.25 -by (blast_tac (!claset addIs [select_equality]) 1);
   50.26 +by (blast_tac (claset() addIs [select_equality]) 1);
   50.27  qed "nat_case_0";
   50.28  
   50.29  goalw thy [nat_case_def] "nat_case a f (Suc k) = f(k)";
   50.30 -by (blast_tac (!claset addIs [select_equality]) 1);
   50.31 +by (blast_tac (claset() addIs [select_equality]) 1);
   50.32  qed "nat_case_Suc";
   50.33  
   50.34  goalw thy [wf_def, pred_nat_def] "wf(pred_nat)";
   50.35 @@ -176,12 +176,12 @@
   50.36  
   50.37  goal thy "nat_rec c h 0 = c";
   50.38  by (rtac (nat_rec_unfold RS trans) 1);
   50.39 -by (simp_tac (!simpset addsimps [nat_case_0]) 1);
   50.40 +by (simp_tac (simpset() addsimps [nat_case_0]) 1);
   50.41  qed "nat_rec_0";
   50.42  
   50.43  goal thy "nat_rec c h (Suc n) = h n (nat_rec c h n)";
   50.44  by (rtac (nat_rec_unfold RS trans) 1);
   50.45 -by (simp_tac (!simpset addsimps [nat_case_Suc, pred_nat_def, cut_apply]) 1);
   50.46 +by (simp_tac (simpset() addsimps [nat_case_Suc, pred_nat_def, cut_apply]) 1);
   50.47  qed "nat_rec_Suc";
   50.48  
   50.49  (*These 2 rules ease the use of primitive recursion.  NOTE USE OF == *)
   50.50 @@ -218,7 +218,7 @@
   50.51  qed "less_trans";
   50.52  
   50.53  goalw thy [less_def, pred_nat_def] "n < Suc(n)";
   50.54 -by (simp_tac (!simpset addsimps [r_into_trancl]) 1);
   50.55 +by (simp_tac (simpset() addsimps [r_into_trancl]) 1);
   50.56  qed "lessI";
   50.57  AddIffs [lessI];
   50.58  
   50.59 @@ -237,7 +237,7 @@
   50.60  (** Elimination properties **)
   50.61  
   50.62  val prems = goalw thy [less_def] "n<m ==> ~ m<(n::nat)";
   50.63 -by (blast_tac (!claset addIs ([wf_pred_nat, wf_trancl RS wf_asym]@prems))1);
   50.64 +by (blast_tac (claset() addIs ([wf_pred_nat, wf_trancl RS wf_asym]@prems))1);
   50.65  qed "less_not_sym";
   50.66  
   50.67  (* [| n<m; m<n |] ==> R *)
   50.68 @@ -252,7 +252,7 @@
   50.69  bind_thm ("less_irrefl", (less_not_refl RS notE));
   50.70  
   50.71  goal thy "!!m. n<m ==> m ~= (n::nat)";
   50.72 -by (blast_tac (!claset addSEs [less_irrefl]) 1);
   50.73 +by (blast_tac (claset() addSEs [less_irrefl]) 1);
   50.74  qed "less_not_refl2";
   50.75  
   50.76  
   50.77 @@ -287,11 +287,11 @@
   50.78  qed "less_SucE";
   50.79  
   50.80  goal thy "(m < Suc(n)) = (m < n | m = n)";
   50.81 -by (blast_tac (!claset addSEs [less_SucE] addIs [less_trans]) 1);
   50.82 +by (blast_tac (claset() addSEs [less_SucE] addIs [less_trans]) 1);
   50.83  qed "less_Suc_eq";
   50.84  
   50.85  goal thy "(n<1) = (n=0)";
   50.86 -by (simp_tac (!simpset addsimps [less_Suc_eq]) 1);
   50.87 +by (simp_tac (simpset() addsimps [less_Suc_eq]) 1);
   50.88  qed "less_one";
   50.89  AddIffs [less_one];
   50.90  
   50.91 @@ -315,7 +315,7 @@
   50.92  val [prem] = goal thy "Suc(m) < n ==> m<n";
   50.93  by (rtac (prem RS rev_mp) 1);
   50.94  by (nat_ind_tac "n" 1);
   50.95 -by (ALLGOALS (fast_tac (!claset addSIs [lessI RS less_SucI]
   50.96 +by (ALLGOALS (fast_tac (claset() addSIs [lessI RS less_SucI]
   50.97                                  addEs  [less_trans, lessE])));
   50.98  qed "Suc_lessD";
   50.99  
  50.100 @@ -329,13 +329,13 @@
  50.101  qed "Suc_lessE";
  50.102  
  50.103  goal thy "!!m n. Suc(m) < Suc(n) ==> m<n";
  50.104 -by (blast_tac (!claset addEs [lessE, make_elim Suc_lessD]) 1);
  50.105 +by (blast_tac (claset() addEs [lessE, make_elim Suc_lessD]) 1);
  50.106  qed "Suc_less_SucD";
  50.107  
  50.108  goal thy "!!m n. m<n ==> Suc(m) < Suc(n)";
  50.109  by (etac rev_mp 1);
  50.110  by (nat_ind_tac "n" 1);
  50.111 -by (ALLGOALS (fast_tac (!claset addEs  [less_trans, lessE])));
  50.112 +by (ALLGOALS (fast_tac (claset() addEs  [less_trans, lessE])));
  50.113  qed "Suc_mono";
  50.114  
  50.115  
  50.116 @@ -345,15 +345,15 @@
  50.117  Addsimps [Suc_less_eq];
  50.118  
  50.119  goal thy "~(Suc(n) < n)";
  50.120 -by (blast_tac (!claset addEs [Suc_lessD RS less_irrefl]) 1);
  50.121 +by (blast_tac (claset() addEs [Suc_lessD RS less_irrefl]) 1);
  50.122  qed "not_Suc_n_less_n";
  50.123  Addsimps [not_Suc_n_less_n];
  50.124  
  50.125  goal thy "!!i. i<j ==> j<k --> Suc i < k";
  50.126  by (nat_ind_tac "k" 1);
  50.127 -by (ALLGOALS (asm_simp_tac (!simpset)));
  50.128 -by (asm_simp_tac (!simpset addsimps [less_Suc_eq]) 1);
  50.129 -by (blast_tac (!claset addDs [Suc_lessD]) 1);
  50.130 +by (ALLGOALS (asm_simp_tac (simpset())));
  50.131 +by (asm_simp_tac (simpset() addsimps [less_Suc_eq]) 1);
  50.132 +by (blast_tac (claset() addDs [Suc_lessD]) 1);
  50.133  qed_spec_mp "less_trans_Suc";
  50.134  
  50.135  (*"Less than" is a linear ordering*)
  50.136 @@ -362,7 +362,7 @@
  50.137  by (nat_ind_tac "n" 1);
  50.138  by (rtac (refl RS disjI1 RS disjI2) 1);
  50.139  by (rtac (zero_less_Suc RS disjI1) 1);
  50.140 -by (blast_tac (!claset addIs [Suc_mono, less_SucI] addEs [lessE]) 1);
  50.141 +by (blast_tac (claset() addIs [Suc_mono, less_SucI] addEs [lessE]) 1);
  50.142  qed "less_linear";
  50.143  
  50.144  qed_goal "nat_less_cases" thy 
  50.145 @@ -435,8 +435,8 @@
  50.146            nat_case_0, nat_case_Suc, nat_rec_0, nat_rec_Suc];
  50.147  
  50.148  goal thy "!!m. (m <= Suc(n)) = (m<=n | m = Suc n)";
  50.149 -by (simp_tac (!simpset addsimps [le_eq_less_Suc]) 1);
  50.150 -by (blast_tac (!claset addSEs [less_SucE] addIs [less_SucI]) 1);
  50.151 +by (simp_tac (simpset() addsimps [le_eq_less_Suc]) 1);
  50.152 +by (blast_tac (claset() addSEs [less_SucE] addIs [less_SucI]) 1);
  50.153  qed "le_Suc_eq";
  50.154  
  50.155  (*
  50.156 @@ -473,7 +473,7 @@
  50.157  val leE = make_elim leD;
  50.158  
  50.159  goal thy "(~n<m) = (m<=(n::nat))";
  50.160 -by (blast_tac (!claset addIs [leI] addEs [leE]) 1);
  50.161 +by (blast_tac (claset() addIs [leI] addEs [leE]) 1);
  50.162  qed "not_less_iff_le";
  50.163  
  50.164  goalw thy [le_def] "!!m. ~ m <= n ==> n<(m::nat)";
  50.165 @@ -481,47 +481,47 @@
  50.166  qed "not_leE";
  50.167  
  50.168  goalw thy [le_def] "!!m. m < n ==> Suc(m) <= n";
  50.169 -by (simp_tac (!simpset addsimps [less_Suc_eq]) 1);
  50.170 -by (blast_tac (!claset addSEs [less_irrefl,less_asym]) 1);
  50.171 +by (simp_tac (simpset() addsimps [less_Suc_eq]) 1);
  50.172 +by (blast_tac (claset() addSEs [less_irrefl,less_asym]) 1);
  50.173  qed "Suc_leI";  (*formerly called lessD*)
  50.174  
  50.175  goalw thy [le_def] "!!m. Suc(m) <= n ==> m <= n";
  50.176 -by (asm_full_simp_tac (!simpset addsimps [less_Suc_eq]) 1);
  50.177 +by (asm_full_simp_tac (simpset() addsimps [less_Suc_eq]) 1);
  50.178  qed "Suc_leD";
  50.179  
  50.180  (* stronger version of Suc_leD *)
  50.181  goalw thy [le_def] 
  50.182          "!!m. Suc m <= n ==> m < n";
  50.183 -by (asm_full_simp_tac (!simpset addsimps [less_Suc_eq]) 1);
  50.184 +by (asm_full_simp_tac (simpset() addsimps [less_Suc_eq]) 1);
  50.185  by (cut_facts_tac [less_linear] 1);
  50.186  by (Blast_tac 1);
  50.187  qed "Suc_le_lessD";
  50.188  
  50.189  goal thy "(Suc m <= n) = (m < n)";
  50.190 -by (blast_tac (!claset addIs [Suc_leI, Suc_le_lessD]) 1);
  50.191 +by (blast_tac (claset() addIs [Suc_leI, Suc_le_lessD]) 1);
  50.192  qed "Suc_le_eq";
  50.193  
  50.194  goalw thy [le_def] "!!m. m <= n ==> m <= Suc n";
  50.195 -by (blast_tac (!claset addDs [Suc_lessD]) 1);
  50.196 +by (blast_tac (claset() addDs [Suc_lessD]) 1);
  50.197  qed "le_SucI";
  50.198  Addsimps[le_SucI];
  50.199  
  50.200  bind_thm ("le_Suc", not_Suc_n_less_n RS leI);
  50.201  
  50.202  goalw thy [le_def] "!!m. m < n ==> m <= (n::nat)";
  50.203 -by (blast_tac (!claset addEs [less_asym]) 1);
  50.204 +by (blast_tac (claset() addEs [less_asym]) 1);
  50.205  qed "less_imp_le";
  50.206  
  50.207  (** Equivalence of m<=n and  m<n | m=n **)
  50.208  
  50.209  goalw thy [le_def] "!!m. m <= n ==> m < n | m=(n::nat)";
  50.210  by (cut_facts_tac [less_linear] 1);
  50.211 -by (blast_tac (!claset addEs [less_irrefl,less_asym]) 1);
  50.212 +by (blast_tac (claset() addEs [less_irrefl,less_asym]) 1);
  50.213  qed "le_imp_less_or_eq";
  50.214  
  50.215  goalw thy [le_def] "!!m. m<n | m=n ==> m <=(n::nat)";
  50.216  by (cut_facts_tac [less_linear] 1);
  50.217 -by (blast_tac (!claset addSEs [less_irrefl] addEs [less_asym]) 1);
  50.218 +by (blast_tac (claset() addSEs [less_irrefl] addEs [less_asym]) 1);
  50.219  qed "less_or_eq_imp_le";
  50.220  
  50.221  goal thy "(m <= (n::nat)) = (m < n | m=n)";
  50.222 @@ -529,34 +529,34 @@
  50.223  qed "le_eq_less_or_eq";
  50.224  
  50.225  goal thy "n <= (n::nat)";
  50.226 -by (simp_tac (!simpset addsimps [le_eq_less_or_eq]) 1);
  50.227 +by (simp_tac (simpset() addsimps [le_eq_less_or_eq]) 1);
  50.228  qed "le_refl";
  50.229  
  50.230  val prems = goal thy "!!i. [| i <= j; j < k |] ==> i < (k::nat)";
  50.231  by (dtac le_imp_less_or_eq 1);
  50.232 -by (blast_tac (!claset addIs [less_trans]) 1);
  50.233 +by (blast_tac (claset() addIs [less_trans]) 1);
  50.234  qed "le_less_trans";
  50.235  
  50.236  goal thy "!!i. [| i < j; j <= k |] ==> i < (k::nat)";
  50.237  by (dtac le_imp_less_or_eq 1);
  50.238 -by (blast_tac (!claset addIs [less_trans]) 1);
  50.239 +by (blast_tac (claset() addIs [less_trans]) 1);
  50.240  qed "less_le_trans";
  50.241  
  50.242  goal thy "!!i. [| i <= j; j <= k |] ==> i <= (k::nat)";
  50.243  by (EVERY1[dtac le_imp_less_or_eq, 
  50.244             dtac le_imp_less_or_eq,
  50.245             rtac less_or_eq_imp_le, 
  50.246 -           blast_tac (!claset addIs [less_trans])]);
  50.247 +           blast_tac (claset() addIs [less_trans])]);
  50.248  qed "le_trans";
  50.249  
  50.250  goal thy "!!m. [| m <= n; n <= m |] ==> m = (n::nat)";
  50.251  by (EVERY1[dtac le_imp_less_or_eq, 
  50.252             dtac le_imp_less_or_eq,
  50.253 -           blast_tac (!claset addEs [less_irrefl,less_asym])]);
  50.254 +           blast_tac (claset() addEs [less_irrefl,less_asym])]);
  50.255  qed "le_anti_sym";
  50.256  
  50.257  goal thy "(Suc(n) <= Suc(m)) = (n <= m)";
  50.258 -by (simp_tac (!simpset addsimps [le_eq_less_or_eq]) 1);
  50.259 +by (simp_tac (simpset() addsimps [le_eq_less_or_eq]) 1);
  50.260  qed "Suc_le_mono";
  50.261  
  50.262  AddIffs [Suc_le_mono];
  50.263 @@ -567,19 +567,19 @@
  50.264   by (rtac conjI 1);
  50.265    by (etac less_imp_le 1);
  50.266   by (etac (less_not_refl2 RS not_sym) 1);
  50.267 -by (blast_tac (!claset addSDs [le_imp_less_or_eq]) 1);
  50.268 +by (blast_tac (claset() addSDs [le_imp_less_or_eq]) 1);
  50.269  qed "nat_less_le";
  50.270  
  50.271  (** LEAST -- the least number operator **)
  50.272  
  50.273  goal thy "(! m::nat. P m --> n <= m) = (! m. m < n --> ~ P m)";
  50.274 -by (blast_tac (!claset addIs [leI] addEs [leE]) 1);
  50.275 +by (blast_tac (claset() addIs [leI] addEs [leE]) 1);
  50.276  val lemma = result();
  50.277  
  50.278  (* This is an old def of Least for nat, which is derived for compatibility *)
  50.279  goalw thy [Least_def]
  50.280    "(LEAST n::nat. P n) == (@n. P(n) & (ALL m. m < n --> ~P(m)))";
  50.281 -by (simp_tac (!simpset addsimps [lemma]) 1);
  50.282 +by (simp_tac (simpset() addsimps [lemma]) 1);
  50.283  by (rtac eq_reflection 1);
  50.284  by (rtac refl 1);
  50.285  qed "Least_nat_def";
  50.286 @@ -587,9 +587,9 @@
  50.287  val [prem1,prem2] = goalw thy [Least_nat_def]
  50.288      "[| P(k::nat);  !!x. x<k ==> ~P(x) |] ==> (LEAST x. P(x)) = k";
  50.289  by (rtac select_equality 1);
  50.290 -by (blast_tac (!claset addSIs [prem1,prem2]) 1);
  50.291 +by (blast_tac (claset() addSIs [prem1,prem2]) 1);
  50.292  by (cut_facts_tac [less_linear] 1);
  50.293 -by (blast_tac (!claset addSIs [prem1] addSDs [prem2]) 1);
  50.294 +by (blast_tac (claset() addSIs [prem1] addSDs [prem2]) 1);
  50.295  qed "Least_equality";
  50.296  
  50.297  val [prem] = goal thy "P(k::nat) ==> P(LEAST x. P(x))";
  50.298 @@ -612,7 +612,7 @@
  50.299  by (res_inst_tac [("s","n")] (Least_equality RS ssubst) 1);
  50.300  by (assume_tac 1);
  50.301  by (rtac le_refl 2);
  50.302 -by (blast_tac (!claset addIs [less_imp_le,le_trans]) 1);
  50.303 +by (blast_tac (claset() addIs [less_imp_le,le_trans]) 1);
  50.304  qed "Least_le";
  50.305  
  50.306  val [prem] = goal thy "k < (LEAST x. P(x)) ==> ~P(k::nat)";
  50.307 @@ -626,22 +626,22 @@
  50.308   (fn _ => [
  50.309          rtac select_equality 1,
  50.310          fold_goals_tac [Least_nat_def],
  50.311 -        safe_tac (!claset addSEs [LeastI]),
  50.312 +        safe_tac (claset() addSEs [LeastI]),
  50.313          rename_tac "j" 1,
  50.314          res_inst_tac [("n","j")] natE 1,
  50.315          Blast_tac 1,
  50.316 -        blast_tac (!claset addDs [Suc_less_SucD, not_less_Least]) 1,
  50.317 +        blast_tac (claset() addDs [Suc_less_SucD, not_less_Least]) 1,
  50.318          rename_tac "k n" 1,
  50.319          res_inst_tac [("n","k")] natE 1,
  50.320          Blast_tac 1,
  50.321          hyp_subst_tac 1,
  50.322          rewtac Least_nat_def,
  50.323          rtac (select_equality RS arg_cong RS sym) 1,
  50.324 -        safe_tac (!claset),
  50.325 +        safe_tac (claset()),
  50.326          dtac Suc_mono 1,
  50.327          Blast_tac 1,
  50.328          cut_facts_tac [less_linear] 1,
  50.329 -        safe_tac (!claset),
  50.330 +        safe_tac (claset()),
  50.331          atac 2,
  50.332          Blast_tac 2,
  50.333          dtac Suc_mono 1,
  50.334 @@ -669,7 +669,7 @@
  50.335    (fn _ => [etac swap2 1, etac leD 1]);
  50.336  val eqI = prove_goal thy "!!m. [| m < Suc n; n < Suc m |] ==> m=n"
  50.337    (fn _ => [etac less_SucE 1,
  50.338 -            blast_tac (!claset addSDs [Suc_less_SucD] addSEs [less_irrefl]
  50.339 +            blast_tac (claset() addSDs [Suc_less_SucD] addSEs [less_irrefl]
  50.340                                addDs [less_trans_Suc]) 1,
  50.341              assume_tac 1]);
  50.342  val leD = le_eq_less_Suc RS iffD1;
    51.1 --- a/src/HOL/Ord.ML	Mon Nov 03 12:12:10 1997 +0100
    51.2 +++ b/src/HOL/Ord.ML	Mon Nov 03 12:13:18 1997 +0100
    51.3 @@ -25,12 +25,12 @@
    51.4  AddIffs [order_refl];
    51.5  
    51.6  goal Ord.thy "~ x < (x::'a::order)";
    51.7 -by (simp_tac (!simpset addsimps [order_less_le]) 1);
    51.8 +by (simp_tac (simpset() addsimps [order_less_le]) 1);
    51.9  qed "order_less_irrefl";
   51.10  AddIffs [order_less_irrefl];
   51.11  
   51.12  goal thy "(x::'a::order) <= y = (x < y | x = y)";
   51.13 -by (simp_tac (!simpset addsimps [order_less_le]) 1);
   51.14 +by (simp_tac (simpset() addsimps [order_less_le]) 1);
   51.15  by (Blast_tac 1);
   51.16  qed "order_le_less";
   51.17  
   51.18 @@ -46,5 +46,5 @@
   51.19  by (cut_facts_tac prems 1);
   51.20  by (split_tac [expand_if] 1);
   51.21  by (Asm_simp_tac 1);
   51.22 -by (blast_tac (!claset addIs [order_antisym]) 1);
   51.23 +by (blast_tac (claset() addIs [order_antisym]) 1);
   51.24  qed "min_leastR";
    52.1 --- a/src/HOL/Power.ML	Mon Nov 03 12:12:10 1997 +0100
    52.2 +++ b/src/HOL/Power.ML	Mon Nov 03 12:13:18 1997 +0100
    52.3 @@ -14,22 +14,22 @@
    52.4  
    52.5  goal thy "!!i::nat. i ^ (j+k) = (i^j) * (i^k)";
    52.6  by (induct_tac "k" 1);
    52.7 -by (ALLGOALS (asm_simp_tac (!simpset addsimps mult_ac)));
    52.8 +by (ALLGOALS (asm_simp_tac (simpset() addsimps mult_ac)));
    52.9  qed "power_add";
   52.10  
   52.11  goal thy "!!i::nat. i ^ (j*k) = (i^j) ^ k";
   52.12  by (induct_tac "k" 1);
   52.13 -by (ALLGOALS (asm_simp_tac (!simpset addsimps [power_add])));
   52.14 +by (ALLGOALS (asm_simp_tac (simpset() addsimps [power_add])));
   52.15  qed "power_mult";
   52.16  
   52.17  goal thy "!! i. 0 < i ==> 0 < i^n";
   52.18  by (induct_tac "n" 1);
   52.19 -by (ALLGOALS (asm_simp_tac (!simpset addsimps [zero_less_mult_iff])));
   52.20 +by (ALLGOALS (asm_simp_tac (simpset() addsimps [zero_less_mult_iff])));
   52.21  qed "zero_less_power";
   52.22  
   52.23  goalw thy [dvd_def] "!!m::nat. m<=n ==> i^m dvd i^n";
   52.24  by (etac (not_less_iff_le RS iffD2 RS add_diff_inverse RS subst) 1);
   52.25 -by (asm_simp_tac (!simpset addsimps [power_add]) 1);
   52.26 +by (asm_simp_tac (simpset() addsimps [power_add]) 1);
   52.27  by (Blast_tac 1);
   52.28  qed "le_imp_power_dvd";
   52.29  
   52.30 @@ -42,9 +42,9 @@
   52.31  
   52.32  goal thy "!!n. k^j dvd n --> i<j --> k^i dvd n";
   52.33  by (induct_tac "j" 1);
   52.34 -by (ALLGOALS (simp_tac (!simpset addsimps [less_Suc_eq])));
   52.35 +by (ALLGOALS (simp_tac (simpset() addsimps [less_Suc_eq])));
   52.36  by (stac mult_commute 1);
   52.37 -by (blast_tac (!claset addSDs [dvd_mult_left]) 1);
   52.38 +by (blast_tac (claset() addSDs [dvd_mult_left]) 1);
   52.39  qed_spec_mp "power_less_dvd";
   52.40  
   52.41  
   52.42 @@ -75,7 +75,7 @@
   52.43  
   52.44  goal thy "(n choose n) = 1";
   52.45  by (induct_tac "n" 1);
   52.46 -by (ALLGOALS (asm_simp_tac (!simpset addsimps [less_imp_binomial_eq_0])));
   52.47 +by (ALLGOALS (asm_simp_tac (simpset() addsimps [less_imp_binomial_eq_0])));
   52.48  qed "binomial_n_n";
   52.49  Addsimps [binomial_n_n];
   52.50  
    53.1 --- a/src/HOL/Prod.ML	Mon Nov 03 12:12:10 1997 +0100
    53.2 +++ b/src/HOL/Prod.ML	Mon Nov 03 12:13:18 1997 +0100
    53.3 @@ -31,16 +31,16 @@
    53.4  qed "Pair_inject";
    53.5  
    53.6  goal Prod.thy "((a,b) = (a',b')) = (a=a' & b=b')";
    53.7 -by (blast_tac (!claset addSEs [Pair_inject]) 1);
    53.8 +by (blast_tac (claset() addSEs [Pair_inject]) 1);
    53.9  qed "Pair_eq";
   53.10  AddIffs [Pair_eq];
   53.11  
   53.12  goalw Prod.thy [fst_def] "fst((a,b)) = a";
   53.13 -by (blast_tac (!claset addIs [select_equality]) 1);
   53.14 +by (blast_tac (claset() addIs [select_equality]) 1);
   53.15  qed "fst_conv";
   53.16  
   53.17  goalw Prod.thy [snd_def] "snd((a,b)) = b";
   53.18 -by (blast_tac (!claset addIs [select_equality]) 1);
   53.19 +by (blast_tac (claset() addIs [select_equality]) 1);
   53.20  qed "snd_conv";
   53.21  
   53.22  goalw Prod.thy [Pair_def] "? x y. p = (x,y)";
   53.23 @@ -79,7 +79,7 @@
   53.24  end;
   53.25  
   53.26  (* Could be nice, but breaks too many proofs:
   53.27 -claset := !claset addbefore split_all_tac;
   53.28 +claset_ref() := claset() addbefore split_all_tac;
   53.29  *)
   53.30  
   53.31  (*** lemmas for splitting paired `!!'
   53.32 @@ -118,13 +118,13 @@
   53.33  ***)
   53.34  
   53.35  goal Prod.thy "(!x. P x) = (!a b. P(a,b))";
   53.36 -by (fast_tac (!claset addbefore split_all_tac) 1);
   53.37 +by (fast_tac (claset() addbefore split_all_tac) 1);
   53.38  qed "split_paired_All";
   53.39  Addsimps [split_paired_All];
   53.40  (* AddIffs is not a good idea because it makes Blast_tac loop *)
   53.41  
   53.42  goal Prod.thy "(? x. P x) = (? a b. P(a,b))";
   53.43 -by (fast_tac (!claset addbefore split_all_tac) 1);
   53.44 +by (fast_tac (claset() addbefore split_all_tac) 1);
   53.45  qed "split_paired_Ex";
   53.46  (* Addsimps [split_paired_Ex]; breaks a number of IOA proofs *)
   53.47  
   53.48 @@ -168,7 +168,7 @@
   53.49  qed "expand_split";
   53.50  
   53.51  (* could be done after split_tac has been speeded up significantly:
   53.52 -simpset := (!simpset addsplits [expand_split]);
   53.53 +simpset_ref() := (simpset() addsplits [expand_split]);
   53.54     precompute the constants involved and don't do anything unless
   53.55     the current goal contains one of those constants
   53.56  *)
   53.57 @@ -223,13 +223,13 @@
   53.58      "prod_fun (f1 o f2) (g1 o g2) = ((prod_fun f1 g1) o (prod_fun f2 g2))";
   53.59  by (rtac ext 1);
   53.60  by (res_inst_tac [("p","x")] PairE 1);
   53.61 -by (asm_simp_tac (!simpset addsimps [prod_fun,o_def]) 1);
   53.62 +by (asm_simp_tac (simpset() addsimps [prod_fun,o_def]) 1);
   53.63  qed "prod_fun_compose";
   53.64  
   53.65  goal Prod.thy "prod_fun (%x. x) (%y. y) = (%z. z)";
   53.66  by (rtac ext 1);
   53.67  by (res_inst_tac [("p","z")] PairE 1);
   53.68 -by (asm_simp_tac (!simpset addsimps [prod_fun]) 1);
   53.69 +by (asm_simp_tac (simpset() addsimps [prod_fun]) 1);
   53.70  qed "prod_fun_ident";
   53.71  
   53.72  val prems = goal Prod.thy "(a,b):r ==> (f(a),g(b)) : (prod_fun f g)``r";
   53.73 @@ -245,7 +245,7 @@
   53.74  by (res_inst_tac [("p","x")] PairE 1);
   53.75  by (resolve_tac prems 1);
   53.76  by (Blast_tac 2);
   53.77 -by (blast_tac (!claset addIs [prod_fun]) 1);
   53.78 +by (blast_tac (claset() addIs [prod_fun]) 1);
   53.79  qed "prod_fun_imageE";
   53.80  
   53.81  (*** Disjoint union of a family of sets - Sigma ***)
   53.82 @@ -290,7 +290,7 @@
   53.83  val prems = goal Prod.thy
   53.84      "[| A<=C;  !!x. x:A ==> B x <= D x |] ==> Sigma A B <= Sigma C D";
   53.85  by (cut_facts_tac prems 1);
   53.86 -by (blast_tac (!claset addIs (prems RL [subsetD])) 1);
   53.87 +by (blast_tac (claset() addIs (prems RL [subsetD])) 1);
   53.88  qed "Sigma_mono";
   53.89  
   53.90  qed_goal "Sigma_empty1" Prod.thy "Sigma {} B = {}"
    54.1 --- a/src/HOL/Quot/FRACT.ML	Mon Nov 03 12:12:10 1997 +0100
    54.2 +++ b/src/HOL/Quot/FRACT.ML	Mon Nov 03 12:13:18 1997 +0100
    54.3 @@ -14,5 +14,5 @@
    54.4  
    54.5  goalw thy [half_def] "half = <[abs_NP(n,2*n)]>";
    54.6  fr per_class_eqI;
    54.7 -by (simp_tac (!simpset addsimps [inst_NP_per]) 1);
    54.8 +by (simp_tac (simpset() addsimps [inst_NP_per]) 1);
    54.9  qed "test";
    55.1 --- a/src/HOL/Quot/PER0.ML	Mon Nov 03 12:12:10 1997 +0100
    55.2 +++ b/src/HOL/Quot/PER0.ML	Mon Nov 03 12:13:18 1997 +0100
    55.3 @@ -109,7 +109,7 @@
    55.4  by (rtac mp 1);by (assume_tac 1);
    55.5  by (Asm_simp_tac 1);
    55.6  by (rtac mp 1);by (assume_tac 1);
    55.7 -by (asm_simp_tac (!simpset addsimps [sym2refl2]) 1);
    55.8 +by (asm_simp_tac (simpset() addsimps [sym2refl2]) 1);
    55.9  qed "per_trans_fun";
   55.10  
   55.11  
    56.1 --- a/src/HOL/RelPow.ML	Mon Nov 03 12:12:10 1997 +0100
    56.2 +++ b/src/HOL/RelPow.ML	Mon Nov 03 12:13:18 1997 +0100
    56.3 @@ -35,7 +35,7 @@
    56.4    "[| (x,z) : R^(Suc n);  !!y. [| (x,y) : R^n; (y,z) : R |] ==> P |] ==> P";
    56.5  by (cut_facts_tac [major] 1);
    56.6  by (Asm_full_simp_tac  1);
    56.7 -by (blast_tac (!claset addIs [minor]) 1);
    56.8 +by (blast_tac (claset() addIs [minor]) 1);
    56.9  qed "rel_pow_Suc_E";
   56.10  
   56.11  val [p1,p2,p3] = goal RelPow.thy
   56.12 @@ -44,7 +44,7 @@
   56.13  \    |] ==> P";
   56.14  by (res_inst_tac [("n","n")] natE 1);
   56.15  by (cut_facts_tac [p1] 1);
   56.16 -by (asm_full_simp_tac (!simpset addsimps [p2]) 1);
   56.17 +by (asm_full_simp_tac (simpset() addsimps [p2]) 1);
   56.18  by (cut_facts_tac [p1] 1);
   56.19  by (Asm_full_simp_tac 1);
   56.20  by (etac compEpair 1);
   56.21 @@ -53,16 +53,16 @@
   56.22  
   56.23  goal RelPow.thy "!x z. (x,z):R^(Suc n) --> (? y. (x,y):R & (y,z):R^n)";
   56.24  by (nat_ind_tac "n" 1);
   56.25 -by (blast_tac (!claset addIs [rel_pow_0_I] addEs [rel_pow_0_E,rel_pow_Suc_E]) 1);
   56.26 -by (blast_tac (!claset addIs [rel_pow_Suc_I] addEs[rel_pow_0_E,rel_pow_Suc_E]) 1);
   56.27 +by (blast_tac (claset() addIs [rel_pow_0_I] addEs [rel_pow_0_E,rel_pow_Suc_E]) 1);
   56.28 +by (blast_tac (claset() addIs [rel_pow_Suc_I] addEs[rel_pow_0_E,rel_pow_Suc_E]) 1);
   56.29  qed_spec_mp "rel_pow_Suc_D2";
   56.30  
   56.31  
   56.32  goal RelPow.thy
   56.33  "!x y z. (x,y) : R^n & (y,z) : R --> (? w. (x,w) : R & (w,z) : R^n)";
   56.34  by (nat_ind_tac "n" 1);
   56.35 -by (fast_tac (!claset addss (!simpset)) 1);
   56.36 -by (fast_tac (!claset addss (!simpset)) 1);
   56.37 +by (fast_tac (claset() addss (simpset())) 1);
   56.38 +by (fast_tac (claset() addss (simpset())) 1);
   56.39  qed_spec_mp "rel_pow_Suc_D2'";
   56.40  
   56.41  val [p1,p2,p3] = goal RelPow.thy
   56.42 @@ -71,7 +71,7 @@
   56.43  \    |] ==> P";
   56.44  by (res_inst_tac [("n","n")] natE 1);
   56.45  by (cut_facts_tac [p1] 1);
   56.46 -by (asm_full_simp_tac (!simpset addsimps [p2]) 1);
   56.47 +by (asm_full_simp_tac (simpset() addsimps [p2]) 1);
   56.48  by (cut_facts_tac [p1] 1);
   56.49  by (Asm_full_simp_tac 1);
   56.50  by (etac compEpair 1);
   56.51 @@ -86,13 +86,13 @@
   56.52  goal RelPow.thy "!!p. p:R^* ==> p : (UN n. R^n)";
   56.53  by (split_all_tac 1);
   56.54  by (etac rtrancl_induct 1);
   56.55 -by (ALLGOALS (blast_tac (!claset addIs [rel_pow_0_I,rel_pow_Suc_I])));
   56.56 +by (ALLGOALS (blast_tac (claset() addIs [rel_pow_0_I,rel_pow_Suc_I])));
   56.57  qed "rtrancl_imp_UN_rel_pow";
   56.58  
   56.59  goal RelPow.thy "!y. (x,y):R^n --> (x,y):R^*";
   56.60  by (nat_ind_tac "n" 1);
   56.61 -by (blast_tac (!claset addIs [rtrancl_refl] addEs [rel_pow_0_E]) 1);
   56.62 -by (blast_tac (!claset addEs [rel_pow_Suc_E]
   56.63 +by (blast_tac (claset() addIs [rtrancl_refl] addEs [rel_pow_0_E]) 1);
   56.64 +by (blast_tac (claset() addEs [rel_pow_Suc_E]
   56.65                         addIs [rtrancl_into_rtrancl]) 1);
   56.66  val lemma = result() RS spec RS mp;
   56.67  
   56.68 @@ -102,7 +102,7 @@
   56.69  qed "rel_pow_imp_rtrancl";
   56.70  
   56.71  goal RelPow.thy "R^* = (UN n. R^n)";
   56.72 -by (blast_tac (!claset addIs [rtrancl_imp_UN_rel_pow, rel_pow_imp_rtrancl]) 1);
   56.73 +by (blast_tac (claset() addIs [rtrancl_imp_UN_rel_pow, rel_pow_imp_rtrancl]) 1);
   56.74  qed "rtrancl_is_UN_rel_pow";
   56.75  
   56.76  
    57.1 --- a/src/HOL/Relation.ML	Mon Nov 03 12:12:10 1997 +0100
    57.2 +++ b/src/HOL/Relation.ML	Mon Nov 03 12:13:18 1997 +0100
    57.3 @@ -178,11 +178,11 @@
    57.4      (REPEAT (eresolve_tac [asm_rl, ImageE, subsetD RS SigmaD2] 1)) ]);
    57.5  
    57.6  goal Relation.thy "R O id = R";
    57.7 -by (fast_tac (!claset addbefore split_all_tac) 1);
    57.8 +by (fast_tac (claset() addbefore split_all_tac) 1);
    57.9  qed "R_O_id";
   57.10  
   57.11  goal Relation.thy "id O R = R";
   57.12 -by (fast_tac (!claset addbefore split_all_tac) 1);
   57.13 +by (fast_tac (claset() addbefore split_all_tac) 1);
   57.14  qed "id_O_R";
   57.15  
   57.16  Addsimps [R_O_id,id_O_R];
    58.1 --- a/src/HOL/Set.ML	Mon Nov 03 12:12:10 1997 +0100
    58.2 +++ b/src/HOL/Set.ML	Mon Nov 03 12:13:18 1997 +0100
    58.3 @@ -83,12 +83,12 @@
    58.4  
    58.5  (*Trival rewrite rule*)
    58.6  goal Set.thy "(! x:A. P) = ((? x. x:A) --> P)";
    58.7 -by (simp_tac (!simpset addsimps [Ball_def]) 1);
    58.8 +by (simp_tac (simpset() addsimps [Ball_def]) 1);
    58.9  qed "ball_triv";
   58.10  
   58.11  (*Dual form for existentials*)
   58.12  goal Set.thy "(? x:A. P) = ((? x. x:A) & P)";
   58.13 -by (simp_tac (!simpset addsimps [Bex_def]) 1);
   58.14 +by (simp_tac (simpset() addsimps [Bex_def]) 1);
   58.15  qed "bex_triv";
   58.16  
   58.17  Addsimps [ball_triv, bex_triv];
   58.18 @@ -228,7 +228,7 @@
   58.19  
   58.20  qed_goal "equals0I" Set.thy "[| !!y. y:A ==> False |] ==> A={}"
   58.21   (fn [prem]=>
   58.22 -  [ (blast_tac (!claset addIs [prem RS FalseE]) 1) ]);
   58.23 +  [ (blast_tac (claset() addIs [prem RS FalseE]) 1) ]);
   58.24  
   58.25  qed_goal "equals0D" Set.thy "!!a. [| A={};  a:A |] ==> P"
   58.26   (fn _ => [ (Blast_tac 1) ]);
   58.27 @@ -414,7 +414,7 @@
   58.28  (fn _ => [Blast_tac 1]);
   58.29  
   58.30  goal Set.thy "!!a b. {a}={b} ==> a=b";
   58.31 -by (blast_tac (!claset addEs [equalityE]) 1);
   58.32 +by (blast_tac (claset() addEs [equalityE]) 1);
   58.33  qed "singleton_inject";
   58.34  
   58.35  (*Redundant? But unlike insertCI, it proves the subgoal immediately!*)
   58.36 @@ -669,7 +669,7 @@
   58.37  		  expand_if_mem1, expand_if_mem2];
   58.38  
   58.39  
   58.40 -(*Each of these has ALREADY been added to !simpset above.*)
   58.41 +(*Each of these has ALREADY been added to simpset() above.*)
   58.42  val mem_simps = [insert_iff, empty_iff, Un_iff, Int_iff, Compl_iff, Diff_iff, 
   58.43                   mem_Collect_eq, 
   58.44  		 UN_iff, UN1_iff, Union_iff, 
   58.45 @@ -677,12 +677,12 @@
   58.46  
   58.47  (*Not for Addsimps -- it can cause goals to blow up!*)
   58.48  goal Set.thy "(a : (if Q then x else y)) = ((Q --> a:x) & (~Q --> a : y))";
   58.49 -by (simp_tac (!simpset addsplits [expand_if]) 1);
   58.50 +by (simp_tac (simpset() addsplits [expand_if]) 1);
   58.51  qed "mem_if";
   58.52  
   58.53  val mksimps_pairs = ("Ball",[bspec]) :: mksimps_pairs;
   58.54  
   58.55 -simpset := !simpset addcongs [ball_cong,bex_cong]
   58.56 +simpset_ref() := simpset() addcongs [ball_cong,bex_cong]
   58.57                      setmksimps (mksimps mksimps_pairs);
   58.58  
   58.59  Addsimps[subset_UNIV, empty_subsetI, subset_refl];
    59.1 --- a/src/HOL/Sexp.ML	Mon Nov 03 12:12:10 1997 +0100
    59.2 +++ b/src/HOL/Sexp.ML	Mon Nov 03 12:13:18 1997 +0100
    59.3 @@ -11,15 +11,15 @@
    59.4  (** sexp_case **)
    59.5  
    59.6  goalw Sexp.thy [sexp_case_def] "sexp_case c d e (Leaf a) = c(a)";
    59.7 -by (blast_tac (!claset addSIs [select_equality]) 1);
    59.8 +by (blast_tac (claset() addSIs [select_equality]) 1);
    59.9  qed "sexp_case_Leaf";
   59.10  
   59.11  goalw Sexp.thy [sexp_case_def] "sexp_case c d e (Numb k) = d(k)";
   59.12 -by (blast_tac (!claset addSIs [select_equality]) 1);
   59.13 +by (blast_tac (claset() addSIs [select_equality]) 1);
   59.14  qed "sexp_case_Numb";
   59.15  
   59.16  goalw Sexp.thy [sexp_case_def] "sexp_case c d e (M$N) = e M N";
   59.17 -by (blast_tac (!claset addSIs [select_equality]) 1);
   59.18 +by (blast_tac (claset() addSIs [select_equality]) 1);
   59.19  qed "sexp_case_Scons";
   59.20  
   59.21  
   59.22 @@ -90,7 +90,7 @@
   59.23  goal Sexp.thy "wf(pred_sexp)";
   59.24  by (rtac (pred_sexp_subset_Sigma RS wfI) 1);
   59.25  by (etac sexp.induct 1);
   59.26 -by (ALLGOALS (blast_tac (!claset addSEs [allE, pred_sexpE])));
   59.27 +by (ALLGOALS (blast_tac (claset() addSEs [allE, pred_sexpE])));
   59.28  qed "wf_pred_sexp";
   59.29  
   59.30  
   59.31 @@ -118,6 +118,6 @@
   59.32  goal Sexp.thy "!!M. [| M: sexp;  N: sexp |] ==> \
   59.33  \    sexp_rec (M$N) c d h = h M N (sexp_rec M c d h) (sexp_rec N c d h)";
   59.34  by (rtac (sexp_rec_unfold RS trans) 1);
   59.35 -by (asm_simp_tac (!simpset addsimps [sexp_case_Scons,pred_sexpI1,pred_sexpI2])
   59.36 +by (asm_simp_tac (simpset() addsimps [sexp_case_Scons,pred_sexpI1,pred_sexpI2])
   59.37      1);
   59.38  qed "sexp_rec_Scons";
    60.1 --- a/src/HOL/Subst/Subst.ML	Mon Nov 03 12:12:10 1997 +0100
    60.2 +++ b/src/HOL/Subst/Subst.ML	Mon Nov 03 12:13:18 1997 +0100
    60.3 @@ -41,7 +41,7 @@
    60.4  qed "agreement";
    60.5  
    60.6  goal Subst.thy   "~ v: vars_of(t) --> t <| (v,u)#s = t <| s";
    60.7 -by (simp_tac (!simpset addsimps [agreement] addsplits [expand_if]) 1);
    60.8 +by (simp_tac (simpset() addsimps [agreement] addsplits [expand_if]) 1);
    60.9  qed_spec_mp"repl_invariance";
   60.10  
   60.11  val asms = goal Subst.thy 
   60.12 @@ -61,7 +61,7 @@
   60.13  local fun prove s = prove_goal Subst.thy s
   60.14                    (fn prems => [cut_facts_tac prems 1,
   60.15                                  REPEAT (etac rev_mp 1),
   60.16 -                                simp_tac (!simpset addsimps [subst_eq_iff]) 1])
   60.17 +                                simp_tac (simpset() addsimps [subst_eq_iff]) 1])
   60.18  in 
   60.19    val subst_refl      = prove "r =$= r";
   60.20    val subst_sym       = prove "r =$= s ==> s =$= r";
   60.21 @@ -111,31 +111,31 @@
   60.22  by (induct_tac "t" 1);
   60.23  by (ALLGOALS Asm_simp_tac);
   60.24  by (alist_ind_tac "r" 1);
   60.25 -by (ALLGOALS (asm_simp_tac (!simpset addsplits [expand_if])));
   60.26 +by (ALLGOALS (asm_simp_tac (simpset() addsplits [expand_if])));
   60.27  qed "subst_comp";
   60.28  
   60.29  Addsimps [subst_comp];
   60.30  
   60.31  goal Subst.thy "(q <> r) <> s =$= q <> (r <> s)";
   60.32 -by (simp_tac (!simpset addsimps [subst_eq_iff]) 1);
   60.33 +by (simp_tac (simpset() addsimps [subst_eq_iff]) 1);
   60.34  qed "comp_assoc";
   60.35  
   60.36  goal Subst.thy "!!s. [| theta =$= theta1; sigma =$= sigma1|] ==> \
   60.37               \       (theta <> sigma) =$= (theta1 <> sigma1)";
   60.38 -by (asm_full_simp_tac (!simpset addsimps [subst_eq_def]) 1);
   60.39 +by (asm_full_simp_tac (simpset() addsimps [subst_eq_def]) 1);
   60.40  qed "subst_cong";
   60.41  
   60.42  
   60.43  goal Subst.thy "(w, Var(w) <| s) # s =$= s"; 
   60.44 -by (simp_tac (!simpset addsimps [subst_eq_iff]) 1);
   60.45 +by (simp_tac (simpset() addsimps [subst_eq_iff]) 1);
   60.46  by (rtac allI 1);
   60.47  by (induct_tac "t" 1);
   60.48 -by (ALLGOALS (asm_full_simp_tac (!simpset addsplits [expand_if])));
   60.49 +by (ALLGOALS (asm_full_simp_tac (simpset() addsplits [expand_if])));
   60.50  qed "Cons_trivial";
   60.51  
   60.52  
   60.53  goal Subst.thy "!!s. q <> r =$= s ==>  t <| q <| r = t <| s";
   60.54 -by (asm_full_simp_tac (!simpset addsimps [subst_eq_iff]) 1);
   60.55 +by (asm_full_simp_tac (simpset() addsimps [subst_eq_iff]) 1);
   60.56  qed "comp_subst_subst";
   60.57  
   60.58  
   60.59 @@ -143,7 +143,7 @@
   60.60  
   60.61  goal Subst.thy  "(v : sdom(s)) = (Var(v) <| s ~= Var(v))";
   60.62  by (alist_ind_tac "s" 1);
   60.63 -by (ALLGOALS (asm_simp_tac (!simpset addsplits [expand_if])));
   60.64 +by (ALLGOALS (asm_simp_tac (simpset() addsplits [expand_if])));
   60.65  by (Blast_tac 1);
   60.66  qed "sdom_iff";
   60.67  
   60.68 @@ -160,50 +160,50 @@
   60.69  goal Subst.thy  "(t <| s = t) = (sdom(s) Int vars_of(t) = {})";
   60.70  by (induct_tac "t" 1);
   60.71  by (ALLGOALS
   60.72 -    (asm_full_simp_tac (!simpset addsimps [empty_iff_all_not, sdom_iff])));
   60.73 +    (asm_full_simp_tac (simpset() addsimps [empty_iff_all_not, sdom_iff])));
   60.74  by (ALLGOALS Blast_tac);
   60.75  qed "invariance";
   60.76  
   60.77  goal Subst.thy  "v : sdom(s) -->  v : vars_of(t <| s) --> v : srange(s)";
   60.78  by (induct_tac "t" 1);
   60.79  by (case_tac "a : sdom(s)" 1);
   60.80 -by (ALLGOALS (asm_full_simp_tac (!simpset addsimps [sdom_iff, srange_iff])));
   60.81 +by (ALLGOALS (asm_full_simp_tac (simpset() addsimps [sdom_iff, srange_iff])));
   60.82  by (ALLGOALS Blast_tac);
   60.83  qed_spec_mp "Var_in_srange";
   60.84  
   60.85  goal Subst.thy 
   60.86       "!!v. [| v : sdom(s); v ~: srange(s) |] ==>  v ~: vars_of(t <| s)";
   60.87 -by (blast_tac (!claset addIs [Var_in_srange]) 1);
   60.88 +by (blast_tac (claset() addIs [Var_in_srange]) 1);
   60.89  qed "Var_elim";
   60.90  
   60.91  goal Subst.thy  "v : vars_of(t <| s) --> v : srange(s) | v : vars_of(t)";
   60.92  by (induct_tac "t" 1);
   60.93 -by (ALLGOALS (asm_full_simp_tac (!simpset addsimps [sdom_iff,srange_iff])));
   60.94 +by (ALLGOALS (asm_full_simp_tac (simpset() addsimps [sdom_iff,srange_iff])));
   60.95  by (Blast_tac 2);
   60.96 -by (safe_tac (!claset addSIs [exI, vars_var_iff RS iffD1 RS sym]));
   60.97 +by (safe_tac (claset() addSIs [exI, vars_var_iff RS iffD1 RS sym]));
   60.98  by (Auto_tac());
   60.99  qed_spec_mp "Var_intro";
  60.100  
  60.101  goal Subst.thy
  60.102      "v : srange(s) --> (? w. w : sdom(s) & v : vars_of(Var(w) <| s))";
  60.103 -by (simp_tac (!simpset addsimps [srange_iff]) 1);
  60.104 +by (simp_tac (simpset() addsimps [srange_iff]) 1);
  60.105  qed_spec_mp "srangeD";
  60.106  
  60.107  goal Subst.thy
  60.108     "sdom(s) Int srange(s) = {} = (! t. sdom(s) Int vars_of(t <| s) = {})";
  60.109 -by (simp_tac (!simpset addsimps [empty_iff_all_not]) 1);
  60.110 -by (fast_tac (!claset addIs [Var_in_srange] addDs [srangeD]) 1);
  60.111 +by (simp_tac (simpset() addsimps [empty_iff_all_not]) 1);
  60.112 +by (fast_tac (claset() addIs [Var_in_srange] addDs [srangeD]) 1);
  60.113  qed "dom_range_disjoint";
  60.114  
  60.115  goal Subst.thy "!!u. ~ u <| s = u ==> (? x. x : sdom(s))";
  60.116 -by (full_simp_tac (!simpset addsimps [empty_iff_all_not, invariance]) 1);
  60.117 +by (full_simp_tac (simpset() addsimps [empty_iff_all_not, invariance]) 1);
  60.118  by (Blast_tac 1);
  60.119  qed "subst_not_empty";
  60.120  
  60.121  
  60.122  goal Subst.thy "(M <| [(x, Var x)]) = M";
  60.123  by (induct_tac "M" 1);
  60.124 -by (ALLGOALS (asm_simp_tac (!simpset addsplits [expand_if])));
  60.125 +by (ALLGOALS (asm_simp_tac (simpset() addsplits [expand_if])));
  60.126  qed "id_subst_lemma";
  60.127  
  60.128  Addsimps [id_subst_lemma];
    61.1 --- a/src/HOL/Subst/Unifier.ML	Mon Nov 03 12:12:10 1997 +0100
    61.2 +++ b/src/HOL/Subst/Unifier.ML	Mon Nov 03 12:13:18 1997 +0100
    61.3 @@ -17,7 +17,7 @@
    61.4  
    61.5  goal Unifier.thy
    61.6      "Unifier s (Comb t u) (Comb v w) = (Unifier s t v & Unifier s u w)";
    61.7 -by (simp_tac (!simpset addsimps [Unifier_def]) 1);
    61.8 +by (simp_tac (simpset() addsimps [Unifier_def]) 1);
    61.9  qed "Unifier_Comb";
   61.10  
   61.11  AddIffs [Unifier_Comb];
   61.12 @@ -25,7 +25,7 @@
   61.13  goal Unifier.thy
   61.14    "!!v. [| v ~: vars_of t; v ~: vars_of u; Unifier s t u |] ==> \
   61.15  \       Unifier ((v,r)#s) t u";
   61.16 -by (asm_full_simp_tac (!simpset addsimps [Unifier_def, repl_invariance]) 1);
   61.17 +by (asm_full_simp_tac (simpset() addsimps [Unifier_def, repl_invariance]) 1);
   61.18  qed "Cons_Unifier";
   61.19  
   61.20  
   61.21 @@ -34,12 +34,12 @@
   61.22   *---------------------------------------------------------------------------*)
   61.23  
   61.24  goalw Unifier.thy unify_defs "MGUnifier s t u = MGUnifier s u t";
   61.25 -by (blast_tac (!claset addIs [sym]) 1);
   61.26 +by (blast_tac (claset() addIs [sym]) 1);
   61.27  qed "mgu_sym";
   61.28  
   61.29  
   61.30  goal Unifier.thy  "[] >> s";
   61.31 -by (simp_tac (!simpset addsimps [MoreGeneral_def]) 1);
   61.32 +by (simp_tac (simpset() addsimps [MoreGeneral_def]) 1);
   61.33  by (Blast_tac 1);
   61.34  qed "MoreGen_Nil";
   61.35  
   61.36 @@ -47,19 +47,19 @@
   61.37  
   61.38  goalw Unifier.thy unify_defs
   61.39      "MGUnifier s t u = (ALL r. Unifier r t u = s >> r)";
   61.40 -by (auto_tac (!claset addIs [ssubst_subst2, subst_comp_Nil], !simpset));
   61.41 +by (auto_tac (claset() addIs [ssubst_subst2, subst_comp_Nil], simpset()));
   61.42  qed "MGU_iff";
   61.43  
   61.44  
   61.45  goal Unifier.thy
   61.46       "!!v. ~ Var v <: t ==> MGUnifier [(v,t)] (Var v) t";
   61.47 -by (simp_tac(!simpset addsimps [MGU_iff, Unifier_def, MoreGeneral_def]
   61.48 +by (simp_tac(simpset() addsimps [MGU_iff, Unifier_def, MoreGeneral_def]
   61.49  	              delsimps [subst_Var]) 1);
   61.50  by Safe_tac;
   61.51  by (rtac exI 1);
   61.52  by (etac subst 1 THEN rtac (Cons_trivial RS subst_sym) 1);
   61.53  by (etac ssubst_subst2 1);
   61.54 -by (asm_simp_tac (!simpset addsimps [Var_not_occs]) 1);
   61.55 +by (asm_simp_tac (simpset() addsimps [Var_not_occs]) 1);
   61.56  qed "MGUnifier_Var";
   61.57  
   61.58  AddSIs [MGUnifier_Var];
   61.59 @@ -76,12 +76,12 @@
   61.60  AddIffs [Idem_Nil];
   61.61  
   61.62  goalw Unifier.thy [Idem_def] "Idem(s) = (sdom(s) Int srange(s) = {})";
   61.63 -by (simp_tac (!simpset addsimps [subst_eq_iff, invariance, 
   61.64 +by (simp_tac (simpset() addsimps [subst_eq_iff, invariance, 
   61.65  				 dom_range_disjoint]) 1);
   61.66  qed "Idem_iff";
   61.67  
   61.68  goal Unifier.thy "~ (Var(v) <: t) --> Idem([(v,t)])";
   61.69 -by (simp_tac (!simpset addsimps [vars_iff_occseq, Idem_iff, srange_iff, 
   61.70 +by (simp_tac (simpset() addsimps [vars_iff_occseq, Idem_iff, srange_iff, 
   61.71  				 empty_iff_all_not]
   61.72                         addsplits [expand_if]) 1);
   61.73  by (Blast_tac 1);
   61.74 @@ -92,7 +92,7 @@
   61.75  goalw Unifier.thy [Idem_def]
   61.76    "!!r. [| Idem(r); Unifier s (t<|r) (u<|r) |]       \
   61.77  \       ==> Unifier (r <> s) (t <| r) (u <| r)";
   61.78 -by (asm_full_simp_tac (!simpset addsimps [Unifier_def, comp_subst_subst]) 1);
   61.79 +by (asm_full_simp_tac (simpset() addsimps [Unifier_def, comp_subst_subst]) 1);
   61.80  qed "Unifier_Idem_subst";
   61.81  
   61.82  val [idemr,unifier,minor] = goal Unifier.thy
   61.83 @@ -101,5 +101,5 @@
   61.84  \     |] ==> Idem(r <> s)";
   61.85  by (cut_facts_tac [idemr,
   61.86                     unifier RS (idemr RS Unifier_Idem_subst RS minor)] 1);
   61.87 -by (asm_full_simp_tac (!simpset addsimps [Idem_def, subst_eq_iff]) 1);
   61.88 +by (asm_full_simp_tac (simpset() addsimps [Idem_def, subst_eq_iff]) 1);
   61.89  qed "Idem_comp";
    62.1 --- a/src/HOL/Subst/Unify.ML	Mon Nov 03 12:12:10 1997 +0100
    62.2 +++ b/src/HOL/Subst/Unify.ML	Mon Nov 03 12:13:18 1997 +0100
    62.3 @@ -40,16 +40,16 @@
    62.4   *---------------------------------------------------------------------------*)
    62.5  Tfl.tgoalw Unify.thy [] unify.rules;
    62.6  (* Wellfoundedness of unifyRel *)
    62.7 -by (simp_tac (!simpset addsimps [unifyRel_def,
    62.8 +by (simp_tac (simpset() addsimps [unifyRel_def,
    62.9  				 wf_inv_image, wf_lex_prod, wf_finite_psubset,
   62.10  				 wf_measure]) 1);
   62.11  (* TC *)
   62.12  by Safe_tac;
   62.13 -by (simp_tac (!simpset addsimps [finite_psubset_def, finite_vars_of,
   62.14 +by (simp_tac (simpset() addsimps [finite_psubset_def, finite_vars_of,
   62.15  				 lex_prod_def, measure_def, inv_image_def]) 1);
   62.16  by (rtac (monotone_vars_of RS (subset_iff_psubset_eq RS iffD1) RS disjE) 1);
   62.17  by (Blast_tac 1);
   62.18 -by (asm_simp_tac (!simpset addsimps [less_eq, less_add_Suc1]) 1);
   62.19 +by (asm_simp_tac (simpset() addsimps [less_eq, less_add_Suc1]) 1);
   62.20  qed "tc0";
   62.21  
   62.22  
   62.23 @@ -72,7 +72,7 @@
   62.24  goalw Unify.thy [unifyRel_def,lex_prod_def, inv_image_def]
   62.25       "!!x. ((X,Y), (Comb A (Comb B C), Comb D (Comb E F))) : unifyRel  ==> \
   62.26      \      ((X,Y), (Comb (Comb A B) C, Comb (Comb D E) F)) : unifyRel";
   62.27 -by (asm_full_simp_tac (!simpset addsimps [measure_def, 
   62.28 +by (asm_full_simp_tac (simpset() addsimps [measure_def, 
   62.29                            less_eq, inv_image_def,add_assoc]) 1);
   62.30  by (subgoal_tac "(vars_of A Un vars_of B Un vars_of C Un \
   62.31                  \  (vars_of D Un vars_of E Un vars_of F)) = \
   62.32 @@ -97,30 +97,30 @@
   62.33  by (case_tac "x: (vars_of N1 Un vars_of N2)" 1);
   62.34  (*uterm_less case*)
   62.35  by (asm_simp_tac
   62.36 -    (!simpset addsimps [less_eq, unifyRel_def, lex_prod_def,
   62.37 +    (simpset() addsimps [less_eq, unifyRel_def, lex_prod_def,
   62.38  			measure_def, inv_image_def]) 1);
   62.39  by (Blast_tac 1);
   62.40  (*finite_psubset case*)
   62.41  by (simp_tac
   62.42 -    (!simpset addsimps [unifyRel_def, lex_prod_def,
   62.43 +    (simpset() addsimps [unifyRel_def, lex_prod_def,
   62.44  			measure_def, inv_image_def]) 1);
   62.45 -by (simp_tac (!simpset addsimps [finite_psubset_def, finite_vars_of,
   62.46 +by (simp_tac (simpset() addsimps [finite_psubset_def, finite_vars_of,
   62.47  				 psubset_def, set_eq_subset]) 1);
   62.48  by (Blast_tac 1);
   62.49  (** LEVEL 9 **)
   62.50  (*Final case, also finite_psubset*)
   62.51  by (simp_tac
   62.52 -    (!simpset addsimps [finite_vars_of, unifyRel_def, finite_psubset_def,
   62.53 +    (simpset() addsimps [finite_vars_of, unifyRel_def, finite_psubset_def,
   62.54  			lex_prod_def, measure_def, inv_image_def]) 1);
   62.55  by (cut_inst_tac [("s","[(x,M)]"), ("v", "x"), ("t","N2")] Var_elim 1);
   62.56  by (cut_inst_tac [("s","[(x,M)]"), ("v", "x"), ("t","N1")] Var_elim 3);
   62.57 -by (ALLGOALS (asm_simp_tac(!simpset addsimps [srange_iff, vars_iff_occseq])));
   62.58 +by (ALLGOALS (asm_simp_tac(simpset() addsimps [srange_iff, vars_iff_occseq])));
   62.59  by (REPEAT_FIRST (resolve_tac [conjI, disjI1, psubsetI]));
   62.60  by (ALLGOALS (asm_full_simp_tac 
   62.61 -	      (!simpset addsimps [srange_iff, set_eq_subset]))); 
   62.62 +	      (simpset() addsimps [srange_iff, set_eq_subset]))); 
   62.63  by (ALLGOALS
   62.64 -    (fast_tac (!claset addEs [Var_intro RS disjE]
   62.65 -	               addss (!simpset addsimps [srange_iff]))));
   62.66 +    (fast_tac (claset() addEs [Var_intro RS disjE]
   62.67 +	               addss (simpset() addsimps [srange_iff]))));
   62.68  qed "var_elimR";
   62.69  
   62.70  
   62.71 @@ -153,15 +153,15 @@
   62.72  (* Apply induction *)
   62.73  by (res_inst_tac [("u","M1"),("v","M2")] unifyInduct0 1);
   62.74  by (ALLGOALS 
   62.75 -    (asm_simp_tac (!simpset addsimps (var_elimR::unifyRules0)
   62.76 +    (asm_simp_tac (simpset() addsimps (var_elimR::unifyRules0)
   62.77  			    addsplits [expand_if])));
   62.78  (*Const-Const case*)
   62.79  by (simp_tac
   62.80 -    (!simpset addsimps [unifyRel_def, lex_prod_def, measure_def,
   62.81 +    (simpset() addsimps [unifyRel_def, lex_prod_def, measure_def,
   62.82  			inv_image_def, less_eq]) 1);
   62.83  (** LEVEL 7 **)
   62.84  (*Comb-Comb case*)
   62.85 -by (asm_simp_tac (!simpset addsplits [split_option_case]) 1);
   62.86 +by (asm_simp_tac (simpset() addsplits [split_option_case]) 1);
   62.87  by (strip_tac 1);
   62.88  by (rtac (trans_unifyRel RS transD) 1);
   62.89  by (Blast_tac 1);
   62.90 @@ -183,7 +183,7 @@
   62.91  \         | Some theta => (case unify(N1 <| theta, N2 <| theta)        \
   62.92  \                            of None => None    \
   62.93  \                             | Some sigma => Some (theta <> sigma)))";
   62.94 -by (asm_simp_tac (!simpset addsimps (unify_TC::unifyRules0)
   62.95 +by (asm_simp_tac (simpset() addsimps (unify_TC::unifyRules0)
   62.96  			   addsplits [split_option_case]) 1);
   62.97  qed "unifyCombComb";
   62.98  
   62.99 @@ -194,7 +194,7 @@
  62.100  
  62.101  bind_thm ("unifyInduct",
  62.102  	  rule_by_tactic
  62.103 -	     (ALLGOALS (full_simp_tac (!simpset addsimps [unify_TC])))
  62.104 +	     (ALLGOALS (full_simp_tac (simpset() addsimps [unify_TC])))
  62.105  	     unifyInduct0);
  62.106  
  62.107  
  62.108 @@ -207,33 +207,33 @@
  62.109  
  62.110  goal Unify.thy "!theta. unify(M,N) = Some theta --> MGUnifier theta M N";
  62.111  by (res_inst_tac [("u","M"),("v","N")] unifyInduct 1);
  62.112 -by (ALLGOALS (asm_simp_tac (!simpset addsplits [expand_if])));
  62.113 +by (ALLGOALS (asm_simp_tac (simpset() addsplits [expand_if])));
  62.114  (*Const-Const case*)
  62.115 -by (simp_tac (!simpset addsimps [MGUnifier_def,Unifier_def]) 1);
  62.116 +by (simp_tac (simpset() addsimps [MGUnifier_def,Unifier_def]) 1);
  62.117  (*Const-Var case*)
  62.118  by (stac mgu_sym 1);
  62.119 -by (simp_tac (!simpset addsimps [MGUnifier_Var]) 1);
  62.120 +by (simp_tac (simpset() addsimps [MGUnifier_Var]) 1);
  62.121  (*Var-M case*)
  62.122 -by (simp_tac (!simpset addsimps [MGUnifier_Var]) 1);
  62.123 +by (simp_tac (simpset() addsimps [MGUnifier_Var]) 1);
  62.124  (*Comb-Var case*)
  62.125  by (stac mgu_sym 1);
  62.126 -by (simp_tac (!simpset addsimps [MGUnifier_Var]) 1);
  62.127 +by (simp_tac (simpset() addsimps [MGUnifier_Var]) 1);
  62.128  (** LEVEL 8 **)
  62.129  (*Comb-Comb case*)
  62.130 -by (asm_simp_tac (!simpset addsplits [split_option_case]) 1);
  62.131 +by (asm_simp_tac (simpset() addsplits [split_option_case]) 1);
  62.132  by (strip_tac 1);
  62.133  by (rotate_tac ~2 1);
  62.134  by (asm_full_simp_tac 
  62.135 -    (!simpset addsimps [MGUnifier_def, Unifier_def, MoreGeneral_def]) 1);
  62.136 -by (safe_tac (!claset) THEN rename_tac "theta sigma gamma" 1);
  62.137 +    (simpset() addsimps [MGUnifier_def, Unifier_def, MoreGeneral_def]) 1);
  62.138 +by (safe_tac (claset()) THEN rename_tac "theta sigma gamma" 1);
  62.139  by (eres_inst_tac [("x","gamma")] allE 1 THEN mp_tac 1);
  62.140  by (etac exE 1 THEN rename_tac "delta" 1);
  62.141  by (eres_inst_tac [("x","delta")] allE 1);
  62.142  by (subgoal_tac "N1 <| theta <| delta = N2 <| theta <| delta" 1);
  62.143  (*Proving the subgoal*)
  62.144 -by (full_simp_tac (!simpset addsimps [subst_eq_iff]) 2
  62.145 -    THEN blast_tac (!claset addIs [trans,sym] delrules [impCE]) 2);
  62.146 -by (blast_tac (!claset addIs [subst_trans, subst_cong, 
  62.147 +by (full_simp_tac (simpset() addsimps [subst_eq_iff]) 2
  62.148 +    THEN blast_tac (claset() addIs [trans,sym] delrules [impCE]) 2);
  62.149 +by (blast_tac (claset() addIs [subst_trans, subst_cong, 
  62.150  			      comp_assoc RS subst_sym]) 1);
  62.151  qed_spec_mp "unify_gives_MGU";
  62.152  
  62.153 @@ -245,16 +245,16 @@
  62.154  by (res_inst_tac [("u","M"),("v","N")] unifyInduct 1);
  62.155  by (ALLGOALS 
  62.156      (asm_simp_tac 
  62.157 -       (!simpset addsimps [Var_Idem] 
  62.158 +       (simpset() addsimps [Var_Idem] 
  62.159  	         addsplits [expand_if,split_option_case])));
  62.160  (*Comb-Comb case*)
  62.161 -by (safe_tac (!claset));
  62.162 +by (safe_tac (claset()));
  62.163  by (REPEAT (dtac spec 1 THEN mp_tac 1));
  62.164 -by (safe_tac (!claset addSDs [rewrite_rule [MGUnifier_def] unify_gives_MGU]));
  62.165 +by (safe_tac (claset() addSDs [rewrite_rule [MGUnifier_def] unify_gives_MGU]));
  62.166  by (rtac Idem_comp 1);
  62.167  by (atac 1);
  62.168  by (atac 1);
  62.169 -by (best_tac (!claset addss (!simpset addsimps 
  62.170 +by (best_tac (claset() addss (simpset() addsimps 
  62.171  			     [MoreGeneral_def, subst_eq_iff, Idem_def])) 1);
  62.172  qed_spec_mp "unify_gives_Idem";
  62.173  
    63.1 --- a/src/HOL/Sum.ML	Mon Nov 03 12:12:10 1997 +0100
    63.2 +++ b/src/HOL/Sum.ML	Mon Nov 03 12:13:18 1997 +0100
    63.3 @@ -78,11 +78,11 @@
    63.4  val Inr_inject = inj_Inr RS injD;
    63.5  
    63.6  goal Sum.thy "(Inl(x)=Inl(y)) = (x=y)";
    63.7 -by (blast_tac (!claset addSDs [Inl_inject]) 1);
    63.8 +by (blast_tac (claset() addSDs [Inl_inject]) 1);
    63.9  qed "Inl_eq";
   63.10  
   63.11  goal Sum.thy "(Inr(x)=Inr(y)) = (x=y)";
   63.12 -by (blast_tac (!claset addSDs [Inr_inject]) 1);
   63.13 +by (blast_tac (claset() addSDs [Inr_inject]) 1);
   63.14  qed "Inr_eq";
   63.15  
   63.16  AddIffs [Inl_eq, Inr_eq];
   63.17 @@ -119,11 +119,11 @@
   63.18  (** sum_case -- the selection operator for sums **)
   63.19  
   63.20  goalw Sum.thy [sum_case_def] "sum_case f g (Inl x) = f(x)";
   63.21 -by (blast_tac (!claset addIs [select_equality]) 1);
   63.22 +by (blast_tac (claset() addIs [select_equality]) 1);
   63.23  qed "sum_case_Inl";
   63.24  
   63.25  goalw Sum.thy [sum_case_def] "sum_case f g (Inr x) = g(x)";
   63.26 -by (blast_tac (!claset addIs [select_equality]) 1);
   63.27 +by (blast_tac (claset() addIs [select_equality]) 1);
   63.28  qed "sum_case_Inr";
   63.29  
   63.30  Addsimps [sum_case_Inl, sum_case_Inr];
    64.1 --- a/src/HOL/TLA/Action.ML	Mon Nov 03 12:12:10 1997 +0100
    64.2 +++ b/src/HOL/TLA/Action.ML	Mon Nov 03 12:13:18 1997 +0100
    64.3 @@ -56,7 +56,7 @@
    64.4                    handle _ => int_unlift th)
    64.5         | _ => th);
    64.6  
    64.7 -simpset := !simpset setmksimps ((mksimps mksimps_pairs) o maybe_unlift);
    64.8 +simpset_ref() := simpset() setmksimps ((mksimps mksimps_pairs) o maybe_unlift);
    64.9  
   64.10  (* make act_rews be always active -- intensional_rews has been added before *)
   64.11  Addsimps act_rews;
   64.12 @@ -75,7 +75,7 @@
   64.13  		      ORELSE' (eresolve_tac (elims @ [conjE,disjE,exE_prop]))))
   64.14           i);
   64.15  (* default version without additional plug-in rules *)
   64.16 -fun Action_simp_tac i = (action_simp_tac (!simpset) [] [] i);
   64.17 +fun Action_simp_tac i = (action_simp_tac (simpset()) [] [] i);
   64.18  
   64.19  
   64.20  (* ==================== Simplification of abstractions ==================== *)
    65.1 --- a/src/HOL/TLA/Buffer/Buffer.ML	Mon Nov 03 12:12:10 1997 +0100
    65.2 +++ b/src/HOL/TLA/Buffer/Buffer.ML	Mon Nov 03 12:13:18 1997 +0100
    65.3 @@ -12,7 +12,7 @@
    65.4  Addsimps [tl_append2];
    65.5  
    65.6  goal List.thy "xs ~= [] --> tl xs ~= xs";
    65.7 -by (auto_tac (!claset, !simpset addsimps [neq_Nil_conv]));
    65.8 +by (auto_tac (claset(), simpset() addsimps [neq_Nil_conv]));
    65.9  qed_spec_mp "tl_not_self";
   65.10  Addsimps [tl_not_self];
   65.11  
   65.12 @@ -22,17 +22,17 @@
   65.13  
   65.14  (* Dequeue is visible *)
   65.15  goal Buffer.thy "<Deq ic q oc>_<ic,q,oc> .= Deq ic q oc";
   65.16 -by (auto_tac (!claset, !simpset addsimps [angle_def,Deq_def]));
   65.17 +by (auto_tac (claset(), simpset() addsimps [angle_def,Deq_def]));
   65.18  qed "Deq_visible";
   65.19  
   65.20  (* Enabling condition for dequeue -- NOT NEEDED *)
   65.21  goalw Buffer.thy [temp_rewrite Deq_visible]
   65.22     "!!q. base_var <ic,q,oc> ==> $Enabled (<Deq ic q oc>_<ic,q,oc>) .= ($q .~= .[])";
   65.23 -by (auto_tac (!claset addSEs [base_enabled,enabledE], !simpset addsimps [Deq_def]));
   65.24 +by (auto_tac (claset() addSEs [base_enabled,enabledE], simpset() addsimps [Deq_def]));
   65.25  qed "Deq_enabled";
   65.26  
   65.27  (* For the left-to-right implication, we don't need the base variable stuff *)
   65.28  goalw Buffer.thy [temp_rewrite Deq_visible] 
   65.29     "$Enabled (<Deq ic q oc>_<ic,q,oc>) .-> ($q .~= .[])";
   65.30 -by (auto_tac (!claset addSEs [enabledE], !simpset addsimps [Deq_def]));
   65.31 +by (auto_tac (claset() addSEs [enabledE], simpset() addsimps [Deq_def]));
   65.32  qed "Deq_enabledE";
    66.1 --- a/src/HOL/TLA/Buffer/DBuffer.ML	Mon Nov 03 12:12:10 1997 +0100
    66.2 +++ b/src/HOL/TLA/Buffer/DBuffer.ML	Mon Nov 03 12:13:18 1997 +0100
    66.3 @@ -6,7 +6,7 @@
    66.4      Double FIFO buffer implements simple FIFO buffer.
    66.5  *)
    66.6  
    66.7 -val db_css = (!claset, !simpset addsimps [qc_def]);
    66.8 +val db_css = (claset(), simpset() addsimps [qc_def]);
    66.9  Addsimps [qc_def];
   66.10  
   66.11  val db_defs = [BInit_def, Enq_def, Deq_def, Next_def, IBuffer_def, Buffer_def,
   66.12 @@ -23,7 +23,7 @@
   66.13  goal DBuffer.thy "[DBNext]_<inp,mid,out,q1,q2> .-> [Next inp qc out]_<inp,qc,out>";
   66.14  by (rtac square_simulation 1);
   66.15  by (Action_simp_tac 1);
   66.16 -by (action_simp_tac (!simpset addsimps hd_append::db_defs) [] [] 1);
   66.17 +by (action_simp_tac (simpset() addsimps hd_append::db_defs) [] [] 1);
   66.18  qed "DB_step_simulation";
   66.19  
   66.20  
   66.21 @@ -77,9 +77,9 @@
   66.22    "[][DBNext]_<inp,mid,out,q1,q2> .& WF(DBPass)_<inp,mid,out,q1,q2> \
   66.23  \  .-> ($qc .~= .[] .& $q2 .= .[] ~> $q2 .~= .[])";
   66.24  by (rtac WF1 1);
   66.25 -by (action_simp_tac (!simpset addsimps square_def::db_defs) [] [] 1);
   66.26 -by (action_simp_tac (!simpset addsimps [angle_def,DBPass_def]) [] [] 1);
   66.27 -by (action_simp_tac (!simpset addsimps [DBPass_enabled]) [] [] 1);
   66.28 +by (action_simp_tac (simpset() addsimps square_def::db_defs) [] [] 1);
   66.29 +by (action_simp_tac (simpset() addsimps [angle_def,DBPass_def]) [] [] 1);
   66.30 +by (action_simp_tac (simpset() addsimps [DBPass_enabled]) [] [] 1);
   66.31  qed "DBFair_1a";
   66.32  
   66.33  (* Condition (1) *)
   66.34 @@ -96,9 +96,9 @@
   66.35    "[][DBNext]_<inp,mid,out,q1,q2> .& WF(DBDeq)_<inp,mid,out,q1,q2> \
   66.36  \  .-> ($q2 .~= .[] ~> DBDeq)";
   66.37  by (rtac WF_leadsto 1);
   66.38 -by (action_simp_tac (!simpset addsimps [DBDeq_visible,DBDeq_enabled]) [] [] 1);
   66.39 -by (action_simp_tac (!simpset addsimps [angle_def]) [] [] 1);
   66.40 -by (action_simp_tac (!simpset addsimps square_def::db_defs) [tempI] [Stable] 1);
   66.41 +by (action_simp_tac (simpset() addsimps [DBDeq_visible,DBDeq_enabled]) [] [] 1);
   66.42 +by (action_simp_tac (simpset() addsimps [angle_def]) [] [] 1);
   66.43 +by (action_simp_tac (simpset() addsimps square_def::db_defs) [tempI] [Stable] 1);
   66.44  qed "DBFair_2";
   66.45  
   66.46  (* High-level fairness *)
    67.1 --- a/src/HOL/TLA/Inc/Inc.ML	Mon Nov 03 12:12:10 1997 +0100
    67.2 +++ b/src/HOL/TLA/Inc/Inc.ML	Mon Nov 03 12:13:18 1997 +0100
    67.3 @@ -10,7 +10,7 @@
    67.4  val Psi_defs = [Psi_def,InitPsi_def,N1_def,N2_def,alpha1_def,alpha2_def,
    67.5                  beta1_def,beta2_def,gamma1_def,gamma2_def];
    67.6  
    67.7 -val Inc_css = (!claset, !simpset);
    67.8 +val Inc_css = (claset(), simpset());
    67.9  
   67.10  (*** Invariant proof for Psi: "manual" proof proves individual lemmas ***)
   67.11  
   67.12 @@ -55,7 +55,7 @@
   67.13     More substantial examples require manual guidance anyway.
   67.14  
   67.15  goal Inc.thy "Psi .-> []PsiInv";
   67.16 -by (auto_inv_tac (!simpset addsimps PsiInv_defs @ Psi_defs @ pcount.simps) 1);
   67.17 +by (auto_inv_tac (simpset() addsimps PsiInv_defs @ Psi_defs @ pcount.simps) 1);
   67.18  
   67.19  *)
   67.20  
    68.1 --- a/src/HOL/TLA/Intensional.ML	Mon Nov 03 12:12:10 1997 +0100
    68.2 +++ b/src/HOL/TLA/Intensional.ML	Mon Nov 03 12:13:18 1997 +0100
    68.3 @@ -89,7 +89,7 @@
    68.4  	 Const("Intensional.TrueInt",_) $ p => int_unlift th
    68.5         | _ => th);
    68.6  
    68.7 -simpset := !simpset setmksimps ((mksimps mksimps_pairs) o maybe_unlift);
    68.8 +simpset_ref() := simpset() setmksimps ((mksimps mksimps_pairs) o maybe_unlift);
    68.9  
   68.10  
   68.11  (* ==================== Rewrites for abstractions ==================== *)
    69.1 --- a/src/HOL/TLA/Memory/MIlive.ML	Mon Nov 03 12:12:10 1997 +0100
    69.2 +++ b/src/HOL/TLA/Memory/MIlive.ML	Mon Nov 03 12:13:18 1997 +0100
    69.3 @@ -27,7 +27,7 @@
    69.4  qed_goal "S1_RNextdisabled" MemoryImplementation.thy
    69.5     "$(S1 rmhist p) .-> \
    69.6  \   .~$(Enabled (<RNext memCh mem (resbar rmhist) p>_<rtrner memCh @ p, resbar rmhist @ p>))"
    69.7 -   (fn _ => [action_simp_tac (!simpset addsimps [angle_def,S_def,S1_def])
    69.8 +   (fn _ => [action_simp_tac (simpset() addsimps [angle_def,S_def,S1_def])
    69.9  	                     [notI] [enabledE,MemoryidleE] 1,
   69.10  	     auto_tac MI_fast_css
   69.11  	    ]);
   69.12 @@ -35,7 +35,7 @@
   69.13  qed_goal "S1_Returndisabled" MemoryImplementation.thy
   69.14     "$(S1 rmhist p) .-> \
   69.15  \   .~$(Enabled (<MemReturn memCh (resbar rmhist) p>_<rtrner memCh @ p, resbar rmhist @ p>))"
   69.16 -   (fn _ => [action_simp_tac (!simpset addsimps [angle_def,MemReturn_def,Return_def,S_def,S1_def])
   69.17 +   (fn _ => [action_simp_tac (simpset() addsimps [angle_def,MemReturn_def,Return_def,S_def,S1_def])
   69.18  	                     [notI] [enabledE] 1
   69.19  	    ]);
   69.20  
   69.21 @@ -74,7 +74,7 @@
   69.22     (fn _ => [cut_facts_tac [MI_base] 1,
   69.23  	     auto_tac (MI_css addsimps2 [c_def,base_pair]
   69.24  		              addSIs2 [MClkFwd_ch_enabled,action_mp MClkFwd_enabled]),
   69.25 -	     ALLGOALS (action_simp_tac (!simpset addsimps [S_def,S2_def]) [] [])
   69.26 +	     ALLGOALS (action_simp_tac (simpset() addsimps [S_def,S2_def]) [] [])
   69.27  	    ]);
   69.28  
   69.29  qed_goal "S2_live" MemoryImplementation.thy
   69.30 @@ -106,7 +106,7 @@
   69.31     (fn _ => [cut_facts_tac [MI_base] 1,
   69.32  	     auto_tac (MI_css addsimps2 [r_def,base_pair]
   69.33  		              addSIs2 [RPCFail_Next_enabled,action_mp RPCFail_enabled]),
   69.34 -	     ALLGOALS (action_simp_tac (!simpset addsimps [S_def,S3_def]) [] [])
   69.35 +	     ALLGOALS (action_simp_tac (simpset() addsimps [S_def,S3_def]) [] [])
   69.36  	    ]);
   69.37  
   69.38  qed_goal "S3_live" MemoryImplementation.thy
   69.39 @@ -157,7 +157,7 @@
   69.40  	     ALLGOALS (cut_facts_tac [MI_base]),
   69.41  	     auto_tac (MI_css addsimps2 [base_pair]),
   69.42  	        (* it's faster to expand S4 only where necessary *)
   69.43 -	     action_simp_tac (!simpset addsimps [S_def,S4_def]) [] [] 1
   69.44 +	     action_simp_tac (simpset() addsimps [S_def,S4_def]) [] [] 1
   69.45  	    ]);
   69.46  
   69.47  qed_goal "S4a_live" MemoryImplementation.thy
   69.48 @@ -166,7 +166,7 @@
   69.49  \  .-> (($(S4 rmhist p) .& ($(ires@p) .= #NotAResult))  \
   69.50  \        ~> ($(S4 rmhist p) .& ($(ires@p) .~= #NotAResult)) .| $(S5 rmhist p))"
   69.51     (fn _ => [rtac WF1 1,
   69.52 -	     ALLGOALS (action_simp_tac (!simpset)
   69.53 +	     ALLGOALS (action_simp_tac (simpset())
   69.54  		                       (map ((rewrite_rule [slice_def]) o action_mp) 
   69.55                                              [S4a_successors,S4aRNext_successors,S4aRNext_enabled])
   69.56  				       [])
   69.57 @@ -203,7 +203,7 @@
   69.58     (fn _ => [cut_facts_tac [MI_base] 1,
   69.59               auto_tac (MI_css addsimps2 [m_def,base_pair]
   69.60  		              addSIs2 [action_mp MemReturn_enabled]),
   69.61 -	     ALLGOALS (action_simp_tac (!simpset addsimps [S_def,S4_def]) [] [])
   69.62 +	     ALLGOALS (action_simp_tac (simpset() addsimps [S_def,S4_def]) [] [])
   69.63  	    ]);
   69.64  
   69.65  qed_goal "S4b_live" MemoryImplementation.thy
   69.66 @@ -211,7 +211,7 @@
   69.67  \  .& WF(MemReturn rmCh ires p)_(m p) \
   69.68  \  .-> (($(S4 rmhist p) .& ($(ires@p) .~= #NotAResult)) ~> $(S5 rmhist p))"
   69.69     (fn _ => [rtac WF1 1,
   69.70 -	     ALLGOALS (action_simp_tac (!simpset)
   69.71 +	     ALLGOALS (action_simp_tac (simpset())
   69.72  		                       (map ((rewrite_rule [slice_def]) o action_mp) 
   69.73                                              [S4b_successors,S4bReturn_successors,S4bReturn_enabled])
   69.74  				       [allE])
   69.75 @@ -238,7 +238,7 @@
   69.76     (fn _ => [cut_facts_tac [MI_base] 1,
   69.77  	     auto_tac (MI_css addsimps2 [r_def,base_pair]
   69.78  		              addSIs2 [RPCFail_Next_enabled,action_mp RPCFail_enabled]),
   69.79 -	     ALLGOALS (action_simp_tac (!simpset addsimps [S_def,S5_def]) [] [])
   69.80 +	     ALLGOALS (action_simp_tac (simpset() addsimps [S_def,S5_def]) [] [])
   69.81  	    ]);
   69.82  
   69.83  qed_goal "S5_live" MemoryImplementation.thy
   69.84 @@ -268,7 +268,7 @@
   69.85  qed_goal "MClkReplyS6" MemoryImplementation.thy
   69.86     "$(ImpInv rmhist p) .& <MClkReply memCh crCh cst p>_(c p) .-> $(S6 rmhist p)"
   69.87     (fn _ => [action_simp_tac
   69.88 -	        (!simpset addsimps
   69.89 +	        (simpset() addsimps
   69.90  		    [angle_def,MClkReply_def,Return_def,
   69.91  		     ImpInv_def,S_def,S1_def,S2_def,S3_def,S4_def,S5_def])
   69.92  		[] [] 1
   69.93 @@ -279,7 +279,7 @@
   69.94     (fn _ => [cut_facts_tac [MI_base] 1,
   69.95  	     auto_tac (MI_css addsimps2 [c_def,base_pair]
   69.96  		              addSIs2 [action_mp MClkReply_enabled]),
   69.97 -	     ALLGOALS (action_simp_tac (!simpset addsimps [S_def,S6_def]) [] [])
   69.98 +	     ALLGOALS (action_simp_tac (simpset() addsimps [S_def,S6_def]) [] [])
   69.99  	    ]);
  69.100  
  69.101  qed_goal "S6_live" MemoryImplementation.thy
  69.102 @@ -290,7 +290,7 @@
  69.103  	     subgoal_tac "sigma |= []<>(<MClkReply memCh crCh cst p>_(c p))" 1,
  69.104  	     eres_inst_tac [("P","<MClkReply memCh crCh cst p>_(c p)")]
  69.105  	                   EnsuresInfinite 1, atac 1,
  69.106 -	     action_simp_tac (!simpset) []
  69.107 +	     action_simp_tac (simpset()) []
  69.108  	                     (map action_conjimpE [MClkReplyS6,S6MClkReply_successors]) 1,
  69.109  	     auto_tac (MI_css addsimps2 [SF_def]),
  69.110  	     etac swap 1,
  69.111 @@ -377,6 +377,6 @@
  69.112  \               (sigma |= []<>($(S6 rmhist p)) .-> []<>($(S1 rmhist p))) |] \
  69.113  \            ==> (sigma |= []<>($(S1 rmhist p)))"
  69.114     (fn _ => [rtac classical 1,
  69.115 -	     asm_full_simp_tac (!simpset addsimps [NotBox, temp_rewrite NotDmd]) 1,
  69.116 +	     asm_full_simp_tac (simpset() addsimps [NotBox, temp_rewrite NotDmd]) 1,
  69.117  	     auto_tac (MI_css addSEs2 [mp,leadsto_infinite] addSDs2 [temp_mp DBImplBDAct])
  69.118  	    ]);
    70.1 --- a/src/HOL/TLA/Memory/MIsafe.ML	Mon Nov 03 12:12:10 1997 +0100
    70.2 +++ b/src/HOL/TLA/Memory/MIsafe.ML	Mon Nov 03 12:13:18 1997 +0100
    70.3 @@ -141,7 +141,7 @@
    70.4  qed_goal "S2Forward" MemoryImplementation.thy
    70.5     "$(S2 rmhist p) .& (MClkFwd memCh crCh cst p) .& unchanged <e p, r p, m p, rmhist@p> \
    70.6  \   .-> (S3 rmhist p)$"
    70.7 -   (fn _ => [action_simp_tac (!simpset addsimps
    70.8 +   (fn _ => [action_simp_tac (simpset() addsimps
    70.9                  [MClkFwd_def,Call_def,e_def,r_def,m_def,caller_def,rtrner_def,
   70.10                   S_def,S2_def,S3_def,Calling_def])
   70.11                 [] [] 1
   70.12 @@ -189,7 +189,7 @@
   70.13  qed_goal "S3LegalRcvArg" MemoryImplementation.thy
   70.14     "$(S3 rmhist p) .-> IsLegalRcvArg[ arg[$(crCh@p)] ]"
   70.15     (fn _ => [action_simp_tac
   70.16 -	       (!simpset addsimps [IsLegalRcvArg_def,MClkRelayArg_def,S_def,S3_def])
   70.17 +	       (simpset() addsimps [IsLegalRcvArg_def,MClkRelayArg_def,S_def,S3_def])
   70.18  	       [exI] [] 1
   70.19  	    ]);
   70.20  
   70.21 @@ -206,7 +206,7 @@
   70.22     "(RPCFwd crCh rmCh rst p) .& HNext rmhist p .& $(S3 rmhist p) .& unchanged <e p, c p, m p> \
   70.23  \   .-> (S4 rmhist p)$ .& unchanged (rmhist@p)"
   70.24     (fn _ => [action_simp_tac 
   70.25 -               (!simpset addsimps [RPCFwd_def,HNext_def,MemReturn_def,RPCFail_def,MClkReply_def,
   70.26 +               (simpset() addsimps [RPCFwd_def,HNext_def,MemReturn_def,RPCFail_def,MClkReply_def,
   70.27  				   Return_def,Call_def,e_def,c_def,m_def,caller_def,rtrner_def, 
   70.28  				   S_def,S3_def,S4_def,Calling_def])
   70.29  	       [] [] 1
   70.30 @@ -217,7 +217,7 @@
   70.31     "(RPCFail crCh rmCh rst p) .& $(S3 rmhist p) .& HNext rmhist p .& unchanged <e p, c p, m p> \
   70.32  \   .-> (S6 rmhist p)$"
   70.33     (fn _ => [action_simp_tac 
   70.34 -               (!simpset addsimps [HNext_def,RPCFail_def,Return_def,e_def,c_def,m_def,
   70.35 +               (simpset() addsimps [HNext_def,RPCFail_def,Return_def,e_def,c_def,m_def,
   70.36  				   caller_def,rtrner_def,MVOKBARF_def,
   70.37  				   S_def,S3_def,S6_def,Calling_def])
   70.38                 [] [] 1
   70.39 @@ -268,7 +268,7 @@
   70.40  \        .& (HNext rmhist p) .& $(MemInv mem l) \
   70.41  \   .-> (S4 rmhist p)$ .& unchanged (rmhist@p)"
   70.42     (fn _ => [action_simp_tac 
   70.43 -               (!simpset addsimps [ReadInner_def,GoodRead_def, BadRead_def,HNext_def,
   70.44 +               (simpset() addsimps [ReadInner_def,GoodRead_def, BadRead_def,HNext_def,
   70.45  				   MemReturn_def, RPCFail_def,MClkReply_def,Return_def,
   70.46  				   e_def,c_def,r_def,rtrner_def,caller_def,MVNROKBA_def,
   70.47  				   S_def,S4_def,RdRequest_def,Calling_def,MemInv_def])
   70.48 @@ -288,7 +288,7 @@
   70.49     "(WriteInner rmCh mem ires p l v) .& $(S4 rmhist p) .& unchanged <e p, c p, r p> .& (HNext rmhist p) \
   70.50  \   .-> (S4 rmhist p)$ .& unchanged (rmhist@p)"
   70.51     (fn _ => [action_simp_tac 
   70.52 -               (!simpset addsimps [WriteInner_def,GoodWrite_def, BadWrite_def,HNext_def,
   70.53 +               (simpset() addsimps [WriteInner_def,GoodWrite_def, BadWrite_def,HNext_def,
   70.54  				   MemReturn_def,RPCFail_def,MClkReply_def,Return_def,
   70.55  				   e_def,c_def,r_def,rtrner_def,caller_def,MVNROKBA_def, 
   70.56  				   S_def,S4_def,WrRequest_def,Calling_def])
   70.57 @@ -355,7 +355,7 @@
   70.58     "(RPCReply crCh rmCh rst p) .& $(S5 rmhist p) .& unchanged <e p, c p, m p,rmhist@p> \
   70.59  \    .-> (S6 rmhist p)$"
   70.60     (fn _ => [action_simp_tac 
   70.61 -               (!simpset
   70.62 +               (simpset()
   70.63  		addsimps [RPCReply_def,Return_def,e_def,c_def,m_def,
   70.64  			  MVOKBA_def,MVOKBARF_def,caller_def,rtrner_def,
   70.65  			  S_def,S5_def,S6_def,Calling_def])
   70.66 @@ -367,7 +367,7 @@
   70.67     "(RPCFail crCh rmCh rst p) .& $(S5 rmhist p) .& unchanged <e p, c p, m p,rmhist@p>\
   70.68  \     .-> (S6 rmhist p)$"
   70.69     (fn _ => [action_simp_tac
   70.70 -	       (!simpset
   70.71 +	       (simpset()
   70.72  		addsimps [RPCFail_def,Return_def,e_def,c_def,m_def,
   70.73  			  MVOKBARF_def,caller_def,rtrner_def,
   70.74  			  S_def,S5_def,S6_def,Calling_def])
   70.75 @@ -409,7 +409,7 @@
   70.76     "(MClkRetry memCh crCh cst p) .& (HNext rmhist p) .& $(S6 rmhist p) .& unchanged<e p,r p,m p> \
   70.77  \     .-> (S3 rmhist p)$ .& unchanged (rmhist@p)"
   70.78     (fn _ => [action_simp_tac
   70.79 -	        (!simpset addsimps [HNext_def,MClkReply_def,MClkRetry_def,Call_def,
   70.80 +	        (simpset() addsimps [HNext_def,MClkReply_def,MClkRetry_def,Call_def,
   70.81  				    Return_def,e_def,r_def,m_def,caller_def,rtrner_def,
   70.82  		                    S_def,S6_def,S3_def,Calling_def])
   70.83                  [] [] 1]);
   70.84 @@ -418,7 +418,7 @@
   70.85  qed_goal "S6Reply" MemoryImplementation.thy
   70.86     "(MClkReply memCh crCh cst p) .& (HNext rmhist p) .& $(S6 rmhist p) .& unchanged<e p,r p,m p> \
   70.87  \     .-> (S1 rmhist p)$"
   70.88 -   (fn _ => [action_simp_tac (!simpset
   70.89 +   (fn _ => [action_simp_tac (simpset()
   70.90  			      addsimps [HNext_def,MemReturn_def,RPCFail_def,Return_def,
   70.91  					MClkReply_def,e_def,r_def,m_def,caller_def,rtrner_def,
   70.92  					S_def,S6_def,S1_def,Calling_def])
    71.1 --- a/src/HOL/TLA/Memory/MemClerk.ML	Mon Nov 03 12:12:10 1997 +0100
    71.2 +++ b/src/HOL/TLA/Memory/MemClerk.ML	Mon Nov 03 12:13:18 1997 +0100
    71.3 @@ -18,14 +18,14 @@
    71.4  
    71.5  qed_goal "MClkidle" MemClerk.thy
    71.6     ".~ $(Calling send p) .& ($(cst@p) .= #clkA) .-> .~ MClkNext send rcv cst p"
    71.7 -   (fn _ => [ auto_tac (!claset,
    71.8 -                        !simpset addsimps (MC_action_defs @ [Return_def]))
    71.9 +   (fn _ => [ auto_tac (claset(),
   71.10 +                        simpset() addsimps (MC_action_defs @ [Return_def]))
   71.11              ]);
   71.12  
   71.13  qed_goal "MClkbusy" MemClerk.thy
   71.14     "$(Calling rcv p) .-> .~ MClkNext send rcv cst p"
   71.15 -   (fn _ => [ auto_tac (!claset,
   71.16 -                        !simpset addsimps (MC_action_defs @ [Call_def]))
   71.17 +   (fn _ => [ auto_tac (claset(),
   71.18 +                        simpset() addsimps (MC_action_defs @ [Call_def]))
   71.19              ]);
   71.20  
   71.21  (* unlifted versions as introduction rules *)
   71.22 @@ -39,14 +39,14 @@
   71.23     "!!p. base_var <rtrner send @ p, caller rcv @ p, cst@p> ==> \
   71.24  \        $(Calling send p) .& .~ $(Calling rcv p) .& ($(cst@p) .= #clkA)  \
   71.25  \        .-> $(Enabled (MClkFwd send rcv cst p))"
   71.26 -   (fn _ => [action_simp_tac (!simpset addsimps [MClkFwd_def,Call_def,caller_def,rtrner_def])
   71.27 +   (fn _ => [action_simp_tac (simpset() addsimps [MClkFwd_def,Call_def,caller_def,rtrner_def])
   71.28                               [] [base_enabled,Pair_inject] 1]);
   71.29  
   71.30  qed_goal "MClkFwd_ch_enabled" MemClerk.thy
   71.31     "Enabled (MClkFwd send rcv cst p) s  \
   71.32  \   ==> Enabled (<MClkFwd send rcv cst p>_<cst@p, rtrner send @ p, caller rcv @ p>) s"
   71.33 -   (fn [prem] => [auto_tac (!claset addSIs [prem RS enabled_mono],
   71.34 -			    !simpset addsimps [angle_def,MClkFwd_def])
   71.35 +   (fn [prem] => [auto_tac (claset() addSIs [prem RS enabled_mono],
   71.36 +			    simpset() addsimps [angle_def,MClkFwd_def])
   71.37  		 ]);
   71.38  
   71.39  qed_goal "MClkReply_change" MemClerk.thy
   71.40 @@ -59,13 +59,13 @@
   71.41     "!!p. base_var <rtrner send @ p, caller rcv @ p, cst@p> ==> \
   71.42  \        $(Calling send p) .& .~ $(Calling rcv p) .& ($(cst@p) .= #clkB)  \
   71.43  \        .-> $(Enabled (<MClkReply send rcv cst p>_<cst@p, rtrner send @ p, caller rcv @ p>))"
   71.44 -   (fn _ => [action_simp_tac (!simpset) [MClkReply_change RSN (2,enabled_mono)] [] 1,
   71.45 -	     action_simp_tac (!simpset addsimps [MClkReply_def,Return_def,caller_def,rtrner_def])
   71.46 +   (fn _ => [action_simp_tac (simpset()) [MClkReply_change RSN (2,enabled_mono)] [] 1,
   71.47 +	     action_simp_tac (simpset() addsimps [MClkReply_def,Return_def,caller_def,rtrner_def])
   71.48                               [] [base_enabled,Pair_inject] 1
   71.49  	    ]);
   71.50  
   71.51  qed_goal "MClkReplyNotRetry" MemClerk.thy
   71.52     "MClkReply send rcv cst p .-> .~(MClkRetry send rcv cst p)"
   71.53 -   (fn _ => [ auto_tac (!claset,
   71.54 -			!simpset addsimps [MClkReply_def,MClkRetry_def]) 
   71.55 +   (fn _ => [ auto_tac (claset(),
   71.56 +			simpset() addsimps [MClkReply_def,MClkRetry_def]) 
   71.57  	    ]);
    72.1 --- a/src/HOL/TLA/Memory/Memory.ML	Mon Nov 03 12:12:10 1997 +0100
    72.2 +++ b/src/HOL/TLA/Memory/Memory.ML	Mon Nov 03 12:13:18 1997 +0100
    72.3 @@ -19,7 +19,7 @@
    72.4  val UM_temp_defs = [UPSpec_def, MSpec_def, IUSpec_def];
    72.5  
    72.6  (* Make sure the simpset accepts non-boolean simplifications *)
    72.7 -simpset := !simpset setmksimps ((mksimps mksimps_pairs) o maybe_unlift);
    72.8 +simpset_ref() := simpset() setmksimps ((mksimps mksimps_pairs) o maybe_unlift);
    72.9  
   72.10  (* -------------------- Proofs -------------------------------------------------- *)
   72.11  
   72.12 @@ -33,7 +33,7 @@
   72.13  (* The memory spec implies the memory invariant *)
   72.14  qed_goal "MemoryInvariant" Memory.thy 
   72.15     "(MSpec ch mm rs l) .-> []($(MemInv mm l))"
   72.16 -   (fn _ => [ auto_inv_tac (!simpset addsimps RM_temp_defs @ MP_simps @ RM_action_defs) 1 ]);
   72.17 +   (fn _ => [ auto_inv_tac (simpset() addsimps RM_temp_defs @ MP_simps @ RM_action_defs) 1 ]);
   72.18  
   72.19  (* The invariant is trivial for non-locations *)
   72.20  qed_goal "NonMemLocInvariant" Memory.thy
   72.21 @@ -69,8 +69,8 @@
   72.22     "!!p. base_var <rtrner ch @ p, rs@p> ==> \
   72.23  \        $(Calling ch p) .& ($(rs@p) .~= #NotAResult) \
   72.24  \        .-> $(Enabled (<MemReturn ch rs p>_<rtrner ch @ p, rs@p>))"
   72.25 -   (fn _ => [action_simp_tac (!simpset) [MemReturn_change RSN (2,enabled_mono)] [] 1,
   72.26 -             action_simp_tac (!simpset addsimps [MemReturn_def,Return_def,rtrner_def])
   72.27 +   (fn _ => [action_simp_tac (simpset()) [MemReturn_change RSN (2,enabled_mono)] [] 1,
   72.28 +             action_simp_tac (simpset() addsimps [MemReturn_def,Return_def,rtrner_def])
   72.29                               [] [base_enabled,Pair_inject] 1
   72.30  	    ]);
   72.31  
   72.32 @@ -83,7 +83,7 @@
   72.33  	     case_tac "MemLoc l" 1,
   72.34               ALLGOALS
   72.35  	        (action_simp_tac 
   72.36 -                    (!simpset addsimps [ReadInner_def,GoodRead_def,BadRead_def,
   72.37 +                    (simpset() addsimps [ReadInner_def,GoodRead_def,BadRead_def,
   72.38  					RdRequest_def])
   72.39                      [] [base_enabled,Pair_inject])
   72.40              ]);
   72.41 @@ -96,7 +96,7 @@
   72.42  	     case_tac "MemLoc l & MemVal v" 1,
   72.43               ALLGOALS
   72.44  	        (action_simp_tac 
   72.45 -                    (!simpset addsimps [WriteInner_def,GoodWrite_def,BadWrite_def,
   72.46 +                    (simpset() addsimps [WriteInner_def,GoodWrite_def,BadWrite_def,
   72.47  					WrRequest_def])
   72.48                      [] [base_enabled,Pair_inject])
   72.49              ]);
   72.50 @@ -104,7 +104,7 @@
   72.51  qed_goal "ReadResult" Memory.thy
   72.52     "(Read ch mm rs p) .& (RALL l. $(MemInv mm l)) .-> (rs@p)$ .~= #NotAResult"
   72.53     (fn _ => [action_simp_tac 
   72.54 -               (!simpset addsimps (MP_simps 
   72.55 +               (simpset() addsimps (MP_simps 
   72.56  				   @ [Read_def,ReadInner_def,GoodRead_def,
   72.57  				      BadRead_def,MemInv_def]))
   72.58  	       [] [] 1,
   72.59 @@ -112,8 +112,8 @@
   72.60  
   72.61  qed_goal "WriteResult" Memory.thy
   72.62     "(Write ch mm rs p l) .-> (rs@p)$ .~= #NotAResult"
   72.63 -   (fn _ => [auto_tac (!claset,
   72.64 -		       !simpset addsimps (MP_simps @
   72.65 +   (fn _ => [auto_tac (claset(),
   72.66 +		       simpset() addsimps (MP_simps @
   72.67  				   [Write_def,WriteInner_def,GoodWrite_def,BadWrite_def]))
   72.68  	    ]);
   72.69  
   72.70 @@ -146,14 +146,14 @@
   72.71     (fn _ => [auto_tac (action_css addsimps2 [enabled_disj]
   72.72  		                  addSIs2 [action_mp RWRNext_enabled]),
   72.73  	     res_inst_tac [("s","arg(ch s p)")] sumE 1,
   72.74 -	     action_simp_tac (!simpset addsimps [Read_def,enabled_ex,base_pair])
   72.75 +	     action_simp_tac (simpset() addsimps [Read_def,enabled_ex,base_pair])
   72.76  	                     [action_mp ReadInner_enabled,exI] [] 1,
   72.77  	     split_all_tac 1, Rd.induct_tac "xa" 1,
   72.78  	     (* introduce a trivial subgoal to solve flex-flex constraint?! *)
   72.79  	     subgoal_tac "y = snd(xa,y)" 1,
   72.80  	     TRYALL Simp_tac,  (* solves "read" case *)
   72.81  	     etac swap 1,
   72.82 -	     action_simp_tac (!simpset addsimps [Write_def,enabled_ex,base_pair])
   72.83 +	     action_simp_tac (simpset() addsimps [Write_def,enabled_ex,base_pair])
   72.84  	                     [action_mp WriteInner_enabled,exI] [] 1,
   72.85  	     split_all_tac 1, Wr.induct_tac "x" 1,
   72.86  	     subgoal_tac "(xa = fst(snd(x,xa,y))) & (y = snd(snd(x,xa,y)))" 1,
    73.1 --- a/src/HOL/TLA/Memory/MemoryImplementation.ML	Mon Nov 03 12:12:10 1997 +0100
    73.2 +++ b/src/HOL/TLA/Memory/MemoryImplementation.ML	Mon Nov 03 12:13:18 1997 +0100
    73.3 @@ -67,7 +67,7 @@
    73.4  end;
    73.5  
    73.6  (* Make sure the simpset accepts non-boolean simplifications *)
    73.7 -simpset := let val (_,ss) = MI_css in ss end;
    73.8 +simpset_ref() := let val (_,ss) = MI_css in ss end;
    73.9  
   73.10  
   73.11  (****************************** The history variable ******************************)
   73.12 @@ -79,9 +79,9 @@
   73.13  \                    .& [](RALL p. [HNext rmhist p]_<c p, r p, m p, rmhist@p>))"
   73.14     (fn _ => [Auto_tac(),
   73.15               rtac historyI 1, TRYALL atac,
   73.16 -             action_simp_tac (!simpset addsimps [HInit_def]) [] [] 1,
   73.17 +             action_simp_tac (simpset() addsimps [HInit_def]) [] [] 1,
   73.18               res_inst_tac [("x","p")] fun_cong 1, atac 1,
   73.19 -             action_simp_tac (!simpset addsimps [HNext_def]) [busy_squareI] [] 1,
   73.20 +             action_simp_tac (simpset() addsimps [HNext_def]) [busy_squareI] [] 1,
   73.21               res_inst_tac [("x","p")] fun_cong 1, atac 1
   73.22              ]);
   73.23  
   73.24 @@ -127,7 +127,7 @@
   73.25  \   .-> (S2 rmhist p)$ .& (ENext p) .& unchanged <c p, r p, m p>"
   73.26     (fn _ => [auto_tac (MI_css addsimps2 [ImpNext_def]
   73.27  		              addSEs2 [S1ClerkUnchE,S1RPCUnchE,S1MemUnchE,S1HistE]),
   73.28 -	     ALLGOALS (action_simp_tac (!simpset addsimps [square_def]) [] [S1EnvE])
   73.29 +	     ALLGOALS (action_simp_tac (simpset() addsimps [square_def]) [] [S1EnvE])
   73.30  	    ]);
   73.31  
   73.32  qed_goal "Step1_2_2" MemoryImplementation.thy
   73.33 @@ -136,7 +136,7 @@
   73.34  \   .-> (S3 rmhist p)$ .& (MClkFwd memCh crCh cst p) .& unchanged <e p, r p, m p, rmhist@p>"
   73.35     (fn _ => [auto_tac (MI_css addsimps2 [ImpNext_def]
   73.36  		              addSEs2 [S2EnvUnchE,S2RPCUnchE,S2MemUnchE,S2HistE]),
   73.37 -	     ALLGOALS (action_simp_tac (!simpset addsimps [square_def]) [] [S2ClerkE,S2ForwardE])
   73.38 +	     ALLGOALS (action_simp_tac (simpset() addsimps [square_def]) [] [S2ClerkE,S2ForwardE])
   73.39  	    ]);
   73.40  
   73.41  qed_goal "Step1_2_3" MemoryImplementation.thy
   73.42 @@ -144,9 +144,9 @@
   73.43  \             .& .~ unchanged <e p, c p, r p, m p, rmhist@p>  .& $(S3 rmhist p) \
   73.44  \   .-> ((S4 rmhist p)$ .& RPCFwd crCh rmCh rst p .& unchanged <e p, c p, m p, rmhist@p>) \
   73.45  \        .| ((S6 rmhist p)$ .& RPCFail crCh rmCh rst p .& unchanged <e p, c p, m p>)"
   73.46 -   (fn _ => [action_simp_tac (!simpset addsimps [ImpNext_def])
   73.47 +   (fn _ => [action_simp_tac (simpset() addsimps [ImpNext_def])
   73.48  	                     [] [S3EnvUnchE,S3ClerkUnchE,S3MemUnchE] 1,
   73.49 -             ALLGOALS (action_simp_tac (!simpset addsimps [square_def])
   73.50 +             ALLGOALS (action_simp_tac (simpset() addsimps [square_def])
   73.51  		                       [] [S3RPCE,S3ForwardE,S3FailE]),
   73.52               auto_tac (MI_css addEs2 [S3HistE])
   73.53  	    ]);
   73.54 @@ -158,9 +158,9 @@
   73.55  \   .-> ((S4 rmhist p)$ .& Read rmCh mem ires p .& unchanged <e p, c p, r p, rmhist@p>) \
   73.56  \        .| ((S4 rmhist p)$ .& (REX l. Write rmCh mem ires p l) .& unchanged <e p, c p, r p, rmhist@p>) \
   73.57  \        .| ((S5 rmhist p)$ .& MemReturn rmCh ires p .& unchanged <e p, c p, r p>)"
   73.58 -   (fn _ => [action_simp_tac (!simpset addsimps [ImpNext_def]) 
   73.59 +   (fn _ => [action_simp_tac (simpset() addsimps [ImpNext_def]) 
   73.60                               [] [S4EnvUnchE,S4ClerkUnchE,S4RPCUnchE] 1,
   73.61 -             ALLGOALS (action_simp_tac (!simpset addsimps [square_def,RNext_def])
   73.62 +             ALLGOALS (action_simp_tac (simpset() addsimps [square_def,RNext_def])
   73.63                                         [] [S4ReadE,S4WriteE,S4ReturnE]),
   73.64               auto_tac (MI_css addEs2 [S4HistE])
   73.65              ]);
   73.66 @@ -170,9 +170,9 @@
   73.67  \             .& .~ unchanged <e p, c p, r p, m p, rmhist@p>  .& $(S5 rmhist p) \
   73.68  \   .-> ((S6 rmhist p)$ .& RPCReply crCh rmCh rst p .& unchanged <e p, c p, m p>) \
   73.69  \        .| ((S6 rmhist p)$ .& RPCFail crCh rmCh rst p .& unchanged <e p, c p, m p>)"
   73.70 -   (fn _ => [action_simp_tac (!simpset addsimps [ImpNext_def]) 
   73.71 +   (fn _ => [action_simp_tac (simpset() addsimps [ImpNext_def]) 
   73.72                               [] [S5EnvUnchE,S5ClerkUnchE,S5MemUnchE,S5HistE] 1,
   73.73 -	     action_simp_tac (!simpset addsimps [square_def]) [] [S5RPCE] 1,
   73.74 +	     action_simp_tac (simpset() addsimps [square_def]) [] [S5RPCE] 1,
   73.75  	     auto_tac (MI_fast_css addSEs2 [S5ReplyE,S5FailE])
   73.76  	    ]);
   73.77  
   73.78 @@ -181,9 +181,9 @@
   73.79  \             .& .~ unchanged <e p, c p, r p, m p, rmhist@p>  .& $(S6 rmhist p) \
   73.80  \   .-> ((S1 rmhist p)$ .& (MClkReply memCh crCh cst p) .& unchanged <e p, r p, m p>)\
   73.81  \        .| ((S3 rmhist p)$ .& (MClkRetry memCh crCh cst p) .& unchanged <e p,r p,m p,rmhist@p>)"
   73.82 -   (fn _ => [action_simp_tac (!simpset addsimps [ImpNext_def]) 
   73.83 +   (fn _ => [action_simp_tac (simpset() addsimps [ImpNext_def]) 
   73.84                               [] [S6EnvUnchE,S6RPCUnchE,S6MemUnchE] 1,
   73.85 -             ALLGOALS (action_simp_tac (!simpset addsimps [square_def]) 
   73.86 +             ALLGOALS (action_simp_tac (simpset() addsimps [square_def]) 
   73.87                                         [] [S6ClerkE,S6RetryE,S6ReplyE]),
   73.88               auto_tac (MI_css addEs2 [S6HistE])
   73.89              ]);
   73.90 @@ -199,7 +199,7 @@
   73.91  
   73.92  qed_goal "Step1_3" MemoryImplementation.thy 
   73.93     "$(S1 rmhist p) .-> $(PInit (resbar rmhist) p)"
   73.94 -   (fn _ => [action_simp_tac (!simpset addsimps [resbar_unl,PInit_def,S_def,S1_def])
   73.95 +   (fn _ => [action_simp_tac (simpset() addsimps [resbar_unl,PInit_def,S_def,S1_def])
   73.96                               [] [] 1
   73.97              ]);
   73.98  
   73.99 @@ -233,7 +233,7 @@
  73.100                       adding them as unsafe elims doesn't help, 
  73.101                       because auto_tac doesn't find the proof! *)
  73.102              REPEAT (eresolve_tac [S3_exclE,S4_exclE] 1),
  73.103 -            action_simp_tac (!simpset addsimps [S_def, S3_def]) [] [] 1
  73.104 +            action_simp_tac (simpset() addsimps [S_def, S3_def]) [] [] 1
  73.105             ]);
  73.106  
  73.107  qed_goal "Step1_4_3b" MemoryImplementation.thy
  73.108 @@ -242,7 +242,7 @@
  73.109    (fn _ => [auto_tac (MI_css addsimps2 [RPCFail_def,MemFail_def,e_def,c_def,m_def,
  73.110  		                        resbar_unl]),
  73.111  	        (* It's faster not to expand S3 at once *)
  73.112 -            action_simp_tac (!simpset addsimps [S3_def,S_def]) [] [] 1,
  73.113 +            action_simp_tac (simpset() addsimps [S3_def,S_def]) [] [] 1,
  73.114              etac S6_exclE 1,
  73.115              auto_tac (MI_fast_css addsimps2 [Return_def])
  73.116             ]);
  73.117 @@ -253,12 +253,12 @@
  73.118  \   .& unchanged <e p, c p, r p, rmhist@p> .& $(MemInv mem l) \
  73.119  \   .-> ReadInner memCh mem (resbar rmhist) p l"
  73.120    (fn _ => [action_simp_tac 
  73.121 -               (!simpset addsimps [ReadInner_def,GoodRead_def,BadRead_def,e_def,c_def,m_def]) 
  73.122 +               (simpset() addsimps [ReadInner_def,GoodRead_def,BadRead_def,e_def,c_def,m_def]) 
  73.123                 [] [] 1,
  73.124              ALLGOALS (REPEAT o (etac S4_exclE)),
  73.125              auto_tac (MI_css addsimps2 [resbar_unl]),
  73.126  	    ALLGOALS (action_simp_tac 
  73.127 -                        (!simpset addsimps [RPCRelayArg_def,MClkRelayArg_def,
  73.128 +                        (simpset() addsimps [RPCRelayArg_def,MClkRelayArg_def,
  73.129  		                            S_def,S4_def,RdRequest_def,MemInv_def])
  73.130  		      [] [impE,MemValNotAResultE])
  73.131             ]);
  73.132 @@ -274,14 +274,14 @@
  73.133  \                                    .& unchanged <e p, c p, r p, rmhist@p> \
  73.134  \   .-> WriteInner memCh mem (resbar rmhist) p l v"
  73.135    (fn _ => [action_simp_tac 
  73.136 -               (!simpset addsimps [WriteInner_def, GoodWrite_def, BadWrite_def,
  73.137 +               (simpset() addsimps [WriteInner_def, GoodWrite_def, BadWrite_def,
  73.138  			           e_def, c_def, m_def])
  73.139                 [] [] 1,
  73.140              ALLGOALS (REPEAT o (etac S4_exclE)),
  73.141  	    auto_tac (MI_css addsimps2 [resbar_unl]),
  73.142                 (* it's faster not to merge the two simplifications *)
  73.143  	    ALLGOALS (action_simp_tac
  73.144 -                        (!simpset addsimps [RPCRelayArg_def,MClkRelayArg_def,
  73.145 +                        (simpset() addsimps [RPCRelayArg_def,MClkRelayArg_def,
  73.146  		                            S_def,S4_def,WrRequest_def])
  73.147  		      [] [])
  73.148             ]);
  73.149 @@ -296,7 +296,7 @@
  73.150     "MemReturn rmCh ires p .& $(S4 rmhist p) .& (S5 rmhist p)$ .& unchanged <e p, c p, r p> \
  73.151  \   .-> unchanged <rtrner memCh @ p, resbar rmhist @ p>"
  73.152    (fn _ => [action_simp_tac
  73.153 -	       (!simpset addsimps [e_def,c_def,r_def,resbar_unl]) [] [] 1,
  73.154 +	       (simpset() addsimps [e_def,c_def,r_def,resbar_unl]) [] [] 1,
  73.155  	    REPEAT (eresolve_tac [S4_exclE,S5_exclE] 1),
  73.156  	    auto_tac (MI_fast_css addsimps2 [MemReturn_def,Return_def])
  73.157             ]);
  73.158 @@ -314,10 +314,10 @@
  73.159     "RPCFail crCh rmCh rst p .& $(S5 rmhist p) .& (S6 rmhist p)$ .& unchanged <e p, c p, m p>\
  73.160  \   .-> MemFail memCh (resbar rmhist) p"
  73.161    (fn _ => [action_simp_tac
  73.162 -	       (!simpset addsimps [e_def, c_def, m_def, RPCFail_def, Return_def,
  73.163 +	       (simpset() addsimps [e_def, c_def, m_def, RPCFail_def, Return_def,
  73.164  				   MemFail_def, resbar_unl])
  73.165  	       [] [] 1,
  73.166 -	    action_simp_tac (!simpset addsimps [S5_def,S_def]) [] [] 1,
  73.167 +	    action_simp_tac (simpset() addsimps [S5_def,S_def]) [] [] 1,
  73.168              etac S6_exclE 1,
  73.169  	    auto_tac MI_css
  73.170             ]);
  73.171 @@ -326,16 +326,16 @@
  73.172     "MClkReply memCh crCh cst p .& $(S6 rmhist p) .& (S1 rmhist p)$ .& unchanged <e p, r p, m p> \
  73.173  \   .-> MemReturn memCh (resbar rmhist) p"
  73.174    (fn _ => [action_simp_tac
  73.175 -	      (!simpset addsimps [e_def, r_def, m_def, MClkReply_def, MemReturn_def,
  73.176 +	      (simpset() addsimps [e_def, r_def, m_def, MClkReply_def, MemReturn_def,
  73.177  				  Return_def, resbar_unl]) 
  73.178                [] [] 1,
  73.179              ALLGOALS (etac S6_exclE),
  73.180  	    ALLGOALS Asm_full_simp_tac,  (* simplify if-then-else *)
  73.181  	    ALLGOALS (action_simp_tac
  73.182 -    	              (!simpset addsimps [MClkReplyVal_def,S6_def,S_def])
  73.183 +    	              (simpset() addsimps [MClkReplyVal_def,S6_def,S_def])
  73.184  		      [] []),
  73.185              rtac ifI 1,
  73.186 -            ALLGOALS (action_simp_tac (!simpset) [] [MVOKBARFnotNRE])
  73.187 +            ALLGOALS (action_simp_tac (simpset()) [] [MVOKBARFnotNRE])
  73.188             ]);
  73.189  
  73.190  qed_goal "Step1_4_6b" MemoryImplementation.thy
  73.191 @@ -343,12 +343,12 @@
  73.192  \                              .& unchanged <e p, r p, m p, rmhist@p> \
  73.193  \   .-> MemFail memCh (resbar rmhist) p"
  73.194    (fn _ => [action_simp_tac
  73.195 -	       (!simpset addsimps [e_def, r_def, m_def, MClkRetry_def, MemFail_def, resbar_unl])
  73.196 +	       (simpset() addsimps [e_def, r_def, m_def, MClkRetry_def, MemFail_def, resbar_unl])
  73.197  	       [] [] 1,
  73.198  	    SELECT_GOAL (auto_tac (MI_css addsimps2 [S6_def,S_def])) 1,
  73.199              etac S3_exclE 1,
  73.200              Asm_full_simp_tac 1,
  73.201 -	    action_simp_tac (!simpset addsimps [S6_def,S3_def,S_def]) [] [] 1
  73.202 +	    action_simp_tac (simpset() addsimps [S6_def,S3_def,S_def]) [] [] 1
  73.203             ]);
  73.204  
  73.205  qed_goal "S_lemma" MemoryImplementation.thy
  73.206 @@ -364,7 +364,7 @@
  73.207  \                                    S4 rmhist p, S5 rmhist p, S6 rmhist p>"
  73.208     (fn _ => [Action_simp_tac 1,
  73.209  	     SELECT_GOAL (auto_tac (MI_fast_css addsimps2 [c_def])) 1,
  73.210 -             ALLGOALS (simp_tac (!simpset
  73.211 +             ALLGOALS (simp_tac (simpset()
  73.212  				 addsimps [S1_def,S2_def,S3_def,S4_def,S5_def,S6_def])),
  73.213  	     auto_tac (MI_css addSIs2 [action_mp S_lemma])
  73.214              ]);
  73.215 @@ -391,7 +391,7 @@
  73.216  	   case_tac "(unchanged <e p, c p, r p, m p, rmhist@p>) [[s,t]]" i,
  73.217  	   rewrite_goals_tac action_rews,
  73.218  	   etac Step1_4_7h i,
  73.219 -	   asm_full_simp_tac (!simpset addsimps simps) i
  73.220 +	   asm_full_simp_tac (simpset() addsimps simps) i
  73.221  	  ];
  73.222  
  73.223  (* ----------------------------------------------------------------------
  73.224 @@ -448,7 +448,7 @@
  73.225     (fn _ => [Action_simp_tac 1,
  73.226  	     rtac unchanged_safeI 1,
  73.227               auto_tac (MI_css addSEs2 [action_conjimpE Step1_2_4]),
  73.228 -             ALLGOALS (action_simp_tac (!simpset addsimps [square_def,UNext_def,RNext_def]) [] []),
  73.229 +             ALLGOALS (action_simp_tac (simpset() addsimps [square_def,UNext_def,RNext_def]) [] []),
  73.230  	     auto_tac (MI_fast_css addSEs2 (map action_conjimpE 
  73.231                                                  [Step1_4_4a,Step1_4_4b,Step1_4_4c]))
  73.232  	    ]);
  73.233 @@ -606,9 +606,9 @@
  73.234  \   .& $(S4 rmhist p) .& Write rmCh mem ires p l \
  73.235  \   .-> (S4 rmhist p)$ .& unchanged <e p, c p, r p, rmhist@p>"
  73.236     (fn _ => [split_idle_tac [] 1,
  73.237 -             action_simp_tac (!simpset addsimps [ImpNext_def])
  73.238 +             action_simp_tac (simpset() addsimps [ImpNext_def])
  73.239                               [] [S4EnvUnchE,S4ClerkUnchE,S4RPCUnchE] 1,
  73.240 -             TRYALL (action_simp_tac (!simpset addsimps [square_def]) [] [S4WriteE]),
  73.241 +             TRYALL (action_simp_tac (simpset() addsimps [square_def]) [] [S4WriteE]),
  73.242               Auto_tac()
  73.243              ]);
  73.244  
    74.1 --- a/src/HOL/TLA/Memory/ProcedureInterface.ML	Mon Nov 03 12:12:10 1997 +0100
    74.2 +++ b/src/HOL/TLA/Memory/ProcedureInterface.ML	Mon Nov 03 12:13:18 1997 +0100
    74.3 @@ -28,13 +28,13 @@
    74.4  
    74.5  qed_goal "Call_enabled" ProcedureInterface.thy
    74.6     "!!p. base_var ((caller ch)@p) ==> (.~ $(Calling ch p) .-> $(Enabled (Call ch p (#v))))"
    74.7 -   (fn _ => [action_simp_tac (!simpset addsimps [caller_def, Call_def]) 
    74.8 +   (fn _ => [action_simp_tac (simpset() addsimps [caller_def, Call_def]) 
    74.9                               [] [base_enabled,Pair_inject] 1
   74.10              ]);
   74.11  
   74.12  qed_goal "Return_enabled" ProcedureInterface.thy
   74.13     "!!p. base_var ((rtrner ch)@p) ==> $(Calling ch p) .-> $(Enabled (Return ch p (#v)))"
   74.14 -   (fn _ => [action_simp_tac (!simpset addsimps [rtrner_def, Return_def]) 
   74.15 +   (fn _ => [action_simp_tac (simpset() addsimps [rtrner_def, Return_def]) 
   74.16                               [] [base_enabled,Pair_inject] 1
   74.17              ]);
   74.18  
   74.19 @@ -43,15 +43,15 @@
   74.20  (* Calls and returns change their subchannel *)
   74.21  qed_goal "Call_changed" ProcedureInterface.thy
   74.22     "Call ch p v .-> <Call ch p v>_((caller ch)@p)"
   74.23 -   (fn _ => [auto_tac (!claset,
   74.24 -		       !simpset addsimps [angle_def,Call_def,caller_def,
   74.25 +   (fn _ => [auto_tac (claset(),
   74.26 +		       simpset() addsimps [angle_def,Call_def,caller_def,
   74.27  					  action_rewrite Calling_def])
   74.28  	    ]);
   74.29  
   74.30  qed_goal "Return_changed" ProcedureInterface.thy
   74.31     "Return ch p v .-> <Return ch p v>_((rtrner ch)@p)"
   74.32 -   (fn _ => [auto_tac (!claset,
   74.33 -		       !simpset addsimps [angle_def,Return_def,rtrner_def,
   74.34 +   (fn _ => [auto_tac (claset(),
   74.35 +		       simpset() addsimps [angle_def,Return_def,rtrner_def,
   74.36  					  action_rewrite Calling_def])
   74.37  	    ]);
   74.38  
    75.1 --- a/src/HOL/TLA/Memory/RPC.ML	Mon Nov 03 12:12:10 1997 +0100
    75.2 +++ b/src/HOL/TLA/Memory/RPC.ML	Mon Nov 03 12:13:18 1997 +0100
    75.3 @@ -32,8 +32,8 @@
    75.4  (* RPC failure actions are visible. *)
    75.5  qed_goal "RPCFail_vis" RPC.thy
    75.6     "RPCFail send rcv rst p .-> <RPCNext send rcv rst p>_<rst@p, rtrner send @ p, caller rcv @ p>"
    75.7 -   (fn _ => [auto_tac (!claset addSEs [Return_changedE],
    75.8 -		       !simpset addsimps [angle_def,RPCNext_def,RPCFail_def])
    75.9 +   (fn _ => [auto_tac (claset() addSEs [Return_changedE],
   75.10 +		       simpset() addsimps [angle_def,RPCNext_def,RPCFail_def])
   75.11  	    ]);
   75.12  
   75.13  qed_goal "RPCFail_Next_enabled" RPC.thy
   75.14 @@ -46,7 +46,7 @@
   75.15  qed_goal "RPCFail_enabled" RPC.thy
   75.16     "!!p. base_var <rtrner send @ p, caller rcv @ p, rst@p> ==> \
   75.17  \        .~ $(Calling rcv p) .& $(Calling send p) .-> $(Enabled (RPCFail send rcv rst p))"
   75.18 -   (fn _ => [action_simp_tac (!simpset addsimps [RPCFail_def,Return_def,caller_def,rtrner_def])
   75.19 +   (fn _ => [action_simp_tac (simpset() addsimps [RPCFail_def,Return_def,caller_def,rtrner_def])
   75.20                               [] [base_enabled,Pair_inject] 1
   75.21  	    ]);
   75.22  
   75.23 @@ -54,6 +54,6 @@
   75.24     "!!p. base_var <rtrner send @ p, caller rcv @ p, rst@p> ==> \
   75.25  \        .~ $(Calling rcv p) .& $(Calling send p) .& $(rst@p) .= #rpcB \
   75.26  \        .-> $(Enabled (RPCReply send rcv rst p))"
   75.27 -   (fn _ => [action_simp_tac (!simpset addsimps [RPCReply_def,Return_def,caller_def,rtrner_def])
   75.28 +   (fn _ => [action_simp_tac (simpset() addsimps [RPCReply_def,Return_def,caller_def,rtrner_def])
   75.29                               [] [base_enabled,Pair_inject] 1]);
   75.30  
    76.1 --- a/src/HOL/TLA/Stfun.ML	Mon Nov 03 12:12:10 1997 +0100
    76.2 +++ b/src/HOL/TLA/Stfun.ML	Mon Nov 03 12:13:18 1997 +0100
    76.3 @@ -20,6 +20,6 @@
    76.4  qed_goal "PairVarE" Stfun.thy
    76.5    "[| <v,w> u = (x,y); [| v u = x; w u = y |] ==> PROP R |] ==> PROP R"
    76.6    (fn prems => [cut_facts_tac prems 1, resolve_tac prems 1,
    76.7 -		ALLGOALS (asm_full_simp_tac (!simpset addsimps [pairSF_def]))
    76.8 +		ALLGOALS (asm_full_simp_tac (simpset() addsimps [pairSF_def]))
    76.9                 ]);
   76.10  
    77.1 --- a/src/HOL/TLA/TLA.ML	Mon Nov 03 12:12:10 1997 +0100
    77.2 +++ b/src/HOL/TLA/TLA.ML	Mon Nov 03 12:13:18 1997 +0100
    77.3 @@ -47,7 +47,7 @@
    77.4  AddDs [tempD];
    77.5  
    77.6  val temp_cs = action_cs addSIs [tempI] addDs [tempD];
    77.7 -val temp_css = (temp_cs,!simpset);
    77.8 +val temp_css = (temp_cs,simpset());
    77.9  
   77.10  (* ========================================================================= *)
   77.11  section "Init";
   77.12 @@ -366,7 +366,7 @@
   77.13                Auto_tac(),
   77.14  	      etac (temp_conjimpE STL6) 1, atac 1,
   77.15  	      Asm_full_simp_tac 1,
   77.16 -	      ALLGOALS (asm_full_simp_tac (!simpset addsimps more_temp_simps))
   77.17 +	      ALLGOALS (asm_full_simp_tac (simpset() addsimps more_temp_simps))
   77.18  	    ]);
   77.19  
   77.20  qed_goalw "DmdBoxDmd" TLA.thy [dmd_def] "(<>[]<>F) .= ([]<>F)"
   77.21 @@ -494,13 +494,13 @@
   77.22  
   77.23  fun auto_inv_tac ss =
   77.24    SELECT_GOAL
   77.25 -    ((inv_tac (!claset,ss) 1) THEN
   77.26 +    ((inv_tac (claset(),ss) 1) THEN
   77.27       (TRYALL (action_simp_tac (ss addsimps [Init_def,square_def]) [] [])));
   77.28  
   77.29  
   77.30  qed_goalw "unless" TLA.thy [dmd_def]
   77.31     "!!sigma. (sigma |= [](P .-> P` .| Q`)) ==> (sigma |= stable P .| <>Q`)"
   77.32 -   (fn _ => [action_simp_tac (!simpset) [disjCI] [] 1,
   77.33 +   (fn _ => [action_simp_tac (simpset()) [disjCI] [] 1,
   77.34  	     merge_box_tac 1,
   77.35  	     fast_tac (temp_cs addSEs [Stable]) 1
   77.36  	    ]);
   77.37 @@ -593,12 +593,12 @@
   77.38  qed_goalw "streett_leadsto" TLA.thy [leadsto]
   77.39     "([]<>P .-> []<>Q) .= (<>(P ~> Q))"
   77.40     (fn _ => [Auto_tac(),
   77.41 -             asm_full_simp_tac (!simpset addsimps boxact_def::more_temp_simps) 1,
   77.42 +             asm_full_simp_tac (simpset() addsimps boxact_def::more_temp_simps) 1,
   77.43               SELECT_GOAL (auto_tac (temp_css addSEs2 [DmdImplE,STL4E] 
   77.44                                               addsimps2 Init_simps)) 1,
   77.45               SELECT_GOAL (auto_tac (temp_css addSIs2 [ImplDmdD] addSEs2 [STL4E])) 1,
   77.46               subgoal_tac "sigma |= []<><>Q" 1,
   77.47 -             asm_full_simp_tac (!simpset addsimps more_temp_simps) 1,
   77.48 +             asm_full_simp_tac (simpset() addsimps more_temp_simps) 1,
   77.49               rewtac (temp_rewrite DmdAct),
   77.50               dtac BoxDmdDmdBox 1, atac 1,
   77.51               auto_tac (temp_css addSEs2 [DmdImplE,STL4E])
   77.52 @@ -683,7 +683,7 @@
   77.53  	     auto_tac (temp_css addSEs2 [STL4E]),
   77.54  	     rewtac (temp_rewrite DmdAct),
   77.55  	     subgoal_tac "sigmaa |= <><> Init H" 1,
   77.56 -	     asm_full_simp_tac (!simpset addsimps more_temp_simps) 1,
   77.57 +	     asm_full_simp_tac (simpset() addsimps more_temp_simps) 1,
   77.58  	     fast_tac (temp_cs addSEs [DmdImpl2]) 1
   77.59  	    ]);
   77.60  
   77.61 @@ -810,7 +810,7 @@
   77.62  	   SELECT_GOAL (auto_tac (temp_css addsimps2 [WF_def,dmd_def])) 2,
   77.63  	   case_tac "sigma |= <>[][.~B]_f" 1,
   77.64  	   subgoal_tac "sigma |= <>[]P" 1,
   77.65 -	   asm_full_simp_tac (!simpset addsimps [WF_def]) 1,
   77.66 +	   asm_full_simp_tac (simpset() addsimps [WF_def]) 1,
   77.67  	   rtac (temp_mp (prem1 RS DmdImpl RS STL4)) 1,
   77.68  	   eres_inst_tac [("V","sigma |= <>[][.~B]_f")] thin_rl 1,
   77.69  	   etac (temp_conjimpE STL6) 1, atac 1,
   77.70 @@ -844,10 +844,10 @@
   77.71  	   SELECT_GOAL
   77.72  	     (auto_tac (temp_css addsimps2 [symmetric(temp_rewrite STL5), temp_rewrite STL3]
   77.73  		                 addIs2 [(temp_unlift WF_Box) RS iffD1, temp_mp ImplDmd])) 1,
   77.74 -	   asm_full_simp_tac (!simpset addsimps (WF_def::more_temp_simps)) 1,
   77.75 +	   asm_full_simp_tac (simpset() addsimps (WF_def::more_temp_simps)) 1,
   77.76  	   etac InfImpl 1, atac 1,
   77.77  	   SELECT_GOAL (auto_tac (temp_css addSIs2 [action_mp prem1])) 1,
   77.78 -	   ALLGOALS (asm_full_simp_tac (!simpset addsimps [square_def,angle_def]))
   77.79 +	   ALLGOALS (asm_full_simp_tac (simpset() addsimps [square_def,angle_def]))
   77.80  	  ]);
   77.81  
   77.82  qed_goal "SF2" TLA.thy
   77.83 @@ -862,7 +862,7 @@
   77.84  	   SELECT_GOAL (auto_tac (temp_css addsimps2 [SF_def,dmd_def])) 2,
   77.85  	   case_tac "sigma |= <>[][.~B]_f" 1,
   77.86  	   subgoal_tac "sigma |= <>[]P" 1,
   77.87 -	   asm_full_simp_tac (!simpset addsimps [SF_def]) 1,
   77.88 +	   asm_full_simp_tac (simpset() addsimps [SF_def]) 1,
   77.89  	   rtac (temp_mp (prem1 RS DmdImpl RS STL4)) 1,
   77.90  	   eres_inst_tac [("V","sigma |= <>[][.~B]_f")] thin_rl 1,
   77.91  	   dtac BoxDmdDmdBox 1, atac 1,
   77.92 @@ -894,10 +894,10 @@
   77.93  	     (auto_tac (temp_css addsimps2 [symmetric(temp_rewrite STL5), temp_rewrite STL3]
   77.94  		                 addIs2 [(temp_unlift WF_Box) RS iffD1, temp_mp ImplDmd]
   77.95  			         addSEs2 [DmdImplE])) 1,
   77.96 -	   asm_full_simp_tac (!simpset addsimps (SF_def::more_temp_simps)) 1,
   77.97 +	   asm_full_simp_tac (simpset() addsimps (SF_def::more_temp_simps)) 1,
   77.98  	   eres_inst_tac [("F",".~ [.~ B]_f")] InfImpl 1, atac 1,
   77.99  	   SELECT_GOAL (auto_tac (temp_css addSIs2 [action_mp prem1])) 1,
  77.100 -	   ALLGOALS (asm_full_simp_tac (!simpset addsimps [square_def,angle_def]))
  77.101 +	   ALLGOALS (asm_full_simp_tac (simpset() addsimps [square_def,angle_def]))
  77.102  	  ]);
  77.103  
  77.104  (* ------------------------------------------------------------------------- *)
  77.105 @@ -951,7 +951,7 @@
  77.106              etac wf_dmd 1,
  77.107              etac dup_boxE 1,
  77.108              etac STL4E 1,
  77.109 -            action_simp_tac (!simpset addsimps [con_abs]) [tempI] [] 1,
  77.110 +            action_simp_tac (simpset() addsimps [con_abs]) [tempI] [] 1,
  77.111              case_tac "sigma |= <>[][#False]_v" 1,
  77.112              ALLGOALS Asm_full_simp_tac,
  77.113              rewrite_goals_tac more_temp_simps,
  77.114 @@ -983,7 +983,7 @@
  77.115    (fn [prem] => [Auto_tac(),
  77.116                   rtac ccontr 1,
  77.117                   asm_full_simp_tac 
  77.118 -                   (!simpset addsimps ([action_rewrite not_angle] @ more_temp_simps)) 1,
  77.119 +                   (simpset() addsimps ([action_rewrite not_angle] @ more_temp_simps)) 1,
  77.120                   dtac (prem RS (temp_mp wf_not_dmd_box_decrease)) 1,
  77.121                   dtac BoxDmdDmdBox 1, atac 1,
  77.122                   subgoal_tac "sigma |= []<>((#False)::action)" 1,
  77.123 @@ -1001,11 +1001,11 @@
  77.124    (fn _ => [Auto_tac(),
  77.125              subgoal_tac "sigma |= []<><.~( {[n$,$n]} .: #less_than)>_n" 1,
  77.126              etac thin_rl 1, etac STL4E 1, rtac DmdImpl 1,
  77.127 -            SELECT_GOAL (auto_tac (!claset, !simpset addsimps [angle_def])) 1,
  77.128 +            SELECT_GOAL (auto_tac (claset(), simpset() addsimps [angle_def])) 1,
  77.129              rtac nat_less_cases 1,
  77.130              Auto_tac(),
  77.131              rtac (temp_mp wf_box_dmd_decrease) 1,
  77.132 -            auto_tac (!claset addSEs [STL4E] addSIs [DmdImpl], !simpset)
  77.133 +            auto_tac (claset() addSEs [STL4E] addSIs [DmdImpl], simpset())
  77.134             ]);
  77.135  
  77.136  (* ------------------------------------------------------------------------- *)
    78.1 --- a/src/HOL/TLA/cladata.ML	Mon Nov 03 12:12:10 1997 +0100
    78.2 +++ b/src/HOL/TLA/cladata.ML	Mon Nov 03 12:13:18 1997 +0100
    78.3 @@ -43,14 +43,14 @@
    78.4  **)
    78.5  
    78.6  val action_cs = (HOL_cs addSIs [actionI,intI] addSEs [exE_prop] addDs [actionD,intD] 
    78.7 -                        addss !simpset) 
    78.8 +                        addss simpset()) 
    78.9                  addSaltern action_hyp_subst_tac;
   78.10 -val action_css = (action_cs, !simpset);
   78.11 +val action_css = (action_cs, simpset());
   78.12  
   78.13  
   78.14  AddSIs [actionI,intI];
   78.15  AddDs  [actionD,intD];
   78.16 -Addss  (!simpset);
   78.17 +Addss  (simpset());
   78.18  
   78.19  
   78.20  
    79.1 --- a/src/HOL/Trancl.ML	Mon Nov 03 12:12:10 1997 +0100
    79.2 +++ b/src/HOL/Trancl.ML	Mon Nov 03 12:13:18 1997 +0100
    79.3 @@ -52,7 +52,7 @@
    79.4  \     !!x y z.[| P((x,y)); (x,y): r^*; (y,z): r |]  ==>  P((x,z)) |] \
    79.5  \  ==>  P((a,b))";
    79.6  by (rtac ([rtrancl_def, rtrancl_fun_mono, major] MRS def_induct) 1);
    79.7 -by (blast_tac (!claset addIs prems) 1);
    79.8 +by (blast_tac (claset() addIs prems) 1);
    79.9  qed "rtrancl_full_induct";
   79.10  
   79.11  (*nice induction rule*)
   79.12 @@ -67,8 +67,8 @@
   79.13  by (Blast_tac 1);
   79.14  (*now do the induction*)
   79.15  by (resolve_tac [major RS rtrancl_full_induct] 1);
   79.16 -by (blast_tac (!claset addIs prems) 1);
   79.17 -by (blast_tac (!claset addIs prems) 1);
   79.18 +by (blast_tac (claset() addIs prems) 1);
   79.19 +by (blast_tac (claset() addIs prems) 1);
   79.20  qed "rtrancl_induct";
   79.21  
   79.22  bind_thm
   79.23 @@ -78,9 +78,9 @@
   79.24  
   79.25  (*transitivity of transitive closure!! -- by induction.*)
   79.26  goalw Trancl.thy [trans_def] "trans(r^*)";
   79.27 -by (safe_tac (!claset));
   79.28 +by (safe_tac (claset()));
   79.29  by (eres_inst_tac [("b","z")] rtrancl_induct 1);
   79.30 -by (ALLGOALS(blast_tac (!claset addIs [rtrancl_into_rtrancl])));
   79.31 +by (ALLGOALS(blast_tac (claset() addIs [rtrancl_into_rtrancl])));
   79.32  qed "trans_rtrancl";
   79.33  
   79.34  bind_thm ("rtrancl_trans", trans_rtrancl RS transD);
   79.35 @@ -93,8 +93,8 @@
   79.36  \    |] ==> P";
   79.37  by (subgoal_tac "(a::'a) = b  | (? y. (a,y) : r^* & (y,b) : r)" 1);
   79.38  by (rtac (major RS rtrancl_induct) 2);
   79.39 -by (blast_tac (!claset addIs prems) 2);
   79.40 -by (blast_tac (!claset addIs prems) 2);
   79.41 +by (blast_tac (claset() addIs prems) 2);
   79.42 +by (blast_tac (claset() addIs prems) 2);
   79.43  by (REPEAT (eresolve_tac ([asm_rl,exE,disjE,conjE]@prems) 1));
   79.44  qed "rtranclE";
   79.45  
   79.46 @@ -110,7 +110,7 @@
   79.47  by (rtac iffI 1);
   79.48  by (etac rtrancl_induct 1);
   79.49  by (rtac rtrancl_refl 1);
   79.50 -by (blast_tac (!claset addIs [rtrancl_trans]) 1);
   79.51 +by (blast_tac (claset() addIs [rtrancl_trans]) 1);
   79.52  by (etac r_into_rtrancl 1);
   79.53  qed "rtrancl_idemp";
   79.54  Addsimps [rtrancl_idemp];
   79.55 @@ -128,12 +128,12 @@
   79.56  qed "rtrancl_subset";
   79.57  
   79.58  goal Trancl.thy "!!R. (R^* Un S^*)^* = (R Un S)^*";
   79.59 -by (blast_tac (!claset addSIs [rtrancl_subset]
   79.60 +by (blast_tac (claset() addSIs [rtrancl_subset]
   79.61                         addIs [r_into_rtrancl, rtrancl_mono RS subsetD]) 1);
   79.62  qed "rtrancl_Un_rtrancl";
   79.63  
   79.64  goal Trancl.thy "(R^=)^* = R^*";
   79.65 -by (blast_tac (!claset addSIs [rtrancl_subset]
   79.66 +by (blast_tac (claset() addSIs [rtrancl_subset]
   79.67                         addIs  [rtrancl_refl, r_into_rtrancl]) 1);
   79.68  qed "rtrancl_reflcl";
   79.69  Addsimps [rtrancl_reflcl];
   79.70 @@ -142,18 +142,18 @@
   79.71  by (rtac inverseI 1);
   79.72  by (etac rtrancl_induct 1);
   79.73  by (rtac rtrancl_refl 1);
   79.74 -by (blast_tac (!claset addIs [r_into_rtrancl,rtrancl_trans]) 1);
   79.75 +by (blast_tac (claset() addIs [r_into_rtrancl,rtrancl_trans]) 1);
   79.76  qed "rtrancl_inverseD";
   79.77  
   79.78  goal Trancl.thy "!!r. (x,y) : (r^*)^-1 ==> (x,y) : (r^-1)^*";
   79.79  by (dtac inverseD 1);
   79.80  by (etac rtrancl_induct 1);
   79.81  by (rtac rtrancl_refl 1);
   79.82 -by (blast_tac (!claset addIs [r_into_rtrancl,rtrancl_trans]) 1);
   79.83 +by (blast_tac (claset() addIs [r_into_rtrancl,rtrancl_trans]) 1);
   79.84  qed "rtrancl_inverseI";
   79.85  
   79.86  goal Trancl.thy "