added local simpsets
authorclasohm
Wed Oct 04 13:12:14 1995 +0100 (1995-10-04)
changeset 12663ae9fe3c0f68
parent 1265 6ef9a9893fd6
child 1267 bca91b4e1710
added local simpsets
src/HOL/AxClasses/Group/GroupDefs.ML
src/HOL/AxClasses/Tutorial/ProdGroupInsts.thy
src/HOL/IMP/Denotation.ML
src/HOL/IMP/Equiv.ML
src/HOL/IMP/Hoare.ML
src/HOL/IOA/ABP/Action.ML
src/HOL/IOA/ABP/Correctness.ML
src/HOL/IOA/ABP/Lemmas.ML
src/HOL/IOA/NTP/Abschannel.ML
src/HOL/IOA/NTP/Action.ML
src/HOL/IOA/NTP/Correctness.ML
src/HOL/IOA/NTP/Impl.ML
src/HOL/IOA/NTP/Lemmas.ML
src/HOL/IOA/NTP/Multiset.ML
src/HOL/IOA/NTP/Packet.ML
src/HOL/IOA/NTP/Receiver.ML
src/HOL/IOA/NTP/Sender.ML
src/HOL/IOA/meta_theory/Asig.ML
src/HOL/IOA/meta_theory/IOA.ML
src/HOL/IOA/meta_theory/Option.ML
src/HOL/IOA/meta_theory/Solve.ML
src/HOL/Integ/Equiv.ML
src/HOL/Integ/Integ.ML
src/HOL/Lambda/Confluence.ML
src/HOL/Lambda/Lambda.ML
src/HOL/Lambda/ParRed.ML
src/HOL/Subst/AList.ML
src/HOL/Subst/ROOT.ML
src/HOL/Subst/Setplus.ML
src/HOL/Subst/Subst.ML
src/HOL/Subst/Subst.thy
src/HOL/Subst/UTLemmas.ML
src/HOL/Subst/UTerm.ML
src/HOL/Subst/Unifier.ML
src/HOL/ex/Acc.thy
src/HOL/ex/BT.ML
src/HOL/ex/InSort.ML
src/HOL/ex/LList.ML
src/HOL/ex/MT.ML
src/HOL/ex/NatSum.ML
src/HOL/ex/Perm.ML
src/HOL/ex/PropLog.ML
src/HOL/ex/Puzzle.ML
src/HOL/ex/Qsort.ML
src/HOL/ex/SList.ML
src/HOL/ex/SList.thy
src/HOL/ex/Simult.ML
src/HOL/ex/Sorting.ML
src/HOL/ex/String.ML
src/HOL/ex/Term.ML
     1.1 --- a/src/HOL/AxClasses/Group/GroupDefs.ML	Wed Oct 04 13:11:57 1995 +0100
     1.2 +++ b/src/HOL/AxClasses/Group/GroupDefs.ML	Wed Oct 04 13:12:14 1995 +0100
     1.3 @@ -29,6 +29,8 @@
     1.4  
     1.5  (* cartesian products *)
     1.6  
     1.7 +val prod_ss = simpset_of "Prod";
     1.8 +
     1.9  goalw thy [times_prod_def] "(x * y) * z = x * (y * (z::'a::semigroup*'b::semigroup))";
    1.10  by (simp_tac (prod_ss addsimps [assoc]) 1);
    1.11  qed "prod_assoc";
     2.1 --- a/src/HOL/AxClasses/Tutorial/ProdGroupInsts.thy	Wed Oct 04 13:11:57 1995 +0100
     2.2 +++ b/src/HOL/AxClasses/Tutorial/ProdGroupInsts.thy	Wed Oct 04 13:12:14 1995 +0100
     2.3 @@ -15,6 +15,6 @@
     2.4  
     2.5  instance
     2.6    "*" :: (semigroup, semigroup) semigroup
     2.7 -    {| simp_tac (prod_ss addsimps [assoc]) 1 |}
     2.8 +    {| simp_tac (!simpset addsimps [assoc]) 1 |}
     2.9  
    2.10  end
     3.1 --- a/src/HOL/IMP/Denotation.ML	Wed Oct 04 13:11:57 1995 +0100
     3.2 +++ b/src/HOL/IMP/Denotation.ML	Wed Oct 04 13:12:14 1995 +0100
     3.3 @@ -8,9 +8,6 @@
     3.4  
     3.5  (**** Rewrite Rules for A,B,C ****)
     3.6  
     3.7 -val A_simps =
     3.8 -     [A_nat,A_loc,A_op1,A_op2];
     3.9 -
    3.10  val B_simps = map (fn t => t RS eq_reflection)
    3.11       [B_true,B_false,B_op,B_not,B_and,B_or]
    3.12  
     4.1 --- a/src/HOL/IMP/Equiv.ML	Wed Oct 04 13:11:57 1995 +0100
     4.2 +++ b/src/HOL/IMP/Equiv.ML	Wed Oct 04 13:12:14 1995 +0100
     4.3 @@ -6,19 +6,19 @@
     4.4  
     4.5  goal Equiv.thy "!n. (<a,s> -a-> n) = (n = A a s)";
     4.6  by (aexp.induct_tac "a" 1);                		  (* struct. ind. *)
     4.7 -by (ALLGOALS(simp_tac (HOL_ss addsimps A_simps)));	  (* rewr. Den.   *)
     4.8 +by (ALLGOALS Simp_tac); 	                          (* rewr. Den.   *)
     4.9  by (TRYALL (fast_tac (set_cs addSIs (evala.intrs@prems)
    4.10                               addSEs evala_elim_cases)));
    4.11  bind_thm("aexp_iff", result() RS spec);
    4.12  
    4.13  goal Equiv.thy "!w. (<b,s> -b-> w) = (w = B b s)";
    4.14  by (bexp.induct_tac "b" 1);
    4.15 -by (ALLGOALS(asm_simp_tac (HOL_ss addcongs [conj_cong]
    4.16 -              addsimps (aexp_iff::B_simps@evalb_simps))));
    4.17 +by (ALLGOALS(asm_simp_tac (!simpset addcongs [conj_cong]
    4.18 +                                    addsimps (aexp_iff::evalb_simps))));
    4.19  bind_thm("bexp_iff", result() RS spec);
    4.20  
    4.21 -val equiv_cs = comp_cs addss
    4.22 -                 (prod_ss addsimps (aexp_iff::bexp_iff::evalc.intrs));
    4.23 +val equiv_cs =
    4.24 + comp_cs addss (simpset_of "Prod" addsimps (aexp_iff::bexp_iff::evalc.intrs));
    4.25  
    4.26  goal Equiv.thy "!!c. <c,s> -c-> t ==> (s,t) : C(c)";
    4.27  
     5.1 --- a/src/HOL/IMP/Hoare.ML	Wed Oct 04 13:11:57 1995 +0100
     5.2 +++ b/src/HOL/IMP/Hoare.ML	Wed Oct 04 13:12:14 1995 +0100
     5.3 @@ -23,7 +23,7 @@
     5.4  
     5.5  goalw Hoare.thy (spec_def::C_simps)
     5.6    "!!P. [| !s. P s --> Q(s[A a s/x]) |] ==> {{P}} x := a {{Q}}";
     5.7 -by(asm_full_simp_tac prod_ss 1);
     5.8 +by(Asm_full_simp_tac 1);
     5.9  qed"hoare_assign";
    5.10  
    5.11  goalw Hoare.thy (spec_def::C_simps)
    5.12 @@ -34,7 +34,7 @@
    5.13  goalw Hoare.thy (spec_def::C_simps)
    5.14    "!!P. [| {{%s. P s & B b s}} c {{Q}}; {{%s. P s & ~B b s}} d {{Q}} |] ==> \
    5.15  \  {{P}} ifc b then c else d {{Q}}";
    5.16 -by(simp_tac prod_ss 1);
    5.17 +by(Simp_tac 1);
    5.18  by(fast_tac comp_cs 1);
    5.19  qed"hoare_if";
    5.20  
    5.21 @@ -49,7 +49,7 @@
    5.22  by (rewrite_goals_tac [Gamma_def]);  
    5.23  by(eres_inst_tac [("x","a")] allE 1);
    5.24  by (safe_tac comp_cs);
    5.25 -by(ALLGOALS(asm_full_simp_tac prod_ss));
    5.26 +by(ALLGOALS Asm_full_simp_tac);
    5.27  qed"hoare_while";
    5.28  
    5.29  fun while_tac inv ss i =
    5.30 @@ -70,7 +70,7 @@
    5.31  \  while noti(ROp op = (X u) (X y)) \
    5.32  \             do (u := Op1 Suc (X u); z := Op1 Suc (X z))) \
    5.33  \  {{%s. s(z)=i+j}}";
    5.34 -val ss = arith_ss addsimps (eq_sym_conv::assign_def::prems@A_simps@B_simps);
    5.35 +val ss = !simpset addsimps (eq_sym_conv::assign_def::prems);
    5.36  by(hoare_tac ss);
    5.37  by(while_tac "%s.s z = i + s u & s y = j" ss 3);
    5.38  by(hoare_tac ss);
     6.1 --- a/src/HOL/IOA/ABP/Action.ML	Wed Oct 04 13:11:57 1995 +0100
     6.2 +++ b/src/HOL/IOA/ABP/Action.ML	Wed Oct 04 13:12:14 1995 +0100
     6.3 @@ -8,6 +8,6 @@
     6.4  
     6.5  goal Action.thy "!!x. x = y ==> action_case a b c d e f g x =     \
     6.6  \                               action_case a b c d e f g y";
     6.7 -by (asm_simp_tac HOL_ss 1);
     6.8 +by (Asm_simp_tac 1);
     6.9  
    6.10 -val action_ss = arith_ss addcongs [result()] addsimps Action.action.simps;
    6.11 +Addcongs [result()];
     7.1 --- a/src/HOL/IOA/ABP/Correctness.ML	Wed Oct 04 13:11:57 1995 +0100
     7.2 +++ b/src/HOL/IOA/ABP/Correctness.ML	Wed Oct 04 13:12:14 1995 +0100
     7.3 @@ -12,33 +12,29 @@
     7.4  by (fast_tac HOL_cs 1);
     7.5  qed"exis_elim";
     7.6  
     7.7 -val abschannel_ss = action_ss addsimps 
     7.8 +Addsimps 
     7.9   ([srch_asig_def, rsch_asig_def, rsch_ioa_def, srch_ioa_def, ch_ioa_def, 
    7.10     ch_asig_def, srch_actions_def, rsch_actions_def, rename_def, asig_of_def, 
    7.11     actions_def, exis_elim, srch_trans_def, rsch_trans_def, ch_trans_def, 
    7.12 -   trans_of_def] 
    7.13 -   @ Option.option.simps @ act.simps @ asig_projections @ set_lemmas);
    7.14 +   trans_of_def] @ asig_projections @ set_lemmas);
    7.15  
    7.16  val abschannel_fin = [srch_fin_asig_def, rsch_fin_asig_def, 
    7.17                        rsch_fin_ioa_def, srch_fin_ioa_def, 
    7.18                        ch_fin_ioa_def,ch_fin_trans_def,ch_fin_asig_def];
    7.19 -val abschannel_fin_ss = abschannel_ss addsimps abschannel_fin;
    7.20 +Addsimps abschannel_fin;
    7.21  
    7.22  val impl_ioas =  [Sender.sender_ioa_def,Receiver.receiver_ioa_def];
    7.23  val impl_trans = [Sender.sender_trans_def,Receiver.receiver_trans_def];
    7.24  val impl_asigs = [Sender.sender_asig_def,Receiver.receiver_asig_def];
    7.25 -val impl_ss = merge_ss(action_ss,list_ss) 
    7.26 -              addcongs [let_weak_cong] 
    7.27 -              addsimps [Let_def, ioa_triple_proj, starts_of_par];
    7.28 +Addcongs [let_weak_cong];
    7.29 +Addsimps [Let_def, ioa_triple_proj, starts_of_par];
    7.30  
    7.31  val env_ioas = [Env.env_ioa_def,Env.env_asig_def,Env.env_trans_def];
    7.32  val hom_ioas = env_ioas @ impl_ioas @ impl_trans @ impl_asigs @ 
    7.33                 asig_projections @ set_lemmas;
    7.34 -val hom_ss = (impl_ss addsimps hom_ioas);
    7.35 +Addsimps hom_ioas;
    7.36  
    7.37 -val red_ss = impl_ss addsimps [reduce_Nil,reduce_Cons];
    7.38 -val red_ss_ch = merge_ss(abschannel_fin_ss,red_ss);
    7.39 -
    7.40 +Addsimps [reduce_Nil,reduce_Cons];
    7.41  
    7.42  
    7.43  
    7.44 @@ -52,27 +48,27 @@
    7.45   by (subgoal_tac "(l~=[]) --> (reduce(l)~=[])" 1);
    7.46   by (fast_tac HOL_cs 1); 
    7.47   by (List.list.induct_tac "l" 1);
    7.48 - by (simp_tac red_ss 1);
    7.49 - by (simp_tac red_ss 1);
    7.50 + by (Simp_tac 1);
    7.51 + by (Simp_tac 1);
    7.52   by (rtac (expand_list_case RS iffD2) 1);
    7.53 - by (asm_full_simp_tac list_ss 1);
    7.54 + by (Asm_full_simp_tac 1);
    7.55   by (REPEAT (rtac allI 1)); 
    7.56   by (rtac impI 1); 
    7.57   by (hyp_subst_tac 1);
    7.58   by (rtac (expand_if RS ssubst) 1);
    7.59 - by (asm_full_simp_tac list_ss 1);
    7.60 - by (asm_full_simp_tac red_ss 1);
    7.61 + by (Asm_full_simp_tac 1);
    7.62 + by (Asm_full_simp_tac 1);
    7.63  val l_iff_red_nil = result();
    7.64  
    7.65  goal Correctness.thy "s~=[] --> hd(s)=hd(reduce(s))";
    7.66  by (List.list.induct_tac "s" 1);
    7.67 -by (simp_tac red_ss 1);
    7.68 +by (Simp_tac 1);
    7.69  by (case_tac "list =[]" 1);
    7.70 -by (asm_full_simp_tac red_ss 1);
    7.71 +by (Asm_full_simp_tac 1);
    7.72  (* main case *)
    7.73  by (rotate 1 1);
    7.74  by (asm_full_simp_tac list_ss 1);
    7.75 -by (simp_tac red_ss 1);
    7.76 +by (Simp_tac 1);
    7.77  by (rtac (expand_list_case RS iffD2) 1);
    7.78  by (asm_full_simp_tac list_ss 1);
    7.79  by (REPEAT (rtac allI 1)); 
    7.80 @@ -80,31 +76,31 @@
    7.81  by (rtac (expand_if RS ssubst) 1);
    7.82  by (REPEAT(hyp_subst_tac 1));
    7.83  by (etac subst 1);
    7.84 -by (simp_tac list_ss 1);
    7.85 +by (Simp_tac 1);
    7.86  qed"hd_is_reduce_hd";
    7.87  
    7.88  (* to be used in the following Lemma *)
    7.89  goal Correctness.thy "l~=[] --> reverse(reduce(l))~=[]";
    7.90  by (List.list.induct_tac "l" 1);
    7.91 -by (simp_tac red_ss 1);
    7.92 +by (Simp_tac 1);
    7.93  by (case_tac "list =[]" 1);
    7.94 -by (asm_full_simp_tac (red_ss addsimps [reverse_Cons]) 1);
    7.95 +by (asm_full_simp_tac (!simpset addsimps [reverse_Cons]) 1);
    7.96  (* main case *)
    7.97  by (rotate 1 1);
    7.98 -by (asm_full_simp_tac red_ss 1);
    7.99 +by (Asm_full_simp_tac 1);
   7.100  by (cut_inst_tac [("l","list")] cons_not_nil 1); 
   7.101 -by (asm_full_simp_tac list_ss 1);
   7.102 +by (Asm_full_simp_tac 1);
   7.103  by (REPEAT (etac exE 1));
   7.104 -by (asm_simp_tac list_ss 1);
   7.105 +by (Asm_simp_tac 1);
   7.106  by (rtac (expand_if RS ssubst) 1);
   7.107  by (hyp_subst_tac 1);
   7.108 -by (asm_full_simp_tac (list_ss addsimps [reverse_Cons]) 1); 
   7.109 +by (asm_full_simp_tac (!simpset addsimps [reverse_Cons]) 1); 
   7.110  qed"rev_red_not_nil";
   7.111  
   7.112  (* shows applicability of the induction hypothesis of the following Lemma 1 *)
   7.113  goal Correctness.thy "!!l.[| l~=[] |] ==>   \
   7.114  \   hd(reverse(reduce(a#l))) = hd(reverse(reduce(l)))";
   7.115 - by (simp_tac red_ss 1);
   7.116 + by (Simp_tac 1);
   7.117   by (rtac (expand_list_case RS iffD2) 1);
   7.118   by (asm_full_simp_tac list_ss 1);
   7.119   by (REPEAT (rtac allI 1)); 
   7.120 @@ -114,6 +110,7 @@
   7.121                            (rev_red_not_nil RS mp)])  1);
   7.122  qed"last_ind_on_first";
   7.123  
   7.124 +val impl_ss = !simpset delsimps [reduce_Cons];
   7.125  
   7.126  (* Main Lemma 1 for S_pkt in showing that reduce is refinement  *) 
   7.127  goal Correctness.thy 
   7.128 @@ -124,26 +121,26 @@
   7.129  by (rtac conjI 1);
   7.130  (* --> *)
   7.131  by (List.list.induct_tac "l" 1);
   7.132 -by (simp_tac red_ss 1);
   7.133 +by (Simp_tac 1);
   7.134  by (case_tac "list=[]" 1);
   7.135 - by (asm_full_simp_tac (red_ss  addsimps [reverse_Nil,reverse_Cons]) 1);
   7.136 + by (asm_full_simp_tac (!simpset addsimps [reverse_Nil,reverse_Cons]) 1);
   7.137   by (rtac impI 1);
   7.138 -by (simp_tac red_ss 1);
   7.139 +by (Simp_tac 1);
   7.140  by (cut_inst_tac [("l","list")] cons_not_nil 1);
   7.141   by (asm_full_simp_tac impl_ss 1);
   7.142   by (REPEAT (etac exE 1));
   7.143   by (hyp_subst_tac 1);
   7.144  by (asm_full_simp_tac (impl_ss addsimps [last_ind_on_first,l_iff_red_nil]) 1);
   7.145  (* <-- *)
   7.146 -by (simp_tac (red_ss addsimps [and_de_morgan_and_absorbe,l_iff_red_nil]) 1);
   7.147 +by (simp_tac (!simpset addsimps [and_de_morgan_and_absorbe,l_iff_red_nil]) 1);
   7.148  by (List.list.induct_tac "l" 1);
   7.149 -by (simp_tac red_ss 1);
   7.150 +by (Simp_tac 1);
   7.151  by (case_tac "list=[]" 1);
   7.152 - by (asm_full_simp_tac (red_ss  addsimps [reverse_Nil,reverse_Cons]) 1);
   7.153 + by (asm_full_simp_tac (!simpset addsimps [reverse_Nil,reverse_Cons]) 1);
   7.154  by (rtac (expand_if RS ssubst) 1);
   7.155   by (fast_tac HOL_cs 1);
   7.156   by (rtac impI 1);
   7.157 -by (simp_tac red_ss 1);
   7.158 +by (Simp_tac 1);
   7.159  by (cut_inst_tac [("l","list")] cons_not_nil 1);
   7.160   by (asm_full_simp_tac impl_ss 1);
   7.161   by (REPEAT (etac exE 1));
   7.162 @@ -162,17 +159,17 @@
   7.163  \      reduce(tl(s))=reduce(s) else      \
   7.164  \      reduce(tl(s))=tl(reduce(s))"; 
   7.165  by (cut_inst_tac [("l","s")] cons_not_nil 1);
   7.166 -by (asm_full_simp_tac red_ss 1);
   7.167 +by (Asm_full_simp_tac 1);
   7.168  by (REPEAT (etac exE 1));
   7.169 -by (asm_full_simp_tac red_ss 1);
   7.170 +by (Asm_full_simp_tac 1);
   7.171  by (rtac (expand_if RS ssubst) 1);
   7.172  by (rtac conjI 1);
   7.173 -by (simp_tac (red_ss addsimps [and_de_morgan_and_absorbe]) 2);
   7.174 -by (ALLGOALS (EVERY'[rtac impI,etac conjE,cut_inst_tac [("l","xs")] cons_not_nil,asm_full_simp_tac red_ss]));
   7.175 +by (simp_tac (!simpset addsimps [and_de_morgan_and_absorbe]) 2);
   7.176 +by (ALLGOALS (EVERY'[rtac impI,etac conjE,cut_inst_tac [("l","xs")] cons_not_nil,Asm_full_simp_tac]));
   7.177  by (REPEAT (etac exE 1));
   7.178  by (REPEAT (etac exE 2));
   7.179  by (REPEAT(hyp_subst_tac 2));
   7.180 -by (ALLGOALS (asm_full_simp_tac red_ss));
   7.181 +by (ALLGOALS (Asm_full_simp_tac));
   7.182  val reduce_tl =result();
   7.183  
   7.184  
   7.185 @@ -182,18 +179,18 @@
   7.186  
   7.187  goal Correctness.thy 
   7.188        "is_weak_pmap reduce ch_ioa ch_fin_ioa";
   7.189 -by (simp_tac (red_ss addsimps [Solve.is_weak_pmap_def]) 1);
   7.190 +by (simp_tac (!simpset addsimps [Solve.is_weak_pmap_def]) 1);
   7.191  by (rtac conjI 1);
   7.192  (* --------------  start states ----------------- *)
   7.193 -by (simp_tac red_ss_ch 1);
   7.194 +by (Simp_tac 1);
   7.195  br ballI 1;
   7.196 -by (asm_full_simp_tac red_ss_ch 1);
   7.197 +by (Asm_full_simp_tac 1);
   7.198  (* ---------------- main-part ------------------- *)
   7.199  by (REPEAT (rtac allI 1));
   7.200  by (rtac imp_conj_lemma 1);
   7.201  by (act.induct_tac "a" 1);
   7.202  (* ----------------- 2 cases ---------------------*)
   7.203 -by (ALLGOALS (simp_tac (red_ss_ch addsimps [externals_def])));
   7.204 +by (ALLGOALS (simp_tac (!simpset addsimps [externals_def])));
   7.205  (* fst case --------------------------------------*)
   7.206   by (rtac impI 1);
   7.207   by (rtac disjI2 1);
   7.208 @@ -202,9 +199,9 @@
   7.209   by (rtac impI 1);
   7.210   by (REPEAT (etac conjE 1));
   7.211   by (etac disjE 1);
   7.212 -by (asm_full_simp_tac (red_ss addsimps [l_iff_red_nil]) 1);
   7.213 +by (asm_full_simp_tac (!simpset addsimps [l_iff_red_nil]) 1);
   7.214  by (etac (hd_is_reduce_hd RS mp) 1); 
   7.215 -by (asm_full_simp_tac (red_ss addsimps [l_iff_red_nil]) 1);
   7.216 +by (asm_full_simp_tac (!simpset addsimps [l_iff_red_nil]) 1);
   7.217  by (rtac conjI 1);
   7.218  by (etac (hd_is_reduce_hd RS mp) 1); 
   7.219  by (rtac (bool_if_impl_or RS mp) 1);
   7.220 @@ -228,129 +225,138 @@
   7.221     the absence of internal actions. *)
   7.222  goal Correctness.thy 
   7.223        "is_weak_pmap (%id.id) sender_ioa sender_ioa";
   7.224 -by (simp_tac (red_ss addsimps [Solve.is_weak_pmap_def]) 1);
   7.225 +by (simp_tac (!simpset addsimps [Solve.is_weak_pmap_def]) 1);
   7.226  by (rtac conjI 1);
   7.227  (* start states *)
   7.228  br ballI 1;
   7.229 -by (simp_tac red_ss_ch 1);
   7.230 +by (Simp_tac 1);
   7.231  (* main-part *)
   7.232  by (REPEAT (rtac allI 1));
   7.233  by (rtac imp_conj_lemma 1);
   7.234  by (Action.action.induct_tac "a" 1);
   7.235  (* 7 cases *)
   7.236 -by (ALLGOALS (simp_tac ((hom_ss addsimps [externals_def]) setloop (split_tac [expand_if]))));
   7.237 +by (ALLGOALS (simp_tac ((!simpset addsimps [externals_def]) setloop (split_tac [expand_if]))));
   7.238  qed"sender_unchanged";
   7.239  
   7.240  (* 2 copies of before *)
   7.241  goal Correctness.thy 
   7.242        "is_weak_pmap (%id.id) receiver_ioa receiver_ioa";
   7.243 -by (simp_tac (red_ss addsimps [Solve.is_weak_pmap_def]) 1);
   7.244 +by (simp_tac (!simpset addsimps [Solve.is_weak_pmap_def]) 1);
   7.245  by (rtac conjI 1);
   7.246   (* start states *)
   7.247  br ballI 1;
   7.248 -by (simp_tac red_ss_ch 1);
   7.249 +by (Simp_tac 1);
   7.250  (* main-part *)
   7.251  by (REPEAT (rtac allI 1));
   7.252  by (rtac imp_conj_lemma 1);
   7.253  by (Action.action.induct_tac "a" 1);
   7.254  (* 7 cases *)
   7.255 -by (ALLGOALS (simp_tac ((hom_ss addsimps [externals_def]) setloop (split_tac [expand_if]))));
   7.256 +by (ALLGOALS (simp_tac ((!simpset addsimps [externals_def]) setloop (split_tac [expand_if]))));
   7.257  qed"receiver_unchanged";
   7.258  
   7.259  goal Correctness.thy 
   7.260        "is_weak_pmap (%id.id) env_ioa env_ioa";
   7.261 -by (simp_tac (red_ss addsimps [Solve.is_weak_pmap_def]) 1);
   7.262 +by (simp_tac (!simpset addsimps [Solve.is_weak_pmap_def]) 1);
   7.263  by (rtac conjI 1);
   7.264  (* start states *)
   7.265  br ballI 1;
   7.266 -by (simp_tac red_ss_ch 1);
   7.267 +by (Simp_tac 1);
   7.268  (* main-part *)
   7.269  by (REPEAT (rtac allI 1));
   7.270  by (rtac imp_conj_lemma 1);
   7.271  by (Action.action.induct_tac "a" 1);
   7.272  (* 7 cases *)
   7.273 -by (ALLGOALS (simp_tac ((hom_ss addsimps [externals_def]) setloop (split_tac [expand_if]))));
   7.274 +by (ALLGOALS (simp_tac ((!simpset addsimps [externals_def]) setloop (split_tac [expand_if]))));
   7.275  qed"env_unchanged";
   7.276  
   7.277  
   7.278  goal Correctness.thy "compat_ioas srch_ioa rsch_ioa"; 
   7.279 -by (simp_tac (red_ss_ch addsimps [compat_ioas_def,compat_asigs_def,Int_def,empty_def]) 1);
   7.280 +by (simp_tac (!simpset addsimps [compat_ioas_def,compat_asigs_def,Int_def,empty_def]) 1);
   7.281  by (rtac set_ext 1);
   7.282  by (Action.action.induct_tac "x" 1);
   7.283 -by (ALLGOALS(simp_tac red_ss_ch));
   7.284 +by (ALLGOALS(Simp_tac));
   7.285  val compat_single_ch = result();
   7.286  
   7.287  (* totally the same as before *)
   7.288  goal Correctness.thy "compat_ioas srch_fin_ioa rsch_fin_ioa"; 
   7.289 -by (simp_tac (red_ss_ch addsimps [compat_ioas_def,compat_asigs_def,Int_def,empty_def]) 1);
   7.290 +by (simp_tac (!simpset addsimps [compat_ioas_def,compat_asigs_def,Int_def,empty_def]) 1);
   7.291  by (rtac set_ext 1);
   7.292  by (Action.action.induct_tac "x" 1);
   7.293 -by (ALLGOALS(simp_tac red_ss_ch));
   7.294 +by (ALLGOALS(Simp_tac));
   7.295  val compat_single_fin_ch = result();
   7.296  
   7.297 +val ss =
   7.298 +  !simpset delsimps ([trans_of_def, srch_asig_def,rsch_asig_def,
   7.299 +                      asig_of_def, actions_def, srch_trans_def, rsch_trans_def,
   7.300 +                      srch_ioa_def, srch_fin_ioa_def, rsch_fin_ioa_def, 
   7.301 +                      rsch_ioa_def, Sender.sender_trans_def,
   7.302 +                      Receiver.receiver_trans_def] @ set_lemmas);
   7.303 +
   7.304  goal Correctness.thy "compat_ioas receiver_ioa (srch_ioa || rsch_ioa)";
   7.305 -by (simp_tac (hom_ss addsimps [empty_def,compat_ioas_def,compat_asigs_def,asig_of_par,asig_comp_def,actions_def,Int_def]) 1);
   7.306 -by (simp_tac red_ss_ch 1);
   7.307 +by (simp_tac (ss addsimps [empty_def,compat_ioas_def,compat_asigs_def,
   7.308 +                           asig_of_par,asig_comp_def,actions_def,
   7.309 +                           Int_def]) 1);
   7.310 +by (Simp_tac 1);
   7.311  by (rtac set_ext 1);
   7.312  by (Action.action.induct_tac "x" 1);
   7.313 -by (ALLGOALS(simp_tac red_ss_ch));
   7.314 -by (ALLGOALS(simp_tac (red_ss addsimps [insert_def,Un_def]))); 
   7.315 -by (ALLGOALS(simp_tac (red_ss_ch addsimps [de_morgan,singleton_set])));
   7.316 -val compat_rec =result();
   7.317 +by (ALLGOALS Simp_tac);
   7.318 +by (ALLGOALS(simp_tac (!simpset addsimps [insert_def,Un_def]))); 
   7.319 +by (ALLGOALS(simp_tac (!simpset addsimps [de_morgan,singleton_set])));
   7.320 +val compat_rec = result();
   7.321  
   7.322  (* 5 proofs totally the same as before *)
   7.323  goal Correctness.thy "compat_ioas receiver_ioa (srch_fin_ioa || rsch_fin_ioa)";
   7.324 -by (simp_tac (hom_ss addsimps [empty_def,compat_ioas_def,compat_asigs_def,asig_of_par,asig_comp_def,actions_def,Int_def]) 1);
   7.325 -by (simp_tac red_ss_ch 1);
   7.326 +by (simp_tac (ss addsimps [empty_def,compat_ioas_def,compat_asigs_def,asig_of_par,asig_comp_def,actions_def,Int_def]) 1);
   7.327 +by (Simp_tac 1);
   7.328  by (rtac set_ext 1);
   7.329  by (Action.action.induct_tac "x" 1);
   7.330 -by (ALLGOALS(simp_tac red_ss_ch));
   7.331 -by (ALLGOALS(simp_tac (red_ss addsimps [insert_def,Un_def]))); 
   7.332 -by (ALLGOALS(simp_tac (red_ss_ch addsimps [de_morgan,singleton_set])));
   7.333 +by (ALLGOALS Simp_tac);
   7.334 +by (ALLGOALS(simp_tac (!simpset addsimps [insert_def,Un_def]))); 
   7.335 +by (ALLGOALS(simp_tac (!simpset addsimps [de_morgan,singleton_set])));
   7.336  val compat_rec_fin =result();
   7.337  
   7.338  goal Correctness.thy "compat_ioas sender_ioa \
   7.339  \      (receiver_ioa || srch_ioa || rsch_ioa)";
   7.340 -by (simp_tac (hom_ss addsimps [empty_def,compat_ioas_def,compat_asigs_def,asig_of_par,asig_comp_def,actions_def,Int_def]) 1);
   7.341 -by (simp_tac red_ss_ch 1);
   7.342 +by (simp_tac (ss addsimps [empty_def,compat_ioas_def,compat_asigs_def,asig_of_par,asig_comp_def,actions_def,Int_def]) 1);
   7.343 +by (Simp_tac 1);
   7.344  by (rtac set_ext 1);
   7.345  by (Action.action.induct_tac "x" 1);
   7.346 -by (ALLGOALS(simp_tac red_ss_ch));
   7.347 -by (ALLGOALS(simp_tac (red_ss addsimps [insert_def,Un_def]))); 
   7.348 -by (ALLGOALS(simp_tac (red_ss_ch addsimps [de_morgan,singleton_set])));
   7.349 +by (ALLGOALS(Simp_tac));
   7.350 +by (ALLGOALS(simp_tac (!simpset addsimps [insert_def,Un_def]))); 
   7.351 +by (ALLGOALS(simp_tac (!simpset addsimps [de_morgan,singleton_set])));
   7.352  val compat_sen=result();
   7.353  
   7.354  goal Correctness.thy "compat_ioas sender_ioa\
   7.355  \      (receiver_ioa || srch_fin_ioa || rsch_fin_ioa)";
   7.356 -by (simp_tac (hom_ss addsimps [empty_def,  compat_ioas_def,compat_asigs_def,asig_of_par,asig_comp_def,actions_def,Int_def]) 1);
   7.357 -by (simp_tac red_ss_ch 1);
   7.358 +by (simp_tac (ss addsimps [empty_def,  compat_ioas_def,compat_asigs_def,asig_of_par,asig_comp_def,actions_def,Int_def]) 1);
   7.359 +by (Simp_tac 1);
   7.360  by (rtac set_ext 1);
   7.361  by (Action.action.induct_tac "x" 1);
   7.362 -by (ALLGOALS(simp_tac red_ss_ch));
   7.363 -by (ALLGOALS(simp_tac (red_ss addsimps [insert_def,Un_def]))); 
   7.364 -by (ALLGOALS(simp_tac (red_ss_ch addsimps [de_morgan,singleton_set])));
   7.365 +by (ALLGOALS(Simp_tac));
   7.366 +by (ALLGOALS(simp_tac (!simpset addsimps [insert_def,Un_def]))); 
   7.367 +by (ALLGOALS(simp_tac (!simpset addsimps [de_morgan,singleton_set])));
   7.368  val compat_sen_fin =result();
   7.369  
   7.370  goal Correctness.thy "compat_ioas env_ioa\
   7.371  \      (sender_ioa || receiver_ioa || srch_ioa || rsch_ioa)";
   7.372 -by (simp_tac (hom_ss addsimps [empty_def,compat_ioas_def,compat_asigs_def,asig_of_par,asig_comp_def,actions_def,Int_def]) 1);
   7.373 -by (simp_tac red_ss_ch 1);
   7.374 +by (simp_tac (ss addsimps [empty_def,compat_ioas_def,compat_asigs_def,asig_of_par,asig_comp_def,actions_def,Int_def]) 1);
   7.375 +by (Simp_tac 1);
   7.376  by (rtac set_ext 1);
   7.377  by (Action.action.induct_tac "x" 1);
   7.378 -by (ALLGOALS(simp_tac red_ss_ch));
   7.379 -by (ALLGOALS(simp_tac (red_ss addsimps [insert_def,Un_def]))); 
   7.380 -by (ALLGOALS(simp_tac (red_ss_ch addsimps [de_morgan,singleton_set])));
   7.381 +by (ALLGOALS(Simp_tac));
   7.382 +by (ALLGOALS(simp_tac (!simpset addsimps [insert_def,Un_def])));
   7.383 +by (ALLGOALS(simp_tac (!simpset addsimps [de_morgan,singleton_set])));
   7.384  val compat_env=result();
   7.385  
   7.386  goal Correctness.thy "compat_ioas env_ioa\
   7.387  \      (sender_ioa || receiver_ioa || srch_fin_ioa || rsch_fin_ioa)";
   7.388 -by (simp_tac (hom_ss addsimps [empty_def,compat_ioas_def,compat_asigs_def,asig_of_par,asig_comp_def,actions_def,Int_def]) 1);
   7.389 -by (simp_tac red_ss_ch 1);
   7.390 +by (simp_tac (ss addsimps [empty_def,compat_ioas_def,compat_asigs_def,asig_of_par,asig_comp_def,actions_def,Int_def]) 1);
   7.391 +by (Simp_tac 1);
   7.392  by (rtac set_ext 1);
   7.393  by (Action.action.induct_tac "x" 1);
   7.394 -by (ALLGOALS(simp_tac red_ss_ch));
   7.395 -by (ALLGOALS(simp_tac (red_ss addsimps [insert_def,Un_def]))); 
   7.396 -by (ALLGOALS(simp_tac (red_ss_ch addsimps [de_morgan,singleton_set])));
   7.397 +by (ALLGOALS Simp_tac);
   7.398 +by (ALLGOALS(simp_tac (!simpset addsimps [insert_def,Un_def]))); 
   7.399 +by (ALLGOALS(simp_tac (!simpset addsimps [de_morgan,singleton_set])));
   7.400  val compat_env_fin=result();
   7.401  
   7.402  
   7.403 @@ -358,7 +364,7 @@
   7.404  goal Correctness.thy 
   7.405   "externals(asig_of(srch_fin_ioa)) = externals(asig_of(srch_ioa)) &  \
   7.406  \ externals(asig_of(rsch_fin_ioa)) = externals(asig_of(rsch_ioa))";
   7.407 -by (simp_tac (red_ss_ch addsimps [externals_def]) 1);
   7.408 +by (simp_tac (!simpset addsimps [externals_def]) 1);
   7.409  val ext_single_ch = result();
   7.410  
   7.411  
   7.412 @@ -370,27 +376,28 @@
   7.413           compat_rec_fin,compat_sen,compat_sen_fin,compat_env,compat_env_fin];
   7.414  val abstractions = [env_unchanged,sender_unchanged,
   7.415            receiver_unchanged,sender_abstraction,receiver_abstraction];
   7.416 -val impl_ss = impl_ss addsimps [impl_def,impl_fin_def,sys_IOA, sys_fin_IOA];
   7.417 -val sys_ss = impl_ss addsimps [system_def, system_fin_def, abs_def];
   7.418 -
   7.419  
   7.420  
   7.421  (************************************************************************
   7.422              S o u n d n e s s   o f   A b s t r a c t i o n        
   7.423  *************************************************************************)
   7.424  
   7.425 +val ss = !simpset delsimps ([asig_of_def, srch_ioa_def, rsch_ioa_def,
   7.426 +                             srch_fin_ioa_def, rsch_fin_ioa_def] @
   7.427 +                            impl_ioas @ env_ioas);
   7.428  
   7.429  goal Correctness.thy 
   7.430       "is_weak_pmap  abs  system_ioa  system_fin_ioa";
   7.431  
   7.432 -by (simp_tac sys_ss 1);
   7.433 +by (simp_tac (impl_ss delsimps ([srch_ioa_def, rsch_ioa_def, srch_fin_ioa_def,
   7.434 +                                 rsch_fin_ioa_def] @ env_ioas @ impl_ioas)
   7.435 +                      addsimps [system_def, system_fin_def, abs_def, impl_def,
   7.436 +                                impl_fin_def, sys_IOA, sys_fin_IOA]) 1);
   7.437  
   7.438  by (REPEAT (EVERY[rtac fxg_is_weak_pmap_of_product_IOA 1, 
   7.439 -                  simp_tac (red_ss addsimps abstractions) 1,
   7.440 +                  simp_tac (ss addsimps abstractions) 1,
   7.441                    rtac conjI 1]));
   7.442  
   7.443 -by (ALLGOALS (simp_tac (red_ss addsimps ext_ss @ compat_ss))); 
   7.444 +by (ALLGOALS (simp_tac (ss addsimps ext_ss @ compat_ss))); 
   7.445  
   7.446  qed "system_refinement";
   7.447 -
   7.448 -
     8.1 --- a/src/HOL/IOA/ABP/Lemmas.ML	Wed Oct 04 13:11:57 1995 +0100
     8.2 +++ b/src/HOL/IOA/ABP/Lemmas.ML	Wed Oct 04 13:12:14 1995 +0100
     8.3 @@ -42,6 +42,8 @@
     8.4  
     8.5  (* Lists *)
     8.6  
     8.7 +val list_ss = simpset_of "List";
     8.8 +
     8.9  goal List.thy "hd(l@m) = (if l~=[] then hd(l) else hd(m))";
    8.10  by (List.list.induct_tac "l" 1);
    8.11  by (simp_tac list_ss 1);
     9.1 --- a/src/HOL/IOA/NTP/Abschannel.ML	Wed Oct 04 13:11:57 1995 +0100
     9.2 +++ b/src/HOL/IOA/NTP/Abschannel.ML	Wed Oct 04 13:12:14 1995 +0100
     9.3 @@ -8,12 +8,11 @@
     9.4  
     9.5  open Abschannel;
     9.6  
     9.7 -val abschannel_ss = action_ss addsimps 
     9.8 +Addsimps 
     9.9   ([srch_asig_def, rsch_asig_def, rsch_ioa_def, srch_ioa_def, ch_ioa_def, 
    9.10     ch_asig_def, srch_actions_def, rsch_actions_def, rename_def, asig_of_def, 
    9.11     actions_def, srch_trans_def, rsch_trans_def, ch_trans_def,starts_of_def, 
    9.12 -   trans_of_def] 
    9.13 -   @ Option.option.simps @ act.simps @ asig_projections @ set_lemmas);
    9.14 +   trans_of_def] @ asig_projections @ set_lemmas);
    9.15  
    9.16  goal Abschannel.thy
    9.17       "S_msg(m) ~: actions(srch_asig)        &    \
    9.18 @@ -26,7 +25,7 @@
    9.19       \ C_m_r ~: actions(srch_asig)           &    \
    9.20       \ C_r_s ~: actions(srch_asig)  & C_r_r(m) ~: actions(srch_asig)";
    9.21  
    9.22 -by(simp_tac abschannel_ss 1);
    9.23 +by(Simp_tac 1);
    9.24  qed"in_srch_asig";
    9.25  
    9.26  goal Abschannel.thy
    9.27 @@ -41,14 +40,14 @@
    9.28       \ C_r_s ~: actions(rsch_asig)            & \
    9.29       \ C_r_r(m) ~: actions(rsch_asig)";
    9.30  
    9.31 -by(simp_tac abschannel_ss 1);
    9.32 +by(Simp_tac 1);
    9.33  qed"in_rsch_asig";
    9.34  
    9.35  goal Abschannel.thy "srch_ioa = (srch_asig, {{|}}, srch_trans)";
    9.36 -by (simp_tac (abschannel_ss  addsimps [starts_of_def]) 1);
    9.37 +by (Simp_tac 1);
    9.38  qed"srch_ioa_thm";
    9.39  
    9.40  goal Abschannel.thy "rsch_ioa = (rsch_asig, {{|}}, rsch_trans)";
    9.41 -by (simp_tac (abschannel_ss  addsimps [starts_of_def]) 1);
    9.42 +by (Simp_tac 1);
    9.43  qed"rsch_ioa_thm";
    9.44  
    10.1 --- a/src/HOL/IOA/NTP/Action.ML	Wed Oct 04 13:11:57 1995 +0100
    10.2 +++ b/src/HOL/IOA/NTP/Action.ML	Wed Oct 04 13:12:14 1995 +0100
    10.3 @@ -8,6 +8,6 @@
    10.4  
    10.5  goal Action.thy "!!x. x = y ==> action_case a b c d e f g h i j x =     \
    10.6  \                               action_case a b c d e f g h i j y";
    10.7 -by (asm_simp_tac HOL_ss 1);
    10.8 +by (Asm_simp_tac 1);
    10.9  
   10.10 -val action_ss = arith_ss addcongs [result()] addsimps Action.action.simps;
   10.11 +Addcongs [result()];
    11.1 --- a/src/HOL/IOA/NTP/Correctness.ML	Wed Oct 04 13:11:57 1995 +0100
    11.2 +++ b/src/HOL/IOA/NTP/Correctness.ML	Wed Oct 04 13:12:14 1995 +0100
    11.3 @@ -9,16 +9,27 @@
    11.4  open Impl;
    11.5  open Spec;
    11.6  
    11.7 -val hom_ss = impl_ss;
    11.8  val hom_ioas = [Spec.ioa_def, Spec.trans_def,
    11.9                  Sender.sender_trans_def,Receiver.receiver_trans_def]
   11.10                 @ impl_ioas;
   11.11  
   11.12 -val hom_ss' = hom_ss addsimps hom_ioas;
   11.13 +Addsimps hom_ioas;
   11.14  
   11.15  val impl_asigs = [Sender.sender_asig_def,Receiver.receiver_asig_def,
   11.16                     Abschannel.srch_asig_def,Abschannel.rsch_asig_def];
   11.17  
   11.18 +val ss =
   11.19 +  !simpset delsimps ([trans_of_def, starts_of_def, srch_asig_def,rsch_asig_def,
   11.20 +                      asig_of_def, actions_def, srch_trans_def, rsch_trans_def,
   11.21 +                      impl_def, srch_ioa_thm, rsch_ioa_thm, srch_ioa_def,
   11.22 +                      rsch_ioa_def, Sender.sender_trans_def,
   11.23 +                      Receiver.receiver_trans_def] @ set_lemmas);
   11.24 +
   11.25 +val ss' = !simpset delsimps [trans_of_def, srch_asig_def, rsch_asig_def,
   11.26 +                             srch_trans_def, rsch_trans_def, asig_of_def,
   11.27 +                             actions_def]
   11.28 +                   addcongs [let_weak_cong];
   11.29 +
   11.30  
   11.31  (* A lemma about restricting the action signature of the implementation
   11.32   * to that of the specification.
   11.33 @@ -36,25 +47,22 @@
   11.34  \   | C_m_r => False          \
   11.35  \   | C_r_s => False          \
   11.36  \   | C_r_r(m) => False)";
   11.37 - by(simp_tac (hom_ss addcongs [if_weak_cong] 
   11.38 -                  addsimps ([externals_def, restrict_def, restrict_asig_def,
   11.39 -                             Spec.sig_def] @ asig_projections)) 1);
   11.40 + by(simp_tac (ss addcongs [if_weak_cong] 
   11.41 +                 addsimps ([externals_def, restrict_def,
   11.42 +                            restrict_asig_def, Spec.sig_def])) 1);
   11.43  
   11.44    by(Action.action.induct_tac "a" 1);
   11.45 -  by(ALLGOALS(simp_tac (action_ss addsimps 
   11.46 -                        (actions_def :: asig_projections @ set_lemmas))));
   11.47 +  by(ALLGOALS(simp_tac (ss addsimps (actions_def :: set_lemmas))));
   11.48   (* 2 *)
   11.49 -  by (simp_tac (hom_ss addsimps impl_ioas) 1);
   11.50 -  by (simp_tac (hom_ss addsimps impl_asigs) 1); 
   11.51 -  by(simp_tac (hom_ss addsimps ([asig_of_par, asig_comp_def] 
   11.52 -                                 @ asig_projections)) 1);
   11.53 -  by (simp_tac abschannel_ss 1); 
   11.54 +  by (simp_tac (ss addsimps impl_ioas) 1);
   11.55 +  by (simp_tac (ss addsimps impl_asigs) 1);
   11.56 +  by (simp_tac (ss addsimps ([asig_of_par, asig_comp_def])) 1);
   11.57 +  by (simp_tac (!simpset delsimps [srch_ioa_thm, rsch_ioa_thm, Let_def]) 1); 
   11.58   (* 1 *)
   11.59 -  by (simp_tac (hom_ss addsimps impl_ioas) 1);
   11.60 -  by (simp_tac (hom_ss addsimps impl_asigs) 1); 
   11.61 -  by(simp_tac (hom_ss addsimps ([asig_of_par, asig_comp_def] 
   11.62 -                                 @ asig_projections)) 1);
   11.63 -  by (simp_tac abschannel_ss 1);
   11.64 +  by (simp_tac (ss addsimps impl_ioas) 1);
   11.65 +  by (simp_tac (ss addsimps impl_asigs) 1); 
   11.66 +  by (simp_tac (ss addsimps ([asig_of_par, asig_comp_def])) 1);
   11.67 +  by (simp_tac (!simpset delsimps [srch_ioa_thm, rsch_ioa_thm, Let_def]) 1); 
   11.68  qed "externals_lemma"; 
   11.69  
   11.70  
   11.71 @@ -64,53 +72,51 @@
   11.72  (* Proof of correctness *)
   11.73  goalw Correctness.thy [Spec.ioa_def, Solve.is_weak_pmap_def]
   11.74    "is_weak_pmap hom (restrict impl_ioa (externals spec_sig)) spec_ioa";
   11.75 -by(simp_tac (hom_ss addsimps 
   11.76 +by(simp_tac (ss delsimps [trans_def] addsimps 
   11.77               (Correctness.hom_def::[cancel_restrict,externals_lemma])) 1);
   11.78  br conjI 1;
   11.79 -by(simp_tac (hom_ss addsimps impl_ioas) 1);
   11.80 +by(simp_tac (ss addsimps impl_ioas) 1);
   11.81  br ballI 1;
   11.82  bd CollectD 1;
   11.83 -by(asm_simp_tac (hom_ss addsimps sels) 1);
   11.84 +by(asm_simp_tac (!simpset addsimps sels) 1);
   11.85  by(REPEAT(rtac allI 1));
   11.86  br imp_conj_lemma 1;   (* from lemmas.ML *)
   11.87  by(Action.action.induct_tac "a"  1);
   11.88 -by(asm_simp_tac (hom_ss' setloop (split_tac [expand_if])) 1);
   11.89 +by(asm_simp_tac (ss' setloop (split_tac [expand_if])) 1);
   11.90  by(forward_tac [inv4] 1);
   11.91 -by(asm_full_simp_tac (hom_ss addsimps 
   11.92 -                      [imp_ex_equiv,neq_Nil_conv,ex_all_equiv]) 1);
   11.93 -by(simp_tac hom_ss' 1);
   11.94 -by(simp_tac hom_ss' 1);
   11.95 -by(simp_tac hom_ss' 1);
   11.96 -by(simp_tac hom_ss' 1);
   11.97 -by(simp_tac hom_ss' 1);
   11.98 -by(simp_tac hom_ss' 1);
   11.99 -by(simp_tac hom_ss' 1);
  11.100 +by(asm_full_simp_tac (ss addsimps [imp_ex_equiv,neq_Nil_conv,ex_all_equiv]) 1);
  11.101 +by(simp_tac ss' 1);
  11.102 +by(simp_tac ss' 1);
  11.103 +by(simp_tac ss' 1);
  11.104 +by(simp_tac ss' 1);
  11.105 +by(simp_tac ss' 1);
  11.106 +by(simp_tac ss' 1);
  11.107 +by(simp_tac ss' 1);
  11.108  
  11.109 -by(asm_simp_tac hom_ss' 1);
  11.110 +by(asm_simp_tac ss' 1);
  11.111  by(forward_tac [inv4] 1);
  11.112  by(forward_tac [inv2] 1);
  11.113  be disjE 1;
  11.114 -by(asm_simp_tac hom_ss 1);
  11.115 -by(asm_full_simp_tac (hom_ss addsimps 
  11.116 -                      [imp_ex_equiv,neq_Nil_conv,ex_all_equiv]) 1);
  11.117 +by(asm_simp_tac ss 1);
  11.118 +by(asm_full_simp_tac (ss addsimps [imp_ex_equiv,neq_Nil_conv,ex_all_equiv]) 1);
  11.119  
  11.120 -by(asm_simp_tac hom_ss' 1);
  11.121 +by(asm_simp_tac ss' 1);
  11.122  by(forward_tac [inv2] 1);
  11.123  be disjE 1;
  11.124  
  11.125  by(forward_tac [inv3] 1);
  11.126  by(case_tac "sq(sen(s))=[]" 1);
  11.127  
  11.128 -by(asm_full_simp_tac hom_ss' 1);
  11.129 +by(asm_full_simp_tac ss' 1);
  11.130  by(fast_tac (HOL_cs addSDs [add_leD1 RS leD]) 1);
  11.131  
  11.132  by(case_tac "m = hd(sq(sen(s)))" 1);
  11.133  
  11.134 -by(asm_full_simp_tac (hom_ss addsimps 
  11.135 +by(asm_full_simp_tac (ss addsimps 
  11.136                       [imp_ex_equiv,neq_Nil_conv,ex_all_equiv]) 1);
  11.137  
  11.138 -by(asm_full_simp_tac hom_ss 1);
  11.139 +by(asm_full_simp_tac ss 1);
  11.140  by(fast_tac (HOL_cs addSDs [add_leD1 RS leD]) 1);
  11.141  
  11.142 -by(asm_full_simp_tac hom_ss 1);
  11.143 +by(asm_full_simp_tac ss 1);
  11.144  result();
    12.1 --- a/src/HOL/IOA/NTP/Impl.ML	Wed Oct 04 13:11:57 1995 +0100
    12.2 +++ b/src/HOL/IOA/NTP/Impl.ML	Wed Oct 04 13:12:14 1995 +0100
    12.3 @@ -19,74 +19,78 @@
    12.4              Abschannel.srch_trans_def, Abschannel.rsch_trans_def];
    12.5   
    12.6  
    12.7 -val impl_ss = merge_ss(action_ss,list_ss) 
    12.8 -              addcongs [let_weak_cong] 
    12.9 -              addsimps [Let_def, ioa_triple_proj, starts_of_par, trans_of_par4,
   12.10 -                       in_sender_asig, in_receiver_asig, in_srch_asig,
   12.11 -                       in_rsch_asig, count_addm_simp, count_delm_simp,
   12.12 -                       Multiset.countm_empty_def, Multiset.delm_empty_def,
   12.13 -                       (* Multiset.count_def, *) count_empty,
   12.14 -                       Packet.hdr_def, Packet.msg_def];
   12.15 +Addsimps [ioa_triple_proj, starts_of_par, trans_of_par4,
   12.16 +          in_sender_asig, in_receiver_asig, in_srch_asig,
   12.17 +          in_rsch_asig, count_addm_simp, count_delm_simp,
   12.18 +          Multiset.countm_empty_def, Multiset.delm_empty_def,
   12.19 +          (* Multiset.count_def, *) count_empty,
   12.20 +          Packet.hdr_def, Packet.msg_def];
   12.21  
   12.22  goal Impl.thy
   12.23    "fst(x) = sen(x)            & \
   12.24  \  fst(snd(x)) = rec(x)       & \
   12.25  \  fst(snd(snd(x))) = srch(x) & \
   12.26  \  snd(snd(snd(x))) = rsch(x)";
   12.27 -by(simp_tac (HOL_ss addsimps
   12.28 -        [Impl.sen_def,Impl.rec_def,Impl.srch_def,Impl.rsch_def]) 1);
   12.29 -val impl_ss = impl_ss addsimps [result()];
   12.30 +by(simp_tac (!simpset addsimps
   12.31 +             [Impl.sen_def,Impl.rec_def,Impl.srch_def,Impl.rsch_def]) 1);
   12.32 +Addsimps [result()];
   12.33  
   12.34  goal Impl.thy "a:actions(sender_asig)   \
   12.35  \            | a:actions(receiver_asig) \
   12.36  \            | a:actions(srch_asig)     \
   12.37  \            | a:actions(rsch_asig)";
   12.38    by(Action.action.induct_tac "a" 1);
   12.39 -  by(ALLGOALS(simp_tac impl_ss));
   12.40 -val impl_ss = impl_ss addsimps [result()];
   12.41 +  by(ALLGOALS (simp_tac (!simpset
   12.42 +                         delsimps [actions_def,srch_asig_def,rsch_asig_def])));
   12.43 +Addsimps [result()];
   12.44  
   12.45  
   12.46  (* INVARIANT 1 *)
   12.47 -val ss = impl_ss addcongs [if_weak_cong] addsimps transitions;
   12.48 -val abs_ss= merge_ss(ss,abschannel_ss);
   12.49 +val ss = !simpset addcongs [let_weak_cong] delsimps
   12.50 +  [trans_of_def, starts_of_def, srch_asig_def, rsch_asig_def,
   12.51 +   asig_of_def, actions_def, srch_trans_def, rsch_trans_def];
   12.52  
   12.53  goalw Impl.thy impl_ioas "invariant impl_ioa inv1";
   12.54  br invariantI 1;
   12.55 -by(asm_full_simp_tac (impl_ss addsimps 
   12.56 -       [Impl.inv1_def, Impl.hdr_sum_def,
   12.57 -        Sender.srcvd_def, Sender.ssent_def,
   12.58 -        Receiver.rsent_def,Receiver.rrcvd_def]) 1);
   12.59 +by(asm_full_simp_tac (ss
   12.60 +   addsimps [Impl.inv1_def, Impl.hdr_sum_def, Sender.srcvd_def,
   12.61 +             Sender.ssent_def, Receiver.rsent_def,Receiver.rrcvd_def]) 1);
   12.62  
   12.63 -by(simp_tac (HOL_ss addsimps [fork_lemma,Impl.inv1_def]) 1);
   12.64 +by(simp_tac (ss delsimps [trans_of_par4]
   12.65 +                      addsimps [fork_lemma,Impl.inv1_def]) 1);
   12.66  
   12.67  (* Split proof in two *)
   12.68  by (rtac conjI 1);
   12.69  
   12.70  (* First half *)
   12.71 -by(asm_full_simp_tac (impl_ss addsimps [Impl.inv1_def]) 1);
   12.72 +by(asm_full_simp_tac (ss addsimps [Impl.inv1_def]) 1);
   12.73  br Action.action.induct 1;
   12.74  
   12.75 -val tac = asm_simp_tac (ss addcongs [conj_cong] 
   12.76 -                           addsimps [Suc_pred_lemma]
   12.77 -                           setloop (split_tac [expand_if]));
   12.78 -val tac_abs = asm_simp_tac (abs_ss addcongs [conj_cong] 
   12.79 -                                addsimps [Suc_pred_lemma]
   12.80 +val tac = asm_simp_tac (ss delsimps [srch_ioa_def, rsch_ioa_def]
   12.81 +                                addcongs [if_weak_cong, conj_cong] 
   12.82 +                                addsimps (Suc_pred_lemma :: transitions)
   12.83                                  setloop (split_tac [expand_if]));
   12.84 +val tac_abs = asm_simp_tac (!simpset
   12.85 +            delsimps [srch_asig_def, rsch_asig_def, actions_def,
   12.86 +                      srch_trans_def, rsch_trans_def]
   12.87 +            addcongs [if_weak_cong, conj_cong] 
   12.88 +            addsimps (Suc_pred_lemma :: transitions)
   12.89 +            setloop (split_tac [expand_if]));
   12.90  by (EVERY1[tac, tac, tac, tac]);
   12.91  by (tac 1);
   12.92  by (tac_abs 1);
   12.93  
   12.94  (* 5 + 1 *)
   12.95 - 
   12.96 +
   12.97  by (tac 1);
   12.98  by (tac_abs 1);
   12.99 - 
  12.100 +
  12.101  (* 4 + 1 *)
  12.102  by(EVERY1[tac, tac, tac, tac]);
  12.103  
  12.104  
  12.105  (* Now the other half *)
  12.106 -by(asm_full_simp_tac (impl_ss addsimps [Impl.inv1_def]) 1);
  12.107 +by(asm_full_simp_tac (ss addsimps [Impl.inv1_def]) 1);
  12.108  br Action.action.induct 1;
  12.109  by(EVERY1[tac, tac]);
  12.110  
  12.111 @@ -95,7 +99,7 @@
  12.112  by (tac_abs 1);
  12.113  by (rtac impI 1);
  12.114  by (REPEAT (etac conjE 1));
  12.115 -by (asm_simp_tac (impl_ss addsimps [Impl.hdr_sum_def, Multiset.count_def,
  12.116 +by (asm_simp_tac (ss addsimps [Impl.hdr_sum_def, Multiset.count_def,
  12.117                                      Multiset.countm_nonempty_def]
  12.118                            setloop (split_tac [expand_if])) 1);
  12.119  (* detour 2 *)
  12.120 @@ -103,19 +107,18 @@
  12.121  by (tac_abs 1);
  12.122  by (rtac impI 1);
  12.123  by (REPEAT (etac conjE 1));
  12.124 -by (asm_full_simp_tac (impl_ss addsimps 
  12.125 -                       [Impl.hdr_sum_def, 
  12.126 -                        Multiset.count_def,
  12.127 -                        Multiset.countm_nonempty_def,
  12.128 -                        Multiset.delm_nonempty_def,
  12.129 -                        left_plus_cancel,left_plus_cancel_inside_succ,
  12.130 -                        unzero_less]
  12.131 -                 setloop (split_tac [expand_if])) 1);
  12.132 +by (asm_full_simp_tac (ss addsimps [Impl.hdr_sum_def, 
  12.133 +                                         Multiset.count_def,
  12.134 +                                         Multiset.countm_nonempty_def,
  12.135 +                                         Multiset.delm_nonempty_def,
  12.136 +                                         left_plus_cancel,
  12.137 +                                         left_plus_cancel_inside_succ,
  12.138 +                                         unzero_less]
  12.139 +                               setloop (split_tac [expand_if])) 1);
  12.140  by (rtac allI 1);
  12.141  by (rtac conjI 1);
  12.142  by (rtac impI 1);
  12.143  by (hyp_subst_tac 1);
  12.144 -
  12.145  by (rtac (pred_suc RS mp RS sym RS iffD2) 1);
  12.146  by (dtac less_le_trans 1);
  12.147  by (cut_facts_tac [rewrite_rule[Packet.hdr_def]
  12.148 @@ -125,13 +128,13 @@
  12.149  
  12.150  by (rtac (countm_done_delm RS mp RS sym) 1);
  12.151  by (rtac refl 1);
  12.152 -by (asm_simp_tac (HOL_ss addsimps [Multiset.count_def]) 1);
  12.153 +by (asm_simp_tac (ss addsimps [Multiset.count_def]) 1);
  12.154  
  12.155  by (rtac impI 1);
  12.156 -by (asm_full_simp_tac (HOL_ss addsimps [neg_flip]) 1);
  12.157 +by (asm_full_simp_tac (ss addsimps [neg_flip]) 1);
  12.158  by (hyp_subst_tac 1);
  12.159  by (rtac countm_spurious_delm 1);
  12.160 -by (simp_tac HOL_ss 1);
  12.161 +by (Simp_tac 1);
  12.162  
  12.163  by (EVERY1[tac, tac, tac, tac, tac, tac]);
  12.164  
  12.165 @@ -145,48 +148,55 @@
  12.166  
  12.167    by (rtac invariantI1 1); 
  12.168    (* Base case *)
  12.169 -  by (asm_full_simp_tac (impl_ss addsimps 
  12.170 -                    (Impl.inv2_def :: (receiver_projections 
  12.171 -                                       @ sender_projections @ impl_ioas))) 1);
  12.172 +  by (asm_full_simp_tac (ss addsimps (Impl.inv2_def ::
  12.173 +                                           (receiver_projections 
  12.174 +                                            @ sender_projections @ impl_ioas)))
  12.175 +      1);
  12.176  
  12.177 -  by (asm_simp_tac (impl_ss addsimps impl_ioas) 1);
  12.178 +  by (asm_simp_tac (ss addsimps impl_ioas) 1);
  12.179    by (Action.action.induct_tac "a" 1);
  12.180  
  12.181    (* 10 cases. First 4 are simple, since state doesn't change wrt. invariant *)
  12.182    (* 10 *)
  12.183 -  by (asm_simp_tac (impl_ss addsimps (Impl.inv2_def::transitions)) 1);
  12.184 +  by (asm_simp_tac (ss delsimps [srch_ioa_def, rsch_ioa_def]
  12.185 +                            addsimps (Impl.inv2_def::transitions)) 1);
  12.186    (* 9 *)
  12.187 -  by (asm_simp_tac (impl_ss addsimps (Impl.inv2_def::transitions)) 1);
  12.188 +  by (asm_simp_tac (ss delsimps [srch_ioa_def, rsch_ioa_def]
  12.189 +                            addsimps (Impl.inv2_def::transitions)) 1);
  12.190    (* 8 *)
  12.191 -  by (asm_simp_tac (impl_ss addsimps (Impl.inv2_def::transitions)) 2);
  12.192 +  by (asm_simp_tac (ss delsimps [srch_ioa_def, rsch_ioa_def]
  12.193 +                            addsimps (Impl.inv2_def::transitions)) 2);
  12.194    (* 7 *)
  12.195 -  by (asm_simp_tac (impl_ss addsimps (Impl.inv2_def::transitions)) 3);
  12.196 +  by (asm_simp_tac (ss delsimps [srch_ioa_def, rsch_ioa_def]
  12.197 +                            addsimps (Impl.inv2_def::transitions)) 3);
  12.198    (* 6 *)
  12.199    by(forward_tac [rewrite_rule [Impl.inv1_def]
  12.200                                 (inv1 RS invariantE) RS conjunct1] 1);
  12.201 -  by (asm_full_simp_tac (impl_ss addsimps [leq_imp_leq_suc,Impl.inv2_def]
  12.202 -                                 addsimps transitions) 1);
  12.203 +  by (asm_full_simp_tac (ss delsimps [srch_ioa_def, rsch_ioa_def]
  12.204 +                                 addsimps ([leq_imp_leq_suc,Impl.inv2_def]
  12.205 +                                           @ transitions)) 1);
  12.206    (* 5 *)
  12.207 -  by (asm_full_simp_tac (impl_ss addsimps [leq_imp_leq_suc,Impl.inv2_def]
  12.208 -                                 addsimps transitions) 1);
  12.209 +  by (asm_full_simp_tac (ss delsimps [srch_ioa_def, rsch_ioa_def]
  12.210 +                                 addsimps ([leq_imp_leq_suc,Impl.inv2_def]
  12.211 +                                           @ transitions)) 1);
  12.212    (* 4 *)
  12.213    by (forward_tac [rewrite_rule [Impl.inv1_def]
  12.214                                  (inv1 RS invariantE) RS conjunct1] 1);
  12.215 -  by (asm_full_simp_tac (impl_ss addsimps [Impl.inv2_def] 
  12.216 -                                 addsimps transitions) 1);
  12.217 +  by (asm_full_simp_tac (ss delsimps [srch_ioa_def, rsch_ioa_def]
  12.218 +                                 addsimps (Impl.inv2_def :: transitions)) 1);
  12.219    by (fast_tac (HOL_cs addDs [add_leD1,leD]) 1);
  12.220  
  12.221    (* 3 *)
  12.222    by (forward_tac [rewrite_rule [Impl.inv1_def] (inv1 RS invariantE)] 1);
  12.223  
  12.224 -  by (asm_full_simp_tac (impl_ss addsimps 
  12.225 -                         (Impl.inv2_def::transitions)) 1);
  12.226 +  by (asm_full_simp_tac (ss delsimps [srch_ioa_def, rsch_ioa_def]
  12.227 +                                 addsimps (Impl.inv2_def :: transitions)) 1);
  12.228    by (fold_tac [rewrite_rule [Packet.hdr_def]Impl.hdr_sum_def]);
  12.229    by (fast_tac (HOL_cs addDs [add_leD1,leD]) 1);
  12.230  
  12.231    (* 2 *)
  12.232 -  by (asm_full_simp_tac (impl_ss addsimps 
  12.233 -                         (Impl.inv2_def::transitions)) 1);
  12.234 +  by (asm_full_simp_tac (ss delsimps [srch_ioa_def, rsch_ioa_def]
  12.235 +                                 addsimps (Impl.inv2_def :: transitions)) 1);
  12.236    by(forward_tac [rewrite_rule [Impl.inv1_def]
  12.237                                 (inv1 RS invariantE) RS conjunct1] 1);
  12.238    by (rtac impI 1);
  12.239 @@ -194,11 +204,11 @@
  12.240    by (REPEAT (etac conjE 1));
  12.241    by (dres_inst_tac [("k","count (rsch s) (~sbit(sen s))")] 
  12.242                       (standard(leq_add_leq RS mp)) 1);
  12.243 -  by (asm_full_simp_tac HOL_ss 1);
  12.244 +  by (asm_full_simp_tac ss 1);
  12.245  
  12.246    (* 1 *)
  12.247 -  by (asm_full_simp_tac (impl_ss addsimps 
  12.248 -                         (Impl.inv2_def::transitions)) 1);
  12.249 +  by (asm_full_simp_tac (ss delsimps [srch_ioa_def, rsch_ioa_def]
  12.250 +                                 addsimps (Impl.inv2_def :: transitions)) 1);
  12.251    by(forward_tac [rewrite_rule [Impl.inv1_def]
  12.252                                 (inv1 RS invariantE) RS conjunct2] 1);
  12.253    by (rtac impI 1);
  12.254 @@ -207,103 +217,103 @@
  12.255    by (fold_tac  [rewrite_rule[Packet.hdr_def]Impl.hdr_sum_def]);
  12.256    by (dres_inst_tac [("k","hdr_sum (srch s) (sbit(sen s))")] 
  12.257                       (standard(leq_add_leq RS mp)) 1);
  12.258 -  by (asm_full_simp_tac HOL_ss 1);
  12.259 +  by (asm_full_simp_tac ss 1);
  12.260  qed "inv2";
  12.261  
  12.262  
  12.263  (* INVARIANT 3 *)
  12.264 +
  12.265 +val ss = ss delsimps [srch_ioa_def, rsch_ioa_def, Packet.hdr_def];
  12.266 +
  12.267  goal Impl.thy "invariant impl_ioa inv3";
  12.268  
  12.269    by (rtac invariantI 1); 
  12.270    (* Base case *)
  12.271 -  by (asm_full_simp_tac (impl_ss addsimps 
  12.272 +  by (asm_full_simp_tac (ss addsimps 
  12.273                      (Impl.inv3_def :: (receiver_projections 
  12.274                                         @ sender_projections @ impl_ioas))) 1);
  12.275  
  12.276 -  by (asm_simp_tac (impl_ss addsimps impl_ioas) 1);
  12.277 +  by (asm_simp_tac (ss addsimps impl_ioas) 1);
  12.278    by (Action.action.induct_tac "a" 1);
  12.279  
  12.280    (* 10 *)
  12.281 -  by (asm_full_simp_tac (impl_ss addsimps 
  12.282 -                  (append_cons::not_hd_append::Impl.inv3_def::transitions)
  12.283 -                  setloop (split_tac [expand_if])) 1);
  12.284 +  by (asm_full_simp_tac (ss
  12.285 +              addsimps (append_cons::not_hd_append::Impl.inv3_def::transitions)
  12.286 +              setloop (split_tac [expand_if])) 1);
  12.287  
  12.288    (* 9 *)
  12.289 -  by (asm_full_simp_tac (impl_ss addsimps 
  12.290 -                  (append_cons::not_hd_append::Impl.inv3_def::transitions)
  12.291 -                  setloop (split_tac [expand_if])) 1);
  12.292 +  by (asm_full_simp_tac (ss
  12.293 +              addsimps (append_cons::not_hd_append::Impl.inv3_def::transitions)
  12.294 +              setloop (split_tac [expand_if])) 1);
  12.295  
  12.296    (* 8 *)
  12.297 -  by (asm_full_simp_tac (impl_ss addsimps 
  12.298 -                  (append_cons::not_hd_append::Impl.inv3_def::transitions)
  12.299 -                  setloop (split_tac [expand_if])) 1);
  12.300 +  by (asm_full_simp_tac (ss
  12.301 +              addsimps (append_cons::not_hd_append::Impl.inv3_def::transitions)
  12.302 +              setloop (split_tac [expand_if])) 1);
  12.303    by (tac_abs 1);
  12.304    by (strip_tac  1 THEN REPEAT (etac conjE 1));
  12.305 -  by (asm_full_simp_tac (HOL_ss addsimps [cons_imp_not_null]) 1);
  12.306 -
  12.307 +  by (asm_full_simp_tac (ss addsimps [cons_imp_not_null]) 1);
  12.308  
  12.309    by (hyp_subst_tac 1);
  12.310    by (etac exE 1);
  12.311 -  by (asm_full_simp_tac list_ss 1);
  12.312 +  by (Asm_full_simp_tac 1);
  12.313  
  12.314    (* 7 *)
  12.315 -  by (asm_full_simp_tac (impl_ss addsimps 
  12.316 +  by (asm_full_simp_tac (ss addsimps 
  12.317        (Suc_pred_lemma::append_cons::not_hd_append::Impl.inv3_def::transitions)
  12.318                    setloop (split_tac [expand_if])) 1); 
  12.319    by (tac_abs 1);
  12.320    by (fast_tac HOL_cs 1);
  12.321  
  12.322    (* 6 *)
  12.323 -  by (asm_full_simp_tac (impl_ss addsimps 
  12.324 +  by (asm_full_simp_tac (ss addsimps 
  12.325                    (append_cons::not_hd_append::Impl.inv3_def::transitions)
  12.326                    setloop (split_tac [expand_if])) 1);
  12.327    (* 5 *)
  12.328 -  by (asm_full_simp_tac (impl_ss addsimps 
  12.329 +  by (asm_full_simp_tac (ss addsimps 
  12.330                    (append_cons::not_hd_append::Impl.inv3_def::transitions)
  12.331                    setloop (split_tac [expand_if])) 1);
  12.332 -
  12.333    (* 4 *)
  12.334 -  by (asm_full_simp_tac (impl_ss addsimps 
  12.335 +  by (asm_full_simp_tac (ss addsimps 
  12.336                    (append_cons::not_hd_append::Impl.inv3_def::transitions)
  12.337                    setloop (split_tac [expand_if])) 1);
  12.338  
  12.339    (* 3 *)
  12.340 -  by (asm_full_simp_tac (impl_ss addsimps 
  12.341 +  by (asm_full_simp_tac (ss addsimps 
  12.342                    (append_cons::not_hd_append::Impl.inv3_def::transitions)
  12.343                    setloop (split_tac [expand_if])) 1);
  12.344  
  12.345    (* 2 *)
  12.346 -  by (asm_full_simp_tac (impl_ss addsimps transitions) 1);
  12.347 -  by (simp_tac (HOL_ss addsimps [Impl.inv3_def]) 1);
  12.348 +  by (asm_full_simp_tac (ss addsimps transitions) 1);
  12.349 +  by (simp_tac (ss addsimps [Impl.inv3_def]) 1);
  12.350    by (strip_tac  1 THEN REPEAT (etac conjE 1));
  12.351    by (rtac (imp_or_lem RS iffD2) 1);
  12.352    by (rtac impI 1);
  12.353    by (forward_tac [rewrite_rule [Impl.inv2_def] (inv2 RS invariantE)] 1);
  12.354 -  by (asm_full_simp_tac list_ss 1);
  12.355 +  by (asm_full_simp_tac ss 1);
  12.356    by (REPEAT (etac conjE 1));
  12.357    by (res_inst_tac [("j","count (ssent(sen s)) (~sbit(sen s))"),
  12.358                      ("k","count (rsent(rec s)) (sbit(sen s))")] le_trans 1);
  12.359    by (forward_tac [rewrite_rule [Impl.inv1_def]
  12.360                                  (inv1 RS invariantE) RS conjunct2] 1);
  12.361 -  by (asm_full_simp_tac (list_ss addsimps 
  12.362 +  by (asm_full_simp_tac (ss addsimps
  12.363                           [Impl.hdr_sum_def, Multiset.count_def]) 1);
  12.364    by (rtac (less_eq_add_cong RS mp RS mp) 1);
  12.365    by (rtac countm_props 1);
  12.366 -  by (simp_tac (list_ss addsimps [Packet.hdr_def]) 1);
  12.367 +  by (simp_tac (ss addsimps [Packet.hdr_def]) 1);
  12.368    by (rtac countm_props 1);
  12.369 -  by (simp_tac (list_ss addsimps [Packet.hdr_def]) 1);
  12.370 +  by (simp_tac (ss addsimps [Packet.hdr_def]) 1);
  12.371    by (assume_tac 1);
  12.372  
  12.373 -
  12.374    (* 1 *)
  12.375 -  by (asm_full_simp_tac (impl_ss addsimps 
  12.376 +  by (asm_full_simp_tac (ss addsimps 
  12.377                    (append_cons::not_hd_append::Impl.inv3_def::transitions)
  12.378                    setloop (split_tac [expand_if])) 1);
  12.379    by (strip_tac  1 THEN REPEAT (etac conjE 1));
  12.380    by (rtac (imp_or_lem RS iffD2) 1);
  12.381    by (rtac impI 1);
  12.382    by (forward_tac [rewrite_rule [Impl.inv2_def] (inv2 RS invariantE)] 1);
  12.383 -  by (asm_full_simp_tac list_ss 1);
  12.384 +  by (asm_full_simp_tac ss 1);
  12.385    by (REPEAT (etac conjE 1));
  12.386    by (dtac mp 1);
  12.387    by (assume_tac 1);
  12.388 @@ -315,73 +325,62 @@
  12.389  qed "inv3";
  12.390  
  12.391  
  12.392 -
  12.393  (* INVARIANT 4 *)
  12.394  
  12.395  goal Impl.thy "invariant impl_ioa inv4";
  12.396  
  12.397    by (rtac invariantI 1); 
  12.398    (* Base case *)
  12.399 -  by (asm_full_simp_tac (impl_ss addsimps 
  12.400 +  by (asm_full_simp_tac (ss addsimps 
  12.401                      (Impl.inv4_def :: (receiver_projections 
  12.402                                         @ sender_projections @ impl_ioas))) 1);
  12.403  
  12.404 -  by (asm_simp_tac (impl_ss addsimps impl_ioas) 1);
  12.405 +  by (asm_simp_tac (ss addsimps impl_ioas) 1);
  12.406    by (Action.action.induct_tac "a" 1);
  12.407  
  12.408    (* 10 *)
  12.409 -  by (asm_full_simp_tac (impl_ss addsimps 
  12.410 -                         (append_cons::Impl.inv4_def::transitions)
  12.411 +  by (asm_full_simp_tac (ss addsimps (append_cons::Impl.inv4_def::transitions)
  12.412                    setloop (split_tac [expand_if])) 1);
  12.413  
  12.414    (* 9 *)
  12.415 -  by (asm_full_simp_tac (impl_ss addsimps 
  12.416 -                         (append_cons::Impl.inv4_def::transitions)
  12.417 +  by (asm_full_simp_tac (ss addsimps (append_cons::Impl.inv4_def::transitions)
  12.418                    setloop (split_tac [expand_if])) 1);
  12.419  
  12.420    (* 8 *)
  12.421 -  by (asm_full_simp_tac (impl_ss addsimps 
  12.422 -                         (append_cons::Impl.inv4_def::transitions)
  12.423 +  by (asm_full_simp_tac (ss addsimps (append_cons::Impl.inv4_def::transitions)
  12.424                    setloop (split_tac [expand_if])) 1);
  12.425    (* 7 *)
  12.426 -  by (asm_full_simp_tac (impl_ss addsimps 
  12.427 -                         (append_cons::Impl.inv4_def::transitions)
  12.428 +  by (asm_full_simp_tac (ss addsimps (append_cons::Impl.inv4_def::transitions)
  12.429                    setloop (split_tac [expand_if])) 1);
  12.430  
  12.431    (* 6 *)
  12.432 -  by (asm_full_simp_tac (impl_ss addsimps 
  12.433 -                         (append_cons::Impl.inv4_def::transitions)
  12.434 +  by (asm_full_simp_tac (ss addsimps (append_cons::Impl.inv4_def::transitions)
  12.435                    setloop (split_tac [expand_if])) 1);
  12.436  
  12.437    (* 5 *)
  12.438 -  by (asm_full_simp_tac (impl_ss addsimps 
  12.439 -                         (append_cons::Impl.inv4_def::transitions)
  12.440 +  by (asm_full_simp_tac (ss addsimps (append_cons::Impl.inv4_def::transitions)
  12.441                    setloop (split_tac [expand_if])) 1);
  12.442  
  12.443    (* 4 *)
  12.444 -  by (asm_full_simp_tac (impl_ss addsimps 
  12.445 -                         (append_cons::Impl.inv4_def::transitions)
  12.446 +  by (asm_full_simp_tac (ss addsimps (append_cons::Impl.inv4_def::transitions)
  12.447                    setloop (split_tac [expand_if])) 1);
  12.448  
  12.449    (* 3 *)
  12.450 -  by (asm_full_simp_tac (impl_ss addsimps 
  12.451 -                         (append_cons::Impl.inv4_def::transitions)
  12.452 +  by (asm_full_simp_tac (ss addsimps (append_cons::Impl.inv4_def::transitions)
  12.453                    setloop (split_tac [expand_if])) 1);
  12.454  
  12.455    (* 2 *)
  12.456 -  by (asm_full_simp_tac (impl_ss addsimps 
  12.457 -                         (append_cons::Impl.inv4_def::transitions)
  12.458 +  by (asm_full_simp_tac (ss addsimps (append_cons::Impl.inv4_def::transitions)
  12.459                    setloop (split_tac [expand_if])) 1);
  12.460  
  12.461    by (strip_tac  1 THEN REPEAT (etac conjE 1));
  12.462    by(forward_tac [rewrite_rule [Impl.inv2_def]
  12.463                                 (inv2 RS invariantE)] 1);
  12.464   
  12.465 -  by (asm_full_simp_tac list_ss 1);
  12.466 +  by (Asm_full_simp_tac 1);
  12.467  
  12.468    (* 1 *)
  12.469 -  by (asm_full_simp_tac (impl_ss addsimps 
  12.470 -                         (append_cons::Impl.inv4_def::transitions)
  12.471 +  by (asm_full_simp_tac (ss addsimps (append_cons::Impl.inv4_def::transitions)
  12.472                    setloop (split_tac [expand_if])) 1);
  12.473    by (strip_tac  1 THEN REPEAT (etac conjE 1));
  12.474    by (rtac ccontr 1);
  12.475 @@ -389,20 +388,18 @@
  12.476                                 (inv2 RS invariantE)] 1);
  12.477    by(forward_tac [rewrite_rule [Impl.inv3_def]
  12.478                                 (inv3 RS invariantE)] 1);
  12.479 -  by (asm_full_simp_tac list_ss 1);
  12.480 +  by (Asm_full_simp_tac 1);
  12.481    by (eres_inst_tac [("x","m")] allE 1);
  12.482    by (dtac less_le_trans 1);
  12.483    by (dtac (left_add_leq RS mp) 1);
  12.484 -  by (asm_full_simp_tac list_ss 1);
  12.485 -  by (asm_full_simp_tac arith_ss 1);
  12.486 +  by (Asm_full_simp_tac 1);
  12.487 +  by (Asm_full_simp_tac 1);
  12.488  qed "inv4";
  12.489  
  12.490  
  12.491 -
  12.492  (* rebind them *)
  12.493  
  12.494  val inv1 = rewrite_rule [Impl.inv1_def] (inv1 RS invariantE);
  12.495  val inv2 = rewrite_rule [Impl.inv2_def] (inv2 RS invariantE);
  12.496  val inv3 = rewrite_rule [Impl.inv3_def] (inv3 RS invariantE);
  12.497  val inv4 = rewrite_rule [Impl.inv4_def] (inv4 RS invariantE);
  12.498 -
    13.1 --- a/src/HOL/IOA/NTP/Lemmas.ML	Wed Oct 04 13:11:57 1995 +0100
    13.2 +++ b/src/HOL/IOA/NTP/Lemmas.ML	Wed Oct 04 13:12:14 1995 +0100
    13.3 @@ -56,7 +56,7 @@
    13.4  (* Arithmetic *)
    13.5  goal Arith.thy "n ~= 0 --> Suc(m+pred(n)) = m+n";
    13.6    by (nat_ind_tac "n" 1);
    13.7 -  by (REPEAT(simp_tac arith_ss 1));
    13.8 +  by (REPEAT(Simp_tac 1));
    13.9  val Suc_pred_lemma = store_thm("Suc_pred_lemma", result() RS mp);
   13.10  
   13.11  goal Arith.thy "x <= y --> x <= Suc(y)";
   13.12 @@ -66,49 +66,49 @@
   13.13    by (dtac (le_eq_less_or_eq RS iffD1) 1);
   13.14    by (etac disjE 1);
   13.15    by (etac less_SucI 1);
   13.16 -  by (asm_simp_tac nat_ss 1);
   13.17 +  by (Asm_simp_tac 1);
   13.18  val leq_imp_leq_suc = store_thm("leq_imp_leq_suc", result() RS mp);
   13.19  
   13.20  (* Same as previous! *)
   13.21  goal Arith.thy "(x::nat)<=y --> x<=Suc(y)";
   13.22 -  by (simp_tac (arith_ss addsimps [le_eq_less_or_eq]) 1);
   13.23 +  by (simp_tac (!simpset addsimps [le_eq_less_or_eq]) 1);
   13.24  qed "leq_suc";
   13.25  
   13.26  goal Arith.thy "((m::nat) + n = m + p) = (n = p)";
   13.27    by (nat_ind_tac "m" 1);
   13.28 -  by (simp_tac arith_ss 1);
   13.29 -  by (asm_simp_tac arith_ss 1);
   13.30 +  by (Simp_tac 1);
   13.31 +  by (Asm_simp_tac 1);
   13.32  qed "left_plus_cancel";
   13.33  
   13.34  goal Arith.thy "((x::nat) + y = Suc(x + z)) = (y = Suc(z))";
   13.35    by (nat_ind_tac "x" 1);
   13.36 -  by (simp_tac arith_ss 1);
   13.37 -  by (asm_simp_tac arith_ss 1);
   13.38 +  by (Simp_tac 1);
   13.39 +  by (Asm_simp_tac 1);
   13.40  qed "left_plus_cancel_inside_succ";
   13.41  
   13.42  goal Arith.thy "(x ~= 0) = (? y. x = Suc(y))";
   13.43    by (nat_ind_tac "x" 1);
   13.44 -  by (simp_tac arith_ss 1);
   13.45 -  by (asm_simp_tac arith_ss 1);
   13.46 +  by (Simp_tac 1);
   13.47 +  by (Asm_simp_tac 1);
   13.48    by (fast_tac HOL_cs 1);
   13.49  qed "nonzero_is_succ";
   13.50  
   13.51  goal Arith.thy "(m::nat) < n --> m + p < n + p";
   13.52    by (nat_ind_tac "p" 1);
   13.53 -  by (simp_tac arith_ss 1);
   13.54 -  by (asm_simp_tac arith_ss 1);
   13.55 +  by (Simp_tac 1);
   13.56 +  by (Asm_simp_tac 1);
   13.57  qed "less_add_same_less";
   13.58  
   13.59  goal Arith.thy "(x::nat)<= y --> x<=y+k";
   13.60    by (nat_ind_tac "k" 1);
   13.61 -  by (simp_tac arith_ss 1);
   13.62 -  by (asm_full_simp_tac (arith_ss addsimps [leq_suc]) 1);
   13.63 +  by (Simp_tac 1);
   13.64 +  by (asm_full_simp_tac (!simpset addsimps [leq_suc]) 1);
   13.65  qed "leq_add_leq";
   13.66  
   13.67  goal Arith.thy "(x::nat) + y <= z --> x <= z";
   13.68    by (nat_ind_tac "y" 1);
   13.69 -  by (simp_tac arith_ss 1);
   13.70 -  by (asm_simp_tac arith_ss 1);
   13.71 +  by (Simp_tac 1);
   13.72 +  by (Asm_simp_tac 1);
   13.73    by (rtac impI 1);
   13.74    by (dtac Suc_leD 1);
   13.75    by (fast_tac HOL_cs 1);
   13.76 @@ -129,7 +129,7 @@
   13.77  goal Arith.thy "(A::nat) <= B --> C <= D --> A + C <= B + D";
   13.78    by (rtac impI 1);
   13.79    by (rtac impI 1);
   13.80 -  by (asm_full_simp_tac (arith_ss addsimps [le_eq_less_or_eq]) 1);
   13.81 +  by (asm_full_simp_tac (!simpset addsimps [le_eq_less_or_eq]) 1);
   13.82    by (safe_tac HOL_cs);
   13.83    by (rtac (less_add_cong RS mp RS mp) 1);
   13.84    by (assume_tac 1);
   13.85 @@ -147,7 +147,7 @@
   13.86    by (dtac (less_eq_add_cong RS mp) 1);
   13.87    by (cut_facts_tac [le_refl] 1);
   13.88    by (dres_inst_tac [("P","x<=x")] mp 1);by (assume_tac 1);
   13.89 -  by (asm_full_simp_tac (HOL_ss addsimps [add_commute]) 1);
   13.90 +  by (asm_full_simp_tac (!simpset addsimps [add_commute]) 1);
   13.91    by (rtac impI 1);
   13.92    by (etac le_trans 1);
   13.93    by (assume_tac 1);
   13.94 @@ -155,67 +155,68 @@
   13.95  
   13.96  goal Arith.thy "(? x. y = Suc(x)) = (~(y = 0))";
   13.97    by (nat_ind_tac "y" 1);
   13.98 -  by (simp_tac arith_ss 1);
   13.99 +  by (Simp_tac 1);
  13.100    by (rtac iffI 1);
  13.101 -  by (asm_full_simp_tac arith_ss 1);
  13.102 +  by (Asm_full_simp_tac 1);
  13.103    by (fast_tac HOL_cs 1);
  13.104  qed "suc_not_zero";
  13.105  
  13.106  goal Arith.thy "Suc(x) <= y --> (? z. y = Suc(z))";
  13.107    by (rtac impI 1);
  13.108 -  by (asm_full_simp_tac (arith_ss addsimps [le_eq_less_or_eq]) 1);
  13.109 +  by (asm_full_simp_tac (!simpset addsimps [le_eq_less_or_eq]) 1);
  13.110    by (safe_tac HOL_cs);
  13.111    by (fast_tac HOL_cs 2);
  13.112 -  by (asm_simp_tac (arith_ss addsimps [suc_not_zero]) 1);
  13.113 +  by (asm_simp_tac (!simpset addsimps [suc_not_zero]) 1);
  13.114    by (rtac ccontr 1);
  13.115 -  by (asm_full_simp_tac (arith_ss addsimps [suc_not_zero]) 1);
  13.116 +  by (asm_full_simp_tac (!simpset addsimps [suc_not_zero]) 1);
  13.117    by (hyp_subst_tac 1);
  13.118 -  by (asm_full_simp_tac arith_ss 1);
  13.119 +  by (Asm_full_simp_tac 1);
  13.120  qed "suc_leq_suc";
  13.121  
  13.122  goal Arith.thy "~0<n --> n = 0";
  13.123    by (nat_ind_tac "n" 1);
  13.124 -  by (asm_simp_tac arith_ss 1);
  13.125 +  by (Asm_simp_tac 1);
  13.126    by (safe_tac HOL_cs);
  13.127 -  by (asm_full_simp_tac arith_ss 1);
  13.128 -  by (asm_full_simp_tac arith_ss 1);
  13.129 +  by (Asm_full_simp_tac 1);
  13.130 +  by (Asm_full_simp_tac 1);
  13.131  qed "zero_eq";
  13.132  
  13.133  goal Arith.thy "x < Suc(y) --> x<=y";
  13.134    by (nat_ind_tac "n" 1);
  13.135 -  by (asm_simp_tac arith_ss 1);
  13.136 +  by (Asm_simp_tac 1);
  13.137    by (safe_tac HOL_cs);
  13.138    by (etac less_imp_le 1);
  13.139  qed "less_suc_imp_leq";
  13.140  
  13.141  goal Arith.thy "0<x --> Suc(pred(x)) = x";
  13.142    by (nat_ind_tac "x" 1);
  13.143 -  by (simp_tac arith_ss 1);
  13.144 -  by (asm_simp_tac arith_ss 1);
  13.145 +  by (Simp_tac 1);
  13.146 +  by (Asm_simp_tac 1);
  13.147  qed "suc_pred_id";
  13.148  
  13.149  goal Arith.thy "0<x --> (pred(x) = y) = (x = Suc(y))";
  13.150    by (nat_ind_tac "x" 1);
  13.151 -  by (simp_tac arith_ss 1);
  13.152 -  by (asm_simp_tac arith_ss 1);
  13.153 +  by (Simp_tac 1);
  13.154 +  by (Asm_simp_tac 1);
  13.155  qed "pred_suc";
  13.156  
  13.157  goal Arith.thy "(x ~= 0) = (0<x)";
  13.158    by (nat_ind_tac "x" 1);
  13.159 -  by (simp_tac arith_ss 1);
  13.160 -  by (asm_simp_tac arith_ss 1);
  13.161 +  by (Simp_tac 1);
  13.162 +  by (Asm_simp_tac 1);
  13.163  qed "unzero_less";
  13.164  
  13.165  (* Odd proof. Why do induction? *)
  13.166  goal Arith.thy "((x::nat) = y + z) --> (y <= x)";
  13.167    by (nat_ind_tac "y" 1);
  13.168 -  by (simp_tac arith_ss 1);
  13.169 -  by (simp_tac (arith_ss addsimps 
  13.170 -                [Suc_le_mono, le_refl RS (leq_add_leq RS mp)]) 1);
  13.171 +  by (Simp_tac 1);
  13.172 +  by (simp_tac (!simpset addsimps [le_refl RS (leq_add_leq RS mp)]) 1);
  13.173  qed "plus_leq_lem";
  13.174  
  13.175  (* Lists *)
  13.176  
  13.177 +val list_ss = simpset_of "List";
  13.178 +
  13.179  goal List.thy "(xs @ (y#ys)) ~= []";
  13.180    by (list.induct_tac "xs" 1);
  13.181    by (simp_tac list_ss 1);
    14.1 --- a/src/HOL/IOA/NTP/Multiset.ML	Wed Oct 04 13:11:57 1995 +0100
    14.2 +++ b/src/HOL/IOA/NTP/Multiset.ML	Wed Oct 04 13:12:14 1995 +0100
    14.3 @@ -14,13 +14,13 @@
    14.4  
    14.5  goal Multiset.thy 
    14.6       "count (addm M x) y = (if y=x then Suc(count M y) else count M y)";
    14.7 -  by (asm_simp_tac (arith_ss addsimps 
    14.8 +  by (asm_simp_tac (!simpset addsimps 
    14.9                      [Multiset.count_def,Multiset.countm_nonempty_def]
   14.10                      setloop (split_tac [expand_if])) 1);
   14.11  qed "count_addm_simp";
   14.12  
   14.13  goal Multiset.thy "count M y <= count (addm M x) y";
   14.14 -  by (simp_tac (arith_ss addsimps [count_addm_simp]
   14.15 +  by (simp_tac (!simpset addsimps [count_addm_simp]
   14.16                           setloop (split_tac [expand_if])) 1);
   14.17    by (rtac impI 1);
   14.18    by (rtac (le_refl RS (leq_suc RS mp)) 1);
   14.19 @@ -29,31 +29,31 @@
   14.20  goalw Multiset.thy [Multiset.count_def] 
   14.21       "count (delm M x) y = (if y=x then pred(count M y) else count M y)";
   14.22    by (res_inst_tac [("M","M")] Multiset.induction 1);
   14.23 -  by (asm_simp_tac (arith_ss 
   14.24 +  by (asm_simp_tac (!simpset 
   14.25                     addsimps [Multiset.delm_empty_def,Multiset.countm_empty_def]
   14.26                     setloop (split_tac [expand_if])) 1);
   14.27 -  by (asm_full_simp_tac (arith_ss 
   14.28 +  by (asm_full_simp_tac (!simpset 
   14.29                           addsimps [Multiset.delm_nonempty_def,
   14.30                                     Multiset.countm_nonempty_def]
   14.31                           setloop (split_tac [expand_if])) 1);
   14.32    by (safe_tac HOL_cs);
   14.33 -  by (asm_full_simp_tac HOL_ss 1);
   14.34 +  by (Asm_full_simp_tac 1);
   14.35  qed "count_delm_simp";
   14.36  
   14.37  goal Multiset.thy "!!M. (!x. P(x) --> Q(x)) ==> (countm M P <= countm M Q)";
   14.38    by (res_inst_tac [("M","M")] Multiset.induction 1);
   14.39 -  by (simp_tac (arith_ss addsimps [Multiset.countm_empty_def]) 1);
   14.40 -  by (simp_tac (arith_ss addsimps[Multiset.countm_nonempty_def]) 1);
   14.41 +  by (simp_tac (!simpset addsimps [Multiset.countm_empty_def]) 1);
   14.42 +  by (simp_tac (!simpset addsimps[Multiset.countm_nonempty_def]) 1);
   14.43    by (etac (less_eq_add_cong RS mp RS mp) 1);
   14.44 -  by (asm_full_simp_tac (arith_ss addsimps [le_eq_less_or_eq]
   14.45 +  by (asm_full_simp_tac (!simpset addsimps [le_eq_less_or_eq]
   14.46                                    setloop (split_tac [expand_if])) 1);
   14.47  qed "countm_props";
   14.48  
   14.49  goal Multiset.thy "!!P. ~P(obj) ==> countm M P = countm (delm M obj) P";
   14.50    by (res_inst_tac [("M","M")] Multiset.induction 1);
   14.51 -  by (simp_tac (arith_ss addsimps [Multiset.delm_empty_def,
   14.52 +  by (simp_tac (!simpset addsimps [Multiset.delm_empty_def,
   14.53                                     Multiset.countm_empty_def]) 1);
   14.54 -  by (asm_simp_tac (arith_ss addsimps[Multiset.countm_nonempty_def,
   14.55 +  by (asm_simp_tac (!simpset addsimps[Multiset.countm_nonempty_def,
   14.56                                        Multiset.delm_nonempty_def]
   14.57                               setloop (split_tac [expand_if])) 1);
   14.58  qed "countm_spurious_delm";
   14.59 @@ -61,10 +61,10 @@
   14.60  
   14.61  goal Multiset.thy "!!P. P(x) ==> 0<count M x --> 0<countm M P";
   14.62    by (res_inst_tac [("M","M")] Multiset.induction 1);
   14.63 -  by (simp_tac (arith_ss addsimps 
   14.64 +  by (simp_tac (!simpset addsimps 
   14.65                            [Multiset.delm_empty_def,Multiset.count_def,
   14.66                             Multiset.countm_empty_def]) 1);
   14.67 -  by (asm_simp_tac (arith_ss addsimps 
   14.68 +  by (asm_simp_tac (!simpset addsimps 
   14.69                         [Multiset.count_def,Multiset.delm_nonempty_def,
   14.70                          Multiset.countm_nonempty_def]
   14.71                      setloop (split_tac [expand_if])) 1);
   14.72 @@ -73,10 +73,10 @@
   14.73  goal Multiset.thy
   14.74     "!!P. P(x) ==> 0<count M x --> countm (delm M x) P = pred (countm M P)";
   14.75    by (res_inst_tac [("M","M")] Multiset.induction 1);
   14.76 -  by (simp_tac (arith_ss addsimps 
   14.77 +  by (simp_tac (!simpset addsimps 
   14.78                            [Multiset.delm_empty_def,
   14.79                             Multiset.countm_empty_def]) 1);
   14.80 -  by (asm_simp_tac (arith_ss addsimps 
   14.81 +  by (asm_simp_tac (!simpset addsimps 
   14.82                        [eq_sym_conv,count_addm_simp,Multiset.delm_nonempty_def,
   14.83                         Multiset.countm_nonempty_def,pos_count_imp_pos_countm,
   14.84                         suc_pred_id]
    15.1 --- a/src/HOL/IOA/NTP/Packet.ML	Wed Oct 04 13:11:57 1995 +0100
    15.2 +++ b/src/HOL/IOA/NTP/Packet.ML	Wed Oct 04 13:12:14 1995 +0100
    15.3 @@ -9,5 +9,5 @@
    15.4  
    15.5  (* Instantiation of a tautology? *)
    15.6  goal Packet.thy "!x. x = packet --> hdr(x) = hdr(packet)";
    15.7 - by (simp_tac (HOL_ss addsimps [Packet.hdr_def]) 1);
    15.8 + by (simp_tac (!simpset addsimps [Packet.hdr_def]) 1);
    15.9  qed "eq_packet_imp_eq_hdr"; 
   15.10 \ No newline at end of file
    16.1 --- a/src/HOL/IOA/NTP/Receiver.ML	Wed Oct 04 13:11:57 1995 +0100
    16.2 +++ b/src/HOL/IOA/NTP/Receiver.ML	Wed Oct 04 13:12:14 1995 +0100
    16.3 @@ -15,9 +15,8 @@
    16.4  \ C_m_r : actions(receiver_asig)          &   \
    16.5  \ C_r_s ~: actions(receiver_asig)         &   \
    16.6  \ C_r_r(m) : actions(receiver_asig)";
    16.7 -  by(simp_tac (action_ss addsimps 
    16.8 -               (Receiver.receiver_asig_def :: actions_def :: 
    16.9 -                asig_projections @ set_lemmas)) 1);
   16.10 +  by(simp_tac (!simpset addsimps (Receiver.receiver_asig_def :: actions_def :: 
   16.11 +                                  asig_projections @ set_lemmas)) 1);
   16.12  qed "in_receiver_asig";
   16.13  
   16.14  val receiver_projections = 
    17.1 --- a/src/HOL/IOA/NTP/Sender.ML	Wed Oct 04 13:11:57 1995 +0100
    17.2 +++ b/src/HOL/IOA/NTP/Sender.ML	Wed Oct 04 13:12:14 1995 +0100
    17.3 @@ -15,7 +15,7 @@
    17.4  \ C_m_r ~: actions(sender_asig)         &   \
    17.5  \ C_r_s : actions(sender_asig)          &   \
    17.6  \ C_r_r(m) ~: actions(sender_asig)";
    17.7 -by(simp_tac (action_ss addsimps 
    17.8 +by(simp_tac (!simpset addsimps 
    17.9               (Sender.sender_asig_def :: actions_def :: 
   17.10                asig_projections @ set_lemmas)) 1);
   17.11  qed "in_sender_asig";
    18.1 --- a/src/HOL/IOA/meta_theory/Asig.ML	Wed Oct 04 13:11:57 1995 +0100
    18.2 +++ b/src/HOL/IOA/meta_theory/Asig.ML	Wed Oct 04 13:12:14 1995 +0100
    18.3 @@ -11,9 +11,9 @@
    18.4  val asig_projections = [asig_inputs_def, asig_outputs_def, asig_internals_def];
    18.5  
    18.6  goal Asig.thy "!!a.[| a~:internals(S) ;a~:externals(S)|] ==> a~:actions(S)";
    18.7 -by (asm_full_simp_tac (list_ss addsimps [externals_def,actions_def]) 1);
    18.8 +by (asm_full_simp_tac (!simpset addsimps [externals_def,actions_def]) 1);
    18.9  qed"int_and_ext_is_act";
   18.10  
   18.11  goal Asig.thy "!!a.[|a:externals(S)|] ==> a:actions(S)";
   18.12 -by (asm_full_simp_tac (list_ss addsimps [externals_def,actions_def]) 1);
   18.13 +by (asm_full_simp_tac (!simpset addsimps [externals_def,actions_def]) 1);
   18.14  qed"ext_is_act";
   18.15 \ No newline at end of file
    19.1 --- a/src/HOL/IOA/meta_theory/IOA.ML	Wed Oct 04 13:11:57 1995 +0100
    19.2 +++ b/src/HOL/IOA/meta_theory/IOA.ML	Wed Oct 04 13:12:14 1995 +0100
    19.3 @@ -14,23 +14,23 @@
    19.4  
    19.5  goal IOA.thy
    19.6  "asig_of((x,y,z)) = x & starts_of((x,y,z)) = y & trans_of((x,y,z)) = z";
    19.7 -  by (simp_tac (SS addsimps ioa_projections) 1);
    19.8 +  by (simp_tac (!simpset addsimps ioa_projections) 1);
    19.9    qed "ioa_triple_proj";
   19.10  
   19.11  goalw IOA.thy [ioa_def,state_trans_def,actions_def, is_asig_def]
   19.12    "!!A. [| IOA(A); (s1,a,s2):trans_of(A) |] ==> a:actions(asig_of(A))";
   19.13    by (REPEAT(etac conjE 1));
   19.14    by (EVERY1[etac allE, etac impE, atac]);
   19.15 -  by (asm_full_simp_tac SS 1);
   19.16 +  by (Asm_full_simp_tac 1);
   19.17  qed "trans_in_actions";
   19.18  
   19.19  
   19.20  goal IOA.thy "filter_oseq p (filter_oseq p s) = filter_oseq p s";
   19.21 -  by (simp_tac (SS addsimps [filter_oseq_def]) 1);
   19.22 +  by (simp_tac (!simpset addsimps [filter_oseq_def]) 1);
   19.23    by (rtac ext 1);
   19.24    by (Option.option.induct_tac "s(i)" 1);
   19.25 -  by (simp_tac SS 1);
   19.26 -  by (simp_tac (SS setloop (split_tac [expand_if])) 1);
   19.27 +  by (Simp_tac 1);
   19.28 +  by (simp_tac (!simpset setloop (split_tac [expand_if])) 1);
   19.29  qed "filter_oseq_idemp";
   19.30  
   19.31  goalw IOA.thy [mk_trace_def,filter_oseq_def]
   19.32 @@ -40,35 +40,35 @@
   19.33  \  (mk_trace A s n = Some(a)) =                                   \
   19.34  \   (s(n)=Some(a) & a : externals(asig_of(A)))";
   19.35    by (Option.option.induct_tac "s(n)" 1);
   19.36 -  by (ALLGOALS (simp_tac (SS setloop (split_tac [expand_if]))));
   19.37 +  by (ALLGOALS (simp_tac (!simpset setloop (split_tac [expand_if]))));
   19.38    by (fast_tac HOL_cs 1);
   19.39  qed "mk_trace_thm";
   19.40  
   19.41  goalw IOA.thy [reachable_def] "!!A. s:starts_of(A) ==> reachable A s";
   19.42    by (res_inst_tac [("x","(%i.None,%i.s)")] bexI 1);
   19.43 -  by (simp_tac SS 1);
   19.44 -  by (asm_simp_tac (SS addsimps exec_rws) 1);
   19.45 +  by (Simp_tac 1);
   19.46 +  by (asm_simp_tac (!simpset addsimps exec_rws) 1);
   19.47  qed "reachable_0";
   19.48  
   19.49  goalw IOA.thy (reachable_def::exec_rws)
   19.50  "!!A. [| reachable A s; (s,a,t) : trans_of(A) |] ==> reachable A t";
   19.51 -  by(asm_full_simp_tac SS 1);
   19.52 +  by(Asm_full_simp_tac 1);
   19.53    by(safe_tac set_cs);
   19.54    by(res_inst_tac [("x","(%i.if i<n then fst ex i                    \
   19.55  \                            else (if i=n then Some a else None),    \
   19.56  \                         %i.if i<Suc n then snd ex i else t)")] bexI 1);
   19.57    by(res_inst_tac [("x","Suc(n)")] exI 1);
   19.58 -  by(simp_tac SS 1);
   19.59 -  by(asm_simp_tac (SS delsimps [less_Suc_eq]) 1);
   19.60 +  by(Simp_tac 1);
   19.61 +  by(asm_simp_tac (!simpset delsimps [less_Suc_eq]) 1);
   19.62    by(REPEAT(rtac allI 1));
   19.63    by(res_inst_tac [("m","na"),("n","n")] (make_elim less_linear) 1);
   19.64    be disjE 1;
   19.65 -  by(asm_simp_tac SS 1);
   19.66 +  by(Asm_simp_tac 1);
   19.67    be disjE 1;
   19.68 -  by(asm_simp_tac SS 1);
   19.69 +  by(Asm_simp_tac 1);
   19.70    by(fast_tac HOL_cs 1);
   19.71    by(forward_tac [less_not_sym] 1);
   19.72 -  by(asm_simp_tac (SS addsimps [less_not_refl2]) 1);
   19.73 +  by(asm_simp_tac (!simpset addsimps [less_not_refl2]) 1);
   19.74  qed "reachable_n";
   19.75  
   19.76  val [p1,p2] = goalw IOA.thy [invariant_def]
   19.77 @@ -82,7 +82,7 @@
   19.78    by (fast_tac (set_cs addIs [p1,reachable_0]) 1);
   19.79    by (eres_inst_tac[("x","n1")]allE 1);
   19.80    by (eres_inst_tac[("P","%x.!a.?Q x a"), ("opt","fst ex n1")] optE 1);
   19.81 -  by (asm_simp_tac HOL_ss 1);
   19.82 +  by (Asm_simp_tac 1);
   19.83    by (safe_tac HOL_cs);
   19.84    by (etac (p2 RS mp) 1);
   19.85    by (ALLGOALS(fast_tac(set_cs addDs [hd Option.option.inject RS iffD1,
   19.86 @@ -103,14 +103,14 @@
   19.87  
   19.88  goal IOA.thy 
   19.89  "actions(asig_comp a b) = actions(a) Un actions(b)";
   19.90 -  by(simp_tac (prod_ss addsimps
   19.91 +  by(simp_tac (!simpset addsimps
   19.92                 ([actions_def,asig_comp_def]@asig_projections)) 1);
   19.93    by(fast_tac eq_cs 1);
   19.94  qed "actions_asig_comp";
   19.95  
   19.96  goal IOA.thy
   19.97  "starts_of(A || B) = {p. fst(p):starts_of(A) & snd(p):starts_of(B)}";
   19.98 -  by(simp_tac (SS addsimps (par_def::ioa_projections)) 1);
   19.99 +  by(simp_tac (!simpset addsimps (par_def::ioa_projections)) 1);
  19.100  qed "starts_of_par";
  19.101  
  19.102  (* Every state in an execution is reachable *)
  19.103 @@ -134,7 +134,7 @@
  19.104  \  (if a:actions(asig_of(D)) then                                            \
  19.105  \     (snd(snd(snd(s))),a,snd(snd(snd(t)))):trans_of(D)                      \
  19.106  \   else snd(snd(snd(t)))=snd(snd(snd(s)))))";
  19.107 -  by(simp_tac (SS addsimps ([par_def,actions_asig_comp,Pair_fst_snd_eq]@
  19.108 +  by(simp_tac (!simpset addsimps ([par_def,actions_asig_comp,Pair_fst_snd_eq]@
  19.109                              ioa_projections)
  19.110                    setloop (split_tac [expand_if])) 1);
  19.111  qed "trans_of_par4";
  19.112 @@ -142,31 +142,31 @@
  19.113  goal IOA.thy "starts_of(restrict ioa acts) = starts_of(ioa) &     \
  19.114  \             trans_of(restrict ioa acts) = trans_of(ioa) &       \
  19.115  \             reachable (restrict ioa acts) s = reachable ioa s";
  19.116 -by(simp_tac (SS addsimps ([is_execution_fragment_def,executions_def,
  19.117 +by(simp_tac (!simpset addsimps ([is_execution_fragment_def,executions_def,
  19.118                             reachable_def,restrict_def]@ioa_projections)) 1);
  19.119  qed "cancel_restrict";
  19.120  
  19.121  goal IOA.thy "asig_of(A || B) = asig_comp (asig_of A) (asig_of B)";
  19.122 -  by(simp_tac (SS addsimps (par_def::ioa_projections)) 1);
  19.123 +  by(simp_tac (!simpset addsimps (par_def::ioa_projections)) 1);
  19.124  qed "asig_of_par";
  19.125  
  19.126  
  19.127  goal IOA.thy "externals(asig_of(A1||A2)) =    \
  19.128  \  (externals(asig_of(A1)) Un externals(asig_of(A2)))";
  19.129 -by (asm_full_simp_tac (SS addsimps [externals_def,asig_of_par,asig_comp_def,asig_inputs_def,asig_outputs_def,Un_def,set_diff_def]) 1);
  19.130 +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);
  19.131  by (rtac set_ext 1); 
  19.132  by (fast_tac set_cs 1);
  19.133  qed"externals_of_par"; 
  19.134  
  19.135  goalw IOA.thy [externals_def,actions_def,compat_ioas_def,compat_asigs_def]
  19.136   "!! a. [| compat_ioas A1 A2; a:externals(asig_of(A1))|] ==> a~:internals(asig_of(A2))";
  19.137 -by (asm_full_simp_tac SS 1);
  19.138 +by (Asm_full_simp_tac 1);
  19.139  by (best_tac (set_cs addEs [equalityCE]) 1);
  19.140  qed"ext1_is_not_int2";
  19.141  
  19.142  goalw IOA.thy [externals_def,actions_def,compat_ioas_def,compat_asigs_def]
  19.143   "!! a. [| compat_ioas A2 A1 ; a:externals(asig_of(A1))|] ==> a~:internals(asig_of(A2))";
  19.144 -by (asm_full_simp_tac SS 1);
  19.145 +by (Asm_full_simp_tac 1);
  19.146  by (best_tac (set_cs addEs [equalityCE]) 1);
  19.147  qed"ext2_is_not_int1";
  19.148  
    20.1 --- a/src/HOL/IOA/meta_theory/Option.ML	Wed Oct 04 13:11:57 1995 +0100
    20.2 +++ b/src/HOL/IOA/meta_theory/Option.ML	Wed Oct 04 13:12:14 1995 +0100
    20.3 @@ -6,8 +6,7 @@
    20.4  Derived rules
    20.5  *)
    20.6  
    20.7 -val option_rws = Let_def :: Option.option.simps;
    20.8 -val SS = arith_ss addsimps option_rws;
    20.9 +Addsimps [Let_def];
   20.10  
   20.11  val [prem] = goal Option.thy "P(opt) ==> P(None) | (? x. P(Some(x)))";
   20.12   br (prem RS rev_mp) 1;
   20.13 @@ -17,8 +16,8 @@
   20.14  
   20.15  goal Option.thy "x=None | (? y.x=Some(y))"; 
   20.16  by (Option.option.induct_tac "x" 1);
   20.17 -by (asm_full_simp_tac list_ss 1);
   20.18 +by (Asm_full_simp_tac 1);
   20.19  by (rtac disjI2 1);
   20.20  by (rtac exI 1);
   20.21 -by (asm_full_simp_tac list_ss 1);
   20.22 -qed"opt_cases";
   20.23 \ No newline at end of file
   20.24 +by (Asm_full_simp_tac 1);
   20.25 +qed"opt_cases";
    21.1 --- a/src/HOL/IOA/meta_theory/Solve.ML	Wed Oct 04 13:11:57 1995 +0100
    21.2 +++ b/src/HOL/IOA/meta_theory/Solve.ML	Wed Oct 04 13:12:14 1995 +0100
    21.3 @@ -8,30 +8,30 @@
    21.4  
    21.5  open Solve; 
    21.6  
    21.7 -val SS = SS addsimps [mk_trace_thm,trans_in_actions];
    21.8 +Addsimps [mk_trace_thm,trans_in_actions];
    21.9  
   21.10  goalw Solve.thy [is_weak_pmap_def,traces_def]
   21.11    "!!f. [| IOA(C); IOA(A); externals(asig_of(C)) = externals(asig_of(A)); \
   21.12  \          is_weak_pmap f C A |] ==> traces(C) <= traces(A)";
   21.13  
   21.14 -  by (simp_tac(SS addsimps [has_trace_def])1);
   21.15 +  by (simp_tac(!simpset addsimps [has_trace_def])1);
   21.16    by (safe_tac set_cs);
   21.17  
   21.18    (* choose same trace, therefore same NF *)
   21.19    by (res_inst_tac[("x","mk_trace  C (fst ex)")] exI 1);
   21.20 -  by (asm_full_simp_tac set_ss 1);
   21.21 +  by (Asm_full_simp_tac 1);
   21.22  
   21.23    (* give execution of abstract automata *)
   21.24    by (res_inst_tac[("x","(mk_trace A (fst ex),%i.f(snd ex i))")] bexI 1);
   21.25  
   21.26    (* Traces coincide *)
   21.27 -  by (asm_simp_tac (SS addsimps [mk_trace_def,filter_oseq_idemp])1);
   21.28 +  by (asm_simp_tac (!simpset addsimps [mk_trace_def,filter_oseq_idemp])1);
   21.29  
   21.30    (* Use lemma *)
   21.31    by (forward_tac [states_of_exec_reachable] 1);
   21.32  
   21.33    (* Now show that it's an execution *)
   21.34 -  by (asm_full_simp_tac(SS addsimps [executions_def]) 1);
   21.35 +  by (asm_full_simp_tac(!simpset addsimps [executions_def]) 1);
   21.36    by (safe_tac set_cs);
   21.37  
   21.38    (* Start states map to start states *)
   21.39 @@ -39,13 +39,13 @@
   21.40    by (atac 1);
   21.41  
   21.42    (* Show that it's an execution fragment *)
   21.43 -  by (asm_full_simp_tac (SS addsimps [is_execution_fragment_def])1);
   21.44 +  by (asm_full_simp_tac (!simpset addsimps [is_execution_fragment_def])1);
   21.45    by (safe_tac HOL_cs);
   21.46  
   21.47    by (eres_inst_tac [("x","snd ex n")] allE 1);
   21.48    by (eres_inst_tac [("x","snd ex (Suc n)")] allE 1);
   21.49    by (eres_inst_tac [("x","a")] allE 1);
   21.50 -  by (asm_full_simp_tac SS 1);
   21.51 +  by (Asm_full_simp_tac 1);
   21.52  qed "trace_inclusion";
   21.53  
   21.54  (* Lemmata *)
   21.55 @@ -60,70 +60,70 @@
   21.56  \  (a:externals(asig_of(A1)) & a:externals(asig_of(A2)) |  \
   21.57  \  a:externals(asig_of(A1)) & a~:externals(asig_of(A2)) |  \
   21.58  \  a~:externals(asig_of(A1)) & a:externals(asig_of(A2)))";
   21.59 -by (asm_full_simp_tac (SS addsimps [externals_def,asig_of_par,asig_comp_def,asig_inputs_def,asig_outputs_def]) 1);
   21.60 +by (asm_full_simp_tac (!simpset addsimps [externals_def,asig_of_par,asig_comp_def,asig_inputs_def,asig_outputs_def]) 1);
   21.61   by (fast_tac set_cs 1);
   21.62  val externals_of_par_extra = result(); 
   21.63  
   21.64  goal Solve.thy "!!s.[| reachable (C1||C2) s |] ==> reachable C1 (fst s)";
   21.65 -by (asm_full_simp_tac (SS addsimps [reachable_def]) 1); 
   21.66 +by (asm_full_simp_tac (!simpset addsimps [reachable_def]) 1); 
   21.67  by (etac bexE 1);
   21.68  by (res_inst_tac [("x",
   21.69     "(filter_oseq (%a.a:actions(asig_of(C1))) \
   21.70  \                (fst ex),                                                \
   21.71  \    %i.fst (snd ex i))")]  bexI 1);
   21.72  (* fst(s) is in projected execution *)
   21.73 - by (simp_tac SS 1);
   21.74 + by (Simp_tac 1);
   21.75   by (fast_tac HOL_cs 1);
   21.76  (* projected execution is indeed an execution *)
   21.77 -by (asm_full_simp_tac (SS addsimps [executions_def,is_execution_fragment_def,
   21.78 +by (asm_full_simp_tac (!simpset addsimps [executions_def,is_execution_fragment_def,
   21.79      par_def, starts_of_def,trans_of_def]) 1);
   21.80 -by (simp_tac (SS addsimps [filter_oseq_def]) 1);
   21.81 +by (simp_tac (!simpset addsimps [filter_oseq_def]) 1);
   21.82   by (REPEAT(rtac allI 1));
   21.83   by (cut_inst_tac [("x","fst ex n")] opt_cases 1);
   21.84   by (etac disjE 1);
   21.85  (* case 1: action sequence of || had already a None *)
   21.86 -by (asm_full_simp_tac SS 1);
   21.87 +by (Asm_full_simp_tac 1);
   21.88   by (REPEAT(etac exE 1));
   21.89   by (case_tac "y:actions(asig_of(C1))" 1);
   21.90  (* case 2: action sequence of || had Some(a) and 
   21.91             filtered sequence also       *)
   21.92 -by (asm_full_simp_tac SS 1);
   21.93 +by (Asm_full_simp_tac 1);
   21.94   by (rtac impI 1);
   21.95   by (REPEAT(hyp_subst_tac 1)); 
   21.96 - by (asm_full_simp_tac SS 1);
   21.97 + by (Asm_full_simp_tac 1);
   21.98  (* case 3: action sequence pf || had Some(a) but
   21.99             filtered sequence has None      *)
  21.100 - by (asm_full_simp_tac SS 1);
  21.101 + by (Asm_full_simp_tac 1);
  21.102  qed"comp1_reachable";
  21.103  
  21.104  
  21.105  (* Exact copy of proof of comp1_reachable for the second 
  21.106     component of a parallel composition.     *)
  21.107  goal Solve.thy "!!s.[| reachable (C1||C2) s|] ==> reachable C2 (snd s)";
  21.108 -by (asm_full_simp_tac (SS addsimps [reachable_def]) 1); 
  21.109 +by (asm_full_simp_tac (!simpset addsimps [reachable_def]) 1); 
  21.110  by (etac bexE 1);
  21.111  by (res_inst_tac [("x",
  21.112     "(filter_oseq (%a.a:actions(asig_of(C2)))\
  21.113  \                (fst ex),                                                \
  21.114  \    %i.snd (snd ex i))")]  bexI 1);
  21.115  (* fst(s) is in projected execution *)
  21.116 - by (simp_tac list_ss 1);
  21.117 + by (Simp_tac 1);
  21.118   by (fast_tac HOL_cs 1);
  21.119  (* projected execution is indeed an execution *)
  21.120 - by (asm_full_simp_tac (SS addsimps [executions_def,is_execution_fragment_def,
  21.121 + by (asm_full_simp_tac (!simpset addsimps [executions_def,is_execution_fragment_def,
  21.122      par_def, starts_of_def,trans_of_def]) 1);
  21.123 - by (simp_tac (SS addsimps [filter_oseq_def]) 1);
  21.124 + by (simp_tac (!simpset addsimps [filter_oseq_def]) 1);
  21.125   by (REPEAT(rtac allI 1));
  21.126   by (cut_inst_tac [("x","fst ex n")] opt_cases 1);
  21.127   by (etac disjE 1);
  21.128 - by (asm_full_simp_tac SS 1);
  21.129 + by (Asm_full_simp_tac 1);
  21.130   by (REPEAT(etac exE 1));
  21.131   by (case_tac "y:actions(asig_of(C2))" 1);
  21.132 - by (asm_full_simp_tac SS 1);
  21.133 + by (Asm_full_simp_tac 1);
  21.134   by (rtac impI 1);
  21.135   by (REPEAT(hyp_subst_tac 1)); 
  21.136 - by (asm_full_simp_tac SS 1);
  21.137 - by (asm_full_simp_tac SS 1);
  21.138 + by (Asm_full_simp_tac 1);
  21.139 + by (Asm_full_simp_tac 1);
  21.140  qed"comp2_reachable";
  21.141  
  21.142  
  21.143 @@ -137,71 +137,71 @@
  21.144  \  ==> is_weak_pmap (%p.(f(fst(p)),g(snd(p)))) (C1||C2) (A1||A2)";
  21.145   by (rtac conjI 1);
  21.146  (* start_states *)
  21.147 - by (asm_full_simp_tac (SS addsimps [par_def, starts_of_def]) 1);
  21.148 + by (asm_full_simp_tac (!simpset addsimps [par_def, starts_of_def]) 1);
  21.149   by (fast_tac set_cs 1);
  21.150  (* transitions *)
  21.151  by (REPEAT (rtac allI 1));
  21.152  by (rtac imp_conj_lemma 1);
  21.153  by (REPEAT(etac conjE 1));
  21.154 -by (simp_tac (SS addsimps [externals_of_par_extra]) 1);
  21.155 -by (simp_tac (SS addsimps [par_def]) 1);
  21.156 -by (asm_full_simp_tac (SS addsimps [trans_of_def]) 1);
  21.157 +by (simp_tac (!simpset addsimps [externals_of_par_extra]) 1);
  21.158 +by (simp_tac (!simpset addsimps [par_def]) 1);
  21.159 +by (asm_full_simp_tac (!simpset addsimps [trans_of_def]) 1);
  21.160  by (rtac (expand_if RS ssubst) 1);
  21.161  by (rtac conjI 1);
  21.162  by (rtac impI 1); 
  21.163  by (etac disjE 1);
  21.164  (* case 1      a:e(A1) | a:e(A2) *)
  21.165 -by (asm_full_simp_tac (SS addsimps [comp1_reachable,comp2_reachable,
  21.166 +by (asm_full_simp_tac (!simpset addsimps [comp1_reachable,comp2_reachable,
  21.167                                      ext_is_act]) 1);
  21.168  by (etac disjE 1);
  21.169  (* case 2      a:e(A1) | a~:e(A2) *)
  21.170 -by (asm_full_simp_tac (SS addsimps [comp1_reachable,comp2_reachable,
  21.171 +by (asm_full_simp_tac (!simpset addsimps [comp1_reachable,comp2_reachable,
  21.172               ext_is_act,ext1_ext2_is_not_act2]) 1);
  21.173  (* case 3      a:~e(A1) | a:e(A2) *)
  21.174 -by (asm_full_simp_tac (SS addsimps [comp1_reachable,comp2_reachable,
  21.175 +by (asm_full_simp_tac (!simpset addsimps [comp1_reachable,comp2_reachable,
  21.176               ext_is_act,ext1_ext2_is_not_act1]) 1);
  21.177  (* case 4      a:~e(A1) | a~:e(A2) *)
  21.178  by (rtac impI 1);
  21.179  by (subgoal_tac "a~:externals(asig_of(A1)) & a~:externals(asig_of(A2))" 1);
  21.180  (* delete auxiliary subgoal *)
  21.181 -by (asm_full_simp_tac SS 2);
  21.182 +by (Asm_full_simp_tac 2);
  21.183  by (fast_tac HOL_cs 2);
  21.184 -by (simp_tac (SS addsimps [conj_disj_distribR] addcongs [conj_cong]
  21.185 +by (simp_tac (!simpset addsimps [conj_disj_distribR] addcongs [conj_cong]
  21.186                   setloop (split_tac [expand_if])) 1);
  21.187  by(REPEAT((resolve_tac [conjI,impI] 1 ORELSE etac conjE 1) THEN
  21.188 -        asm_full_simp_tac(SS addsimps[comp1_reachable,
  21.189 +        asm_full_simp_tac(!simpset addsimps[comp1_reachable,
  21.190                                        comp2_reachable])1));
  21.191  qed"fxg_is_weak_pmap_of_product_IOA";
  21.192  
  21.193  
  21.194  goal Solve.thy "!!s.[| reachable (rename C g) s |] ==> reachable C s";
  21.195 -by (asm_full_simp_tac (SS addsimps [reachable_def]) 1); 
  21.196 +by (asm_full_simp_tac (!simpset addsimps [reachable_def]) 1); 
  21.197  by (etac bexE 1);
  21.198  by (res_inst_tac [("x",
  21.199     "((%i. case (fst ex i) \
  21.200  \         of None => None\
  21.201  \          | Some(x) => g x) ,snd ex)")]  bexI 1);
  21.202 -by (simp_tac SS 1);
  21.203 +by (Simp_tac 1);
  21.204  (* execution is indeed an execution of C *)
  21.205 -by (asm_full_simp_tac (SS addsimps [executions_def,is_execution_fragment_def,
  21.206 +by (asm_full_simp_tac (!simpset addsimps [executions_def,is_execution_fragment_def,
  21.207      par_def, starts_of_def,trans_of_def,rename_def]) 1);
  21.208  by (REPEAT(rtac allI 1));
  21.209  by (cut_inst_tac [("x","fst ex n")] opt_cases 1);
  21.210   by (etac disjE 1);
  21.211  (* case 1: action sequence of rename C had already a None *)
  21.212 -by (asm_full_simp_tac SS 1);
  21.213 +by (Asm_full_simp_tac 1);
  21.214  (* case 2 *)
  21.215  by (REPEAT(etac exE 1));
  21.216  by (etac conjE 1);
  21.217  by (eres_inst_tac [("x","n")] allE 1);
  21.218  by (eres_inst_tac [("x","y")] allE 1);
  21.219 -by (asm_full_simp_tac SS 1);
  21.220 +by (Asm_full_simp_tac 1);
  21.221  by (etac exE 1);
  21.222  by (etac conjE 1);
  21.223  by (dtac sym 1);
  21.224  by (dtac sym 1);
  21.225  by (dtac sym 1);
  21.226 -by (asm_full_simp_tac SS 1);
  21.227 +by (Asm_full_simp_tac 1);
  21.228  by (safe_tac HOL_cs);
  21.229  qed"reachable_rename_ioa";
  21.230  
  21.231 @@ -220,14 +220,14 @@
  21.232  
  21.233  goal Solve.thy "!!f.[| is_weak_pmap f C A |]\
  21.234  \                      ==> (is_weak_pmap f (rename C g) (rename A g))";
  21.235 -by (asm_full_simp_tac (SS addsimps [is_weak_pmap_def]) 1);
  21.236 +by (asm_full_simp_tac (!simpset addsimps [is_weak_pmap_def]) 1);
  21.237  by (rtac conjI 1);
  21.238 -by (asm_full_simp_tac (SS addsimps [rename_def,starts_of_def]) 1);
  21.239 +by (asm_full_simp_tac (!simpset addsimps [rename_def,starts_of_def]) 1);
  21.240  by (fast_tac set_cs 1);
  21.241  by (REPEAT (rtac allI 1));
  21.242  by (rtac imp_conj_lemma 1);
  21.243 -by (simp_tac (SS addsimps [rename_def]) 1);
  21.244 -by (asm_full_simp_tac (SS addsimps [externals_def,asig_inputs_def,asig_outputs_def,asig_of_def,trans_of_def]) 1);
  21.245 +by (simp_tac (!simpset addsimps [rename_def]) 1);
  21.246 +by (asm_full_simp_tac (!simpset addsimps [externals_def,asig_inputs_def,asig_outputs_def,asig_of_def,trans_of_def]) 1);
  21.247  by (safe_tac set_cs);
  21.248  by (rtac (expand_if RS ssubst) 1);
  21.249   by (rtac conjI 1);
  21.250 @@ -238,23 +238,23 @@
  21.251  (* x is input *)
  21.252   by (dtac sym 1);
  21.253   by (dtac sym 1);
  21.254 -by (asm_full_simp_tac SS 1);
  21.255 +by (Asm_full_simp_tac 1);
  21.256  by (REPEAT (hyp_subst_tac 1));
  21.257  by (cut_inst_tac [("C","C"),("g","g"),("s","s")] reachable_rename_ioa 1);
  21.258  by (assume_tac 1);
  21.259 -by (asm_full_simp_tac SS 1);
  21.260 +by (Asm_full_simp_tac 1);
  21.261  (* x is output *)
  21.262   by (etac exE 1);
  21.263  by (etac conjE 1);
  21.264   by (dtac sym 1);
  21.265   by (dtac sym 1);
  21.266 -by (asm_full_simp_tac SS 1);
  21.267 +by (Asm_full_simp_tac 1);
  21.268  by (REPEAT (hyp_subst_tac 1));
  21.269  by (cut_inst_tac [("C","C"),("g","g"),("s","s")] reachable_rename_ioa 1);
  21.270  by (assume_tac 1);
  21.271 -by (asm_full_simp_tac SS 1);
  21.272 +by (Asm_full_simp_tac 1);
  21.273  (* x is internal *)
  21.274 -by (simp_tac (SS addsimps [disj_demorgan,neg_ex,conj_demorgan] addcongs [conj_cong]) 1);
  21.275 +by (simp_tac (!simpset addsimps [disj_demorgan,neg_ex,conj_demorgan] addcongs [conj_cong]) 1);
  21.276  by (rtac impI 1);
  21.277  by (etac conjE 1);
  21.278  by (cut_inst_tac [("C","C"),("g","g"),("s","s")] reachable_rename_ioa 1);
  21.279 @@ -263,7 +263,7 @@
  21.280  by (eres_inst_tac [("x","t")] allE 1);
  21.281  by (eres_inst_tac [("x","x")] allE 1);
  21.282  by (eres_inst_tac [("x","x")] allE 1);
  21.283 -by (asm_full_simp_tac SS 1);
  21.284 +by (Asm_full_simp_tac 1);
  21.285  qed"rename_through_pmap";
  21.286  
  21.287  
    22.1 --- a/src/HOL/Integ/Equiv.ML	Wed Oct 04 13:11:57 1995 +0100
    22.2 +++ b/src/HOL/Integ/Equiv.ML	Wed Oct 04 13:12:14 1995 +0100
    22.3 @@ -214,8 +214,8 @@
    22.4  by (safe_tac rel_cs);
    22.5  by (rtac (equivA RS equiv_type RS subsetD RS SigmaE2) 1);
    22.6  by (assume_tac 1);
    22.7 -by (asm_simp_tac (prod_ss addsimps [equivA RS UN_equiv_class,
    22.8 -				 congruent2_implies_congruent]) 1);
    22.9 +by (asm_simp_tac (!simpset addsimps [equivA RS UN_equiv_class,
   22.10 +				     congruent2_implies_congruent]) 1);
   22.11  by (rewrite_goals_tac [congruent2_def,equiv_def,refl_def]);
   22.12  by (fast_tac rel_cs 1);
   22.13  qed "congruent2_implies_congruent_UN";
   22.14 @@ -224,9 +224,9 @@
   22.15      "[| equiv A r;  congruent2 r b;  a1: A;  a2: A |]  \
   22.16  \    ==> (UN x1:r^^{a1}. UN x2:r^^{a2}. b x1 x2) = b a1 a2";
   22.17  by (cut_facts_tac prems 1);
   22.18 -by (asm_simp_tac (prod_ss addsimps [equivA RS UN_equiv_class,
   22.19 -				    congruent2_implies_congruent,
   22.20 -				    congruent2_implies_congruent_UN]) 1);
   22.21 +by (asm_simp_tac (!simpset addsimps [equivA RS UN_equiv_class,
   22.22 +				     congruent2_implies_congruent,
   22.23 +				     congruent2_implies_congruent_UN]) 1);
   22.24  qed "UN_equiv_class2";
   22.25  
   22.26  (*type checking*)
    23.1 --- a/src/HOL/Integ/Integ.ML	Wed Oct 04 13:11:57 1995 +0100
    23.2 +++ b/src/HOL/Integ/Integ.ML	Wed Oct 04 13:12:14 1995 +0100
    23.3 @@ -83,9 +83,8 @@
    23.4  by (etac Abs_Integ_inverse 1);
    23.5  qed "inj_onto_Abs_Integ";
    23.6  
    23.7 -val intrel_ss = 
    23.8 -    arith_ss addsimps [equiv_intrel_iff, inj_onto_Abs_Integ RS inj_onto_iff,
    23.9 -		       intrel_iff, intrel_in_integ, Abs_Integ_inverse];
   23.10 +Addsimps [equiv_intrel_iff, inj_onto_Abs_Integ RS inj_onto_iff,
   23.11 +	  intrel_iff, intrel_in_integ, Abs_Integ_inverse];
   23.12  
   23.13  goal Integ.thy "inj(Rep_Integ)";
   23.14  by (rtac inj_inverseI 1);
   23.15 @@ -106,7 +105,7 @@
   23.16  by (rtac equiv_intrel 1);
   23.17  by (fast_tac set_cs 1);
   23.18  by (safe_tac intrel_cs);
   23.19 -by (asm_full_simp_tac arith_ss 1);
   23.20 +by (Asm_full_simp_tac 1);
   23.21  qed "inj_znat";
   23.22  
   23.23  
   23.24 @@ -115,7 +114,7 @@
   23.25  goalw Integ.thy [congruent_def]
   23.26    "congruent intrel (%p. split (%x y. intrel^^{(y,x)}) p)";
   23.27  by (safe_tac intrel_cs);
   23.28 -by (asm_simp_tac (intrel_ss addsimps add_ac) 1);
   23.29 +by (asm_simp_tac (!simpset addsimps add_ac) 1);
   23.30  qed "zminus_congruent";
   23.31  
   23.32  
   23.33 @@ -125,10 +124,8 @@
   23.34  goalw Integ.thy [zminus_def]
   23.35        "$~ Abs_Integ(intrel^^{(x,y)}) = Abs_Integ(intrel ^^ {(y,x)})";
   23.36  by (res_inst_tac [("f","Abs_Integ")] arg_cong 1);
   23.37 -by (simp_tac (set_ss addsimps 
   23.38 +by (simp_tac (!simpset addsimps 
   23.39     [intrel_in_integ RS Abs_Integ_inverse,zminus_ize UN_equiv_class]) 1);
   23.40 -by (rewtac split_def);
   23.41 -by (simp_tac prod_ss 1);
   23.42  qed "zminus";
   23.43  
   23.44  (*by lcp*)
   23.45 @@ -139,22 +136,22 @@
   23.46  by (dres_inst_tac [("f","Abs_Integ")] arg_cong 1);
   23.47  by (res_inst_tac [("p","x")] PairE 1);
   23.48  by (rtac prem 1);
   23.49 -by (asm_full_simp_tac (HOL_ss addsimps [Rep_Integ_inverse]) 1);
   23.50 +by (asm_full_simp_tac (!simpset addsimps [Rep_Integ_inverse]) 1);
   23.51  qed "eq_Abs_Integ";
   23.52  
   23.53  goal Integ.thy "$~ ($~ z) = z";
   23.54  by (res_inst_tac [("z","z")] eq_Abs_Integ 1);
   23.55 -by (asm_simp_tac (HOL_ss addsimps [zminus]) 1);
   23.56 +by (asm_simp_tac (!simpset addsimps [zminus]) 1);
   23.57  qed "zminus_zminus";
   23.58  
   23.59  goal Integ.thy "inj(zminus)";
   23.60  by (rtac injI 1);
   23.61  by (dres_inst_tac [("f","zminus")] arg_cong 1);
   23.62 -by (asm_full_simp_tac (HOL_ss addsimps [zminus_zminus]) 1);
   23.63 +by (asm_full_simp_tac (!simpset addsimps [zminus_zminus]) 1);
   23.64  qed "inj_zminus";
   23.65  
   23.66  goalw Integ.thy [znat_def] "$~ ($#0) = $#0";
   23.67 -by (simp_tac (arith_ss addsimps [zminus]) 1);
   23.68 +by (simp_tac (!simpset addsimps [zminus]) 1);
   23.69  qed "zminus_0";
   23.70  
   23.71  
   23.72 @@ -162,7 +159,7 @@
   23.73  
   23.74  goal Arith.thy "!!m x n::nat. n+m=x ==> m<=x";
   23.75  by (dtac (disjI2 RS less_or_eq_imp_le) 1);
   23.76 -by (asm_full_simp_tac (arith_ss addsimps add_ac) 1);
   23.77 +by (asm_full_simp_tac (!simpset addsimps add_ac) 1);
   23.78  by (dtac add_leD1 1);
   23.79  by (assume_tac 1);
   23.80  qed "not_znegative_znat_lemma";
   23.81 @@ -170,21 +167,21 @@
   23.82  
   23.83  goalw Integ.thy [znegative_def, znat_def]
   23.84      "~ znegative($# n)";
   23.85 -by (simp_tac intrel_ss 1);
   23.86 +by (Simp_tac 1);
   23.87  by (safe_tac intrel_cs);
   23.88  by (rtac ccontr 1);
   23.89  by (etac notE 1);
   23.90 -by (asm_full_simp_tac arith_ss 1);
   23.91 +by (Asm_full_simp_tac 1);
   23.92  by (dtac not_znegative_znat_lemma 1);
   23.93  by (fast_tac (HOL_cs addDs [leD]) 1);
   23.94  qed "not_znegative_znat";
   23.95  
   23.96  goalw Integ.thy [znegative_def, znat_def] "znegative($~ $# Suc(n))";
   23.97 -by (simp_tac (intrel_ss addsimps [zminus]) 1);
   23.98 +by (simp_tac (!simpset addsimps [zminus]) 1);
   23.99  by (REPEAT (ares_tac [exI, conjI] 1));
  23.100  by (rtac (intrelI RS ImageI) 2);
  23.101  by (rtac singletonI 3);
  23.102 -by (simp_tac arith_ss 2);
  23.103 +by (Simp_tac 2);
  23.104  by (rtac less_add_Suc1 1);
  23.105  qed "znegative_zminus_znat";
  23.106  
  23.107 @@ -193,29 +190,29 @@
  23.108  
  23.109  goal Arith.thy "!!n::nat. n - Suc(n+m)=0";
  23.110  by (nat_ind_tac "n" 1);
  23.111 -by (ALLGOALS(asm_simp_tac arith_ss));
  23.112 +by (ALLGOALS Asm_simp_tac);
  23.113  qed "diff_Suc_add_0";
  23.114  
  23.115  goal Arith.thy "Suc((n::nat)+m)-n=Suc(m)";
  23.116  by (nat_ind_tac "n" 1);
  23.117 -by (ALLGOALS(asm_simp_tac arith_ss));
  23.118 +by (ALLGOALS Asm_simp_tac);
  23.119  qed "diff_Suc_add_inverse";
  23.120  
  23.121  goalw Integ.thy [congruent_def]
  23.122      "congruent intrel (split (%x y. intrel^^{((y-x) + (x-(y::nat)),0)}))";
  23.123  by (safe_tac intrel_cs);
  23.124 -by (asm_simp_tac intrel_ss 1);
  23.125 +by (Asm_simp_tac 1);
  23.126  by (etac rev_mp 1);
  23.127  by (res_inst_tac [("m","x1"),("n","y1")] diff_induct 1);
  23.128 -by (asm_simp_tac (arith_ss addsimps [inj_Suc RS inj_eq]) 3);
  23.129 -by (asm_simp_tac (arith_ss addsimps [diff_add_inverse,diff_add_0]) 2);
  23.130 -by (asm_simp_tac arith_ss 1);
  23.131 +by (asm_simp_tac (!simpset addsimps [inj_Suc RS inj_eq]) 3);
  23.132 +by (asm_simp_tac (!simpset addsimps [diff_add_inverse,diff_add_0]) 2);
  23.133 +by (Asm_simp_tac 1);
  23.134  by (rtac impI 1);
  23.135  by (etac subst 1);
  23.136  by (res_inst_tac [("m1","x")] (add_commute RS ssubst) 1);
  23.137 -by (asm_simp_tac (arith_ss addsimps [diff_add_inverse,diff_add_0]) 1);
  23.138 +by (asm_simp_tac (!simpset addsimps [diff_add_inverse,diff_add_0]) 1);
  23.139  by (rtac impI 1);
  23.140 -by (asm_simp_tac (arith_ss addsimps
  23.141 +by (asm_simp_tac (!simpset addsimps
  23.142  		  [diff_add_inverse, diff_add_0, diff_Suc_add_0,
  23.143  		   diff_Suc_add_inverse]) 1);
  23.144  qed "zmagnitude_congruent";
  23.145 @@ -228,15 +225,15 @@
  23.146      "zmagnitude (Abs_Integ(intrel^^{(x,y)})) = \
  23.147  \    Abs_Integ(intrel^^{((y - x) + (x - y),0)})";
  23.148  by (res_inst_tac [("f","Abs_Integ")] arg_cong 1);
  23.149 -by (asm_simp_tac (intrel_ss addsimps [zmagnitude_ize UN_equiv_class]) 1);
  23.150 +by (asm_simp_tac (!simpset addsimps [zmagnitude_ize UN_equiv_class]) 1);
  23.151  qed "zmagnitude";
  23.152  
  23.153  goalw Integ.thy [znat_def] "zmagnitude($# n) = $#n";
  23.154 -by (asm_simp_tac (intrel_ss addsimps [zmagnitude]) 1);
  23.155 +by (asm_simp_tac (!simpset addsimps [zmagnitude]) 1);
  23.156  qed "zmagnitude_znat";
  23.157  
  23.158  goalw Integ.thy [znat_def] "zmagnitude($~ $# n) = $#n";
  23.159 -by (asm_simp_tac (intrel_ss addsimps [zmagnitude, zminus]) 1);
  23.160 +by (asm_simp_tac (!simpset addsimps [zmagnitude, zminus]) 1);
  23.161  qed "zmagnitude_zminus_znat";
  23.162  
  23.163  
  23.164 @@ -249,11 +246,11 @@
  23.165  \         split (%x1 y1. split (%x2 y2. intrel^^{(x1+x2, y1+y2)}) p2) p1)";
  23.166  (*Proof via congruent2_commuteI seems longer*)
  23.167  by (safe_tac intrel_cs);
  23.168 -by (asm_simp_tac (intrel_ss addsimps [add_assoc]) 1);
  23.169 +by (asm_simp_tac (!simpset addsimps [add_assoc]) 1);
  23.170  (*The rest should be trivial, but rearranging terms is hard*)
  23.171  by (res_inst_tac [("x1","x1a")] (add_left_commute RS ssubst) 1);
  23.172 -by (asm_simp_tac (arith_ss addsimps [add_assoc RS sym]) 1);
  23.173 -by (asm_simp_tac (arith_ss addsimps add_ac) 1);
  23.174 +by (asm_simp_tac (!simpset addsimps [add_assoc RS sym]) 1);
  23.175 +by (asm_simp_tac (!simpset addsimps add_ac) 1);
  23.176  qed "zadd_congruent2";
  23.177  
  23.178  (*Resolve th against the corresponding facts for zadd*)
  23.179 @@ -263,31 +260,31 @@
  23.180    "Abs_Integ(intrel^^{(x1,y1)}) + Abs_Integ(intrel^^{(x2,y2)}) = \
  23.181  \  Abs_Integ(intrel^^{(x1+x2, y1+y2)})";
  23.182  by (asm_simp_tac
  23.183 -    (intrel_ss addsimps [zadd_ize UN_equiv_class2]) 1);
  23.184 +    (!simpset addsimps [zadd_ize UN_equiv_class2]) 1);
  23.185  qed "zadd";
  23.186  
  23.187  goalw Integ.thy [znat_def] "$#0 + z = z";
  23.188  by (res_inst_tac [("z","z")] eq_Abs_Integ 1);
  23.189 -by (asm_simp_tac (arith_ss addsimps [zadd]) 1);
  23.190 +by (asm_simp_tac (!simpset addsimps [zadd]) 1);
  23.191  qed "zadd_0";
  23.192  
  23.193  goal Integ.thy "$~ (z + w) = $~ z + $~ w";
  23.194  by (res_inst_tac [("z","z")] eq_Abs_Integ 1);
  23.195  by (res_inst_tac [("z","w")] eq_Abs_Integ 1);
  23.196 -by (asm_simp_tac (arith_ss addsimps [zminus,zadd]) 1);
  23.197 +by (asm_simp_tac (!simpset addsimps [zminus,zadd]) 1);
  23.198  qed "zminus_zadd_distrib";
  23.199  
  23.200  goal Integ.thy "(z::int) + w = w + z";
  23.201  by (res_inst_tac [("z","z")] eq_Abs_Integ 1);
  23.202  by (res_inst_tac [("z","w")] eq_Abs_Integ 1);
  23.203 -by (asm_simp_tac (intrel_ss addsimps (add_ac @ [zadd])) 1);
  23.204 +by (asm_simp_tac (!simpset addsimps (add_ac @ [zadd])) 1);
  23.205  qed "zadd_commute";
  23.206  
  23.207  goal Integ.thy "((z1::int) + z2) + z3 = z1 + (z2 + z3)";
  23.208  by (res_inst_tac [("z","z1")] eq_Abs_Integ 1);
  23.209  by (res_inst_tac [("z","z2")] eq_Abs_Integ 1);
  23.210  by (res_inst_tac [("z","z3")] eq_Abs_Integ 1);
  23.211 -by (asm_simp_tac (arith_ss addsimps [zadd, add_assoc]) 1);
  23.212 +by (asm_simp_tac (!simpset addsimps [zadd, add_assoc]) 1);
  23.213  qed "zadd_assoc";
  23.214  
  23.215  (*For AC rewriting*)
  23.216 @@ -301,12 +298,12 @@
  23.217  val zadd_ac = [zadd_assoc,zadd_commute,zadd_left_commute];
  23.218  
  23.219  goalw Integ.thy [znat_def] "$# (m + n) = ($#m) + ($#n)";
  23.220 -by (asm_simp_tac (arith_ss addsimps [zadd]) 1);
  23.221 +by (asm_simp_tac (!simpset addsimps [zadd]) 1);
  23.222  qed "znat_add";
  23.223  
  23.224  goalw Integ.thy [znat_def] "z + ($~ z) = $#0";
  23.225  by (res_inst_tac [("z","z")] eq_Abs_Integ 1);
  23.226 -by (asm_simp_tac (intrel_ss addsimps [zminus, zadd, add_commute]) 1);
  23.227 +by (asm_simp_tac (!simpset addsimps [zminus, zadd, add_commute]) 1);
  23.228  qed "zadd_zminus_inverse";
  23.229  
  23.230  goal Integ.thy "($~ z) + z = $#0";
  23.231 @@ -327,7 +324,7 @@
  23.232  (** Congruence property for multiplication **)
  23.233  
  23.234  goal Integ.thy "((k::nat) + l) + (m + n) = (k + m) + (n + l)";
  23.235 -by (simp_tac (arith_ss addsimps add_ac) 1);
  23.236 +by (simp_tac (!simpset addsimps add_ac) 1);
  23.237  qed "zmult_congruent_lemma";
  23.238  
  23.239  goal Integ.thy 
  23.240 @@ -337,15 +334,17 @@
  23.241  by (rtac (equiv_intrel RS congruent2_commuteI) 1);
  23.242  by (safe_tac intrel_cs);
  23.243  by (rewtac split_def);
  23.244 -by (simp_tac (arith_ss addsimps add_ac@mult_ac) 1);
  23.245 -by (asm_simp_tac (arith_ss addsimps add_ac@mult_ac) 1);
  23.246 +by (simp_tac (!simpset addsimps add_ac@mult_ac) 1);
  23.247 +by (asm_simp_tac (!simpset delsimps [equiv_intrel_iff]
  23.248 +                           addsimps add_ac@mult_ac) 1);
  23.249  by (rtac (intrelI RS(equiv_intrel RS equiv_class_eq)) 1);
  23.250  by (rtac (zmult_congruent_lemma RS trans) 1);
  23.251  by (rtac (zmult_congruent_lemma RS trans RS sym) 1);
  23.252  by (rtac (zmult_congruent_lemma RS trans RS sym) 1);
  23.253  by (rtac (zmult_congruent_lemma RS trans RS sym) 1);
  23.254 -by (asm_simp_tac (HOL_ss addsimps [add_mult_distrib RS sym]) 1);
  23.255 -by (asm_simp_tac (arith_ss addsimps add_ac@mult_ac) 1);
  23.256 +by (asm_simp_tac (!simpset delsimps [add_mult_distrib]
  23.257 +                           addsimps [add_mult_distrib RS sym]) 1);
  23.258 +by (asm_simp_tac (!simpset addsimps add_ac@mult_ac) 1);
  23.259  qed "zmult_congruent2";
  23.260  
  23.261  (*Resolve th against the corresponding facts for zmult*)
  23.262 @@ -354,36 +353,36 @@
  23.263  goalw Integ.thy [zmult_def]
  23.264     "Abs_Integ((intrel^^{(x1,y1)})) * Abs_Integ((intrel^^{(x2,y2)})) = 	\
  23.265  \   Abs_Integ(intrel ^^ {(x1*x2 + y1*y2, x1*y2 + y1*x2)})";
  23.266 -by (simp_tac (intrel_ss addsimps [zmult_ize UN_equiv_class2]) 1);
  23.267 +by (simp_tac (!simpset addsimps [zmult_ize UN_equiv_class2]) 1);
  23.268  qed "zmult";
  23.269  
  23.270  goalw Integ.thy [znat_def] "$#0 * z = $#0";
  23.271  by (res_inst_tac [("z","z")] eq_Abs_Integ 1);
  23.272 -by (asm_simp_tac (arith_ss addsimps [zmult]) 1);
  23.273 +by (asm_simp_tac (!simpset addsimps [zmult]) 1);
  23.274  qed "zmult_0";
  23.275  
  23.276  goalw Integ.thy [znat_def] "$#Suc(0) * z = z";
  23.277  by (res_inst_tac [("z","z")] eq_Abs_Integ 1);
  23.278 -by (asm_simp_tac (arith_ss addsimps [zmult, add_0_right]) 1);
  23.279 +by (asm_simp_tac (!simpset addsimps [zmult]) 1);
  23.280  qed "zmult_1";
  23.281  
  23.282  goal Integ.thy "($~ z) * w = $~ (z * w)";
  23.283  by (res_inst_tac [("z","z")] eq_Abs_Integ 1);
  23.284  by (res_inst_tac [("z","w")] eq_Abs_Integ 1);
  23.285 -by (asm_simp_tac (intrel_ss addsimps ([zminus, zmult] @ add_ac)) 1);
  23.286 +by (asm_simp_tac (!simpset addsimps ([zminus, zmult] @ add_ac)) 1);
  23.287  qed "zmult_zminus";
  23.288  
  23.289  
  23.290  goal Integ.thy "($~ z) * ($~ w) = (z * w)";
  23.291  by (res_inst_tac [("z","z")] eq_Abs_Integ 1);
  23.292  by (res_inst_tac [("z","w")] eq_Abs_Integ 1);
  23.293 -by (asm_simp_tac (intrel_ss addsimps ([zminus, zmult] @ add_ac)) 1);
  23.294 +by (asm_simp_tac (!simpset addsimps ([zminus, zmult] @ add_ac)) 1);
  23.295  qed "zmult_zminus_zminus";
  23.296  
  23.297  goal Integ.thy "(z::int) * w = w * z";
  23.298  by (res_inst_tac [("z","z")] eq_Abs_Integ 1);
  23.299  by (res_inst_tac [("z","w")] eq_Abs_Integ 1);
  23.300 -by (asm_simp_tac (intrel_ss addsimps ([zmult] @ add_ac @ mult_ac)) 1);
  23.301 +by (asm_simp_tac (!simpset addsimps ([zmult] @ add_ac @ mult_ac)) 1);
  23.302  qed "zmult_commute";
  23.303  
  23.304  goal Integ.thy "z * $# 0 = $#0";
  23.305 @@ -398,7 +397,7 @@
  23.306  by (res_inst_tac [("z","z1")] eq_Abs_Integ 1);
  23.307  by (res_inst_tac [("z","z2")] eq_Abs_Integ 1);
  23.308  by (res_inst_tac [("z","z3")] eq_Abs_Integ 1);
  23.309 -by (asm_simp_tac (intrel_ss addsimps ([zmult] @ add_ac @ mult_ac)) 1);
  23.310 +by (asm_simp_tac (!simpset addsimps ([zmult] @ add_ac @ mult_ac)) 1);
  23.311  qed "zmult_assoc";
  23.312  
  23.313  (*For AC rewriting*)
  23.314 @@ -415,18 +414,17 @@
  23.315  by (res_inst_tac [("z","z2")] eq_Abs_Integ 1);
  23.316  by (res_inst_tac [("z","w")] eq_Abs_Integ 1);
  23.317  by (asm_simp_tac 
  23.318 -    (intrel_ss addsimps ([zadd, zmult, add_mult_distrib] @ 
  23.319 -			 add_ac @ mult_ac)) 1);
  23.320 +    (!simpset addsimps ([zadd, zmult] @ add_ac @ mult_ac)) 1);
  23.321  qed "zadd_zmult_distrib";
  23.322  
  23.323  val zmult_commute'= read_instantiate [("z","w")] zmult_commute;
  23.324  
  23.325  goal Integ.thy "w * ($~ z) = $~ (w * z)";
  23.326 -by (simp_tac (HOL_ss addsimps [zmult_commute', zmult_zminus]) 1);
  23.327 +by (simp_tac (!simpset addsimps [zmult_commute', zmult_zminus]) 1);
  23.328  qed "zmult_zminus_right";
  23.329  
  23.330  goal Integ.thy "(w::int) * (z1 + z2) = (w * z1) + (w * z2)";
  23.331 -by (simp_tac (HOL_ss addsimps [zmult_commute',zadd_zmult_distrib]) 1);
  23.332 +by (simp_tac (!simpset addsimps [zmult_commute',zadd_zmult_distrib]) 1);
  23.333  qed "zadd_zmult_distrib2";
  23.334  
  23.335  val zadd_simps = 
  23.336 @@ -437,34 +435,33 @@
  23.337  val zmult_simps = [zmult_0, zmult_1, zmult_0_right, zmult_1_right, 
  23.338  		   zmult_zminus, zmult_zminus_right];
  23.339  
  23.340 -val integ_ss =
  23.341 -    arith_ss addsimps (zadd_simps @ zminus_simps @ zmult_simps @ 
  23.342 -		       [zmagnitude_znat, zmagnitude_zminus_znat]);
  23.343 +Addsimps (zadd_simps @ zminus_simps @ zmult_simps @ 
  23.344 +          [zmagnitude_znat, zmagnitude_zminus_znat]);
  23.345  
  23.346  
  23.347  (**** Additional Theorems (by Mattolini; proofs mainly by lcp) ****)
  23.348  
  23.349  (* Some Theorems about zsuc and zpred *)
  23.350  goalw Integ.thy [zsuc_def] "$#(Suc(n)) = zsuc($# n)";
  23.351 -by (simp_tac (arith_ss addsimps [znat_add RS sym]) 1);
  23.352 +by (simp_tac (!simpset addsimps [znat_add RS sym]) 1);
  23.353  qed "znat_Suc";
  23.354  
  23.355  goalw Integ.thy [zpred_def,zsuc_def,zdiff_def] "$~ zsuc(z) = zpred($~ z)";
  23.356 -by (simp_tac integ_ss 1);
  23.357 +by (Simp_tac 1);
  23.358  qed "zminus_zsuc";
  23.359  
  23.360  goalw Integ.thy [zpred_def,zsuc_def,zdiff_def] "$~ zpred(z) = zsuc($~ z)";
  23.361 -by (simp_tac integ_ss 1);
  23.362 +by (Simp_tac 1);
  23.363  qed "zminus_zpred";
  23.364  
  23.365  goalw Integ.thy [zsuc_def,zpred_def,zdiff_def]
  23.366     "zpred(zsuc(z)) = z";
  23.367 -by (simp_tac (integ_ss addsimps [zadd_assoc]) 1);
  23.368 +by (simp_tac (!simpset addsimps [zadd_assoc]) 1);
  23.369  qed "zpred_zsuc";
  23.370  
  23.371  goalw Integ.thy [zsuc_def,zpred_def,zdiff_def]
  23.372     "zsuc(zpred(z)) = z";
  23.373 -by (simp_tac (integ_ss addsimps [zadd_assoc]) 1);
  23.374 +by (simp_tac (!simpset addsimps [zadd_assoc]) 1);
  23.375  qed "zsuc_zpred";
  23.376  
  23.377  goal Integ.thy "(zpred(z)=w) = (z=zsuc(w))";
  23.378 @@ -488,56 +485,56 @@
  23.379  goal Integ.thy"(zsuc(z)=zsuc(w)) = (z=w)";
  23.380  by (safe_tac intrel_cs);
  23.381  by (dres_inst_tac [("f","zpred")] arg_cong 1);
  23.382 -by (asm_full_simp_tac (HOL_ss addsimps [zpred_zsuc]) 1);
  23.383 +by (asm_full_simp_tac (!simpset addsimps [zpred_zsuc]) 1);
  23.384  qed "bijective_zsuc";
  23.385  
  23.386  goal Integ.thy"(zpred(z)=zpred(w)) = (z=w)";
  23.387  by (safe_tac intrel_cs);
  23.388  by (dres_inst_tac [("f","zsuc")] arg_cong 1);
  23.389 -by (asm_full_simp_tac (HOL_ss addsimps [zsuc_zpred]) 1);
  23.390 +by (asm_full_simp_tac (!simpset addsimps [zsuc_zpred]) 1);
  23.391  qed "bijective_zpred";
  23.392  
  23.393  (* Additional Theorems about zadd *)
  23.394  
  23.395  goalw Integ.thy [zsuc_def] "zsuc(z) + w = zsuc(z+w)";
  23.396 -by (simp_tac (arith_ss addsimps zadd_ac) 1);
  23.397 +by (simp_tac (!simpset addsimps zadd_ac) 1);
  23.398  qed "zadd_zsuc";
  23.399  
  23.400  goalw Integ.thy [zsuc_def] "w + zsuc(z) = zsuc(w+z)";
  23.401 -by (simp_tac (arith_ss addsimps zadd_ac) 1);
  23.402 +by (simp_tac (!simpset addsimps zadd_ac) 1);
  23.403  qed "zadd_zsuc_right";
  23.404  
  23.405  goalw Integ.thy [zpred_def,zdiff_def] "zpred(z) + w = zpred(z+w)";
  23.406 -by (simp_tac (arith_ss addsimps zadd_ac) 1);
  23.407 +by (simp_tac (!simpset addsimps zadd_ac) 1);
  23.408  qed "zadd_zpred";
  23.409  
  23.410  goalw Integ.thy [zpred_def,zdiff_def] "w + zpred(z) = zpred(w+z)";
  23.411 -by (simp_tac (arith_ss addsimps zadd_ac) 1);
  23.412 +by (simp_tac (!simpset addsimps zadd_ac) 1);
  23.413  qed "zadd_zpred_right";
  23.414  
  23.415  
  23.416  (* Additional Theorems about zmult *)
  23.417  
  23.418  goalw Integ.thy [zsuc_def] "zsuc(w) * z = z + w * z";
  23.419 -by (simp_tac (integ_ss addsimps [zadd_zmult_distrib, zadd_commute]) 1);
  23.420 +by (simp_tac (!simpset addsimps [zadd_zmult_distrib, zadd_commute]) 1);
  23.421  qed "zmult_zsuc";
  23.422  
  23.423  goalw Integ.thy [zsuc_def] "z * zsuc(w) = z + w * z";
  23.424  by (simp_tac 
  23.425 -    (integ_ss addsimps [zadd_zmult_distrib2, zadd_commute, zmult_commute]) 1);
  23.426 +    (!simpset addsimps [zadd_zmult_distrib2, zadd_commute, zmult_commute]) 1);
  23.427  qed "zmult_zsuc_right";
  23.428  
  23.429  goalw Integ.thy [zpred_def, zdiff_def] "zpred(w) * z = w * z - z";
  23.430 -by (simp_tac (integ_ss addsimps [zadd_zmult_distrib]) 1);
  23.431 +by (simp_tac (!simpset addsimps [zadd_zmult_distrib]) 1);
  23.432  qed "zmult_zpred";
  23.433  
  23.434  goalw Integ.thy [zpred_def, zdiff_def] "z * zpred(w) = w * z - z";
  23.435 -by (simp_tac (integ_ss addsimps [zadd_zmult_distrib2, zmult_commute]) 1);
  23.436 +by (simp_tac (!simpset addsimps [zadd_zmult_distrib2, zmult_commute]) 1);
  23.437  qed "zmult_zpred_right";
  23.438  
  23.439  (* Further Theorems about zsuc and zpred *)
  23.440  goal Integ.thy "$#Suc(m) ~= $#0";
  23.441 -by (simp_tac (integ_ss addsimps [inj_znat RS inj_eq]) 1);
  23.442 +by (simp_tac (!simpset addsimps [inj_znat RS inj_eq]) 1);
  23.443  qed "znat_Suc_not_znat_Zero";
  23.444  
  23.445  bind_thm ("znat_Zero_not_znat_Suc", (znat_Suc_not_znat_Zero RS not_sym));
  23.446 @@ -545,7 +542,7 @@
  23.447  
  23.448  goalw Integ.thy [zsuc_def,znat_def] "w ~= zsuc(w)";
  23.449  by (res_inst_tac [("z","w")] eq_Abs_Integ 1);
  23.450 -by (asm_full_simp_tac (intrel_ss addsimps [zadd]) 1);
  23.451 +by (asm_full_simp_tac (!simpset addsimps [zadd]) 1);
  23.452  qed "n_not_zsuc_n";
  23.453  
  23.454  val zsuc_n_not_n = n_not_zsuc_n RS not_sym;
  23.455 @@ -553,7 +550,7 @@
  23.456  goal Integ.thy "w ~= zpred(w)";
  23.457  by (safe_tac HOL_cs);
  23.458  by (dres_inst_tac [("x","w"),("f","zsuc")] arg_cong 1);
  23.459 -by (asm_full_simp_tac (HOL_ss addsimps [zsuc_zpred,zsuc_n_not_n]) 1);
  23.460 +by (asm_full_simp_tac (!simpset addsimps [zsuc_zpred,zsuc_n_not_n]) 1);
  23.461  qed "n_not_zpred_n";
  23.462  
  23.463  val zpred_n_not_n = n_not_zpred_n RS not_sym;
  23.464 @@ -566,30 +563,32 @@
  23.465  by (res_inst_tac [("z","z")] eq_Abs_Integ 1);
  23.466  by (res_inst_tac [("z","w")] eq_Abs_Integ 1);
  23.467  by (safe_tac intrel_cs);
  23.468 -by (asm_full_simp_tac (intrel_ss addsimps [zadd, zminus]) 1);
  23.469 +by (asm_full_simp_tac (!simpset addsimps [zadd, zminus]) 1);
  23.470  by (safe_tac (intrel_cs addSDs [less_eq_Suc_add]));
  23.471  by (res_inst_tac [("x","k")] exI 1);
  23.472 -by (asm_full_simp_tac (HOL_ss addsimps ([add_Suc RS sym] @ add_ac)) 1);
  23.473 +by (asm_full_simp_tac (!simpset delsimps [add_Suc, add_Suc_right]
  23.474 +                                addsimps ([add_Suc RS sym] @ add_ac)) 1);
  23.475  (*To cancel x2, rename it to be first!*)
  23.476  by (rename_tac "a b c" 1);
  23.477 -by (asm_full_simp_tac (HOL_ss addsimps (add_left_cancel::add_ac)) 1);
  23.478 +by (asm_full_simp_tac (!simpset delsimps [add_Suc_right]
  23.479 +                                addsimps (add_left_cancel::add_ac)) 1);
  23.480  qed "zless_eq_zadd_Suc";
  23.481  
  23.482  goalw Integ.thy [zless_def, znegative_def, zdiff_def, znat_def] 
  23.483      "z < z + $#(Suc(n))";
  23.484  by (res_inst_tac [("z","z")] eq_Abs_Integ 1);
  23.485  by (safe_tac intrel_cs);
  23.486 -by (simp_tac (intrel_ss addsimps [zadd, zminus]) 1);
  23.487 +by (simp_tac (!simpset addsimps [zadd, zminus]) 1);
  23.488  by (REPEAT_SOME (ares_tac [refl, exI, singletonI, ImageI, conjI, intrelI]));
  23.489  by (rtac le_less_trans 1);
  23.490  by (rtac lessI 2);
  23.491 -by (asm_simp_tac (arith_ss addsimps ([le_add1,add_left_cancel_le]@add_ac)) 1);
  23.492 +by (asm_simp_tac (!simpset addsimps ([le_add1,add_left_cancel_le]@add_ac)) 1);
  23.493  qed "zless_zadd_Suc";
  23.494  
  23.495  goal Integ.thy "!!z1 z2 z3. [| z1<z2; z2<z3 |] ==> z1 < (z3::int)";
  23.496  by (safe_tac (HOL_cs addSDs [zless_eq_zadd_Suc]));
  23.497  by (simp_tac 
  23.498 -    (arith_ss addsimps [zadd_assoc, zless_zadd_Suc, znat_add RS sym]) 1);
  23.499 +    (!simpset addsimps [zadd_assoc, zless_zadd_Suc, znat_add RS sym]) 1);
  23.500  qed "zless_trans";
  23.501  
  23.502  goalw Integ.thy [zsuc_def] "z<zsuc(z)";
  23.503 @@ -602,9 +601,9 @@
  23.504  by (safe_tac (HOL_cs addSDs [zless_eq_zadd_Suc]));
  23.505  by (res_inst_tac [("z","z")] eq_Abs_Integ 1);
  23.506  by (safe_tac intrel_cs);
  23.507 -by (asm_full_simp_tac (intrel_ss addsimps ([znat_def, zadd])) 1);
  23.508 +by (asm_full_simp_tac (!simpset addsimps ([znat_def, zadd])) 1);
  23.509  by (asm_full_simp_tac
  23.510 - (HOL_ss addsimps [add_left_cancel, add_assoc, add_Suc_right RS sym]) 1);
  23.511 + (!simpset delsimps [add_Suc_right] addsimps [add_left_cancel, add_assoc, add_Suc_right RS sym]) 1);
  23.512  by (resolve_tac [less_not_refl2 RS notE] 1);
  23.513  by (etac sym 2);
  23.514  by (REPEAT (resolve_tac [lessI, trans_less_add2, less_SucI] 1));
  23.515 @@ -633,7 +632,7 @@
  23.516  by (res_inst_tac [("z","w")] eq_Abs_Integ 1);
  23.517  by (safe_tac intrel_cs);
  23.518  by (asm_full_simp_tac
  23.519 -    (intrel_ss addsimps [zadd, zminus, Image_iff, Bex_def]) 1);
  23.520 +    (!simpset addsimps [zadd, zminus, Image_iff, Bex_def]) 1);
  23.521  by (res_inst_tac [("m1", "x+ya"), ("n1", "xa+y")] (less_linear RS disjE) 1);
  23.522  by (etac disjE 2);
  23.523  by (assume_tac 2);
  23.524 @@ -641,7 +640,7 @@
  23.525      (swap_res_tac [exI] 1 THEN 
  23.526       swap_res_tac [exI] 1 THEN 
  23.527       etac conjI 1 THEN 
  23.528 -     simp_tac (arith_ss addsimps add_ac)  1));
  23.529 +     simp_tac (!simpset addsimps add_ac)  1));
  23.530  qed "zless_linear";
  23.531  
  23.532  
  23.533 @@ -650,12 +649,12 @@
  23.534  goalw Integ.thy  [zless_def, znegative_def, zdiff_def, znat_def]
  23.535      "($#m < $#n) = (m<n)";
  23.536  by (simp_tac
  23.537 -    (intrel_ss addsimps [zadd, zminus, Image_iff, Bex_def]) 1);
  23.538 +    (!simpset addsimps [zadd, zminus, Image_iff, Bex_def]) 1);
  23.539  by (fast_tac (HOL_cs addIs [add_commute] addSEs [less_add_eq_less]) 1);
  23.540  qed "zless_eq_less";
  23.541  
  23.542  goalw Integ.thy [zle_def, le_def] "($#m <= $#n) = (m<=n)";
  23.543 -by (simp_tac (HOL_ss addsimps [zless_eq_less]) 1);
  23.544 +by (simp_tac (!simpset addsimps [zless_eq_less]) 1);
  23.545  qed "zle_eq_le";
  23.546  
  23.547  goalw Integ.thy [zle_def] "!!w. ~(w<z) ==> z<=(w::int)";
  23.548 @@ -691,7 +690,7 @@
  23.549  qed "zle_eq_zless_or_eq";
  23.550  
  23.551  goal Integ.thy "w <= (w::int)";
  23.552 -by (simp_tac (HOL_ss addsimps [zle_eq_zless_or_eq]) 1);
  23.553 +by (simp_tac (!simpset addsimps [zle_eq_zless_or_eq]) 1);
  23.554  qed "zle_refl";
  23.555  
  23.556  val prems = goal Integ.thy "!!i. [| i <= j; j < k |] ==> i < (k::int)";
  23.557 @@ -712,7 +711,7 @@
  23.558  
  23.559  goal Integ.thy "!!w w' z::int. z + w' = z + w ==> w' = w";
  23.560  by (dres_inst_tac [("f", "%x. x + $~z")] arg_cong 1);
  23.561 -by (asm_full_simp_tac (integ_ss addsimps zadd_ac) 1);
  23.562 +by (asm_full_simp_tac (!simpset addsimps zadd_ac) 1);
  23.563  qed "zadd_left_cancel";
  23.564  
  23.565  
  23.566 @@ -720,19 +719,19 @@
  23.567  
  23.568  goal Integ.thy "!!v w z::int. v < w ==> v + z < w + z";
  23.569  by (safe_tac (HOL_cs addSDs [zless_eq_zadd_Suc]));
  23.570 -by (simp_tac (HOL_ss addsimps zadd_ac) 1);
  23.571 -by (simp_tac (HOL_ss addsimps [zadd_assoc RS sym, zless_zadd_Suc]) 1);
  23.572 +by (simp_tac (!simpset addsimps zadd_ac) 1);
  23.573 +by (simp_tac (!simpset addsimps [zadd_assoc RS sym, zless_zadd_Suc]) 1);
  23.574  qed "zadd_zless_mono1";
  23.575  
  23.576  goal Integ.thy "!!v w z::int. (v+z < w+z) = (v < w)";
  23.577  by (safe_tac (HOL_cs addSEs [zadd_zless_mono1]));
  23.578  by (dres_inst_tac [("z", "$~z")] zadd_zless_mono1 1);
  23.579 -by (asm_full_simp_tac (integ_ss addsimps [zadd_assoc]) 1);
  23.580 +by (asm_full_simp_tac (!simpset addsimps [zadd_assoc]) 1);
  23.581  qed "zadd_left_cancel_zless";
  23.582  
  23.583  goal Integ.thy "!!v w z::int. (v+z <= w+z) = (v <= w)";
  23.584  by (asm_full_simp_tac
  23.585 -    (integ_ss addsimps [zle_def, zadd_left_cancel_zless]) 1);
  23.586 +    (!simpset addsimps [zle_def, zadd_left_cancel_zless]) 1);
  23.587  qed "zadd_left_cancel_zle";
  23.588  
  23.589  (*"v<=w ==> v+z <= w+z"*)
  23.590 @@ -741,12 +740,12 @@
  23.591  
  23.592  goal Integ.thy "!!z' z::int. [| w'<=w; z'<=z |] ==> w' + z' <= w + z";
  23.593  by (etac (zadd_zle_mono1 RS zle_trans) 1);
  23.594 -by (simp_tac (HOL_ss addsimps [zadd_commute]) 1);
  23.595 +by (simp_tac (!simpset addsimps [zadd_commute]) 1);
  23.596  (*w moves to the end because it is free while z', z are bound*)
  23.597  by (etac zadd_zle_mono1 1);
  23.598  qed "zadd_zle_mono";
  23.599  
  23.600  goal Integ.thy "!!w z::int. z<=$#0 ==> w+z <= w";
  23.601  by (dres_inst_tac [("z", "w")] zadd_zle_mono1 1);
  23.602 -by (asm_full_simp_tac (integ_ss addsimps [zadd_commute]) 1);
  23.603 +by (asm_full_simp_tac (!simpset addsimps [zadd_commute]) 1);
  23.604  qed "zadd_zle_self";
    24.1 --- a/src/HOL/Lambda/Confluence.ML	Wed Oct 04 13:11:57 1995 +0100
    24.2 +++ b/src/HOL/Lambda/Confluence.ML	Wed Oct 04 13:12:14 1995 +0100
    24.3 @@ -31,7 +31,7 @@
    24.4  bd rtrancl_mono 1;
    24.5  by(fast_tac (HOL_cs addIs [diamond_diamond_rtrancl]
    24.6                      addDs [subset_antisym]
    24.7 -                    addss (HOL_ss addsimps [rtrancl_idemp])) 1);
    24.8 +                    addss (!simpset addsimps [rtrancl_idemp])) 1);
    24.9  qed "diamond_to_confluence";
   24.10  
   24.11  goalw Confluence.thy [confluent_def,diamond_def,Church_Rosser_def]
    25.1 --- a/src/HOL/Lambda/Lambda.ML	Wed Oct 04 13:11:57 1995 +0100
    25.2 +++ b/src/HOL/Lambda/Lambda.ML	Wed Oct 04 13:12:14 1995 +0100
    25.3 @@ -15,36 +15,36 @@
    25.4  goal Nat.thy "!!i. [| i < Suc j; j < k |] ==> i < k";
    25.5  br le_less_trans 1;
    25.6  ba 2;
    25.7 -by(asm_full_simp_tac (nat_ss addsimps [le_def]) 1);
    25.8 +by(asm_full_simp_tac (!simpset addsimps [le_def]) 1);
    25.9  by(fast_tac (HOL_cs addEs [less_asym,less_anti_refl]) 1);
   25.10  qed "lt_trans1";
   25.11  
   25.12  goal Nat.thy "!!i. [| i < j; j < Suc(k) |] ==> i < k";
   25.13  be less_le_trans 1;
   25.14 -by(asm_full_simp_tac (nat_ss addsimps [le_def]) 1);
   25.15 +by(asm_full_simp_tac (!simpset addsimps [le_def]) 1);
   25.16  by(fast_tac (HOL_cs addEs [less_asym,less_anti_refl]) 1);
   25.17  qed "lt_trans2";
   25.18  
   25.19  val major::prems = goal Nat.thy
   25.20    "[| i < Suc j; i < j ==> P; i = j ==> P |] ==> P";
   25.21  br (major RS lessE) 1;
   25.22 -by(ALLGOALS(asm_full_simp_tac nat_ss));
   25.23 +by(ALLGOALS Asm_full_simp_tac);
   25.24  by(resolve_tac prems 1 THEN etac sym 1);
   25.25  by(fast_tac (HOL_cs addIs prems) 1);
   25.26  qed "leqE";
   25.27  
   25.28  goal Arith.thy "!!i. i < j ==> Suc(pred j) = j";
   25.29 -by(fast_tac (HOL_cs addEs [lessE] addss arith_ss) 1);
   25.30 +by(fast_tac (HOL_cs addEs [lessE] addss !simpset) 1);
   25.31  qed "Suc_pred";
   25.32  
   25.33  goal Arith.thy "!!i. Suc i < j ==> i < pred j ";
   25.34  by (resolve_tac [Suc_less_SucD] 1);
   25.35 -by (asm_simp_tac (arith_ss addsimps [Suc_pred]) 1);
   25.36 +by (asm_simp_tac (!simpset addsimps [Suc_pred]) 1);
   25.37  qed "lt_pred";
   25.38  
   25.39  goal Arith.thy "!!i. [| i < Suc j; k < i |] ==> pred i < j ";
   25.40  by (resolve_tac [Suc_less_SucD] 1);
   25.41 -by (asm_simp_tac (arith_ss addsimps [Suc_pred]) 1);
   25.42 +by (asm_simp_tac (!simpset addsimps [Suc_pred]) 1);
   25.43  qed "gt_pred";
   25.44  
   25.45  
   25.46 @@ -52,11 +52,7 @@
   25.47  
   25.48  open Lambda;
   25.49  
   25.50 -val lambda_ss = arith_ss delsimps [less_Suc_eq] addsimps
   25.51 -  db.simps @ beta.intrs @
   25.52 -  [if_not_P, not_less_eq,
   25.53 -   subst_App,subst_Fun,
   25.54 -   lift_Var,lift_App,lift_Fun];
   25.55 +Addsimps [if_not_P, not_less_eq];
   25.56  
   25.57  val lambda_cs = HOL_cs addSIs beta.intrs;
   25.58  
   25.59 @@ -84,127 +80,127 @@
   25.60  
   25.61  (*** subst and lift ***)
   25.62  
   25.63 -fun addsplit ss = ss addsimps [subst_Var] setloop (split_tac [expand_if]);
   25.64 +val split_ss = !simpset delsimps [less_Suc_eq,subst_Var]
   25.65 +                        addsimps [subst_Var]
   25.66 +                        setloop (split_tac [expand_if]);
   25.67  
   25.68  goal Lambda.thy "(Var k)[u/k] = u";
   25.69 -by (asm_full_simp_tac (addsplit lambda_ss) 1);
   25.70 +by (asm_full_simp_tac split_ss 1);
   25.71  qed "subst_eq";
   25.72  
   25.73  goal Lambda.thy "!!s. i<j ==> (Var j)[u/i] = Var(pred j)";
   25.74 -by (asm_full_simp_tac (addsplit lambda_ss) 1);
   25.75 +by (asm_full_simp_tac split_ss 1);
   25.76  qed "subst_gt";
   25.77  
   25.78  goal Lambda.thy "!!s. j<i ==> (Var j)[u/i] = Var(j)";
   25.79 -by (asm_full_simp_tac (addsplit lambda_ss addsimps
   25.80 +by (asm_full_simp_tac (split_ss addsimps
   25.81                            [less_not_refl2 RS not_sym,less_SucI]) 1);
   25.82  qed "subst_lt";
   25.83  
   25.84 -val lambda_ss = lambda_ss addsimps [subst_eq,subst_gt,subst_lt];
   25.85 +Addsimps [subst_eq,subst_gt,subst_lt];
   25.86 +val ss = !simpset delsimps [less_Suc_eq, subst_Var];
   25.87  
   25.88  goal Lambda.thy
   25.89    "!i k. i < Suc k --> lift (lift t i) (Suc k) = lift (lift t k) i";
   25.90  by(db.induct_tac "t" 1);
   25.91 -by(ALLGOALS(asm_simp_tac lambda_ss));
   25.92 +by(ALLGOALS (asm_simp_tac ss));
   25.93  by(strip_tac 1);
   25.94  by (excluded_middle_tac "nat < i" 1);
   25.95  by ((forward_tac [lt_trans2] 2) THEN (assume_tac 2));
   25.96 -by (ALLGOALS(asm_full_simp_tac ((addsplit lambda_ss) addsimps [less_SucI])));
   25.97 +by (ALLGOALS(asm_full_simp_tac (split_ss addsimps [less_SucI])));
   25.98  qed"lift_lift";
   25.99  
  25.100  goal Lambda.thy "!i j s. j < Suc i --> \
  25.101  \         lift (t[s/j]) i = (lift t (Suc i)) [lift s i / j]";
  25.102  by(db.induct_tac "t" 1);
  25.103 -by(ALLGOALS(asm_simp_tac (lambda_ss addsimps [lift_lift])));
  25.104 +by(ALLGOALS(asm_simp_tac (ss addsimps [lift_lift])));
  25.105  by(strip_tac 1);
  25.106  by (excluded_middle_tac "nat < j" 1);
  25.107 -by (asm_full_simp_tac lambda_ss 1);
  25.108 +by (asm_full_simp_tac ss 1);
  25.109  by (eres_inst_tac [("j","nat")] leqE 1);
  25.110 -by (asm_full_simp_tac ((addsplit lambda_ss) 
  25.111 -                        addsimps [less_SucI,gt_pred,Suc_pred]) 1);
  25.112 +by (asm_full_simp_tac (split_ss addsimps [less_SucI,gt_pred,Suc_pred]) 1);
  25.113  by (hyp_subst_tac 1);
  25.114 -by (asm_simp_tac lambda_ss 1);
  25.115 +by (Asm_simp_tac 1);
  25.116  by (forw_inst_tac [("j","j")] lt_trans2 1);
  25.117  by (assume_tac 1);
  25.118 -by (asm_full_simp_tac (addsplit lambda_ss addsimps [less_SucI]) 1);
  25.119 +by (asm_full_simp_tac (split_ss addsimps [less_SucI]) 1);
  25.120  qed "lift_subst";
  25.121 -val lambda_ss = lambda_ss addsimps [lift_subst];
  25.122 +Addsimps [lift_subst];
  25.123  
  25.124  goal Lambda.thy
  25.125    "!i j s. i < Suc j -->\
  25.126  \         lift (t[s/j]) i = (lift t i) [lift s i / Suc j]";
  25.127  by(db.induct_tac "t" 1);
  25.128 -by(ALLGOALS(asm_simp_tac (lambda_ss addsimps [lift_lift])));
  25.129 +by(ALLGOALS(asm_simp_tac (ss addsimps [lift_lift])));
  25.130  by(strip_tac 1);
  25.131  by (excluded_middle_tac "nat < j" 1);
  25.132 -by (asm_full_simp_tac lambda_ss 1);
  25.133 +by (asm_full_simp_tac ss 1);
  25.134  by (eres_inst_tac [("i","j")] leqE 1);
  25.135  by (forward_tac  [lt_trans1] 1 THEN assume_tac 1);
  25.136 -by (ALLGOALS(asm_full_simp_tac 
  25.137 -	     (lambda_ss addsimps [Suc_pred,less_SucI,gt_pred])));
  25.138 +by (ALLGOALS(asm_full_simp_tac (ss addsimps [Suc_pred,less_SucI,gt_pred])));
  25.139  by (hyp_subst_tac 1);
  25.140 -by (asm_full_simp_tac (lambda_ss addsimps [less_SucI]) 1);
  25.141 +by (asm_full_simp_tac (ss addsimps [less_SucI]) 1);
  25.142  by(split_tac [expand_if] 1);
  25.143 -by (asm_full_simp_tac (lambda_ss addsimps [less_SucI]) 1);
  25.144 +by (asm_full_simp_tac (!simpset addsimps [less_SucI]) 1);
  25.145  qed "lift_subst_lt";
  25.146  
  25.147  goal Lambda.thy "!k s. (lift t k)[s/k] = t";
  25.148  by(db.induct_tac "t" 1);
  25.149 -by(ALLGOALS(asm_simp_tac lambda_ss));
  25.150 +by(ALLGOALS Asm_simp_tac);
  25.151  by(split_tac [expand_if] 1);
  25.152 -by(ALLGOALS(asm_full_simp_tac lambda_ss));
  25.153 +by(ALLGOALS Asm_full_simp_tac);
  25.154  qed "subst_lift";
  25.155 -val lambda_ss = lambda_ss addsimps [subst_lift];
  25.156 +Addsimps [subst_lift];
  25.157  
  25.158  
  25.159  goal Lambda.thy "!i j u v. i < Suc j --> \
  25.160  \ t[lift v i / Suc j][u[v/j]/i] = t[u/i][v/j]";
  25.161  by(db.induct_tac "t" 1);
  25.162 -by (ALLGOALS(asm_simp_tac (lambda_ss addsimps
  25.163 +by (ALLGOALS(asm_simp_tac (ss addsimps
  25.164                     [lift_lift RS spec RS spec RS mp RS sym,lift_subst_lt])));
  25.165  by(strip_tac 1);
  25.166  by (excluded_middle_tac "nat < Suc(Suc j)" 1);
  25.167 -by(asm_full_simp_tac lambda_ss 1);
  25.168 +by(asm_full_simp_tac ss 1);
  25.169  by (forward_tac [lessI RS less_trans] 1);
  25.170  by (eresolve_tac [leqE] 1);
  25.171 -by (asm_simp_tac (lambda_ss addsimps [Suc_pred,lt_pred]) 2);
  25.172 +by (asm_simp_tac (ss addsimps [Suc_pred,lt_pred]) 2);
  25.173  by (forward_tac [Suc_mono RS less_trans] 1 THEN assume_tac 1);
  25.174  by (forw_inst_tac [("i","i")] (lessI RS less_trans) 1);
  25.175 -by (asm_simp_tac (lambda_ss addsimps [Suc_pred,lt_pred]) 1);
  25.176 +by (asm_simp_tac (ss addsimps [Suc_pred,lt_pred]) 1);
  25.177  by (eres_inst_tac [("i","nat")] leqE 1);
  25.178 -by (asm_full_simp_tac (lambda_ss addsimps [Suc_pred,less_SucI]) 2);
  25.179 +by (asm_full_simp_tac (!simpset delsimps [less_Suc_eq]
  25.180 +                                addsimps [Suc_pred,less_SucI]) 2);
  25.181  by (excluded_middle_tac "nat < i" 1);
  25.182 -by (asm_full_simp_tac lambda_ss 1);
  25.183 +by (asm_full_simp_tac ss 1);
  25.184  by (eres_inst_tac [("j","nat")] leqE 1);
  25.185 -by (asm_simp_tac (lambda_ss addsimps [gt_pred]) 1);
  25.186 -by (asm_simp_tac lambda_ss 1);
  25.187 +by (asm_simp_tac (!simpset addsimps [gt_pred]) 1);
  25.188 +by (Asm_simp_tac 1);
  25.189  by (forward_tac [lt_trans2] 1 THEN assume_tac 1);
  25.190 -by (asm_simp_tac (lambda_ss addsimps [gt_pred]) 1);
  25.191 +by (asm_simp_tac (!simpset addsimps [gt_pred]) 1);
  25.192  bind_thm("subst_subst", result() RS spec RS spec RS spec RS spec RS mp);
  25.193  
  25.194 -val lambda_ss = lambda_ss addsimps
  25.195 -  [liftn_Var,liftn_App,liftn_Fun,substn_Var,substn_App,substn_Fun];
  25.196  
  25.197  (*** Equivalence proof for optimized substitution ***)
  25.198  
  25.199  goal Lambda.thy "!k. liftn 0 t k = t";
  25.200  by(db.induct_tac "t" 1);
  25.201 -by(ALLGOALS(asm_simp_tac (addsplit lambda_ss)));
  25.202 +by(ALLGOALS(asm_simp_tac split_ss));
  25.203  qed "liftn_0";
  25.204 -val lambda_ss = lambda_ss addsimps [liftn_0];
  25.205 +Addsimps [liftn_0];
  25.206  
  25.207  goal Lambda.thy "!k. liftn (Suc n) t k = lift (liftn n t k) k";
  25.208  by(db.induct_tac "t" 1);
  25.209 -by(ALLGOALS(asm_simp_tac (addsplit lambda_ss)));
  25.210 +by(ALLGOALS(asm_simp_tac split_ss));
  25.211  by(fast_tac (HOL_cs addDs [add_lessD1]) 1);
  25.212  qed "liftn_lift";
  25.213 -val lambda_ss = lambda_ss addsimps [liftn_lift];
  25.214 +Addsimps [liftn_lift];
  25.215  
  25.216  goal Lambda.thy "!n. substn t s n = t[liftn n s 0 / n]";
  25.217  by(db.induct_tac "t" 1);
  25.218 -by(ALLGOALS(asm_simp_tac (addsplit lambda_ss)));
  25.219 +by(ALLGOALS(asm_simp_tac (!simpset setloop (split_tac [expand_if]))));
  25.220  qed "substn_subst_n";
  25.221 -val lambda_ss = lambda_ss addsimps [substn_subst_n];
  25.222 +Addsimps [substn_subst_n];
  25.223  
  25.224  goal Lambda.thy "substn t s 0 = t[s/0]";
  25.225 -by(simp_tac lambda_ss 1);
  25.226 +by(Simp_tac 1);
  25.227  qed "substn_subst_0";
    26.1 --- a/src/HOL/Lambda/ParRed.ML	Wed Oct 04 13:11:57 1995 +0100
    26.2 +++ b/src/HOL/Lambda/ParRed.ML	Wed Oct 04 13:12:14 1995 +0100
    26.3 @@ -9,8 +9,7 @@
    26.4  
    26.5  open ParRed;
    26.6  
    26.7 -val parred_ss = lambda_ss addsimps
    26.8 -  par_beta.intrs @ [cd_Var,cd_Fun];
    26.9 +Addsimps par_beta.intrs;
   26.10  
   26.11  val par_beta_cases = map (par_beta.mk_cases db.simps)
   26.12      ["Var n => t", "Fun s => Fun t",
   26.13 @@ -23,13 +22,13 @@
   26.14  goal ParRed.thy "(Var n => t) = (t = Var n)";
   26.15  by(fast_tac parred_cs 1);
   26.16  qed "par_beta_varL";
   26.17 -val parred_ss = parred_ss addsimps [par_beta_varL];
   26.18 +Addsimps [par_beta_varL];
   26.19  
   26.20  goal ParRed.thy "t => t";
   26.21  by(db.induct_tac "t" 1);
   26.22 -by(ALLGOALS(asm_simp_tac parred_ss));
   26.23 +by(ALLGOALS Asm_simp_tac);
   26.24  qed"par_beta_refl";
   26.25 -val parred_ss = parred_ss addsimps [par_beta_refl];
   26.26 +Addsimps [par_beta_refl];
   26.27  
   26.28  goal ParRed.thy "beta <= par_beta";
   26.29  br subsetI 1;
   26.30 @@ -53,21 +52,21 @@
   26.31  
   26.32  goal ParRed.thy "!t' n. t => t' --> lift t n => lift t' n";
   26.33  by(db.induct_tac "t" 1);
   26.34 -by(ALLGOALS(fast_tac (parred_cs addss parred_ss)));
   26.35 +by(ALLGOALS(fast_tac (parred_cs addss (!simpset))));
   26.36  bind_thm("par_beta_lift", result() RS spec RS spec RS mp);
   26.37 -val parred_ss = parred_ss addsimps [par_beta_lift];
   26.38 +Addsimps [par_beta_lift];
   26.39  
   26.40  goal ParRed.thy
   26.41    "!s s' t' n. s => s' --> t => t' --> t[s/n] => t'[s'/n]";
   26.42  by(db.induct_tac "t" 1);
   26.43 -  by(asm_simp_tac (addsplit parred_ss) 1);
   26.44 +  by(asm_simp_tac (!simpset setloop (split_tac [expand_if])) 1);
   26.45   by(strip_tac 1);
   26.46   bes par_beta_cases 1;
   26.47 -  by(asm_simp_tac parred_ss 1);
   26.48 - by(asm_simp_tac parred_ss 1);
   26.49 +  by(Asm_simp_tac 1);
   26.50 + by(Asm_simp_tac 1);
   26.51   br (zero_less_Suc RS subst_subst RS subst) 1;
   26.52 - by(fast_tac (parred_cs addSIs [par_beta_lift] addss parred_ss) 1);
   26.53 -by(fast_tac (parred_cs addss parred_ss) 1);
   26.54 + by(fast_tac (parred_cs addSIs [par_beta_lift] addss (!simpset)) 1);
   26.55 +by(fast_tac (parred_cs addss (!simpset)) 1);
   26.56  bind_thm("par_beta_subst",
   26.57           result()  RS spec RS spec RS spec RS spec RS mp RS mp);
   26.58  
   26.59 @@ -84,34 +83,34 @@
   26.60  (*** cd ***)
   26.61  
   26.62  goal ParRed.thy "cd(Var n @ t) = Var n @ cd t";
   26.63 -by(simp_tac (parred_ss addsimps [cd_App]) 1);
   26.64 +by(Simp_tac 1);
   26.65  qed"cd_App_Var";
   26.66  
   26.67  goal ParRed.thy "cd((r @ s) @ t) = cd(r @ s) @ cd t";
   26.68 -by(simp_tac (parred_ss addsimps [cd_App]) 1);
   26.69 +by(Simp_tac 1);
   26.70  qed"cd_App_App";
   26.71  
   26.72  goal ParRed.thy "cd((Fun s) @ t) = (cd s)[cd t/0]";
   26.73 -by(simp_tac (parred_ss addsimps [cd_App,deFun_Fun]) 1);
   26.74 +by(Simp_tac 1);
   26.75  qed"cd_App_Fun";
   26.76  
   26.77 -val parred_ss = parred_ss addsimps [cd_App_Var,cd_App_App,cd_App_Fun];
   26.78 +Addsimps [cd_App_Var,cd_App_App,cd_App_Fun];
   26.79  
   26.80  goal ParRed.thy "!t. s => t --> t => cd s";
   26.81  by(db.induct_tac "s" 1);
   26.82 -  by(simp_tac parred_ss 1);
   26.83 +  by(Simp_tac 1);
   26.84   be rev_mp 1;
   26.85   by(db.induct_tac "db1" 1);
   26.86 - by(ALLGOALS(fast_tac (parred_cs addSIs [par_beta_subst] addss parred_ss)));
   26.87 + by(ALLGOALS(fast_tac (parred_cs addSIs [par_beta_subst] addss (!simpset))));
   26.88  bind_thm("par_beta_cd", result() RS spec RS mp);
   26.89  
   26.90  (*** Confluence (via cd) ***)
   26.91  
   26.92  goalw ParRed.thy [diamond_def] "diamond(par_beta)";
   26.93  by(fast_tac (HOL_cs addIs [par_beta_cd]) 1);
   26.94 -qed "diamond_par_beta";
   26.95 +qed "diamond_par_beta2";
   26.96  
   26.97  goal ParRed.thy "confluent(beta)";
   26.98 -by(fast_tac (HOL_cs addIs [diamond_par_beta,diamond_to_confluence,
   26.99 +by(fast_tac (HOL_cs addIs [diamond_par_beta2,diamond_to_confluence,
  26.100                             par_beta_subset_beta,beta_subset_par_beta]) 1);
  26.101  qed"beta_confluent";
    27.1 --- a/src/HOL/Subst/AList.ML	Wed Oct 04 13:11:57 1995 +0100
    27.2 +++ b/src/HOL/Subst/AList.ML	Wed Oct 04 13:12:14 1995 +0100
    27.3 @@ -9,7 +9,7 @@
    27.4  
    27.5  val al_rews = 
    27.6    let fun mk_thm s = prove_goalw AList.thy [alist_rec_def,assoc_def] s 
    27.7 -                            (fn _ => [simp_tac list_ss 1])
    27.8 +                            (fn _ => [Simp_tac 1])
    27.9    in map mk_thm 
   27.10       ["alist_rec [] c d = c",
   27.11        "alist_rec ((a,b)#al) c d = d a b al (alist_rec al c d)",
    28.1 --- a/src/HOL/Subst/ROOT.ML	Wed Oct 04 13:11:57 1995 +0100
    28.2 +++ b/src/HOL/Subst/ROOT.ML	Wed Oct 04 13:12:14 1995 +0100
    28.3 @@ -1,4 +1,5 @@
    28.4 -(*  Title: 	HOL/Subst
    28.5 +(*  Title: 	HOL/Subst/ROOT.ML
    28.6 +    ID:         $Id$
    28.7      Author: 	Martin Coen, Cambridge University Computer Laboratory
    28.8      Copyright   1993  University of Cambridge
    28.9  
   28.10 @@ -26,12 +27,7 @@
   28.11  
   28.12  writeln"Root file for Substitutions and Unification";
   28.13  loadpath := ["Subst"];
   28.14 -use_thy "Subst/Setplus";
   28.15  
   28.16 -use_thy "Subst/AList";
   28.17 -use_thy "Subst/UTerm";
   28.18 -use_thy "Subst/UTLemmas";
   28.19 +use_thy "Unifier";
   28.20  
   28.21 -use_thy "Subst/Subst";
   28.22 -use_thy "Subst/Unifier";
   28.23  writeln"END: Root file for Substitutions and Unification";
    29.1 --- a/src/HOL/Subst/Setplus.ML	Wed Oct 04 13:11:57 1995 +0100
    29.2 +++ b/src/HOL/Subst/Setplus.ML	Wed Oct 04 13:12:14 1995 +0100
    29.3 @@ -21,13 +21,13 @@
    29.4  qed "ssubset_iff";
    29.5  
    29.6  goal Setplus.thy "((A::'a set) <= B) = ((A < B) | (A=B))";
    29.7 -by (simp_tac (set_ss addsimps [ssubset_iff]) 1);
    29.8 +by (simp_tac (simpset_of "Fun" addsimps [ssubset_iff]) 1);
    29.9  by (fast_tac set_cs 1);
   29.10  qed "subseteq_iff_subset_eq";
   29.11  
   29.12  (*Rule in Modus Ponens style*)
   29.13  goal Setplus.thy "A < B --> c:A --> c:B";
   29.14 -by (simp_tac (set_ss addsimps [ssubset_iff]) 1);
   29.15 +by (simp_tac (simpset_of "Fun" addsimps [ssubset_iff]) 1);
   29.16  by (fast_tac set_cs 1);
   29.17  qed "ssubsetD";
   29.18  
    30.1 --- a/src/HOL/Subst/Subst.ML	Wed Oct 04 13:11:57 1995 +0100
    30.2 +++ b/src/HOL/Subst/Subst.ML	Wed Oct 04 13:12:14 1995 +0100
    30.3 @@ -1,4 +1,5 @@
    30.4 -(*  Title: 	Substitutions/subst.ML
    30.5 +(*  Title: 	HOL/Subst/subst.ML
    30.6 +    ID:         $Id$
    30.7      Author: 	Martin Coen, Cambridge University Computer Laboratory
    30.8      Copyright   1993  University of Cambridge
    30.9  
   30.10 @@ -11,7 +12,7 @@
   30.11  
   30.12  val subst_defs = [subst_def,comp_def,sdom_def];
   30.13  
   30.14 -val raw_subst_ss = utlemmas_ss addsimps al_rews;
   30.15 +val raw_subst_ss = simpset_of "UTLemmas" addsimps al_rews;
   30.16  
   30.17  local fun mk_thm s = prove_goalw Subst.thy subst_defs s 
   30.18                                   (fn _ => [simp_tac raw_subst_ss 1])
    31.1 --- a/src/HOL/Subst/Subst.thy	Wed Oct 04 13:11:57 1995 +0100
    31.2 +++ b/src/HOL/Subst/Subst.thy	Wed Oct 04 13:12:14 1995 +0100
    31.3 @@ -26,7 +26,7 @@
    31.4                           (%x.Const(x))			
    31.5                           (%u v q r.Comb q r)"
    31.6  
    31.7 -  comp_def     "al <> bl == alist_rec al bl (%x y xs g.(x,y <| bl)#g)"
    31.8 +  comp_def    "al <> bl == alist_rec al bl (%x y xs g.(x,y <| bl)#g)"
    31.9  
   31.10    sdom_def
   31.11    "sdom(al) == alist_rec al {}  
    32.1 --- a/src/HOL/Subst/UTLemmas.ML	Wed Oct 04 13:11:57 1995 +0100
    32.2 +++ b/src/HOL/Subst/UTLemmas.ML	Wed Oct 04 13:12:14 1995 +0100
    32.3 @@ -1,4 +1,5 @@
    32.4 -(*  Title: 	Substitutions/UTLemmas.ML
    32.5 +(*  Title: 	HOL/Subst/UTLemmas.ML
    32.6 +    ID:         $Id$
    32.7      Author: 	Martin Coen, Cambridge University Computer Laboratory
    32.8      Copyright   1993  University of Cambridge
    32.9  
   32.10 @@ -9,10 +10,10 @@
   32.11  
   32.12  (***********)
   32.13  
   32.14 -val utlemmas_defs = [vars_of_def,occs_def];
   32.15 +val utlemmas_defs = [vars_of_def, occs_def];
   32.16  
   32.17  local fun mk_thm s = prove_goalw UTLemmas.thy utlemmas_defs s 
   32.18 -                                 (fn _ => [simp_tac uterm_ss 1])
   32.19 +                                 (fn _ => [Simp_tac 1])
   32.20  in val utlemmas_rews = map mk_thm 
   32.21        ["vars_of(Const(c)) = {}",
   32.22         "vars_of(Var(x)) = {x}",
   32.23 @@ -22,13 +23,13 @@
   32.24         "t <: Comb u v = (t=u | t=v | t <: u | t <: v)"];
   32.25  end;
   32.26  
   32.27 -val utlemmas_ss = prod_ss addsimps (setplus_rews @ uterm_rews @ utlemmas_rews);
   32.28 +Addsimps (setplus_rews @ uterm_rews @ utlemmas_rews);
   32.29  
   32.30  (****  occs irrefl ****)
   32.31  
   32.32  goal UTLemmas.thy  "t <: u & u <: v --> t <: v";
   32.33  by (uterm_ind_tac "v" 1);
   32.34 -by (ALLGOALS (simp_tac utlemmas_ss));
   32.35 +by (ALLGOALS Simp_tac);
   32.36  by (fast_tac HOL_cs 1);
   32.37  val occs_trans  = store_thm("occs_trans", conjI RS (result() RS mp));
   32.38  
   32.39 @@ -37,11 +38,11 @@
   32.40  val contr_occs_trans  = store_thm("contr_occs_trans", result() RS mp);
   32.41  
   32.42  goal UTLemmas.thy   "t <: Comb t u";
   32.43 -by (simp_tac utlemmas_ss 1);
   32.44 +by (Simp_tac 1);
   32.45  qed "occs_Comb1";
   32.46  
   32.47  goal UTLemmas.thy  "u <: Comb t u";
   32.48 -by (simp_tac utlemmas_ss 1);
   32.49 +by (Simp_tac 1);
   32.50  qed "occs_Comb2";
   32.51  
   32.52  goal HOL.thy  "(~(P|Q)) = (~P & ~Q)";
   32.53 @@ -50,7 +51,7 @@
   32.54  
   32.55  goal UTLemmas.thy  "~ t <: t";
   32.56  by (uterm_ind_tac "t" 1);
   32.57 -by (ALLGOALS (simp_tac (utlemmas_ss addsimps [demorgan_disj])));
   32.58 +by (ALLGOALS (simp_tac (!simpset addsimps [demorgan_disj])));
   32.59  by (REPEAT (resolve_tac [impI,conjI] 1 ORELSE
   32.60              (etac contrapos 1 THEN etac subst 1 THEN 
   32.61               resolve_tac [occs_Comb1,occs_Comb2] 1) ORELSE
   32.62 @@ -66,12 +67,12 @@
   32.63  (**** vars_of lemmas  ****)
   32.64  
   32.65  goal UTLemmas.thy "(v : vars_of(Var(w))) = (w=v)";
   32.66 -by (simp_tac utlemmas_ss 1);
   32.67 +by (Simp_tac 1);
   32.68  by (fast_tac HOL_cs 1);
   32.69  qed "vars_var_iff";
   32.70  
   32.71  goal UTLemmas.thy  "(x : vars_of(t)) = (Var(x) <: t | Var(x) = t)";
   32.72  by (uterm_ind_tac "t" 1);
   32.73 -by (ALLGOALS (simp_tac utlemmas_ss));
   32.74 +by (ALLGOALS Simp_tac);
   32.75  by (fast_tac HOL_cs 1);
   32.76  qed "vars_iff_occseq";
    33.1 --- a/src/HOL/Subst/UTerm.ML	Wed Oct 04 13:11:57 1995 +0100
    33.2 +++ b/src/HOL/Subst/UTerm.ML	Wed Oct 04 13:12:14 1995 +0100
    33.3 @@ -1,4 +1,5 @@
    33.4 -(*  Title: 	Substitutions/uterm.ML
    33.5 +(*  Title: 	HOL/Subst/UTerm.ML
    33.6 +    ID:         $Id$
    33.7      Author: 	Martin Coen, Cambridge University Computer Laboratory
    33.8      Copyright   1993  University of Cambridge
    33.9  
   33.10 @@ -180,27 +181,26 @@
   33.11  qed "COMB_D";
   33.12  
   33.13  (*Basic ss with constructors and their freeness*)
   33.14 -val uterm_free_simps = uterm.intrs @
   33.15 -                       [Const_not_Comb,Comb_not_Var,Var_not_Const,
   33.16 -			Comb_not_Const,Var_not_Comb,Const_not_Var,
   33.17 -			Var_Var_eq,Const_Const_eq,Comb_Comb_eq,
   33.18 -			CONST_not_COMB,COMB_not_VAR,VAR_not_CONST,
   33.19 -			COMB_not_CONST,VAR_not_COMB,CONST_not_VAR,
   33.20 -			VAR_VAR_eq,CONST_CONST_eq,COMB_COMB_eq];
   33.21 -val uterm_free_ss = HOL_ss addsimps uterm_free_simps;
   33.22 +Addsimps (uterm.intrs @
   33.23 +          [Const_not_Comb,Comb_not_Var,Var_not_Const,
   33.24 +           Comb_not_Const,Var_not_Comb,Const_not_Var,
   33.25 +           Var_Var_eq,Const_Const_eq,Comb_Comb_eq,
   33.26 +           CONST_not_COMB,COMB_not_VAR,VAR_not_CONST,
   33.27 +           COMB_not_CONST,VAR_not_COMB,CONST_not_VAR,
   33.28 +           VAR_VAR_eq,CONST_CONST_eq,COMB_COMB_eq]);
   33.29  
   33.30  goal UTerm.thy "!u. t~=Comb t u";
   33.31  by (uterm_ind_tac "t" 1);
   33.32  by (rtac (Var_not_Comb RS allI) 1);
   33.33  by (rtac (Const_not_Comb RS allI) 1);
   33.34 -by (asm_simp_tac uterm_free_ss 1);
   33.35 +by (Asm_simp_tac 1);
   33.36  qed "t_not_Comb_t";
   33.37  
   33.38  goal UTerm.thy "!t. u~=Comb t u";
   33.39  by (uterm_ind_tac "u" 1);
   33.40  by (rtac (Var_not_Comb RS allI) 1);
   33.41  by (rtac (Const_not_Comb RS allI) 1);
   33.42 -by (asm_simp_tac uterm_free_ss 1);
   33.43 +by (Asm_simp_tac 1);
   33.44  qed "u_not_Comb_u";
   33.45  
   33.46  
   33.47 @@ -213,12 +213,12 @@
   33.48  
   33.49  goalw UTerm.thy [VAR_def] "UTerm_rec (VAR x) b c d = b(x)";
   33.50  by (rtac (UTerm_rec_unfold RS trans) 1);
   33.51 -by (simp_tac (HOL_ss addsimps [Case_In0]) 1);
   33.52 +by (simp_tac (!simpset addsimps [Case_In0]) 1);
   33.53  qed "UTerm_rec_VAR";
   33.54  
   33.55  goalw UTerm.thy [CONST_def] "UTerm_rec (CONST x) b c d = c(x)";
   33.56  by (rtac (UTerm_rec_unfold RS trans) 1);
   33.57 -by (simp_tac (HOL_ss addsimps [Case_In0,Case_In1]) 1);
   33.58 +by (simp_tac (!simpset addsimps [Case_In0,Case_In1]) 1);
   33.59  qed "UTerm_rec_CONST";
   33.60  
   33.61  goalw UTerm.thy [COMB_def]
   33.62 @@ -226,8 +226,8 @@
   33.63  \           UTerm_rec (COMB M N) b c d = \
   33.64  \           d M N (UTerm_rec M b c d) (UTerm_rec N b c d)";
   33.65  by (rtac (UTerm_rec_unfold RS trans) 1);
   33.66 -by (simp_tac (HOL_ss addsimps [Split,Case_In1]) 1);
   33.67 -by (asm_simp_tac (pred_sexp_ss addsimps [In1_def]) 1);
   33.68 +by (simp_tac (!simpset addsimps [Split,Case_In1]) 1);
   33.69 +by (asm_simp_tac (!simpset addsimps [In1_def]) 1);
   33.70  qed "UTerm_rec_COMB";
   33.71  
   33.72  (*** uterm_rec -- by UTerm_rec ***)
   33.73 @@ -235,36 +235,26 @@
   33.74  val Rep_uterm_in_sexp =
   33.75      Rep_uterm RS (range_Leaf_subset_sexp RS uterm_subset_sexp RS subsetD);
   33.76  
   33.77 -val uterm_rec_simps = 
   33.78 -    uterm.intrs @
   33.79 -    [UTerm_rec_VAR, UTerm_rec_CONST, UTerm_rec_COMB, 
   33.80 -     Abs_uterm_inverse, Rep_uterm_inverse, 
   33.81 -     Rep_uterm, rangeI, inj_Leaf, Inv_f_f, Rep_uterm_in_sexp];
   33.82 -val uterm_rec_ss = HOL_ss addsimps uterm_rec_simps;
   33.83 +Addsimps [UTerm_rec_VAR, UTerm_rec_CONST, UTerm_rec_COMB, 
   33.84 +          Abs_uterm_inverse, Rep_uterm_inverse, 
   33.85 +          Rep_uterm, rangeI, inj_Leaf, Inv_f_f, Rep_uterm_in_sexp];
   33.86  
   33.87  goalw UTerm.thy [uterm_rec_def, Var_def] "uterm_rec (Var x) b c d = b(x)";
   33.88 -by (simp_tac uterm_rec_ss 1);
   33.89 +by (Simp_tac 1);
   33.90  qed "uterm_rec_Var";
   33.91  
   33.92  goalw UTerm.thy [uterm_rec_def, Const_def] "uterm_rec (Const x) b c d = c(x)";
   33.93 -by (simp_tac uterm_rec_ss 1);
   33.94 +by (Simp_tac 1);
   33.95  qed "uterm_rec_Const";
   33.96  
   33.97  goalw UTerm.thy [uterm_rec_def, Comb_def]
   33.98 -   "uterm_rec (Comb u v) b c d = d u v (uterm_rec u b c d) (uterm_rec v b c d)";
   33.99 -by (simp_tac uterm_rec_ss 1);
  33.100 +  "uterm_rec (Comb u v) b c d = d u v (uterm_rec u b c d) (uterm_rec v b c d)";
  33.101 +by (Simp_tac 1);
  33.102  qed "uterm_rec_Comb";
  33.103  
  33.104 -val uterm_simps = [UTerm_rec_VAR, UTerm_rec_CONST, UTerm_rec_COMB,
  33.105 -		 uterm_rec_Var, uterm_rec_Const, uterm_rec_Comb];
  33.106 -val uterm_ss = uterm_free_ss addsimps uterm_simps;
  33.107 +Addsimps [uterm_rec_Var, uterm_rec_Const, uterm_rec_Comb];
  33.108  
  33.109  
  33.110  (**********)
  33.111  
  33.112 -val uterm_rews = [uterm_rec_Var,uterm_rec_Const,uterm_rec_Comb,
  33.113 -		  t_not_Comb_t,u_not_Comb_u,
  33.114 -                  Const_not_Comb,Comb_not_Var,Var_not_Const,
  33.115 -                  Comb_not_Const,Var_not_Comb,Const_not_Var,
  33.116 -                  Var_Var_eq,Const_Const_eq,Comb_Comb_eq];
  33.117 -
  33.118 +val uterm_rews = [t_not_Comb_t,u_not_Comb_u];
    34.1 --- a/src/HOL/Subst/Unifier.ML	Wed Oct 04 13:11:57 1995 +0100
    34.2 +++ b/src/HOL/Subst/Unifier.ML	Wed Oct 04 13:12:14 1995 +0100
    34.3 @@ -1,4 +1,5 @@
    34.4 -(*  Title: 	Substitutions/unifier.ML
    34.5 +(*  Title: 	HOL/Subst/unifier.ML
    34.6 +    ID:         $Id$
    34.7      Author: 	Martin Coen, Cambridge University Computer Laboratory
    34.8      Copyright   1993  University of Cambridge
    34.9  
   34.10 @@ -136,7 +137,7 @@
   34.11  (*** The range of a MGIU is a subset of the variables in the terms ***)
   34.12  
   34.13  val prems = goal HOL.thy  "P = Q ==> (~P) = (~Q)";
   34.14 -by (simp_tac (set_ss addsimps prems) 1);
   34.15 +by (simp_tac (subst_ss addsimps prems) 1);
   34.16  qed "not_cong";
   34.17  
   34.18  val prems = goal Unifier.thy 
   34.19 @@ -289,11 +290,12 @@
   34.20  by (cut_facts_tac 
   34.21      [prem RS UWFD2_lemma1 RS (subseteq_iff_subset_eq RS iffD1)] 1);
   34.22  by (imp_excluded_middle_tac "u <| s = u" 1);
   34.23 -by (simp_tac (set_ss addsimps [occs_Comb2] ) 1);
   34.24 +by (simp_tac (subst_ss delsimps (ssubset_iff :: utlemmas_rews)
   34.25 +                       addsimps [occs_Comb2]) 1);
   34.26  by (rtac impI 1 THEN etac subst 1 THEN assume_tac 1);
   34.27  by (rtac impI 1);
   34.28  by (rtac (conjI RS (ssubset_iff RS iffD2) RS disjI1) 1);
   34.29 -by (asm_simp_tac (set_ss addsimps [subseteq_iff_subset_eq]) 1);
   34.30 +by (asm_simp_tac (subst_ss delsimps (ssubset_iff :: utlemmas_rews) addsimps [subseteq_iff_subset_eq]) 1);
   34.31  by (asm_simp_tac subst_ss 1);
   34.32  by (fast_tac (set_cs addDs [prem RS UWFD2_lemma2]) 1);
   34.33  qed "UnifyWFD2";
    35.1 --- a/src/HOL/ex/Acc.thy	Wed Oct 04 13:11:57 1995 +0100
    35.2 +++ b/src/HOL/ex/Acc.thy	Wed Oct 04 13:12:14 1995 +0100
    35.3 @@ -16,7 +16,7 @@
    35.4    acc  :: "('a * 'a)set => 'a set"		(*Accessible part*)
    35.5  
    35.6  defs
    35.7 -  pred_def     "pred x r == {y. (y,x):r}"
    35.8 +  pred_def  "pred x r == {y. (y,x):r}"
    35.9  
   35.10  inductive "acc(r)"
   35.11    intrs
    36.1 --- a/src/HOL/ex/BT.ML	Wed Oct 04 13:11:57 1995 +0100
    36.2 +++ b/src/HOL/ex/BT.ML	Wed Oct 04 13:12:14 1995 +0100
    36.3 @@ -10,60 +10,50 @@
    36.4  
    36.5  (** BT simplification **)
    36.6  
    36.7 -val bt_ss = list_ss
    36.8 -    addsimps [n_nodes_Lf, n_nodes_Br,
    36.9 -	      n_leaves_Lf, n_leaves_Br,
   36.10 -	      reflect_Lf, reflect_Br,
   36.11 -	      bt_map_Lf, bt_map_Br,
   36.12 -	      preorder_Lf, preorder_Br,
   36.13 -	      inorder_Lf, inorder_Br,
   36.14 -	      postorder_Lf, postorder_Br];
   36.15 -
   36.16 -
   36.17  goal BT.thy "n_leaves(reflect(t)) = n_leaves(t)";
   36.18  by (bt.induct_tac "t" 1);
   36.19 -by (ALLGOALS (asm_simp_tac (bt_ss addsimps [add_commute])));
   36.20 +by (ALLGOALS (asm_simp_tac (!simpset addsimps [add_commute])));
   36.21  qed "n_leaves_reflect";
   36.22  
   36.23  goal BT.thy "n_nodes(reflect(t)) = n_nodes(t)";
   36.24  by (bt.induct_tac "t" 1);
   36.25 -by (ALLGOALS (asm_simp_tac (bt_ss addsimps [add_commute])));
   36.26 +by (ALLGOALS (asm_simp_tac (!simpset addsimps [add_commute])));
   36.27  qed "n_nodes_reflect";
   36.28  
   36.29  (*The famous relationship between the numbers of leaves and nodes*)
   36.30  goal BT.thy "n_leaves(t) = Suc(n_nodes(t))";
   36.31  by (bt.induct_tac "t" 1);
   36.32 -by (ALLGOALS (asm_simp_tac bt_ss));
   36.33 +by (ALLGOALS Asm_simp_tac);
   36.34  qed "n_leaves_nodes";
   36.35  
   36.36  goal BT.thy "reflect(reflect(t))=t";
   36.37  by (bt.induct_tac "t" 1);
   36.38 -by (ALLGOALS (asm_simp_tac bt_ss));
   36.39 +by (ALLGOALS Asm_simp_tac);
   36.40  qed "reflect_reflect_ident";
   36.41  
   36.42  goal BT.thy "bt_map f (reflect t) = reflect (bt_map f t)";
   36.43  by (bt.induct_tac "t" 1);
   36.44 -by (ALLGOALS (asm_simp_tac bt_ss));
   36.45 +by (ALLGOALS Asm_simp_tac);
   36.46  qed "bt_map_reflect";
   36.47  
   36.48  goal BT.thy "inorder (bt_map f t) = map f (inorder t)";
   36.49  by (bt.induct_tac "t" 1);
   36.50 -by (ALLGOALS (asm_simp_tac bt_ss));
   36.51 +by (ALLGOALS Asm_simp_tac);
   36.52  qed "inorder_bt_map";
   36.53  
   36.54  goal BT.thy "preorder (reflect t) = rev (postorder t)";
   36.55  by (bt.induct_tac "t" 1);
   36.56 -by (ALLGOALS (asm_simp_tac (bt_ss addsimps [rev_append])));
   36.57 +by (ALLGOALS Asm_simp_tac);
   36.58  qed "preorder_reflect";
   36.59  
   36.60  goal BT.thy "inorder (reflect t) = rev (inorder t)";
   36.61  by (bt.induct_tac "t" 1);
   36.62 -by (ALLGOALS (asm_simp_tac (bt_ss addsimps [rev_append])));
   36.63 +by (ALLGOALS Asm_simp_tac);
   36.64  qed "inorder_reflect";
   36.65  
   36.66  goal BT.thy "postorder (reflect t) = rev (preorder t)";
   36.67  by (bt.induct_tac "t" 1);
   36.68 -by (ALLGOALS (asm_simp_tac (bt_ss addsimps [rev_append])));
   36.69 +by (ALLGOALS Asm_simp_tac);
   36.70  qed "postorder_reflect";
   36.71  
   36.72  
    37.1 --- a/src/HOL/ex/InSort.ML	Wed Oct 04 13:11:57 1995 +0100
    37.2 +++ b/src/HOL/ex/InSort.ML	Wed Oct 04 13:12:14 1995 +0100
    37.3 @@ -6,9 +6,6 @@
    37.4  Correctness proof of insertion sort.
    37.5  *)
    37.6  
    37.7 -val insort_ss = sorting_ss addsimps
    37.8 - [InSort.ins_Nil,InSort.ins_Cons,InSort.insort_Nil,InSort.insort_Cons];
    37.9 -
   37.10  goalw InSort.thy [Sorting.total_def]
   37.11    "!!f. [| total(f); ~f x y |] ==> f y x";
   37.12  by(fast_tac HOL_cs 1);
   37.13 @@ -21,26 +18,26 @@
   37.14  
   37.15  goal InSort.thy "list_all p (ins f x xs) = (list_all p xs & p(x))";
   37.16  by(list.induct_tac "xs" 1);
   37.17 -by(asm_simp_tac insort_ss 1);
   37.18 -by(asm_simp_tac (insort_ss setloop (split_tac [expand_if])) 1);
   37.19 +by(Asm_simp_tac 1);
   37.20 +by(asm_simp_tac (!simpset setloop (split_tac [expand_if])) 1);
   37.21  by(fast_tac HOL_cs 1);
   37.22 -val insort_ss = insort_ss addsimps [result()];
   37.23 +Addsimps [result()];
   37.24  
   37.25  goal InSort.thy "(!x. p(x) --> q(x)) --> list_all p xs --> list_all q xs";
   37.26  by(list.induct_tac "xs" 1);
   37.27 -by(ALLGOALS(asm_simp_tac (insort_ss setloop (split_tac [expand_if]))));
   37.28 +by(ALLGOALS(asm_simp_tac (!simpset setloop (split_tac [expand_if]))));
   37.29  qed "list_all_imp";
   37.30  
   37.31  val prems = goal InSort.thy
   37.32    "[| total(f); transf(f) |] ==>  sorted f (ins f x xs) = sorted f xs";
   37.33  by(list.induct_tac "xs" 1);
   37.34 -by(ALLGOALS(asm_simp_tac (insort_ss setloop (split_tac [expand_if]))));
   37.35 +by(ALLGOALS(asm_simp_tac (!simpset setloop (split_tac [expand_if]))));
   37.36  by(cut_facts_tac prems 1);
   37.37  by(cut_inst_tac [("p","f(a)"),("q","f(x)")] list_all_imp 1);
   37.38  by(fast_tac (HOL_cs addDs [totalD,transfD]) 1);
   37.39 -val insort_ss = insort_ss addsimps [result()];
   37.40 +Addsimps [result()];
   37.41  
   37.42  goal InSort.thy "!!f. [| total(f); transf(f) |] ==>  sorted f (insort f xs)";
   37.43  by(list.induct_tac "xs" 1);
   37.44 -by(ALLGOALS(asm_simp_tac insort_ss));
   37.45 +by(ALLGOALS Asm_simp_tac);
   37.46  result();
    38.1 --- a/src/HOL/ex/LList.ML	Wed Oct 04 13:11:57 1995 +0100
    38.2 +++ b/src/HOL/ex/LList.ML	Wed Oct 04 13:12:14 1995 +0100
    38.3 @@ -10,8 +10,7 @@
    38.4  
    38.5  (** Simplification **)
    38.6  
    38.7 -val llist_ss = univ_ss addcongs [split_weak_cong, sum_case_weak_cong]
    38.8 -                       setloop  split_tac [expand_split, expand_sum_case];
    38.9 +simpset := !simpset setloop split_tac [expand_split, expand_sum_case];
   38.10  
   38.11  (*For adding _eqI rules to a simpset; we must remove Pair_eq because
   38.12    it may turn an instance of reflexivity into a conjunction!*)
   38.13 @@ -64,16 +63,16 @@
   38.14  
   38.15  (*A continuity result?*)
   38.16  goalw LList.thy [CONS_def] "CONS M (UN x.f(x)) = (UN x. CONS M (f x))";
   38.17 -by (simp_tac (univ_ss addsimps [In1_UN1, Scons_UN1_y]) 1);
   38.18 +by (simp_tac (!simpset addsimps [In1_UN1, Scons_UN1_y]) 1);
   38.19  qed "CONS_UN1";
   38.20  
   38.21  (*UNUSED; obsolete?
   38.22  goal Prod.thy "split p (%x y.UN z.f x y z) = (UN z. split p (%x y.f x y z))";
   38.23 -by (simp_tac (prod_ss setloop (split_tac [expand_split])) 1);
   38.24 +by (simp_tac (!simpset setloop (split_tac [expand_split])) 1);
   38.25  qed "split_UN1";
   38.26  
   38.27  goal Sum.thy "sum_case s f (%y.UN z.g y z) = (UN z.sum_case s f (%y.g y z))";
   38.28 -by (simp_tac (sum_ss setloop (split_tac [expand_sum_case])) 1);
   38.29 +by (simp_tac (!simpset setloop (split_tac [expand_sum_case])) 1);
   38.30  qed "sum_case2_UN1";
   38.31  *)
   38.32  
   38.33 @@ -82,9 +81,8 @@
   38.34  by (REPEAT (resolve_tac ([In1_mono,Scons_mono]@prems) 1));
   38.35  qed "CONS_mono";
   38.36  
   38.37 -val corec_fun_simps = [LList_corec_fun_def RS def_nat_rec_0,
   38.38 -		       LList_corec_fun_def RS def_nat_rec_Suc];
   38.39 -val corec_fun_ss = llist_ss addsimps corec_fun_simps;
   38.40 +Addsimps [LList_corec_fun_def RS def_nat_rec_0,
   38.41 +	  LList_corec_fun_def RS def_nat_rec_Suc];
   38.42  
   38.43  (** The directions of the equality are proved separately **)
   38.44  
   38.45 @@ -93,17 +91,16 @@
   38.46  \			   (split(%z w. CONS z (LList_corec w f))) (f a)";
   38.47  by (rtac UN1_least 1);
   38.48  by (res_inst_tac [("n","k")] natE 1);
   38.49 -by (ALLGOALS (asm_simp_tac corec_fun_ss));
   38.50 +by (ALLGOALS (Asm_simp_tac));
   38.51  by (REPEAT (resolve_tac [allI, impI, subset_refl RS CONS_mono, UN1_upper] 1));
   38.52  qed "LList_corec_subset1";
   38.53  
   38.54  goalw LList.thy [LList_corec_def]
   38.55      "sum_case (%u.NIL) (split(%z w. CONS z (LList_corec w f))) (f a) <= \
   38.56  \    LList_corec a f";
   38.57 -by (simp_tac (corec_fun_ss addsimps [CONS_UN1]) 1);
   38.58 +by (simp_tac (!simpset addsimps [CONS_UN1]) 1);
   38.59  by (safe_tac set_cs);
   38.60 -by (ALLGOALS (res_inst_tac [("x","Suc(?k)")] UN1_I THEN' 
   38.61 -	      asm_simp_tac corec_fun_ss));
   38.62 +by (ALLGOALS (res_inst_tac [("x","Suc(?k)")] UN1_I THEN' Asm_simp_tac));
   38.63  qed "LList_corec_subset2";
   38.64  
   38.65  (*the recursion equation for LList_corec -- NOT SUITABLE FOR REWRITING!*)
   38.66 @@ -129,7 +126,7 @@
   38.67  by (rtac rangeI 1);
   38.68  by (safe_tac set_cs);
   38.69  by (stac LList_corec 1);
   38.70 -by (simp_tac (llist_ss addsimps [list_Fun_NIL_I, list_Fun_CONS_I, CollectI]
   38.71 +by (simp_tac (!simpset addsimps [list_Fun_NIL_I, list_Fun_CONS_I, CollectI]
   38.72                         |> add_eqI) 1);
   38.73  qed "LList_corec_type";
   38.74  
   38.75 @@ -141,7 +138,7 @@
   38.76  by (rtac rangeI 1);
   38.77  by (safe_tac set_cs);
   38.78  by (stac LList_corec 1);
   38.79 -by (asm_simp_tac (llist_ss addsimps [list_Fun_NIL_I]) 1);
   38.80 +by (asm_simp_tac (!simpset addsimps [list_Fun_NIL_I]) 1);
   38.81  by (fast_tac (set_cs addSIs [list_Fun_CONS_I]) 1);
   38.82  qed "LList_corec_type2";
   38.83  
   38.84 @@ -162,11 +159,11 @@
   38.85  by (etac LListD.elim 1);
   38.86  by (safe_tac (prod_cs addSEs [diagE]));
   38.87  by (res_inst_tac [("n", "n")] natE 1);
   38.88 -by (asm_simp_tac (univ_ss addsimps [ntrunc_0]) 1);
   38.89 +by (asm_simp_tac (!simpset addsimps [ntrunc_0]) 1);
   38.90  by (rename_tac "n'" 1);
   38.91  by (res_inst_tac [("n", "n'")] natE 1);
   38.92 -by (asm_simp_tac (univ_ss addsimps [CONS_def, ntrunc_one_In1]) 1);
   38.93 -by (asm_simp_tac (univ_ss addsimps [CONS_def, ntrunc_In1, ntrunc_Scons]) 1);
   38.94 +by (asm_simp_tac (!simpset addsimps [CONS_def, ntrunc_one_In1]) 1);
   38.95 +by (asm_simp_tac (!simpset addsimps [CONS_def, ntrunc_In1, ntrunc_Scons]) 1);
   38.96  qed "LListD_implies_ntrunc_equality";
   38.97  
   38.98  (*The domain of the LListD relation*)
   38.99 @@ -175,7 +172,7 @@
  38.100  by (rtac gfp_upperbound 1);
  38.101  (*avoids unfolding LListD on the rhs*)
  38.102  by (res_inst_tac [("P", "%x. fst``x <= ?B")] (LListD_unfold RS ssubst) 1);
  38.103 -by (simp_tac fst_image_ss 1);
  38.104 +by (Simp_tac 1);
  38.105  by (fast_tac univ_cs 1);
  38.106  qed "fst_image_LListD";
  38.107  
  38.108 @@ -227,7 +224,7 @@
  38.109  by (etac ssubst 1);
  38.110  by (eresolve_tac [llist.elim] 1);
  38.111  by (ALLGOALS
  38.112 -    (asm_simp_tac (llist_ss addsimps [diagI, LListD_Fun_NIL_I,
  38.113 +    (asm_simp_tac (!simpset addsimps [diagI, LListD_Fun_NIL_I,
  38.114  				      LListD_Fun_CONS_I])));
  38.115  qed "diag_subset_LListD";
  38.116  
  38.117 @@ -240,7 +237,7 @@
  38.118      "!!M N. M: llist(A) ==> (M,M) : LListD_Fun (diag A) (X Un diag(llist(A)))";
  38.119  by (rtac (LListD_eq_diag RS subst) 1);
  38.120  by (rtac LListD_Fun_LListD_I 1);
  38.121 -by (asm_simp_tac (HOL_ss addsimps [LListD_eq_diag, diagI]) 1);
  38.122 +by (asm_simp_tac (!simpset addsimps [LListD_eq_diag, diagI]) 1);
  38.123  qed "LListD_Fun_diag_I";
  38.124  
  38.125  
  38.126 @@ -252,7 +249,7 @@
  38.127  \         |] ==>  M=N";
  38.128  by (rtac (LListD_subset_diag RS subsetD RS diagE) 1);
  38.129  by (etac LListD_coinduct 1);
  38.130 -by (asm_simp_tac (HOL_ss addsimps [LListD_eq_diag]) 1);
  38.131 +by (asm_simp_tac (!simpset addsimps [LListD_eq_diag]) 1);
  38.132  by (safe_tac prod_cs);
  38.133  qed "LList_equalityI";
  38.134  
  38.135 @@ -272,7 +269,7 @@
  38.136  by (safe_tac set_cs);
  38.137  by (stac prem1 1);
  38.138  by (stac prem2 1);
  38.139 -by (simp_tac (llist_ss addsimps [LListD_Fun_NIL_I,
  38.140 +by (simp_tac (!simpset addsimps [LListD_Fun_NIL_I,
  38.141  				 CollectI RS LListD_Fun_CONS_I]
  38.142  	               |> add_eqI) 1);
  38.143  qed "LList_corec_unique";
  38.144 @@ -292,7 +289,7 @@
  38.145  
  38.146  goalw LList.thy [CONS_def]
  38.147      "ntrunc (Suc(Suc(k))) (CONS M N) = CONS (ntrunc k M) (ntrunc k N)";
  38.148 -by (simp_tac (HOL_ss addsimps [ntrunc_Scons,ntrunc_In1]) 1);
  38.149 +by (simp_tac (!simpset addsimps [ntrunc_Scons,ntrunc_In1]) 1);
  38.150  qed "ntrunc_CONS";
  38.151  
  38.152  val [prem1,prem2] = goal LList.thy
  38.153 @@ -305,11 +302,11 @@
  38.154  by (rtac allI 1);
  38.155  by (stac prem1 1);
  38.156  by (stac prem2 1);
  38.157 -by (simp_tac (sum_ss setloop (split_tac [expand_split,expand_sum_case])) 1);
  38.158 +by (simp_tac (!simpset setloop (split_tac [expand_split,expand_sum_case])) 1);
  38.159  by (strip_tac 1);
  38.160  by (res_inst_tac [("n", "n")] natE 1);
  38.161  by (res_inst_tac [("n", "xc")] natE 2);
  38.162 -by (ALLGOALS(asm_simp_tac(nat_ss addsimps
  38.163 +by (ALLGOALS(asm_simp_tac(!simpset addsimps
  38.164              [ntrunc_0,ntrunc_one_CONS,ntrunc_CONS])));
  38.165  result();
  38.166  
  38.167 @@ -334,14 +331,14 @@
  38.168  
  38.169  goal LList.thy "Lconst(M) = LList_corec M (%x.Inr((x,x)))";
  38.170  by (rtac (equals_LList_corec RS fun_cong) 1);
  38.171 -by (simp_tac sum_ss 1);
  38.172 +by (Simp_tac 1);
  38.173  by (rtac Lconst 1);
  38.174  qed "Lconst_eq_LList_corec";
  38.175  
  38.176  (*Thus we could have used gfp in the definition of Lconst*)
  38.177  goal LList.thy "gfp(%N. CONS M N) = LList_corec M (%x.Inr((x,x)))";
  38.178  by (rtac (equals_LList_corec RS fun_cong) 1);
  38.179 -by (simp_tac sum_ss 1);
  38.180 +by (Simp_tac 1);
  38.181  by (rtac (Lconst_fun_mono RS gfp_Tarski) 1);
  38.182  qed "gfp_Lconst_eq_LList_corec";
  38.183  
  38.184 @@ -387,7 +384,7 @@
  38.185  
  38.186  goalw LList.thy [CONS_def] "(CONS M N=CONS M' N') = (M=M' & N=N')";
  38.187  by (fast_tac (HOL_cs addSEs [Scons_inject, make_elim In1_inject]) 1);
  38.188 -qed "CONS_CONS_eq";
  38.189 +qed "CONS_CONS_eq2";
  38.190  
  38.191  bind_thm ("CONS_inject", (CONS_CONS_eq RS iffD1 RS conjE));
  38.192  
  38.193 @@ -407,13 +404,12 @@
  38.194  by (rtac (major RS llist.elim) 1);
  38.195  by (etac CONS_neq_NIL 1);
  38.196  by (fast_tac llist_cs 1);
  38.197 -qed "CONS_D";
  38.198 +qed "CONS_D2";
  38.199  
  38.200  
  38.201  (****** Reasoning about llist(A) ******)
  38.202  
  38.203 -(*Don't use llist_ss, as it does case splits!*)
  38.204 -val List_case_ss = univ_ss addsimps [List_case_NIL, List_case_CONS];
  38.205 +Addsimps [List_case_NIL, List_case_CONS];
  38.206  
  38.207  (*A special case of list_equality for functions over lazy lists*)
  38.208  val [Mlist,gMlist,NILcase,CONScase] = goal LList.thy
  38.209 @@ -442,12 +438,12 @@
  38.210  
  38.211  goal LList.thy "Lmap f NIL = NIL";
  38.212  by (rtac (Lmap_def RS def_LList_corec RS trans) 1);
  38.213 -by (simp_tac List_case_ss 1);
  38.214 +by (Simp_tac 1);
  38.215  qed "Lmap_NIL";
  38.216  
  38.217  goal LList.thy "Lmap f (CONS M N) = CONS (f M) (Lmap f N)";
  38.218  by (rtac (Lmap_def RS def_LList_corec RS trans) 1);
  38.219 -by (simp_tac List_case_ss 1);
  38.220 +by (Simp_tac 1);
  38.221  qed "Lmap_CONS";
  38.222  
  38.223  (*Another type-checking proof by coinduction*)
  38.224 @@ -456,7 +452,7 @@
  38.225  by (rtac (major RS imageI RS llist_coinduct) 1);
  38.226  by (safe_tac set_cs);
  38.227  by (etac llist.elim 1);
  38.228 -by (ALLGOALS (asm_simp_tac (HOL_ss addsimps [Lmap_NIL,Lmap_CONS])));
  38.229 +by (ALLGOALS (asm_simp_tac (!simpset addsimps [Lmap_NIL,Lmap_CONS])));
  38.230  by (REPEAT (ares_tac [list_Fun_NIL_I, list_Fun_CONS_I, 
  38.231  		      minor, imageI, UnI1] 1));
  38.232  qed "Lmap_type";
  38.233 @@ -474,7 +470,7 @@
  38.234  by (rtac (prem RS imageI RS LList_equalityI) 1);
  38.235  by (safe_tac set_cs);
  38.236  by (etac llist.elim 1);
  38.237 -by (ALLGOALS (asm_simp_tac (HOL_ss addsimps [Lmap_NIL,Lmap_CONS])));
  38.238 +by (ALLGOALS (asm_simp_tac (!simpset addsimps [Lmap_NIL,Lmap_CONS])));
  38.239  by (REPEAT (ares_tac [LListD_Fun_NIL_I, imageI, UnI1,
  38.240  		      rangeI RS LListD_Fun_CONS_I] 1));
  38.241  qed "Lmap_compose";
  38.242 @@ -483,7 +479,7 @@
  38.243  by (rtac (prem RS imageI RS LList_equalityI) 1);
  38.244  by (safe_tac set_cs);
  38.245  by (etac llist.elim 1);
  38.246 -by (ALLGOALS (asm_simp_tac (HOL_ss addsimps [Lmap_NIL,Lmap_CONS])));
  38.247 +by (ALLGOALS (asm_simp_tac (!simpset addsimps [Lmap_NIL,Lmap_CONS])));
  38.248  by (REPEAT (ares_tac [LListD_Fun_NIL_I, imageI RS UnI1,
  38.249  		      rangeI RS LListD_Fun_CONS_I] 1));
  38.250  qed "Lmap_ident";
  38.251 @@ -493,34 +489,33 @@
  38.252  
  38.253  goalw LList.thy [Lappend_def] "Lappend NIL NIL = NIL";
  38.254  by (rtac (LList_corec RS trans) 1);
  38.255 -by (simp_tac List_case_ss 1);
  38.256 +by (Simp_tac 1);
  38.257  qed "Lappend_NIL_NIL";
  38.258  
  38.259  goalw LList.thy [Lappend_def]
  38.260      "Lappend NIL (CONS N N') = CONS N (Lappend NIL N')";
  38.261  by (rtac (LList_corec RS trans) 1);
  38.262 -by (simp_tac List_case_ss 1);
  38.263 +by (Simp_tac 1);
  38.264  qed "Lappend_NIL_CONS";
  38.265  
  38.266  goalw LList.thy [Lappend_def]
  38.267      "Lappend (CONS M M') N = CONS M (Lappend M' N)";
  38.268  by (rtac (LList_corec RS trans) 1);
  38.269 -by (simp_tac List_case_ss 1);
  38.270 +by (Simp_tac 1);
  38.271  qed "Lappend_CONS";
  38.272  
  38.273 -val Lappend_ss = 
  38.274 -    List_case_ss addsimps [llist.NIL_I, Lappend_NIL_NIL, Lappend_NIL_CONS,
  38.275 -			   Lappend_CONS, LListD_Fun_CONS_I]
  38.276 -                 |> add_eqI;
  38.277 +Addsimps [llist.NIL_I, Lappend_NIL_NIL, Lappend_NIL_CONS,
  38.278 +	  Lappend_CONS, LListD_Fun_CONS_I, range_eqI, image_eqI];
  38.279 +Delsimps [Pair_eq];
  38.280  
  38.281  goal LList.thy "!!M. M: llist(A) ==> Lappend NIL M = M";
  38.282  by (etac LList_fun_equalityI 1);
  38.283 -by (ALLGOALS (asm_simp_tac Lappend_ss));
  38.284 +by (ALLGOALS Asm_simp_tac);
  38.285  qed "Lappend_NIL";
  38.286  
  38.287  goal LList.thy "!!M. M: llist(A) ==> Lappend M NIL = M";
  38.288  by (etac LList_fun_equalityI 1);
  38.289 -by (ALLGOALS (asm_simp_tac Lappend_ss));
  38.290 +by (ALLGOALS Asm_simp_tac);
  38.291  qed "Lappend_NIL2";
  38.292  
  38.293  (** Alternative type-checking proofs for Lappend **)
  38.294 @@ -535,7 +530,7 @@
  38.295  by (eres_inst_tac [("a", "u")] llist.elim 1);
  38.296  by (eres_inst_tac [("a", "v")] llist.elim 1);
  38.297  by (ALLGOALS
  38.298 -    (asm_simp_tac Lappend_ss THEN'
  38.299 +    (Asm_simp_tac THEN'
  38.300       fast_tac (set_cs addSIs [llist.NIL_I, list_Fun_NIL_I, list_Fun_CONS_I])));
  38.301  qed "Lappend_type";
  38.302  
  38.303 @@ -547,8 +542,8 @@
  38.304  by (rtac subsetI 1);
  38.305  by (etac imageE 1);
  38.306  by (eres_inst_tac [("a", "u")] llist.elim 1);
  38.307 -by (asm_simp_tac (Lappend_ss addsimps [Lappend_NIL, list_Fun_llist_I]) 1);
  38.308 -by (asm_simp_tac Lappend_ss 1);
  38.309 +by (asm_simp_tac (!simpset addsimps [Lappend_NIL, list_Fun_llist_I]) 1);
  38.310 +by (Asm_simp_tac 1);
  38.311  by (fast_tac (set_cs addSIs [list_Fun_CONS_I]) 1);
  38.312  qed "Lappend_type";
  38.313  
  38.314 @@ -556,20 +551,16 @@
  38.315  
  38.316  (** llist_case: case analysis for 'a llist **)
  38.317  
  38.318 -val Rep_llist_simps =
  38.319 -                [List_case_NIL, List_case_CONS, 
  38.320 -		 Abs_llist_inverse, Rep_llist_inverse,
  38.321 -		 Rep_llist, rangeI, inj_Leaf, Inv_f_f]
  38.322 -		@ llist.intrs;
  38.323 -val Rep_llist_ss = llist_ss addsimps Rep_llist_simps;
  38.324 +Addsimps ([Abs_llist_inverse, Rep_llist_inverse,
  38.325 +           Rep_llist, rangeI, inj_Leaf, Inv_f_f] @ llist.intrs);
  38.326  
  38.327  goalw LList.thy [llist_case_def,LNil_def]  "llist_case c d LNil = c";
  38.328 -by (simp_tac Rep_llist_ss 1);
  38.329 +by (Simp_tac 1);
  38.330  qed "llist_case_LNil";
  38.331  
  38.332  goalw LList.thy [llist_case_def,LCons_def]
  38.333      "llist_case c d (LCons M N) = d M N";
  38.334 -by (simp_tac Rep_llist_ss 1);
  38.335 +by (Simp_tac 1);
  38.336  qed "llist_case_LCons";
  38.337  
  38.338  (*Elimination is case analysis, not induction.*)
  38.339 @@ -582,7 +573,7 @@
  38.340  by (assume_tac 1);
  38.341  by (etac rangeE 1);
  38.342  by (rtac (inj_Rep_llist RS injD RS prem2) 1);
  38.343 -by (asm_simp_tac (HOL_ss addsimps [Rep_llist_LCons]) 1);
  38.344 +by (asm_simp_tac (!simpset delsimps [CONS_CONS_eq] addsimps [Rep_llist_LCons]) 1);
  38.345  by (etac (Abs_llist_inverse RS ssubst) 1);
  38.346  by (rtac refl 1);
  38.347  qed "llistE";
  38.348 @@ -594,11 +585,11 @@
  38.349  \			    (split(%z w. LCons z (llist_corec w f))) (f a)";
  38.350  by (stac LList_corec 1);
  38.351  by (res_inst_tac [("s","f(a)")] sumE 1);
  38.352 -by (asm_simp_tac (llist_ss addsimps [LList_corec_type2,Abs_llist_inverse]) 1);
  38.353 +by (asm_simp_tac (!simpset addsimps [LList_corec_type2]) 1);
  38.354  by (res_inst_tac [("p","y")] PairE 1);
  38.355 -by (asm_simp_tac (llist_ss addsimps [LList_corec_type2,Abs_llist_inverse]) 1);
  38.356 +by (asm_simp_tac (!simpset addsimps [LList_corec_type2]) 1);
  38.357  (*FIXME: correct case splits usd to be found automatically:
  38.358 -by (ASM_SIMP_TAC(llist_ss addsimps [LList_corec_type2,Abs_llist_inverse]) 1);*)
  38.359 +by (ASM_SIMP_TAC(!simpset addsimps [LList_corec_type2]) 1);*)
  38.360  qed "llist_corec";
  38.361  
  38.362  (*definitional version of same*)
  38.363 @@ -617,7 +608,7 @@
  38.364      "!!r A. r <= Sigma (llist A) (%x.llist(A)) ==> \
  38.365  \           LListD_Fun (diag A) r <= Sigma (llist A) (%x.llist(A))";
  38.366  by (stac llist_unfold 1);
  38.367 -by (simp_tac (HOL_ss addsimps [NIL_def, CONS_def]) 1);
  38.368 +by (simp_tac (!simpset addsimps [NIL_def, CONS_def]) 1);
  38.369  by (fast_tac univ_cs 1);
  38.370  qed "LListD_Fun_subset_Sigma_llist";
  38.371  
  38.372 @@ -633,7 +624,7 @@
  38.373  by (safe_tac prod_cs);
  38.374  by (rtac (prem RS subsetD RS SigmaE2) 1);
  38.375  by (assume_tac 1);
  38.376 -by (asm_simp_tac (HOL_ss addsimps [o_def,prod_fun,Abs_llist_inverse]) 1);
  38.377 +by (asm_simp_tac (!simpset addsimps [o_def,prod_fun,Abs_llist_inverse]) 1);
  38.378  qed "prod_fun_lemma";
  38.379  
  38.380  goal LList.thy
  38.381 @@ -704,22 +695,20 @@
  38.382  qed "llist_fun_equalityI";
  38.383  
  38.384  (*simpset for llist bisimulations*)
  38.385 -val llistD_simps = [llist_case_LNil, llist_case_LCons, 
  38.386 -		    llistD_Fun_LNil_I, llistD_Fun_LCons_I];
  38.387 -(*Don't use llist_ss, as it does case splits!*)
  38.388 -val llistD_ss = univ_ss addsimps llistD_simps |> add_eqI;
  38.389 +Addsimps [llist_case_LNil, llist_case_LCons, 
  38.390 +	  llistD_Fun_LNil_I, llistD_Fun_LCons_I];
  38.391  
  38.392  
  38.393  (*** The functional "lmap" ***)
  38.394  
  38.395  goal LList.thy "lmap f LNil = LNil";
  38.396  by (rtac (lmap_def RS def_llist_corec RS trans) 1);
  38.397 -by (simp_tac llistD_ss 1);
  38.398 +by (Simp_tac 1);
  38.399  qed "lmap_LNil";
  38.400  
  38.401  goal LList.thy "lmap f (LCons M N) = LCons (f M) (lmap f N)";
  38.402  by (rtac (lmap_def RS def_llist_corec RS trans) 1);
  38.403 -by (simp_tac llistD_ss 1);
  38.404 +by (Simp_tac 1);
  38.405  qed "lmap_LCons";
  38.406  
  38.407  
  38.408 @@ -727,12 +716,12 @@
  38.409  
  38.410  goal LList.thy "lmap (f o g) l = lmap f (lmap g l)";
  38.411  by (res_inst_tac [("l","l")] llist_fun_equalityI 1);
  38.412 -by (ALLGOALS (simp_tac (llistD_ss addsimps [lmap_LNil, lmap_LCons])));
  38.413 +by (ALLGOALS (simp_tac (!simpset addsimps [lmap_LNil, lmap_LCons])));
  38.414  qed "lmap_compose";
  38.415  
  38.416  goal LList.thy "lmap (%x.x) l = l";
  38.417  by (res_inst_tac [("l","l")] llist_fun_equalityI 1);
  38.418 -by (ALLGOALS (simp_tac (llistD_ss addsimps [lmap_LNil, lmap_LCons])));
  38.419 +by (ALLGOALS (simp_tac (!simpset addsimps [lmap_LNil, lmap_LCons])));
  38.420  qed "lmap_ident";
  38.421  
  38.422  
  38.423 @@ -740,7 +729,7 @@
  38.424  
  38.425  goal LList.thy "iterates f x = LCons x (iterates f (f x))";
  38.426  by (rtac (iterates_def RS def_llist_corec RS trans) 1);
  38.427 -by (simp_tac sum_ss 1);
  38.428 +by (Simp_tac 1);
  38.429  qed "iterates";
  38.430  
  38.431  goal LList.thy "lmap f (iterates f x) = iterates f (f x)";
  38.432 @@ -750,7 +739,7 @@
  38.433  by (safe_tac set_cs);
  38.434  by (res_inst_tac [("x1", "f(u)")] (iterates RS ssubst) 1);
  38.435  by (res_inst_tac [("x1", "u")] (iterates RS ssubst) 1);
  38.436 -by (simp_tac (llistD_ss addsimps [lmap_LCons]) 1);
  38.437 +by (simp_tac (!simpset addsimps [lmap_LCons]) 1);
  38.438  qed "lmap_iterates";
  38.439  
  38.440  goal LList.thy "iterates f x = LCons x (lmap f (iterates f x))";
  38.441 @@ -766,12 +755,12 @@
  38.442      "nat_rec n (LCons b l) (%m. lmap(f)) =	\
  38.443  \    LCons (nat_rec n b (%m. f)) (nat_rec n l (%m. lmap(f)))";
  38.444  by (nat_ind_tac "n" 1);
  38.445 -by (ALLGOALS (asm_simp_tac (nat_ss addsimps [lmap_LCons])));
  38.446 +by (ALLGOALS (asm_simp_tac (!simpset addsimps [lmap_LCons])));
  38.447  qed "fun_power_lmap";
  38.448  
  38.449  goal Nat.thy "nat_rec n (g x) (%m. g) = nat_rec (Suc n) x (%m. g)";
  38.450  by (nat_ind_tac "n" 1);
  38.451 -by (ALLGOALS (asm_simp_tac nat_ss));
  38.452 +by (ALLGOALS Asm_simp_tac);
  38.453  qed "fun_power_Suc";
  38.454  
  38.455  val Pair_cong = read_instantiate_sg (sign_of Prod.thy)
  38.456 @@ -805,31 +794,31 @@
  38.457  
  38.458  goalw LList.thy [lappend_def] "lappend LNil LNil = LNil";
  38.459  by (rtac (llist_corec RS trans) 1);
  38.460 -by (simp_tac llistD_ss 1);
  38.461 +by (Simp_tac 1);
  38.462  qed "lappend_LNil_LNil";
  38.463  
  38.464  goalw LList.thy [lappend_def]
  38.465      "lappend LNil (LCons l l') = LCons l (lappend LNil l')";
  38.466  by (rtac (llist_corec RS trans) 1);
  38.467 -by (simp_tac llistD_ss 1);
  38.468 +by (Simp_tac 1);
  38.469  qed "lappend_LNil_LCons";
  38.470  
  38.471  goalw LList.thy [lappend_def]
  38.472      "lappend (LCons l l') N = LCons l (lappend l' N)";
  38.473  by (rtac (llist_corec RS trans) 1);
  38.474 -by (simp_tac llistD_ss 1);
  38.475 +by (Simp_tac 1);
  38.476  qed "lappend_LCons";
  38.477  
  38.478  goal LList.thy "lappend LNil l = l";
  38.479  by (res_inst_tac [("l","l")] llist_fun_equalityI 1);
  38.480  by (ALLGOALS 
  38.481 -    (simp_tac (llistD_ss addsimps [lappend_LNil_LNil, lappend_LNil_LCons])));
  38.482 +    (simp_tac (!simpset addsimps [lappend_LNil_LNil, lappend_LNil_LCons])));
  38.483  qed "lappend_LNil";
  38.484  
  38.485  goal LList.thy "lappend l LNil = l";
  38.486  by (res_inst_tac [("l","l")] llist_fun_equalityI 1);
  38.487  by (ALLGOALS 
  38.488 -    (simp_tac (llistD_ss addsimps [lappend_LNil_LNil, lappend_LCons])));
  38.489 +    (simp_tac (!simpset addsimps [lappend_LNil_LNil, lappend_LCons])));
  38.490  qed "lappend_LNil2";
  38.491  
  38.492  (*The infinite first argument blocks the second*)
  38.493 @@ -839,7 +828,7 @@
  38.494  by (rtac rangeI 1);
  38.495  by (safe_tac set_cs);
  38.496  by (stac iterates 1);
  38.497 -by (simp_tac (llistD_ss addsimps [lappend_LCons]) 1);
  38.498 +by (simp_tac (!simpset addsimps [lappend_LCons]) 1);
  38.499  qed "lappend_iterates";
  38.500  
  38.501  (** Two proofs that lmap distributes over lappend **)
  38.502 @@ -855,7 +844,7 @@
  38.503  by (safe_tac set_cs);
  38.504  by (res_inst_tac [("l", "l")] llistE 1);
  38.505  by (res_inst_tac [("l", "n")] llistE 1);
  38.506 -by (ALLGOALS (asm_simp_tac (llistD_ss addsimps
  38.507 +by (ALLGOALS (asm_simp_tac (!simpset addsimps
  38.508        [lappend_LNil_LNil,lappend_LCons,lappend_LNil_LCons,
  38.509         lmap_LNil,lmap_LCons])));
  38.510  by (REPEAT_SOME (ares_tac [llistD_Fun_LCons_I, UN1_I RS UnI1, rangeI]));
  38.511 @@ -868,13 +857,13 @@
  38.512  (*Shorter proof of theorem above using llist_equalityI as strong coinduction*)
  38.513  goal LList.thy "lmap f (lappend l n) = lappend (lmap f l) (lmap f n)";
  38.514  by (res_inst_tac [("l","l")] llist_fun_equalityI 1);
  38.515 -by (simp_tac (llistD_ss addsimps [lappend_LNil, lmap_LNil])1);
  38.516 -by (simp_tac (llistD_ss addsimps [lappend_LCons, lmap_LCons]) 1);
  38.517 +by (simp_tac (!simpset addsimps [lappend_LNil, lmap_LNil])1);
  38.518 +by (simp_tac (!simpset addsimps [lappend_LCons, lmap_LCons]) 1);
  38.519  qed "lmap_lappend_distrib";
  38.520  
  38.521  (*Without strong coinduction, three case analyses might be needed*)
  38.522  goal LList.thy "lappend (lappend l1 l2) l3 = lappend l1 (lappend l2 l3)";
  38.523  by (res_inst_tac [("l","l1")] llist_fun_equalityI 1);
  38.524 -by (simp_tac (llistD_ss addsimps [lappend_LNil])1);
  38.525 -by (simp_tac (llistD_ss addsimps [lappend_LCons]) 1);
  38.526 +by (simp_tac (!simpset addsimps [lappend_LNil])1);
  38.527 +by (simp_tac (!simpset addsimps [lappend_LCons]) 1);
  38.528  qed "lappend_assoc";
    39.1 --- a/src/HOL/ex/MT.ML	Wed Oct 04 13:11:57 1995 +0100
    39.2 +++ b/src/HOL/ex/MT.ML	Wed Oct 04 13:12:14 1995 +0100
    39.3 @@ -1,4 +1,4 @@
    39.4 -(*  Title: 	HOL/ex/mt.ML
    39.5 +(*  Title: 	HOL/ex/MT.ML
    39.6      ID:         $Id$
    39.7      Author: 	Jacob Frost, Cambridge University Computer Laboratory
    39.8      Copyright   1993  University of Cambridge
    39.9 @@ -39,21 +39,21 @@
   39.10      );
   39.11  
   39.12  val prems = goal MT.thy "P a b ==> P (fst (a,b)) (snd (a,b))";
   39.13 -by (simp_tac (prod_ss addsimps prems) 1);
   39.14 +by (simp_tac (!simpset addsimps prems) 1);
   39.15  qed "infsys_p1";
   39.16  
   39.17  val prems = goal MT.thy "!!a b. P (fst (a,b)) (snd (a,b)) ==> P a b";
   39.18 -by (asm_full_simp_tac prod_ss 1);
   39.19 +by (Asm_full_simp_tac 1);
   39.20  qed "infsys_p2";
   39.21  
   39.22  val prems = goal MT.thy 
   39.23   "!!a. P a b c ==> P (fst(fst((a,b),c))) (snd(fst ((a,b),c))) (snd ((a,b),c))";
   39.24 -by (asm_full_simp_tac prod_ss 1);
   39.25 +by (Asm_full_simp_tac 1);
   39.26  qed "infsys_pp1";
   39.27  
   39.28  val prems = goal MT.thy 
   39.29   "!!a. P (fst(fst((a,b),c))) (snd(fst((a,b),c))) (snd((a,b),c)) ==> P a b c";
   39.30 -by (asm_full_simp_tac prod_ss 1);
   39.31 +by (Asm_full_simp_tac 1);
   39.32  qed "infsys_pp2";
   39.33  
   39.34  (* ############################################################ *)
   39.35 @@ -175,7 +175,7 @@
   39.36  by (rtac eval_fun_mono 1);
   39.37  by (rewtac eval_fun_def);
   39.38  by (fast_tac set_cs 1);
   39.39 -qed "eval_var";
   39.40 +qed "eval_var2";
   39.41  
   39.42  val prems = goalw MT.thy [eval_def, eval_rel_def] 
   39.43    "ve |- fn ev => e ---> v_clos(<|ev,e,ve|>)";
   39.44 @@ -499,8 +499,8 @@
   39.45  by (elab_e_elim_tac prems);
   39.46  qed "elab_app_elim_lem";
   39.47  
   39.48 -val prems = goal MT.thy 
   39.49 -  "te |- e1 @ e2 ===> t2 ==> (? t1 . te |- e1 ===> t1->t2 & te |- e2 ===> t1)"; 
   39.50 +val prems = goal MT.thy
   39.51 + "te |- e1 @ e2 ===> t2 ==> (? t1 . te |- e1 ===> t1->t2 & te |- e2 ===> t1)"; 
   39.52  by (cut_facts_tac prems 1);
   39.53  by (dtac elab_app_elim_lem 1);
   39.54  by (fast_tac prop_cs 1);
   39.55 @@ -523,7 +523,8 @@
   39.56  
   39.57  (* First strong indtroduction (co-induction) rule for hasty_rel *)
   39.58  
   39.59 -val prems = goalw MT.thy [hasty_rel_def] "c isof t ==> (v_const(c),t) : hasty_rel";
   39.60 +val prems =
   39.61 +  goalw MT.thy [hasty_rel_def] "c isof t ==> (v_const(c),t) : hasty_rel";
   39.62  by (cut_facts_tac prems 1);
   39.63  by (rtac gfp_coind2 1);
   39.64  by (rewtac MT.hasty_fun_def);
   39.65 @@ -629,7 +630,8 @@
   39.66  qed "hasty_elim_clos_lem";
   39.67  
   39.68  val prems = goal MT.thy 
   39.69 -  "v_clos(<|ev,e,ve|>) hasty t ==> ? te.te |- fn ev => e ===> t & ve hastyenv te ";
   39.70 +  "v_clos(<|ev,e,ve|>) hasty t ==> ? te.te |- fn ev => e ===>\
   39.71 +  \t & ve hastyenv te ";
   39.72  by (cut_facts_tac (prems RL [hasty_elim_clos_lem]) 1);
   39.73  by (fast_tac HOL_cs 1);
   39.74  qed "hasty_elim_clos";
   39.75 @@ -642,12 +644,13 @@
   39.76    "!!ve. [| ve hastyenv te; v hasty t |] ==> \
   39.77  \        ve + {ev |-> v} hastyenv te + {ev |=> t}";
   39.78  by (rewtac hasty_env_def);
   39.79 -by (asm_full_simp_tac (HOL_ss addsimps [ve_dom_owr, te_dom_owr]) 1);
   39.80 +by (asm_full_simp_tac (!simpset delsimps mem_simps
   39.81 +                                addsimps [ve_dom_owr, te_dom_owr]) 1);
   39.82  by (safe_tac HOL_cs);
   39.83  by (excluded_middle_tac "ev=x" 1);
   39.84 -by (asm_full_simp_tac (HOL_ss addsimps [ve_app_owr2, te_app_owr2]) 1);
   39.85 +by (asm_full_simp_tac (!simpset addsimps [ve_app_owr2, te_app_owr2]) 1);
   39.86  by (fast_tac set_cs 1);
   39.87 -by (asm_simp_tac (HOL_ss addsimps [ve_app_owr1, te_app_owr1]) 1);
   39.88 +by (asm_simp_tac (!simpset addsimps [ve_app_owr1, te_app_owr1]) 1);
   39.89  qed "hasty_env1";
   39.90  
   39.91  (* ############################################################ *)
   39.92 @@ -690,15 +693,16 @@
   39.93  by ((forward_tac [ssubst] 1) THEN (assume_tac 2));
   39.94  by (rtac hasty_rel_clos_coind 1);
   39.95  by (etac elab_fn 1);
   39.96 -by (asm_simp_tac (HOL_ss addsimps [ve_dom_owr, te_dom_owr]) 1);
   39.97 +by (asm_simp_tac (!simpset addsimps [ve_dom_owr, te_dom_owr]) 1);
   39.98  
   39.99 -by (asm_simp_tac (HOL_ss addsimps [ve_dom_owr]) 1);
  39.100 +by (asm_simp_tac (!simpset delsimps mem_simps addsimps [ve_dom_owr]) 1);
  39.101  by (safe_tac HOL_cs);
  39.102  by (excluded_middle_tac "ev2=ev1a" 1);
  39.103 -by (asm_full_simp_tac (HOL_ss addsimps [ve_app_owr2, te_app_owr2]) 1);
  39.104 +by (asm_full_simp_tac (!simpset addsimps [ve_app_owr2, te_app_owr2]) 1);
  39.105  by (fast_tac set_cs 1);
  39.106  
  39.107 -by (asm_simp_tac (HOL_ss addsimps [ve_app_owr1, te_app_owr1]) 1);
  39.108 +by (asm_simp_tac (!simpset delsimps mem_simps
  39.109 +                           addsimps [ve_app_owr1, te_app_owr1]) 1);
  39.110  by (hyp_subst_tac 1);
  39.111  by (etac subst 1);
  39.112  by (fast_tac set_cs 1);
  39.113 @@ -779,7 +783,7 @@
  39.114  by (etac exE 1);
  39.115  by (etac conjE 1);
  39.116  by (dtac hasty_const 1);
  39.117 -by (asm_simp_tac HOL_ss 1);
  39.118 +by (Asm_simp_tac 1);
  39.119  qed "basic_consistency_lem";
  39.120  
  39.121  val prems = goal MT.thy
  39.122 @@ -789,5 +793,3 @@
  39.123  by (dtac consistency 1);
  39.124  by (fast_tac (HOL_cs addSIs [basic_consistency_lem]) 1);
  39.125  qed "basic_consistency";
  39.126 -
  39.127 -
    40.1 --- a/src/HOL/ex/NatSum.ML	Wed Oct 04 13:11:57 1995 +0100
    40.2 +++ b/src/HOL/ex/NatSum.ML	Wed Oct 04 13:12:14 1995 +0100
    40.3 @@ -6,38 +6,37 @@
    40.4  Summing natural numbers, squares and cubes. Could be continued...
    40.5  *)
    40.6  
    40.7 -val natsum_ss = arith_ss addsimps
    40.8 -  ([NatSum.sum_0,NatSum.sum_Suc] @ add_ac);
    40.9 +Addsimps ([NatSum.sum_0,NatSum.sum_Suc] @ add_ac);
   40.10  
   40.11  (*The sum of the first n positive integers equals n(n+1)/2.*)
   40.12  goal NatSum.thy "Suc(Suc(0))*sum (%i.i) (Suc n) = n*Suc(n)";
   40.13 -by (simp_tac natsum_ss 1);
   40.14 +by (Simp_tac 1);
   40.15  by (nat_ind_tac "n" 1);
   40.16 -by (simp_tac natsum_ss 1);
   40.17 -by (asm_simp_tac natsum_ss 1);
   40.18 +by (Simp_tac 1);
   40.19 +by (Asm_simp_tac 1);
   40.20  qed "sum_of_naturals";
   40.21  
   40.22  goal NatSum.thy
   40.23    "Suc(Suc(Suc(Suc(Suc(Suc(0))))))*sum (%i.i*i) (Suc n) = \
   40.24  \  n*Suc(n)*Suc(Suc(Suc(0))*n)";
   40.25 -by (simp_tac natsum_ss 1);
   40.26 +by (Simp_tac 1);
   40.27  by (nat_ind_tac "n" 1);
   40.28 -by (simp_tac natsum_ss 1);
   40.29 -by (asm_simp_tac natsum_ss 1);
   40.30 +by (Simp_tac 1);
   40.31 +by (Asm_simp_tac 1);
   40.32  qed "sum_of_squares";
   40.33  
   40.34  goal NatSum.thy
   40.35    "Suc(Suc(Suc(Suc(0))))*sum (%i.i*i*i) (Suc n) = n*n*Suc(n)*Suc(n)";
   40.36 -by (simp_tac natsum_ss 1);
   40.37 +by (Simp_tac 1);
   40.38  by (nat_ind_tac "n" 1);
   40.39 -by (simp_tac natsum_ss 1);
   40.40 -by (asm_simp_tac natsum_ss 1);
   40.41 +by (Simp_tac 1);
   40.42 +by (Asm_simp_tac 1);
   40.43  qed "sum_of_cubes";
   40.44  
   40.45  (*The sum of the first n odd numbers equals n squared.*)
   40.46  goal NatSum.thy "sum (%i.Suc(i+i)) n = n*n";
   40.47  by (nat_ind_tac "n" 1);
   40.48 -by (simp_tac natsum_ss 1);
   40.49 -by (asm_simp_tac natsum_ss 1);
   40.50 +by (Simp_tac 1);
   40.51 +by (Asm_simp_tac 1);
   40.52  qed "sum_of_odds";
   40.53  
    41.1 --- a/src/HOL/ex/Perm.ML	Wed Oct 04 13:11:57 1995 +0100
    41.2 +++ b/src/HOL/ex/Perm.ML	Wed Oct 04 13:12:14 1995 +0100
    41.3 @@ -26,13 +26,13 @@
    41.4  (*The form of the premise lets the induction bind xs and ys.*)
    41.5  goal Perm.thy "!!xs. xs <~~> ys ==> xs=[] --> ys=[]";
    41.6  by (etac perm_induct 1);
    41.7 -by (ALLGOALS (asm_simp_tac (HOL_ss addsimps list.simps)));
    41.8 +by (ALLGOALS Asm_simp_tac);
    41.9  qed "perm_Nil_lemma";
   41.10  
   41.11  (*A more general version is actually easier to understand!*)
   41.12  goal Perm.thy "!!xs. xs <~~> ys ==> length(xs) = length(ys)";
   41.13  by (etac perm_induct 1);
   41.14 -by (ALLGOALS (asm_simp_tac list_ss));
   41.15 +by (ALLGOALS Asm_simp_tac);
   41.16  qed "perm_length";
   41.17  
   41.18  goal Perm.thy "!!xs. xs <~~> ys ==> ys <~~> xs";
   41.19 @@ -43,7 +43,7 @@
   41.20  goal Perm.thy "!!xs. [| xs <~~> ys |] ==> x mem xs --> x mem ys";
   41.21  by (etac perm_induct 1);
   41.22  by (fast_tac HOL_cs 4);
   41.23 -by (ALLGOALS (asm_simp_tac (list_ss setloop split_tac [expand_if])));
   41.24 +by (ALLGOALS (asm_simp_tac (!simpset setloop split_tac [expand_if])));
   41.25  val perm_mem_lemma = result();
   41.26  
   41.27  bind_thm ("perm_mem", perm_mem_lemma RS mp);
   41.28 @@ -53,8 +53,8 @@
   41.29  (*We can insert the head anywhere in the list*)
   41.30  goal Perm.thy "a # xs @ ys <~~> xs @ a # ys";
   41.31  by (list.induct_tac "xs" 1);
   41.32 -by (simp_tac (list_ss addsimps [perm_refl]) 1);
   41.33 -by (simp_tac list_ss 1);
   41.34 +by (simp_tac (!simpset addsimps [perm_refl]) 1);
   41.35 +by (Simp_tac 1);
   41.36  by (etac ([perm.swap, perm.Cons] MRS perm.trans) 1);
   41.37  qed "perm_append_Cons";
   41.38  
   41.39 @@ -66,8 +66,8 @@
   41.40  
   41.41  goal Perm.thy "xs@ys <~~> ys@xs";
   41.42  by (list.induct_tac "xs" 1);
   41.43 -by (simp_tac (list_ss addsimps [perm_refl]) 1);
   41.44 -by (simp_tac list_ss 1);
   41.45 +by (simp_tac (!simpset addsimps [perm_refl]) 1);
   41.46 +by (Simp_tac 1);
   41.47  by (etac ([perm.Cons, perm_append_Cons] MRS perm.trans) 1);
   41.48  qed "perm_append_swap";
   41.49  
   41.50 @@ -75,21 +75,21 @@
   41.51  goal Perm.thy "a # xs <~~> xs @ [a]";
   41.52  by (rtac perm.trans 1);
   41.53  br perm_append_swap 2;
   41.54 -by (simp_tac (list_ss addsimps [perm_refl]) 1);
   41.55 +by (simp_tac (!simpset addsimps [perm_refl]) 1);
   41.56  qed "perm_append_single";
   41.57  
   41.58  goal Perm.thy "rev xs <~~> xs";
   41.59  by (list.induct_tac "xs" 1);
   41.60 -by (simp_tac (list_ss addsimps [perm_refl]) 1);
   41.61 -by (simp_tac list_ss 1);
   41.62 +by (simp_tac (!simpset addsimps [perm_refl]) 1);
   41.63 +by (Simp_tac 1);
   41.64  by (rtac (perm_append_single RS perm_sym RS perm.trans) 1);
   41.65  by (etac perm.Cons 1);
   41.66  qed "perm_rev";
   41.67  
   41.68  goal Perm.thy "!!xs. xs <~~> ys ==> l@xs <~~> l@ys";
   41.69  by (list.induct_tac "l" 1);
   41.70 -by (simp_tac list_ss 1);
   41.71 -by (asm_simp_tac (list_ss addsimps [perm.Cons]) 1);
   41.72 +by (Simp_tac 1);
   41.73 +by (asm_simp_tac (!simpset addsimps [perm.Cons]) 1);
   41.74  qed "perm_append1";
   41.75  
   41.76  goal Perm.thy "!!xs. xs <~~> ys ==> xs@l <~~> ys@l";
    42.1 --- a/src/HOL/ex/PropLog.ML	Wed Oct 04 13:11:57 1995 +0100
    42.2 +++ b/src/HOL/ex/PropLog.ML	Wed Oct 04 13:12:14 1995 +0100
    42.3 @@ -62,29 +62,25 @@
    42.4  
    42.5  (** The function eval **)
    42.6  
    42.7 -val pl_ss = set_ss addsimps
    42.8 -  (PropLog.pl.simps @ [eval2_false, eval2_var, eval2_imp]
    42.9 -               @ [hyps_false, hyps_var, hyps_imp]);
   42.10 -
   42.11  goalw PropLog.thy [eval_def] "tt[false] = False";
   42.12 -by (simp_tac pl_ss 1);
   42.13 +by (Simp_tac 1);
   42.14  qed "eval_false";
   42.15  
   42.16  goalw PropLog.thy [eval_def] "tt[#v] = (v:tt)";
   42.17 -by (simp_tac pl_ss 1);
   42.18 +by (Simp_tac 1);
   42.19  qed "eval_var";
   42.20  
   42.21  goalw PropLog.thy [eval_def] "tt[p->q] = (tt[p]-->tt[q])";
   42.22 -by (simp_tac pl_ss 1);
   42.23 +by (Simp_tac 1);
   42.24  qed "eval_imp";
   42.25  
   42.26 -val pl_ss = pl_ss addsimps [eval_false, eval_var, eval_imp];
   42.27 +Addsimps [eval_false, eval_var, eval_imp];
   42.28  
   42.29  (*Soundness of the rules wrt truth-table semantics*)
   42.30  goalw PropLog.thy [sat_def] "!!H. H |- p ==> H |= p";
   42.31  by (etac thms.induct 1);
   42.32  by (fast_tac (set_cs addSDs [eval_imp RS iffD1 RS mp]) 5);
   42.33 -by (ALLGOALS (asm_simp_tac pl_ss));
   42.34 +by (ALLGOALS Asm_simp_tac);
   42.35  qed "soundness";
   42.36  
   42.37  (*** Towards the completeness proof ***)
   42.38 @@ -109,7 +105,7 @@
   42.39  goal PropLog.thy "hyps p tt |- (if tt[p] then p else p->false)";
   42.40  by (rtac (expand_if RS iffD2) 1);
   42.41  by(PropLog.pl.induct_tac "p" 1);
   42.42 -by (ALLGOALS (simp_tac (pl_ss addsimps [thms_I, thms.H])));
   42.43 +by (ALLGOALS (simp_tac (!simpset addsimps [thms_I, thms.H])));
   42.44  by (fast_tac (set_cs addIs [weaken_left_Un1, weaken_left_Un2, 
   42.45  			   weaken_right, imp_false]
   42.46                      addSEs [false_imp]) 1);
   42.47 @@ -146,9 +142,9 @@
   42.48    we also have hyps(p,t)-{#v} <= hyps(p, t-{v}) *)
   42.49  goal PropLog.thy "hyps p (t-{v}) <= insert (#v->false) ((hyps p t)-{#v})";
   42.50  by (PropLog.pl.induct_tac "p" 1);
   42.51 -by (simp_tac pl_ss 1);
   42.52 -by (simp_tac (pl_ss setloop (split_tac [expand_if])) 1);
   42.53 -by (simp_tac pl_ss 1);
   42.54 +by (Simp_tac 1);
   42.55 +by (simp_tac (!simpset setloop (split_tac [expand_if])) 1);
   42.56 +by (Simp_tac 1);
   42.57  by (fast_tac set_cs 1);
   42.58  qed "hyps_Diff";
   42.59  
   42.60 @@ -156,9 +152,9 @@
   42.61    we also have hyps(p,t)-{#v->false} <= hyps(p, insert(v,t)) *)
   42.62  goal PropLog.thy "hyps p (insert v t) <= insert (#v) (hyps p t-{#v->false})";
   42.63  by (PropLog.pl.induct_tac "p" 1);
   42.64 -by (simp_tac pl_ss 1);
   42.65 -by (simp_tac (pl_ss setloop (split_tac [expand_if])) 1);
   42.66 -by (simp_tac pl_ss 1);
   42.67 +by (Simp_tac 1);
   42.68 +by (simp_tac (!simpset setloop (split_tac [expand_if])) 1);
   42.69 +by (Simp_tac 1);
   42.70  by (fast_tac set_cs 1);
   42.71  qed "hyps_insert";
   42.72  
   42.73 @@ -176,8 +172,8 @@
   42.74   could probably prove the stronger hyps(p,t) : Fin(hyps(p,{}) Un hyps(p,nat))*)
   42.75  goal PropLog.thy "hyps p t : Fin(UN v:{x.True}. {#v, #v->false})";
   42.76  by (PropLog.pl.induct_tac "p" 1);
   42.77 -by (ALLGOALS (simp_tac (pl_ss setloop (split_tac [expand_if])) THEN'
   42.78 -              fast_tac (set_cs addSIs Fin.intrs@[Fin_UnI])));
   42.79 +by (ALLGOALS (simp_tac (!simpset setloop (split_tac [expand_if]))));
   42.80 +by (ALLGOALS (fast_tac (set_cs addSIs Fin.intrs@[Fin_UnI])));
   42.81  qed "hyps_finite";
   42.82  
   42.83  val Diff_weaken_left = subset_refl RSN (2, Diff_mono) RS weaken_left;
   42.84 @@ -187,7 +183,7 @@
   42.85  val [sat] = goal PropLog.thy
   42.86      "{} |= p ==> !t. hyps p t - hyps p t0 |- p";
   42.87  by (rtac (hyps_finite RS Fin_induct) 1);
   42.88 -by (simp_tac (pl_ss addsimps [sat RS sat_thms_p]) 1);
   42.89 +by (simp_tac (!simpset addsimps [sat RS sat_thms_p]) 1);
   42.90  by (safe_tac set_cs);
   42.91  (*Case hyps(p,t)-insert(#v,Y) |- p *)
   42.92  by (rtac thms_excluded_middle_rule 1);
   42.93 @@ -213,7 +209,7 @@
   42.94  
   42.95  (*A semantic analogue of the Deduction Theorem*)
   42.96  val [sat] = goalw PropLog.thy [sat_def] "insert p H |= q ==> H |= p->q";
   42.97 -by (simp_tac pl_ss 1);
   42.98 +by (Simp_tac 1);
   42.99  by (cfast_tac [sat] 1);
  42.100  qed "sat_imp";
  42.101  
    43.1 --- a/src/HOL/ex/Puzzle.ML	Wed Oct 04 13:11:57 1995 +0100
    43.2 +++ b/src/HOL/ex/Puzzle.ML	Wed Oct 04 13:12:14 1995 +0100
    43.3 @@ -16,14 +16,14 @@
    43.4  goal Puzzle.thy "! n. k=f(n) --> n <= f(n)";
    43.5  by (res_inst_tac [("n","k")] less_induct 1);
    43.6  by (rtac nat_exh 1);
    43.7 -by (simp_tac nat_ss 1);
    43.8 +by (Simp_tac 1);
    43.9  by (rtac impI 1);
   43.10  by (rtac classical 1);
   43.11  by (dtac not_leE 1);
   43.12  by (subgoal_tac "f(na) <= f(f(na))" 1);
   43.13  by (best_tac (HOL_cs addIs [lessD,Puzzle.f_ax,le_less_trans,le_trans]) 1);
   43.14  by (fast_tac (HOL_cs addIs [Puzzle.f_ax]) 1);
   43.15 -bind_thm("lemma", result() RS spec RS mp);
   43.16 +val lemma = result() RS spec RS mp;
   43.17  
   43.18  goal Puzzle.thy "n <= f(n)";
   43.19  by (fast_tac (HOL_cs addIs [lemma]) 1);
   43.20 @@ -35,8 +35,8 @@
   43.21  
   43.22  val prems = goal Puzzle.thy "(!!n.f(n) <= f(Suc(n))) ==> m<n --> f(m) <= f(n)";
   43.23  by (res_inst_tac[("n","n")]nat_induct 1);
   43.24 -by (simp_tac nat_ss 1);
   43.25 -by (simp_tac nat_ss 1);
   43.26 +by (Simp_tac 1);
   43.27 +by (Simp_tac 1);
   43.28  by (fast_tac (HOL_cs addIs (le_trans::prems)) 1);
   43.29  bind_thm("mono_lemma1", result() RS mp);
   43.30  
    44.1 --- a/src/HOL/ex/Qsort.ML	Wed Oct 04 13:11:57 1995 +0100
    44.2 +++ b/src/HOL/ex/Qsort.ML	Wed Oct 04 13:12:14 1995 +0100
    44.3 @@ -6,45 +6,45 @@
    44.4  Two verifications of Quicksort
    44.5  *)
    44.6  
    44.7 -val ss = sorting_ss addsimps ([Qsort.qsort_Nil,Qsort.qsort_Cons]@conj_comms);
    44.8 +Addsimps ([Qsort.qsort_Nil,Qsort.qsort_Cons]@conj_comms);
    44.9  
   44.10  goal Qsort.thy "!x. mset (qsort le xs) x = mset xs x";
   44.11  by(res_inst_tac[("xs","xs"),("p","le")]Qsort.qsort_ind 1);
   44.12 -by(ALLGOALS(asm_simp_tac (ss setloop (split_tac [expand_if]))));
   44.13 +by(ALLGOALS(asm_simp_tac (!simpset setloop (split_tac [expand_if]))));
   44.14  result();
   44.15  
   44.16  
   44.17  goal Qsort.thy "(Alls x:[x:xs.P(x)].Q(x)) = (Alls x:xs. P(x)-->Q(x))";
   44.18  by(list.induct_tac "xs" 1);
   44.19 -by(ALLGOALS(asm_simp_tac (ss setloop (split_tac [expand_if]))));
   44.20 -val ss = ss addsimps [result()];
   44.21 +by(ALLGOALS(asm_simp_tac (!simpset setloop (split_tac [expand_if]))));
   44.22 +Addsimps [result()];
   44.23  
   44.24  goal Qsort.thy
   44.25   "((Alls x:xs.P(x)) & (Alls x:xs.Q(x))) = (Alls x:xs. P(x)&Q(x))";
   44.26  by(list.induct_tac "xs" 1);
   44.27 -by(ALLGOALS(asm_simp_tac ss));
   44.28 -val ss = ss addsimps [result()];
   44.29 +by(ALLGOALS Asm_simp_tac);
   44.30 +Addsimps [result()];
   44.31  
   44.32  goal HOL.thy "((~P --> Q) & (P --> Q)) = Q";
   44.33  by(fast_tac HOL_cs 1);
   44.34 -qed "lemma";
   44.35 +val lemma = result();
   44.36  
   44.37  goal Qsort.thy "(Alls x:qsort le xs.P(x))  =  (Alls x:xs.P(x))";
   44.38  by(res_inst_tac[("xs","xs"),("p","le")]Qsort.qsort_ind 1);
   44.39 -by(ALLGOALS(asm_simp_tac (ss addsimps [lemma])));
   44.40 -val ss = ss addsimps [result()];
   44.41 +by(ALLGOALS(asm_simp_tac (!simpset addsimps [lemma])));
   44.42 +Addsimps [result()];
   44.43  
   44.44  goal Qsort.thy
   44.45   "sorted le (xs@ys) = (sorted le xs & sorted le ys & \
   44.46  \                     (Alls x:xs. Alls y:ys. le x y))";
   44.47  by(list.induct_tac "xs" 1);
   44.48 -by(ALLGOALS(asm_simp_tac ss));
   44.49 -val ss = ss addsimps [result()];
   44.50 +by(ALLGOALS Asm_simp_tac);
   44.51 +Addsimps [result()];
   44.52  
   44.53  goal Qsort.thy 
   44.54   "!!le. [| total(le); transf(le) |] ==>  sorted le (qsort le xs)";
   44.55  by(res_inst_tac[("xs","xs"),("p","le")]Qsort.qsort_ind 1);
   44.56 -by(ALLGOALS(asm_full_simp_tac (ss addsimps [list_all_mem_conv]) ));
   44.57 +by(ALLGOALS(asm_full_simp_tac (!simpset addsimps [list_all_mem_conv]) ));
   44.58  by(rewrite_goals_tac [Sorting.total_def,Sorting.transf_def]);
   44.59  by(fast_tac HOL_cs 1);
   44.60  result();
   44.61 @@ -55,30 +55,28 @@
   44.62  val sorted_Cons =
   44.63    rewrite_rule [list_all_mem_conv RS eq_reflection] Sorting.sorted_Cons;
   44.64  
   44.65 -val ss = list_ss addsimps
   44.66 - [Sorting.sorted_Nil,sorted_Cons,
   44.67 -  Qsort.qsort_Nil,Qsort.qsort_Cons];
   44.68 +Addsimps [sorted_Cons];
   44.69  
   44.70  
   44.71  goal Qsort.thy "x mem qsort le xs = x mem xs";
   44.72  by(res_inst_tac[("xs","xs"),("p","le")]Qsort.qsort_ind 1);
   44.73 -by(ALLGOALS(asm_simp_tac (ss setloop (split_tac [expand_if]))));
   44.74 +by(ALLGOALS(asm_simp_tac (!simpset setloop (split_tac [expand_if]))));
   44.75  by(fast_tac HOL_cs 1);
   44.76 -val ss = ss addsimps [result()];
   44.77 +Addsimps [result()];
   44.78  
   44.79  goal Qsort.thy
   44.80   "sorted le (xs@ys) = (sorted le xs & sorted le ys & \
   44.81  \                     (!x. x mem xs --> (!y. y mem ys --> le x y)))";
   44.82  by(list.induct_tac "xs" 1);
   44.83 -by(ALLGOALS(asm_simp_tac (ss setloop (split_tac [expand_if]))));
   44.84 +by(ALLGOALS(asm_simp_tac (!simpset setloop (split_tac [expand_if]))));
   44.85  by(fast_tac HOL_cs 1);
   44.86 -val ss = ss addsimps [result()];
   44.87 +Addsimps [result()];
   44.88  
   44.89  goal Qsort.thy
   44.90    "!!xs. [| total(le); transf(le) |] ==>  sorted le (qsort le xs)";
   44.91  by(res_inst_tac[("xs","xs"),("p","le")]Qsort.qsort_ind 1);
   44.92 -by(simp_tac ss 1);
   44.93 -by(asm_full_simp_tac (ss setloop (split_tac [expand_if])) 1);
   44.94 +by(Simp_tac 1);
   44.95 +by(asm_full_simp_tac (!simpset setloop (split_tac [expand_if])) 1);
   44.96  by(rewrite_goals_tac [Sorting.total_def,Sorting.transf_def]);
   44.97  by(fast_tac HOL_cs 1);
   44.98  result();
    45.1 --- a/src/HOL/ex/SList.ML	Wed Oct 04 13:11:57 1995 +0100
    45.2 +++ b/src/HOL/ex/SList.ML	Wed Oct 04 13:12:14 1995 +0100
    45.3 @@ -40,11 +40,11 @@
    45.4  by (rtac (Rep_list RS list.induct) 1);
    45.5  by (REPEAT (ares_tac prems 1
    45.6       ORELSE eresolve_tac [rangeE, ssubst, Abs_list_inverse RS subst] 1));
    45.7 -qed "list_induct";
    45.8 +qed "list_induct2";
    45.9  
   45.10  (*Perform induction on xs. *)
   45.11  fun list_ind_tac a M = 
   45.12 -    EVERY [res_inst_tac [("l",a)] list_induct M,
   45.13 +    EVERY [res_inst_tac [("l",a)] list_induct2 M,
   45.14  	   rename_last_tac a ["1"] (M+1)];
   45.15  
   45.16  (*** Isomorphisms ***)
   45.17 @@ -76,8 +76,8 @@
   45.18  
   45.19  bind_thm ("Nil_not_Cons", (Cons_not_Nil RS not_sym));
   45.20  
   45.21 -bind_thm ("Cons_neq_Nil", (Cons_not_Nil RS notE));
   45.22 -val Nil_neq_Cons = sym RS Cons_neq_Nil;
   45.23 +bind_thm ("Cons_neq_Nil2", (Cons_not_Nil RS notE));
   45.24 +val Nil_neq_Cons = sym RS Cons_neq_Nil2;
   45.25  
   45.26  (** Injectiveness of CONS and Cons **)
   45.27  
   45.28 @@ -96,7 +96,7 @@
   45.29  goalw SList.thy [Cons_def] "(x#xs=y#ys) = (x=y & xs=ys)";
   45.30  by (fast_tac list_cs 1);
   45.31  qed "Cons_Cons_eq";
   45.32 -bind_thm ("Cons_inject", (Cons_Cons_eq RS iffD1 RS conjE));
   45.33 +bind_thm ("Cons_inject2", (Cons_Cons_eq RS iffD1 RS conjE));
   45.34  
   45.35  val [major] = goal SList.thy "CONS M N: list(A) ==> M: A & N: list(A)";
   45.36  by (rtac (major RS setup_induction) 1);
   45.37 @@ -112,28 +112,26 @@
   45.38  
   45.39  
   45.40  (*Basic ss with constructors and their freeness*)
   45.41 -val list_free_simps = [Cons_not_Nil, Nil_not_Cons, Cons_Cons_eq,
   45.42 -		       CONS_not_NIL, NIL_not_CONS, CONS_CONS_eq]
   45.43 -                      @ list.intrs;
   45.44 -val list_free_ss = HOL_ss  addsimps  list_free_simps;
   45.45 +Addsimps ([Cons_not_Nil, Nil_not_Cons, Cons_Cons_eq, CONS_not_NIL,
   45.46 +           NIL_not_CONS, CONS_CONS_eq] @ list.intrs);
   45.47  
   45.48  goal SList.thy "!!N. N: list(A) ==> !M. N ~= CONS M N";
   45.49  by (etac list.induct 1);
   45.50 -by (ALLGOALS (asm_simp_tac list_free_ss));
   45.51 +by (ALLGOALS Asm_simp_tac);
   45.52  qed "not_CONS_self";
   45.53  
   45.54  goal SList.thy "!x. l ~= x#l";
   45.55  by (list_ind_tac "l" 1);
   45.56 -by (ALLGOALS (asm_simp_tac list_free_ss));
   45.57 -qed "not_Cons_self";
   45.58 +by (ALLGOALS Asm_simp_tac);
   45.59 +qed "not_Cons_self2";
   45.60  
   45.61  
   45.62  goal SList.thy "(xs ~= []) = (? y ys. xs = y#ys)";
   45.63  by(list_ind_tac "xs" 1);
   45.64 -by(simp_tac list_free_ss 1);
   45.65 -by(asm_simp_tac list_free_ss 1);
   45.66 +by(Simp_tac 1);
   45.67 +by(Asm_simp_tac 1);
   45.68  by(REPEAT(resolve_tac [exI,refl,conjI] 1));
   45.69 -qed "neq_Nil_conv";
   45.70 +qed "neq_Nil_conv2";
   45.71  
   45.72  (** Conversion rules for List_case: case analysis operator **)
   45.73  
   45.74 @@ -142,7 +140,7 @@
   45.75  qed "List_case_NIL";
   45.76  
   45.77  goalw SList.thy [List_case_def,CONS_def]  "List_case c h (CONS M N) = h M N";
   45.78 -by (simp_tac (HOL_ss addsimps [Split,Case_In1]) 1);
   45.79 +by (simp_tac (!simpset addsimps [Split,Case_In1]) 1);
   45.80  qed "List_case_CONS";
   45.81  
   45.82  (*** List_rec -- by wf recursion on pred_sexp ***)
   45.83 @@ -157,12 +155,12 @@
   45.84  
   45.85  goalw SList.thy [CONS_def,In1_def]
   45.86      "!!M. [| M: sexp;  N: sexp |] ==> (M, CONS M N) : pred_sexp^+";
   45.87 -by (asm_simp_tac pred_sexp_ss 1);
   45.88 +by (Asm_simp_tac 1);
   45.89  qed "pred_sexp_CONS_I1";
   45.90  
   45.91  goalw SList.thy [CONS_def,In1_def]
   45.92      "!!M. [| M: sexp;  N: sexp |] ==> (N, CONS M N) : pred_sexp^+";
   45.93 -by (asm_simp_tac pred_sexp_ss 1);
   45.94 +by (Asm_simp_tac 1);
   45.95  qed "pred_sexp_CONS_I2";
   45.96  
   45.97  val [prem] = goal SList.thy
   45.98 @@ -179,15 +177,13 @@
   45.99  
  45.100  goal SList.thy "List_rec NIL c h = c";
  45.101  by (rtac (List_rec_unfold RS trans) 1);
  45.102 -by (simp_tac (HOL_ss addsimps [List_case_NIL]) 1);
  45.103 +by (simp_tac (!simpset addsimps [List_case_NIL]) 1);
  45.104  qed "List_rec_NIL";
  45.105  
  45.106  goal SList.thy "!!M. [| M: sexp;  N: sexp |] ==> \
  45.107  \    List_rec (CONS M N) c h = h M N (List_rec N c h)";
  45.108  by (rtac (List_rec_unfold RS trans) 1);
  45.109 -by (asm_simp_tac
  45.110 -    (HOL_ss addsimps [List_case_CONS, list.CONS_I, pred_sexp_CONS_I2, 
  45.111 -		      cut_apply])1);
  45.112 +by (asm_simp_tac (!simpset addsimps [List_case_CONS, pred_sexp_CONS_I2]) 1);
  45.113  qed "List_rec_CONS";
  45.114  
  45.115  (*** list_rec -- by List_rec ***)
  45.116 @@ -196,24 +192,21 @@
  45.117      [range_Leaf_subset_sexp RS list_subset_sexp, Rep_list] MRS subsetD;
  45.118  
  45.119  local
  45.120 -  val list_rec_simps = list_free_simps @
  45.121 -	          [List_rec_NIL, List_rec_CONS, 
  45.122 -		   Abs_list_inverse, Rep_list_inverse,
  45.123 -		   Rep_list, rangeI, inj_Leaf, Inv_f_f,
  45.124 -		   sexp.LeafI, Rep_list_in_sexp]
  45.125 +  val list_rec_simps = [List_rec_NIL, List_rec_CONS, 
  45.126 +                        Abs_list_inverse, Rep_list_inverse,
  45.127 +                        Rep_list, rangeI, inj_Leaf, Inv_f_f,
  45.128 +                        sexp.LeafI, Rep_list_in_sexp]
  45.129  in
  45.130    val list_rec_Nil = prove_goalw SList.thy [list_rec_def, Nil_def]
  45.131        "list_rec Nil c h = c"
  45.132 -   (fn _=> [simp_tac (HOL_ss addsimps list_rec_simps) 1]);
  45.133 +   (fn _=> [simp_tac (!simpset addsimps list_rec_simps) 1]);
  45.134  
  45.135    val list_rec_Cons = prove_goalw SList.thy [list_rec_def, Cons_def]
  45.136        "list_rec (a#l) c h = h a l (list_rec l c h)"
  45.137 -   (fn _=> [simp_tac (HOL_ss addsimps list_rec_simps) 1]);
  45.138 +   (fn _=> [simp_tac (!simpset addsimps list_rec_simps) 1]);
  45.139  end;
  45.140  
  45.141 -val list_simps = [List_rec_NIL, List_rec_CONS,
  45.142 -		  list_rec_Nil, list_rec_Cons];
  45.143 -val list_ss = list_free_ss addsimps list_simps;
  45.144 +Addsimps [List_rec_NIL, List_rec_CONS, list_rec_Nil, list_rec_Cons];
  45.145  
  45.146  
  45.147  (*Type checking.  Useful?*)
  45.148 @@ -226,7 +219,7 @@
  45.149  val sexp_ListA_I = A_subset_sexp RS list_subset_sexp RS subsetD;
  45.150  val sexp_A_I = A_subset_sexp RS subsetD;
  45.151  by (rtac (major RS list.induct) 1);
  45.152 -by (ALLGOALS(asm_simp_tac (list_ss addsimps ([sexp_A_I,sexp_ListA_I]@prems))));
  45.153 +by (ALLGOALS(asm_simp_tac (!simpset addsimps ([sexp_A_I,sexp_ListA_I]@prems))));
  45.154  qed "List_rec_type";
  45.155  
  45.156  (** Generalized map functionals **)
  45.157 @@ -241,8 +234,8 @@
  45.158  qed "Rep_map_Cons";
  45.159  
  45.160  goalw SList.thy [Rep_map_def] "!!f. (!!x. f(x): A) ==> Rep_map f xs: list(A)";
  45.161 -by (rtac list_induct 1);
  45.162 -by(ALLGOALS(asm_simp_tac list_ss));
  45.163 +by (rtac list_induct2 1);
  45.164 +by(ALLGOALS Asm_simp_tac);
  45.165  qed "Rep_map_type";
  45.166  
  45.167  goalw SList.thy [Abs_map_def] "Abs_map g NIL = Nil";
  45.168 @@ -278,20 +271,18 @@
  45.169  val [_,hd_Cons] = list_recs hd_def;
  45.170  val [_,tl_Cons] = list_recs tl_def;
  45.171  val [ttl_Nil,ttl_Cons] = list_recs ttl_def;
  45.172 -val [append_Nil,append_Cons] = list_recs append_def;
  45.173 +val [append_Nil3,append_Cons] = list_recs append_def;
  45.174  val [mem_Nil, mem_Cons] = list_recs mem_def;
  45.175  val [map_Nil,map_Cons] = list_recs map_def;
  45.176  val [list_case_Nil,list_case_Cons] = list_recs list_case_def;
  45.177  val [filter_Nil,filter_Cons] = list_recs filter_def;
  45.178  val [list_all_Nil,list_all_Cons] = list_recs list_all_def;
  45.179  
  45.180 -val list_ss = arith_ss addsimps
  45.181 -  [Cons_not_Nil, Nil_not_Cons, Cons_Cons_eq,
  45.182 -   list_rec_Nil, list_rec_Cons,
  45.183 -   null_Nil, null_Cons, hd_Cons, tl_Cons, ttl_Nil, ttl_Cons,
  45.184 +Addsimps
  45.185 +  [null_Nil, ttl_Nil,
  45.186     mem_Nil, mem_Cons,
  45.187     list_case_Nil, list_case_Cons,
  45.188 -   append_Nil, append_Cons,
  45.189 +   append_Nil3, append_Cons,
  45.190     map_Nil, map_Cons,
  45.191     list_all_Nil, list_all_Cons,
  45.192     filter_Nil, filter_Cons];
  45.193 @@ -301,57 +292,54 @@
  45.194  
  45.195  goal SList.thy "(xs@ys)@zs = xs@(ys@zs)";
  45.196  by(list_ind_tac "xs" 1);
  45.197 -by(ALLGOALS(asm_simp_tac list_ss));
  45.198 -qed "append_assoc";
  45.199 +by(ALLGOALS Asm_simp_tac);
  45.200 +qed "append_assoc2";
  45.201  
  45.202  goal SList.thy "xs @ [] = xs";
  45.203  by(list_ind_tac "xs" 1);
  45.204 -by(ALLGOALS(asm_simp_tac list_ss));
  45.205 -qed "append_Nil2";
  45.206 +by(ALLGOALS Asm_simp_tac);
  45.207 +qed "append_Nil4";
  45.208  
  45.209  (** mem **)
  45.210  
  45.211  goal SList.thy "x mem (xs@ys) = (x mem xs | x mem ys)";
  45.212  by(list_ind_tac "xs" 1);
  45.213 -by(ALLGOALS(asm_simp_tac (list_ss setloop (split_tac [expand_if]))));
  45.214 -qed "mem_append";
  45.215 +by(ALLGOALS(asm_simp_tac (!simpset setloop (split_tac [expand_if]))));
  45.216 +qed "mem_append2";
  45.217  
  45.218  goal SList.thy "x mem [x:xs.P(x)] = (x mem xs & P(x))";
  45.219  by(list_ind_tac "xs" 1);
  45.220 -by(ALLGOALS(asm_simp_tac (list_ss setloop (split_tac [expand_if]))));
  45.221 -qed "mem_filter";
  45.222 +by(ALLGOALS(asm_simp_tac (!simpset setloop (split_tac [expand_if]))));
  45.223 +qed "mem_filter2";
  45.224  
  45.225  (** list_all **)
  45.226  
  45.227  goal SList.thy "(Alls x:xs.True) = True";
  45.228  by(list_ind_tac "xs" 1);
  45.229 -by(ALLGOALS(asm_simp_tac list_ss));
  45.230 -qed "list_all_True";
  45.231 +by(ALLGOALS Asm_simp_tac);
  45.232 +qed "list_all_True2";
  45.233  
  45.234  goal SList.thy "list_all p (xs@ys) = (list_all p xs & list_all p ys)";
  45.235  by(list_ind_tac "xs" 1);
  45.236 -by(ALLGOALS(asm_simp_tac list_ss));
  45.237 -qed "list_all_conj";
  45.238 +by(ALLGOALS Asm_simp_tac);
  45.239 +qed "list_all_conj2";
  45.240  
  45.241  goal SList.thy "(Alls x:xs.P(x)) = (!x. x mem xs --> P(x))";
  45.242  by(list_ind_tac "xs" 1);
  45.243 -by(ALLGOALS(asm_simp_tac (list_ss setloop (split_tac [expand_if]))));
  45.244 +by(ALLGOALS(asm_simp_tac (!simpset setloop (split_tac [expand_if]))));
  45.245  by(fast_tac HOL_cs 1);
  45.246 -qed "list_all_mem_conv";
  45.247 +qed "list_all_mem_conv2";
  45.248  
  45.249  
  45.250  (** The functional "map" **)
  45.251  
  45.252 -val map_simps = [Abs_map_NIL, Abs_map_CONS, 
  45.253 -		 Rep_map_Nil, Rep_map_Cons, 
  45.254 -		 map_Nil, map_Cons];
  45.255 -val map_ss = list_free_ss addsimps map_simps;
  45.256 +Addsimps [Rep_map_Nil, Rep_map_Cons, Abs_map_NIL, Abs_map_CONS];
  45.257  
  45.258  val [major,A_subset_sexp,minor] = goal SList.thy 
  45.259      "[| M: list(A);  A<=sexp;  !!z. z: A ==> f(g(z)) = z |] \
  45.260  \    ==> Rep_map f (Abs_map g M) = M";
  45.261  by (rtac (major RS list.induct) 1);
  45.262 -by (ALLGOALS (asm_simp_tac(map_ss addsimps [sexp_A_I,sexp_ListA_I,minor])));
  45.263 +by (ALLGOALS (asm_simp_tac (!simpset addsimps [sexp_A_I,sexp_ListA_I,minor])));
  45.264  qed "Abs_map_inverse";
  45.265  
  45.266  (*Rep_map_inverse is obtained via Abs_Rep_map and map_ident*)
  45.267 @@ -362,36 +350,33 @@
  45.268   "P(list_case a f xs) = ((xs=[] --> P(a)) & \
  45.269  \                        (!y ys. xs=y#ys --> P(f y ys)))";
  45.270  by(list_ind_tac "xs" 1);
  45.271 -by(ALLGOALS(asm_simp_tac list_ss));
  45.272 +by(ALLGOALS Asm_simp_tac);
  45.273  by(fast_tac HOL_cs 1);
  45.274 -qed "expand_list_case";
  45.275 +qed "expand_list_case2";
  45.276  
  45.277  
  45.278  (** Additional mapping lemmas **)
  45.279  
  45.280  goal SList.thy "map (%x.x) xs = xs";
  45.281  by (list_ind_tac "xs" 1);
  45.282 -by (ALLGOALS (asm_simp_tac map_ss));
  45.283 -qed "map_ident";
  45.284 +by (ALLGOALS Asm_simp_tac);
  45.285 +qed "map_ident2";
  45.286  
  45.287  goal SList.thy "map f (xs@ys) = map f xs @ map f ys";
  45.288  by (list_ind_tac "xs" 1);
  45.289 -by (ALLGOALS (asm_simp_tac (map_ss addsimps [append_Nil,append_Cons])));
  45.290 -qed "map_append";
  45.291 +by (ALLGOALS Asm_simp_tac);
  45.292 +qed "map_append2";
  45.293  
  45.294  goalw SList.thy [o_def] "map (f o g) xs = map f (map g xs)";
  45.295  by (list_ind_tac "xs" 1);
  45.296 -by (ALLGOALS (asm_simp_tac map_ss));
  45.297 -qed "map_compose";
  45.298 +by (ALLGOALS Asm_simp_tac);
  45.299 +qed "map_compose2";
  45.300  
  45.301  goal SList.thy "!!f. (!!x. f(x): sexp) ==> \
  45.302  \	Abs_map g (Rep_map f xs) = map (%t. g(f(t))) xs";
  45.303  by (list_ind_tac "xs" 1);
  45.304 -by(ALLGOALS(asm_simp_tac(map_ss addsimps
  45.305 +by(ALLGOALS(asm_simp_tac(!simpset addsimps
  45.306         [Rep_map_type,list_sexp RS subsetD])));
  45.307  qed "Abs_Rep_map";
  45.308  
  45.309 -val list_ss = list_ss addsimps
  45.310 -  [mem_append, mem_filter, append_assoc, append_Nil2, map_ident,
  45.311 -   list_all_True, list_all_conj];
  45.312 -
  45.313 +Addsimps [append_Nil4, map_ident2];
    46.1 --- a/src/HOL/ex/SList.thy	Wed Oct 04 13:11:57 1995 +0100
    46.2 +++ b/src/HOL/ex/SList.thy	Wed Oct 04 13:12:14 1995 +0100
    46.3 @@ -105,16 +105,16 @@
    46.4    hd_def        "hd(xs)              == list_rec xs (@x.True) (%x xs r.x)"
    46.5    tl_def        "tl(xs)              == list_rec xs (@xs.True) (%x xs r.xs)"
    46.6    (* a total version of tl: *)
    46.7 -  ttl_def	"ttl(xs)             == list_rec xs [] (%x xs r.xs)"
    46.8 +  ttl_def 	"ttl(xs)             == list_rec xs [] (%x xs r.xs)"
    46.9  
   46.10 -  mem_def	"x mem xs            == 
   46.11 +  mem_def 	"x mem xs            == 
   46.12  		   list_rec xs False (%y ys r. if y=x then True else r)"
   46.13    list_all_def  "list_all P xs       == list_rec xs True (%x l r. P(x) & r)"
   46.14    map_def       "map f xs            == list_rec xs [] (%x l r. f(x)#r)"
   46.15 -  append_def	"xs@ys               == list_rec xs ys (%x l r. x#r)"
   46.16 -  filter_def	"filter P xs         == 
   46.17 +  append_def 	"xs@ys               == list_rec xs ys (%x l r. x#r)"
   46.18 +  filter_def 	"filter P xs         == 
   46.19                    list_rec xs [] (%x xs r. if P(x) then x#r else r)"
   46.20  
   46.21 -  list_case_def "list_case a f xs == list_rec xs a (%x xs r.f x xs)"
   46.22 +  list_case_def  "list_case a f xs == list_rec xs a (%x xs r.f x xs)"
   46.23  
   46.24  end
    47.1 --- a/src/HOL/ex/Simult.ML	Wed Oct 04 13:11:57 1995 +0100
    47.2 +++ b/src/HOL/ex/Simult.ML	Wed Oct 04 13:12:14 1995 +0100
    47.3 @@ -236,8 +236,8 @@
    47.4      "!!M N. [| M: sexp;  N: sexp |] ==> 	\
    47.5  \           TF_rec (TCONS M N) b c d = b M N (TF_rec N b c d)";
    47.6  by (rtac (TF_rec_unfold RS trans) 1);
    47.7 -by (simp_tac (HOL_ss addsimps [Case_In0, Split]) 1);
    47.8 -by (asm_simp_tac (pred_sexp_ss addsimps [In0_def]) 1);
    47.9 +by (simp_tac (!simpset addsimps [Case_In0, Split]) 1);
   47.10 +by (asm_simp_tac (!simpset addsimps [In0_def]) 1);
   47.11  qed "TF_rec_TCONS";
   47.12  
   47.13  goalw Simult.thy [FNIL_def] "TF_rec FNIL b c d = c";
   47.14 @@ -250,7 +250,7 @@
   47.15  \        TF_rec (FCONS M N) b c d = d M N (TF_rec M b c d) (TF_rec N b c d)";
   47.16  by (rtac (TF_rec_unfold RS trans) 1);
   47.17  by (simp_tac (HOL_ss addsimps [Case_In1, List_case_CONS]) 1);
   47.18 -by (asm_simp_tac (pred_sexp_ss addsimps [CONS_def,In1_def]) 1);
   47.19 +by (asm_simp_tac (!simpset addsimps [CONS_def,In1_def]) 1);
   47.20  qed "TF_rec_FCONS";
   47.21  
   47.22  
   47.23 @@ -263,13 +263,13 @@
   47.24      [range_Leaf_subset_sexp RS TF_subset_sexp RS (Part_subset RS subset_trans),
   47.25       Rep_Forest] MRS subsetD;
   47.26  
   47.27 -val tf_rec_simps = [TF_rec_TCONS, TF_rec_FNIL, TF_rec_FCONS,
   47.28 -		    TCONS_I, FNIL_I, FCONS_I, Rep_Tree, Rep_Forest,
   47.29 -		    Rep_Tree_inverse, Rep_Forest_inverse,
   47.30 -		    Abs_Tree_inverse, Abs_Forest_inverse,
   47.31 -		    inj_Leaf, Inv_f_f, sexp.LeafI, range_eqI,
   47.32 -		    Rep_Tree_in_sexp, Rep_Forest_in_sexp];
   47.33 -val tf_rec_ss = HOL_ss addsimps tf_rec_simps;
   47.34 +val tf_rec_ss = HOL_ss addsimps
   47.35 +  [TF_rec_TCONS, TF_rec_FNIL, TF_rec_FCONS,
   47.36 +   TCONS_I, FNIL_I, FCONS_I, Rep_Tree, Rep_Forest,
   47.37 +   Rep_Tree_inverse, Rep_Forest_inverse,
   47.38 +   Abs_Tree_inverse, Abs_Forest_inverse,
   47.39 +   inj_Leaf, Inv_f_f, sexp.LeafI, range_eqI,
   47.40 +   Rep_Tree_in_sexp, Rep_Forest_in_sexp];
   47.41  
   47.42  goalw Simult.thy [tree_rec_def, forest_rec_def, Tcons_def]
   47.43      "tree_rec (Tcons a tf) b c d = b a tf (forest_rec tf b c d)";
    48.1 --- a/src/HOL/ex/Sorting.ML	Wed Oct 04 13:11:57 1995 +0100
    48.2 +++ b/src/HOL/ex/Sorting.ML	Wed Oct 04 13:12:14 1995 +0100
    48.3 @@ -6,21 +6,19 @@
    48.4  Some general lemmas
    48.5  *)
    48.6  
    48.7 -val sorting_ss = list_ss addsimps
    48.8 -      [Sorting.mset_Nil,Sorting.mset_Cons,
    48.9 -       Sorting.sorted_Nil,Sorting.sorted_Cons,
   48.10 -       Sorting.sorted1_Nil,Sorting.sorted1_One,Sorting.sorted1_Cons];
   48.11 +Addsimps [Sorting.mset_Nil,Sorting.mset_Cons,
   48.12 +          Sorting.sorted_Nil,Sorting.sorted_Cons,
   48.13 +          Sorting.sorted1_Nil,Sorting.sorted1_One,Sorting.sorted1_Cons];
   48.14  
   48.15  goal Sorting.thy "!x.mset (xs@ys) x = mset xs x + mset ys x";
   48.16  by(list.induct_tac "xs" 1);
   48.17 -by(ALLGOALS(asm_simp_tac (sorting_ss setloop (split_tac [expand_if]))));
   48.18 +by(ALLGOALS(asm_simp_tac (!simpset setloop (split_tac [expand_if]))));
   48.19  qed "mset_app_distr";
   48.20  
   48.21  goal Sorting.thy "!x. mset [x:xs. ~p(x)] x + mset [x:xs.p(x)] x = \
   48.22  \                     mset xs x";
   48.23  by(list.induct_tac "xs" 1);
   48.24 -by(ALLGOALS(asm_simp_tac (sorting_ss setloop (split_tac [expand_if]))));
   48.25 +by(ALLGOALS(asm_simp_tac (!simpset setloop (split_tac [expand_if]))));
   48.26  qed "mset_compl_add";
   48.27  
   48.28 -val sorting_ss = sorting_ss addsimps
   48.29 -      [mset_app_distr, mset_compl_add];
   48.30 +Addsimps [mset_app_distr, mset_compl_add];
    49.1 --- a/src/HOL/ex/String.ML	Wed Oct 04 13:11:57 1995 +0100
    49.2 +++ b/src/HOL/ex/String.ML	Wed Oct 04 13:12:14 1995 +0100
    49.3 @@ -1,22 +1,20 @@
    49.4 -val string_ss = list_ss addsimps (String.nibble.simps @ String.char.simps);
    49.5 -
    49.6  goal String.thy "hd(''ABCD'') = CHR ''A''";
    49.7 -by(simp_tac string_ss 1);
    49.8 +by(Simp_tac 1);
    49.9  result();
   49.10  
   49.11  goal String.thy "hd(''ABCD'') ~= CHR ''B''";
   49.12 -by(simp_tac string_ss 1);
   49.13 +by(Simp_tac 1);
   49.14  result();
   49.15  
   49.16  goal String.thy "''ABCD'' ~= ''ABCX''";
   49.17 -by(simp_tac string_ss 1);
   49.18 +by(Simp_tac 1);
   49.19  result();
   49.20  
   49.21  goal String.thy "''ABCD'' = ''ABCD''";
   49.22 -by(simp_tac string_ss 1);
   49.23 +by(Simp_tac 1);
   49.24  result();
   49.25  
   49.26  goal String.thy
   49.27    "''ABCDEFGHIJKLMNOPQRSTUVWXYZ'' ~= ''ABCDEFGHIJKLMNOPQRSTUVWXY''";
   49.28 -by(simp_tac string_ss 1);
   49.29 +by(Simp_tac 1);
   49.30  result();
    50.1 --- a/src/HOL/ex/Term.ML	Wed Oct 04 13:11:57 1995 +0100
    50.2 +++ b/src/HOL/ex/Term.ML	Wed Oct 04 13:12:14 1995 +0100
    50.3 @@ -60,8 +60,6 @@
    50.4  
    50.5  (*** Structural Induction on the abstract type 'a term ***)
    50.6  
    50.7 -val list_all_ss = map_ss addsimps [list_all_Nil, list_all_Cons];
    50.8 -
    50.9  val Rep_term_in_sexp =
   50.10      Rep_term RS (range_Leaf_subset_sexp RS term_subset_sexp RS subsetD);
   50.11  
   50.12 @@ -89,7 +87,7 @@
   50.13  by (etac rev_subsetD 2);
   50.14  by (rtac list_subset_sexp 2);
   50.15  by (fast_tac set_cs 2);
   50.16 -by (ALLGOALS (asm_simp_tac list_all_ss));
   50.17 +by (ALLGOALS Asm_simp_tac);
   50.18  qed "term_induct";
   50.19  
   50.20  (*Induction for the abstract type 'a term*)
   50.21 @@ -99,8 +97,8 @@
   50.22  \    |] ==> R(t)";
   50.23  by (rtac term_induct 1);  (*types force good instantiation*)
   50.24  by (etac rev_mp 1);
   50.25 -by (rtac list_induct 1);  (*types force good instantiation*)
   50.26 -by (ALLGOALS (asm_simp_tac (list_all_ss addsimps prems)));
   50.27 +by (rtac list_induct2 1);  (*types force good instantiation*)
   50.28 +by (ALLGOALS (asm_simp_tac (!simpset addsimps prems)));
   50.29  qed "term_induct2";
   50.30  
   50.31  (*Perform induction on xs. *)
   50.32 @@ -123,10 +121,10 @@
   50.33  \        Abs_map (cut h (pred_sexp^+) M) N = \
   50.34  \        Abs_map h N";
   50.35  by (rtac (prem RS list.induct) 1);
   50.36 -by (simp_tac list_all_ss 1);
   50.37 +by (Simp_tac 1);
   50.38  by (strip_tac 1);
   50.39  by (etac (pred_sexp_CONS_D RS conjE) 1);
   50.40 -by (asm_simp_tac (list_all_ss addsimps [trancl_pred_sexpD1, cut_apply]) 1);
   50.41 +by (asm_simp_tac (!simpset addsimps [trancl_pred_sexpD1]) 1);
   50.42  qed "Abs_map_lemma";
   50.43  
   50.44  val [prem1,prem2,A_subset_sexp] = goal Term.thy
   50.45 @@ -137,7 +135,7 @@
   50.46        [Split,
   50.47         prem2 RS Abs_map_lemma RS spec RS mp, pred_sexpI2 RS r_into_trancl,
   50.48         prem1, prem2 RS rev_subsetD, list_subset_sexp,
   50.49 -       term_subset_sexp, A_subset_sexp])1);
   50.50 +       term_subset_sexp, A_subset_sexp]) 1);
   50.51  qed "Term_rec";
   50.52  
   50.53  (*** term_rec -- by Term_rec ***)
   50.54 @@ -150,11 +148,10 @@
   50.55  
   50.56    (*Now avoids conditional rewriting with the premise N: list(term(A)),
   50.57      since A will be uninstantiated and will cause rewriting to fail. *)
   50.58 -  val term_rec_ss = HOL_ss 
   50.59 +  val term_rec_ss = HOL_ss
   50.60        addsimps [Rep_Tlist RS (rangeI RS term.APP_I RS Abs_term_inverse),  
   50.61 -	       Rep_term_in_sexp, Rep_Term_rec, Rep_term_inverse,
   50.62 -	       inj_Leaf, Inv_f_f,
   50.63 -	       Abs_Rep_map, map_ident, sexp.LeafI]
   50.64 +                Rep_term_in_sexp, Rep_Term_rec, Rep_term_inverse, inj_Leaf,
   50.65 +                Inv_f_f, Abs_Rep_map, map_ident2, sexp.LeafI]
   50.66  in
   50.67  
   50.68  val term_rec = prove_goalw Term.thy