Implicit simpsets and clasets for FOL and ZF
authorpaulson
Fri Jan 03 15:01:55 1997 +0100 (1997-01-03)
changeset 2469b50b8c0eec01
parent 2468 428efffe8599
child 2470 273580d5c040
Implicit simpsets and clasets for FOL and ZF
src/FOL/FOL.ML
src/FOL/Makefile
src/FOL/ROOT.ML
src/FOL/cladata.ML
src/FOL/ex/If.ML
src/FOL/ex/List.ML
src/FOL/ex/Nat.ML
src/FOL/ex/Nat2.ML
src/FOL/ex/NatClass.ML
src/FOL/ex/cla.ML
src/FOL/ex/intro.ML
src/FOL/simpdata.ML
src/FOL/thy_data.ML
src/ZF/AC.ML
src/ZF/AC.thy
src/ZF/AC/AC0_AC1.ML
src/ZF/AC/AC10_AC15.ML
src/ZF/AC/AC15_WO6.ML
src/ZF/AC/AC16_WO4.ML
src/ZF/AC/AC16_lemmas.ML
src/ZF/AC/AC16_lemmas.thy
src/ZF/AC/AC17_AC1.ML
src/ZF/AC/AC18_AC19.ML
src/ZF/AC/AC1_AC17.ML
src/ZF/AC/AC1_WO2.ML
src/ZF/AC/AC2_AC6.ML
src/ZF/AC/AC7_AC9.ML
src/ZF/AC/AC_Equiv.ML
src/ZF/AC/AC_Equiv.thy
src/ZF/AC/Cardinal_aux.ML
src/ZF/AC/Cardinal_aux.thy
src/ZF/AC/DC.ML
src/ZF/AC/DC.thy
src/ZF/AC/DC_lemmas.ML
src/ZF/AC/DC_lemmas.thy
src/ZF/AC/HH.ML
src/ZF/AC/Hartog.ML
src/ZF/AC/OrdQuant.ML
src/ZF/AC/OrdQuant.thy
src/ZF/AC/Transrec2.ML
src/ZF/AC/Transrec2.thy
src/ZF/AC/WO1_AC.ML
src/ZF/AC/WO1_WO6.ML
src/ZF/AC/WO1_WO7.ML
src/ZF/AC/WO1_WO8.ML
src/ZF/AC/WO2_AC16.ML
src/ZF/AC/WO6_WO1.ML
src/ZF/AC/WO_AC.ML
src/ZF/AC/WO_AC.thy
src/ZF/AC/first.ML
src/ZF/AC/first.thy
src/ZF/AC/recfunAC16.ML
src/ZF/AC/recfunAC16.thy
src/ZF/AC/rel_is_fun.ML
src/ZF/AC/rel_is_fun.thy
src/ZF/Arith.ML
src/ZF/Arith.thy
src/ZF/Bool.ML
src/ZF/Bool.thy
src/ZF/Cardinal.ML
src/ZF/CardinalArith.ML
src/ZF/Cardinal_AC.ML
src/ZF/Coind/ECR.ML
src/ZF/Coind/Language.ML
src/ZF/Coind/MT.ML
src/ZF/Coind/Map.ML
src/ZF/Coind/Static.ML
src/ZF/Coind/Types.ML
src/ZF/Coind/Values.ML
src/ZF/Epsilon.ML
src/ZF/Epsilon.thy
src/ZF/EquivClass.ML
src/ZF/Finite.ML
src/ZF/Fixedpt.ML
src/ZF/Fixedpt.thy
src/ZF/IMP/Com.ML
src/ZF/IMP/Denotation.ML
src/ZF/IMP/Equiv.ML
src/ZF/InfDatatype.ML
src/ZF/List.ML
src/ZF/Makefile
src/ZF/Nat.ML
src/ZF/Nat.thy
src/ZF/OrdQuant.ML
src/ZF/OrdQuant.thy
src/ZF/Order.ML
src/ZF/Order.thy
src/ZF/OrderArith.ML
src/ZF/OrderType.ML
src/ZF/OrderType.thy
src/ZF/Ordinal.ML
src/ZF/Ordinal.thy
src/ZF/Perm.ML
src/ZF/Perm.thy
src/ZF/QPair.ML
src/ZF/QPair.thy
src/ZF/QUniv.ML
src/ZF/QUniv.thy
src/ZF/ROOT.ML
src/ZF/Rel.ML
src/ZF/Rel.thy
src/ZF/Resid/Confluence.ML
src/ZF/Resid/Conversion.ML
src/ZF/Resid/Cube.ML
src/ZF/Resid/Redex.ML
src/ZF/Resid/Reduction.ML
src/ZF/Resid/Residuals.ML
src/ZF/Resid/SubUnion.ML
src/ZF/Resid/Substitution.ML
src/ZF/Resid/Terms.ML
src/ZF/Sum.ML
src/ZF/Sum.thy
src/ZF/Trancl.ML
src/ZF/Trancl.thy
src/ZF/Univ.ML
src/ZF/Univ.thy
src/ZF/WF.ML
src/ZF/WF.thy
src/ZF/ZF.ML
src/ZF/ZF.thy
src/ZF/Zorn.ML
src/ZF/domrange.ML
src/ZF/domrange.thy
src/ZF/equalities.ML
src/ZF/equalities.thy
src/ZF/ex/Acc.ML
src/ZF/ex/BT.ML
src/ZF/ex/Bin.ML
src/ZF/ex/Brouwer.ML
src/ZF/ex/CoUnit.ML
src/ZF/ex/Comb.ML
src/ZF/ex/Data.ML
src/ZF/ex/Enum.ML
src/ZF/ex/Integ.ML
src/ZF/ex/LList.ML
src/ZF/ex/Limit.ML
src/ZF/ex/Limit.thy
src/ZF/ex/ListN.ML
src/ZF/ex/Mutil.ML
src/ZF/ex/Ntree.ML
src/ZF/ex/Primes.ML
src/ZF/ex/Primrec.ML
src/ZF/ex/PropLog.ML
src/ZF/ex/Ramsey.ML
src/ZF/ex/Rmap.ML
src/ZF/ex/TF.ML
src/ZF/ex/Term.ML
src/ZF/ex/misc.ML
src/ZF/func.ML
src/ZF/func.thy
src/ZF/mono.ML
src/ZF/mono.thy
src/ZF/pair.ML
src/ZF/pair.thy
src/ZF/simpdata.ML
src/ZF/subset.ML
src/ZF/subset.thy
src/ZF/thy_data.ML
src/ZF/typechk.ML
src/ZF/upair.ML
src/ZF/upair.thy
     1.1 --- a/src/FOL/FOL.ML	Fri Jan 03 10:48:28 1997 +0100
     1.2 +++ b/src/FOL/FOL.ML	Fri Jan 03 15:01:55 1997 +0100
     1.3 @@ -67,3 +67,9 @@
     1.4    [ (rtac conjE 1),
     1.5      (REPEAT (DEPTH_SOLVE_1 
     1.6          (etac impCE 1  ORELSE  mp_tac 1  ORELSE  ares_tac prems 1))) ]);
     1.7 +
     1.8 +
     1.9 +(*Thus, assignments to the references claset and simpset are recorded
    1.10 +  with theory "FOL".  These files cannot be loaded directly in ROOT.ML.*)
    1.11 +use "cladata.ML";
    1.12 +use "simpdata.ML";
     2.1 --- a/src/FOL/Makefile	Fri Jan 03 10:48:28 1997 +0100
     2.2 +++ b/src/FOL/Makefile	Fri Jan 03 15:01:55 1997 +0100
     2.3 @@ -22,6 +22,7 @@
     2.4  BIN = $(ISABELLEBIN)
     2.5  COMP = $(ISABELLECOMP)
     2.6  FILES =	 ROOT.ML IFOL.thy IFOL.ML FOL.thy FOL.ML intprover.ML simpdata.ML \
     2.7 +	 thy_data.ML cladata.ML \
     2.8  	 ../Provers/hypsubst.ML ../Provers/classical.ML \
     2.9  	 ../Provers/simplifier.ML ../Provers/splitter.ML ../Provers/ind.ML
    2.10  
     3.1 --- a/src/FOL/ROOT.ML	Fri Jan 03 10:48:28 1997 +0100
     3.2 +++ b/src/FOL/ROOT.ML	Fri Jan 03 15:01:55 1997 +0100
     3.3 @@ -14,14 +14,13 @@
     3.4  init_thy_reader();
     3.5  
     3.6  print_depth 1;  
     3.7 -use_thy "FOL";
     3.8  
     3.9  use "../Provers/splitter.ML";
    3.10  use "../Provers/ind.ML";
    3.11  use "../Provers/hypsubst.ML";
    3.12  use "../Provers/classical.ML";
    3.13  
    3.14 -(*** Applying HypsubstFun to generate hyp_subst_tac ***)
    3.15 +use_thy "IFOL";
    3.16  
    3.17  structure Hypsubst_Data =
    3.18    struct
    3.19 @@ -38,36 +37,15 @@
    3.20  structure Hypsubst = HypsubstFun(Hypsubst_Data);
    3.21  open Hypsubst;
    3.22  
    3.23 +
    3.24  use "intprover.ML";
    3.25  
    3.26 -(*** Applying ClassicalFun to create a classical prover ***)
    3.27 -structure Classical_Data = 
    3.28 -  struct
    3.29 -  val sizef     = size_of_thm
    3.30 -  val mp        = mp
    3.31 -  val not_elim  = notE
    3.32 -  val classical = classical
    3.33 -  val hyp_subst_tacs=[hyp_subst_tac]
    3.34 -  end;
    3.35 -
    3.36 -structure Cla = ClassicalFun(Classical_Data);
    3.37 -open Cla;
    3.38 -
    3.39 -(*Propositional rules 
    3.40 -  -- iffCE might seem better, but in the examples in ex/cla
    3.41 -     run about 7% slower than with iffE*)
    3.42 -val prop_cs = empty_cs addSIs [refl,TrueI,conjI,disjCI,impI,notI,iffI] 
    3.43 -                       addSEs [conjE,disjE,impCE,FalseE,iffE];
    3.44 -
    3.45 -(*Quantifier rules*)
    3.46 -val FOL_cs = prop_cs addSIs [allI] addIs [exI,ex1I] 
    3.47 -                     addSEs [exE,ex1E] addEs [allE];
    3.48 +use_thy "FOL";
    3.49  
    3.50  qed_goal "ex1_functional" FOL.thy
    3.51      "!!a b c. [| EX! z. P(a,z);  P(a,b);  P(a,c) |] ==> b = c"
    3.52   (fn _ => [ (deepen_tac FOL_cs 0 1) ]);
    3.53  
    3.54 -use "simpdata.ML";
    3.55  
    3.56  init_pps ();
    3.57  print_depth 8;
     4.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.2 +++ b/src/FOL/cladata.ML	Fri Jan 03 15:01:55 1997 +0100
     4.3 @@ -0,0 +1,51 @@
     4.4 +(*  Title:      FOL/cladata.ML
     4.5 +    ID:         $Id$
     4.6 +    Author:     Tobias Nipkow
     4.7 +    Copyright   1996  University of Cambridge
     4.8 +
     4.9 +Setting up the classical reasoner 
    4.10 +*)
    4.11 +
    4.12 +
    4.13 +(** Applying HypsubstFun to generate hyp_subst_tac **)
    4.14 +section "Classical Reasoner";
    4.15 +
    4.16 +(*** Applying ClassicalFun to create a classical prover ***)
    4.17 +structure Classical_Data = 
    4.18 +  struct
    4.19 +  val sizef     = size_of_thm
    4.20 +  val mp        = mp
    4.21 +  val not_elim  = notE
    4.22 +  val classical = classical
    4.23 +  val hyp_subst_tacs=[hyp_subst_tac]
    4.24 +  end;
    4.25 +
    4.26 +structure Cla = ClassicalFun(Classical_Data);
    4.27 +open Cla;
    4.28 +
    4.29 +(*Propositional rules 
    4.30 +  -- iffCE might seem better, but in the examples in ex/cla
    4.31 +     run about 7% slower than with iffE*)
    4.32 +val prop_cs = empty_cs addSIs [refl,TrueI,conjI,disjCI,impI,notI,iffI] 
    4.33 +                       addSEs [conjE,disjE,impCE,FalseE,iffE];
    4.34 +
    4.35 +(*Quantifier rules*)
    4.36 +val FOL_cs = prop_cs addSIs [allI] addIs [exI,ex1I] 
    4.37 +                     addSEs [exE,ex1E] addEs [allE];
    4.38 +
    4.39 +
    4.40 +exception CS_DATA of claset;
    4.41 +
    4.42 +let fun merge [] = CS_DATA empty_cs
    4.43 +      | merge cs = let val cs = map (fn CS_DATA x => x) cs;
    4.44 +                   in CS_DATA (foldl merge_cs (hd cs, tl cs)) end;
    4.45 +
    4.46 +    fun put (CS_DATA cs) = claset := cs;
    4.47 +
    4.48 +    fun get () = CS_DATA (!claset);
    4.49 +in add_thydata "FOL"
    4.50 +     ("claset", ThyMethods {merge = merge, put = put, get = get})
    4.51 +end;
    4.52 +
    4.53 +claset := FOL_cs;
    4.54 +
     5.1 --- a/src/FOL/ex/If.ML	Fri Jan 03 10:48:28 1997 +0100
     5.2 +++ b/src/FOL/ex/If.ML	Fri Jan 03 15:01:55 1997 +0100
     5.3 @@ -30,13 +30,14 @@
     5.4  by (rtac ifI 1);
     5.5  
     5.6  choplev 0;
     5.7 -val if_cs = FOL_cs addSIs [ifI] addSEs[ifE];
     5.8 -by (fast_tac if_cs 1);
     5.9 +AddSIs [ifI];
    5.10 +AddSEs [ifE];
    5.11 +by (Fast_tac 1);
    5.12  qed "if_commute";
    5.13  
    5.14  
    5.15  goal If.thy "if(if(P,Q,R), A, B) <-> if(P, if(Q,A,B), if(R,A,B))";
    5.16 -by (fast_tac if_cs 1);
    5.17 +by (Fast_tac 1);
    5.18  qed "nested_ifs";
    5.19  
    5.20  choplev 0;
    5.21 @@ -47,10 +48,10 @@
    5.22  
    5.23  (*An invalid formula.  High-level rules permit a simpler diagnosis*)
    5.24  goal If.thy "if(if(P,Q,R), A, B) <-> if(P, if(Q,A,B), if(R,B,A))";
    5.25 -by (fast_tac if_cs 1) handle ERROR => writeln"Failed, as expected";
    5.26 +by (Fast_tac 1) handle ERROR => writeln"Failed, as expected";
    5.27  (*Check that subgoals remain: proof failed.*)
    5.28  getgoal 1; 
    5.29 -by (REPEAT (step_tac if_cs 1));
    5.30 +by (REPEAT (Step_tac 1));
    5.31  
    5.32  choplev 0;
    5.33  by (rewtac if_def);
     6.1 --- a/src/FOL/ex/List.ML	Fri Jan 03 10:48:28 1997 +0100
     6.2 +++ b/src/FOL/ex/List.ML	Fri Jan 03 15:01:55 1997 +0100
     6.3 @@ -13,55 +13,53 @@
     6.4  by (REPEAT (resolve_tac (prems@[allI,impI]) 1));
     6.5  qed "list_exh";
     6.6  
     6.7 -val list_rew_thms = [list_distinct1,list_distinct2,app_nil,app_cons,
     6.8 -                     hd_eq,tl_eq,forall_nil,forall_cons,list_free,
     6.9 -                     len_nil,len_cons,at_0,at_succ];
    6.10 -
    6.11 -val list_ss = nat_ss addsimps list_rew_thms;
    6.12 +Addsimps [list_distinct1, list_distinct2, app_nil, app_cons,
    6.13 +	  hd_eq, tl_eq, forall_nil, forall_cons, list_free,
    6.14 +	  len_nil, len_cons, at_0, at_succ];
    6.15  
    6.16  goal List.thy "~l=[] --> hd(l).tl(l) = l";
    6.17 -by(IND_TAC list_exh (simp_tac list_ss) "l" 1);
    6.18 +by (IND_TAC list_exh Simp_tac "l" 1);
    6.19  result();
    6.20  
    6.21  goal List.thy "(l1++l2)++l3 = l1++(l2++l3)";
    6.22 -by(IND_TAC list_ind (simp_tac list_ss) "l1" 1);
    6.23 +by (IND_TAC list_ind Simp_tac "l1" 1);
    6.24  qed "append_assoc";
    6.25  
    6.26  goal List.thy "l++[] = l";
    6.27 -by(IND_TAC list_ind (simp_tac list_ss) "l" 1);
    6.28 +by (IND_TAC list_ind Simp_tac "l" 1);
    6.29  qed "app_nil_right";
    6.30  
    6.31  goal List.thy "l1++l2=[] <-> l1=[] & l2=[]";
    6.32 -by(IND_TAC list_exh (simp_tac list_ss) "l1" 1);
    6.33 +by (IND_TAC list_exh Simp_tac "l1" 1);
    6.34  qed "app_eq_nil_iff";
    6.35  
    6.36  goal List.thy "forall(l++l',P) <-> forall(l,P) & forall(l',P)";
    6.37 -by(IND_TAC list_ind (simp_tac list_ss) "l" 1);
    6.38 +by (IND_TAC list_ind Simp_tac "l" 1);
    6.39  qed "forall_app";
    6.40  
    6.41  goal List.thy "forall(l,%x.P(x)&Q(x)) <-> forall(l,P) & forall(l,Q)";
    6.42 -by(IND_TAC list_ind (simp_tac list_ss) "l" 1);
    6.43 -by(fast_tac FOL_cs 1);
    6.44 +by (IND_TAC list_ind Simp_tac "l" 1);
    6.45 +by (Fast_tac 1);
    6.46  qed "forall_conj";
    6.47  
    6.48  goal List.thy "~l=[] --> forall(l,P) <-> P(hd(l)) & forall(tl(l),P)";
    6.49 -by(IND_TAC list_ind (simp_tac list_ss) "l" 1);
    6.50 +by (IND_TAC list_ind Simp_tac "l" 1);
    6.51  qed "forall_ne";
    6.52  
    6.53  (*** Lists with natural numbers ***)
    6.54  
    6.55  goal List.thy "len(l1++l2) = len(l1)+len(l2)";
    6.56 -by (IND_TAC list_ind (simp_tac list_ss) "l1" 1);
    6.57 +by (IND_TAC list_ind Simp_tac "l1" 1);
    6.58  qed "len_app";
    6.59  
    6.60  goal List.thy "i<len(l1) --> at(l1++l2,i) = at(l1,i)";
    6.61 -by (IND_TAC list_ind (simp_tac list_ss) "l1" 1);
    6.62 +by (IND_TAC list_ind Simp_tac "l1" 1);
    6.63  by (REPEAT (rtac allI 1));
    6.64  by (rtac impI 1);
    6.65 -by (ALL_IND_TAC nat_exh (asm_simp_tac list_ss) 1);
    6.66 +by (ALL_IND_TAC nat_exh Asm_simp_tac 1);
    6.67  qed "at_app1";
    6.68  
    6.69  goal List.thy "at(l1++(x.l2), len(l1)) = x";
    6.70 -by (IND_TAC list_ind (simp_tac list_ss) "l1" 1);
    6.71 +by (IND_TAC list_ind Simp_tac "l1" 1);
    6.72  qed "at_app_hd2";
    6.73  
     7.1 --- a/src/FOL/ex/Nat.ML	Fri Jan 03 10:48:28 1997 +0100
     7.2 +++ b/src/FOL/ex/Nat.ML	Fri Jan 03 15:01:55 1997 +0100
     7.3 @@ -43,27 +43,27 @@
     7.4  by (rtac rec_Suc 1);
     7.5  qed "add_Suc";
     7.6  
     7.7 -val add_ss = FOL_ss addsimps [add_0, add_Suc];
     7.8 +Addsimps [add_0, add_Suc];
     7.9  
    7.10  goal Nat.thy "(k+m)+n = k+(m+n)";
    7.11  by (res_inst_tac [("n","k")] induct 1);
    7.12 -by (simp_tac add_ss 1);
    7.13 -by (asm_simp_tac add_ss 1);
    7.14 +by (Simp_tac 1);
    7.15 +by (Asm_simp_tac 1);
    7.16  qed "add_assoc";
    7.17  
    7.18  goal Nat.thy "m+0 = m";
    7.19  by (res_inst_tac [("n","m")] induct 1);
    7.20 -by (simp_tac add_ss 1);
    7.21 -by (asm_simp_tac add_ss 1);
    7.22 +by (Simp_tac 1);
    7.23 +by (Asm_simp_tac 1);
    7.24  qed "add_0_right";
    7.25  
    7.26  goal Nat.thy "m+Suc(n) = Suc(m+n)";
    7.27  by (res_inst_tac [("n","m")] induct 1);
    7.28 -by (ALLGOALS (asm_simp_tac add_ss));
    7.29 +by (ALLGOALS (Asm_simp_tac));
    7.30  qed "add_Suc_right";
    7.31  
    7.32 -val [prem] = goal Nat.thy "(!!n. f(Suc(n)) = Suc(f(n))) ==> f(i+j) = i+f(j)";
    7.33 +val prems = goal Nat.thy "(!!n. f(Suc(n)) = Suc(f(n))) ==> f(i+j) = i+f(j)";
    7.34  by (res_inst_tac [("n","i")] induct 1);
    7.35 -by (simp_tac add_ss 1);
    7.36 -by (asm_simp_tac (add_ss addsimps [prem]) 1);
    7.37 +by (Simp_tac 1);
    7.38 +by (asm_simp_tac (!simpset addsimps prems) 1);
    7.39  result();
     8.1 --- a/src/FOL/ex/Nat2.ML	Fri Jan 03 10:48:28 1997 +0100
     8.2 +++ b/src/FOL/ex/Nat2.ML	Fri Jan 03 15:01:55 1997 +0100
     8.3 @@ -9,12 +9,11 @@
     8.4  
     8.5  open Nat2;
     8.6  
     8.7 -val nat_rews = [pred_0, pred_succ, plus_0, plus_succ, 
     8.8 -                    nat_distinct1, nat_distinct2, succ_inject,
     8.9 -                    leq_0,leq_succ_succ,leq_succ_0, 
    8.10 -                    lt_0_succ,lt_succ_succ,lt_0];
    8.11 +Addsimps [pred_0, pred_succ, plus_0, plus_succ, 
    8.12 +	  nat_distinct1, nat_distinct2, succ_inject,
    8.13 +	  leq_0, leq_succ_succ, leq_succ_0, 
    8.14 +	  lt_0_succ, lt_succ_succ, lt_0];
    8.15  
    8.16 -val nat_ss = FOL_ss addsimps nat_rews;
    8.17  
    8.18  val prems = goal Nat2.thy 
    8.19      "[| P(0);  !!x. P(succ(x)) |] ==> All(P)";
    8.20 @@ -23,143 +22,144 @@
    8.21  qed "nat_exh";
    8.22  
    8.23  goal Nat2.thy "~ n=succ(n)";
    8.24 -by (IND_TAC nat_ind (simp_tac nat_ss) "n" 1);
    8.25 +by (IND_TAC nat_ind Simp_tac "n" 1);
    8.26  result();
    8.27  
    8.28  goal Nat2.thy "~ succ(n)=n";
    8.29 -by (IND_TAC nat_ind (simp_tac nat_ss) "n" 1);
    8.30 +by (IND_TAC nat_ind Simp_tac "n" 1);
    8.31  result();
    8.32  
    8.33  goal Nat2.thy "~ succ(succ(n))=n";
    8.34 -by (IND_TAC nat_ind (simp_tac nat_ss) "n" 1);
    8.35 +by (IND_TAC nat_ind Simp_tac "n" 1);
    8.36  result();
    8.37  
    8.38  goal Nat2.thy "~ n=succ(succ(n))";
    8.39 -by (IND_TAC nat_ind (simp_tac nat_ss) "n" 1);
    8.40 +by (IND_TAC nat_ind Simp_tac "n" 1);
    8.41  result();
    8.42  
    8.43  goal Nat2.thy "m+0 = m";
    8.44 -by (IND_TAC nat_ind (simp_tac nat_ss) "m" 1);
    8.45 +by (IND_TAC nat_ind Simp_tac "m" 1);
    8.46  qed "plus_0_right";
    8.47  
    8.48  goal Nat2.thy "m+succ(n) = succ(m+n)";
    8.49 -by (IND_TAC nat_ind (simp_tac nat_ss) "m" 1);
    8.50 +by (IND_TAC nat_ind Simp_tac "m" 1);
    8.51  qed "plus_succ_right";
    8.52  
    8.53 +Addsimps [plus_0_right, plus_succ_right];
    8.54 +
    8.55  goal Nat2.thy "~n=0 --> m+pred(n) = pred(m+n)";
    8.56 -by (IND_TAC nat_ind (simp_tac (nat_ss addsimps [plus_succ_right])) "n" 1);
    8.57 +by (IND_TAC nat_ind Simp_tac "n" 1);
    8.58  result();
    8.59  
    8.60  goal Nat2.thy "~n=0 --> succ(pred(n))=n";
    8.61 -by (IND_TAC nat_ind (simp_tac nat_ss) "n" 1);
    8.62 +by (IND_TAC nat_ind Simp_tac "n" 1);
    8.63  result();
    8.64  
    8.65  goal Nat2.thy "m+n=0 <-> m=0 & n=0";
    8.66 -by (IND_TAC nat_ind (simp_tac nat_ss) "m" 1);
    8.67 +by (IND_TAC nat_ind Simp_tac "m" 1);
    8.68  result();
    8.69  
    8.70  goal Nat2.thy "m <= n --> m <= succ(n)";
    8.71 -by (IND_TAC nat_ind (simp_tac nat_ss) "m" 1);
    8.72 +by (IND_TAC nat_ind Simp_tac "m" 1);
    8.73  by (rtac (impI RS allI) 1);
    8.74 -by (ALL_IND_TAC nat_ind (simp_tac nat_ss) 1);
    8.75 -by (fast_tac FOL_cs 1);
    8.76 -val le_imp_le_succ = store_thm("le_imp_le_succ", result() RS mp);
    8.77 +by (ALL_IND_TAC nat_ind Simp_tac 1);
    8.78 +by (Fast_tac 1);
    8.79 +bind_thm("le_imp_le_succ", result() RS mp);
    8.80  
    8.81  goal Nat2.thy "n<succ(n)";
    8.82 -by (IND_TAC nat_ind (simp_tac nat_ss) "n" 1);
    8.83 +by (IND_TAC nat_ind Simp_tac "n" 1);
    8.84  result();
    8.85  
    8.86  goal Nat2.thy "~ n<n";
    8.87 -by (IND_TAC nat_ind (simp_tac nat_ss) "n" 1);
    8.88 +by (IND_TAC nat_ind Simp_tac "n" 1);
    8.89  result();
    8.90  
    8.91  goal Nat2.thy "m < n --> m < succ(n)";
    8.92 -by (IND_TAC nat_ind (simp_tac nat_ss) "m" 1);
    8.93 +by (IND_TAC nat_ind Simp_tac "m" 1);
    8.94  by (rtac (impI RS allI) 1);
    8.95 -by (ALL_IND_TAC nat_ind (simp_tac nat_ss) 1);
    8.96 -by (fast_tac FOL_cs 1);
    8.97 +by (ALL_IND_TAC nat_ind Simp_tac 1);
    8.98 +by (Fast_tac 1);
    8.99  result();
   8.100  
   8.101  goal Nat2.thy "m <= n --> m <= n+k";
   8.102 -by (IND_TAC nat_ind 
   8.103 -    (simp_tac (nat_ss addsimps [plus_0_right, plus_succ_right, le_imp_le_succ]))
   8.104 +by (IND_TAC nat_ind (simp_tac (!simpset addsimps [le_imp_le_succ]))
   8.105       "k" 1);
   8.106  qed "le_plus";
   8.107  
   8.108  goal Nat2.thy "succ(m) <= n --> m <= n";
   8.109  by (res_inst_tac [("x","n")]spec 1);
   8.110 -by (ALL_IND_TAC nat_exh (simp_tac (nat_ss addsimps [le_imp_le_succ])) 1);
   8.111 +by (ALL_IND_TAC nat_exh (simp_tac (!simpset addsimps [le_imp_le_succ])) 1);
   8.112  qed "succ_le";
   8.113  
   8.114  goal Nat2.thy "~m<n <-> n<=m";
   8.115 -by (IND_TAC nat_ind (simp_tac nat_ss) "n" 1);
   8.116 +by (IND_TAC nat_ind Simp_tac "n" 1);
   8.117  by (rtac (impI RS allI) 1);
   8.118 -by (ALL_IND_TAC nat_ind (asm_simp_tac nat_ss) 1);
   8.119 +by (ALL_IND_TAC nat_ind Asm_simp_tac 1);
   8.120  qed "not_less";
   8.121  
   8.122  goal Nat2.thy "n<=m --> ~m<n";
   8.123 -by (simp_tac (nat_ss addsimps [not_less]) 1);
   8.124 +by (simp_tac (!simpset addsimps [not_less]) 1);
   8.125  qed "le_imp_not_less";
   8.126  
   8.127  goal Nat2.thy "m<n --> ~n<=m";
   8.128 -by (cut_facts_tac [not_less] 1 THEN fast_tac FOL_cs 1);
   8.129 +by (cut_facts_tac [not_less] 1 THEN Fast_tac 1);
   8.130  qed "not_le";
   8.131  
   8.132  goal Nat2.thy "m+k<=n --> m<=n";
   8.133  by (IND_TAC nat_ind (K all_tac) "k" 1);
   8.134 -by (simp_tac (nat_ss addsimps [plus_0_right]) 1);
   8.135 +by (Simp_tac 1);
   8.136  by (rtac (impI RS allI) 1);
   8.137 -by (simp_tac (nat_ss addsimps [plus_succ_right]) 1);
   8.138 +by (Simp_tac 1);
   8.139  by (REPEAT (resolve_tac [allI,impI] 1));
   8.140  by (cut_facts_tac [succ_le] 1);
   8.141 -by (fast_tac FOL_cs 1);
   8.142 +by (Fast_tac 1);
   8.143  qed "plus_le";
   8.144  
   8.145  val prems = goal Nat2.thy "[| ~m=0;  m <= n |] ==> ~n=0";
   8.146  by (cut_facts_tac prems 1);
   8.147  by (REPEAT (etac rev_mp 1));
   8.148 -by (IND_TAC nat_exh (simp_tac nat_ss) "m" 1);
   8.149 -by (ALL_IND_TAC nat_exh (simp_tac nat_ss) 1);
   8.150 +by (IND_TAC nat_exh Simp_tac "m" 1);
   8.151 +by (ALL_IND_TAC nat_exh Simp_tac 1);
   8.152  qed "not0";
   8.153  
   8.154  goal Nat2.thy "a<=a' & b<=b' --> a+b<=a'+b'";
   8.155 -by (IND_TAC nat_ind (simp_tac (nat_ss addsimps [plus_0_right,le_plus])) "b" 1);
   8.156 +by (IND_TAC nat_ind (simp_tac (!simpset addsimps [le_plus])) "b" 1);
   8.157  by (resolve_tac [impI RS allI] 1);
   8.158  by (resolve_tac [allI RS allI] 1);
   8.159 -by (ALL_IND_TAC nat_exh (asm_simp_tac (nat_ss addsimps [plus_succ_right])) 1);
   8.160 +by (ALL_IND_TAC nat_exh Asm_simp_tac 1);
   8.161  qed "plus_le_plus";
   8.162  
   8.163  goal Nat2.thy "i<=j --> j<=k --> i<=k";
   8.164  by (IND_TAC nat_ind (K all_tac) "i" 1);
   8.165 -by (simp_tac nat_ss 1);
   8.166 +by (Simp_tac 1);
   8.167  by (resolve_tac [impI RS allI] 1);
   8.168 -by (ALL_IND_TAC nat_exh (simp_tac nat_ss) 1);
   8.169 +by (ALL_IND_TAC nat_exh Simp_tac 1);
   8.170  by (resolve_tac [impI] 1);
   8.171 -by (ALL_IND_TAC nat_exh (simp_tac nat_ss) 1);
   8.172 -by (fast_tac FOL_cs 1);
   8.173 +by (ALL_IND_TAC nat_exh Simp_tac 1);
   8.174 +by (Fast_tac 1);
   8.175  qed "le_trans";
   8.176  
   8.177  goal Nat2.thy "i < j --> j <=k --> i < k";
   8.178  by (IND_TAC nat_ind (K all_tac) "j" 1);
   8.179 -by (simp_tac nat_ss 1);
   8.180 +by (Simp_tac 1);
   8.181  by (resolve_tac [impI RS allI] 1);
   8.182 -by (ALL_IND_TAC nat_exh (simp_tac nat_ss) 1);
   8.183 -by (ALL_IND_TAC nat_exh (simp_tac nat_ss) 1);
   8.184 -by (ALL_IND_TAC nat_exh (simp_tac nat_ss) 1);
   8.185 -by (fast_tac FOL_cs 1);
   8.186 +by (ALL_IND_TAC nat_exh Simp_tac 1);
   8.187 +by (ALL_IND_TAC nat_exh Simp_tac 1);
   8.188 +by (ALL_IND_TAC nat_exh Simp_tac 1);
   8.189 +by (Fast_tac 1);
   8.190  qed "less_le_trans";
   8.191  
   8.192  goal Nat2.thy "succ(i) <= j <-> i < j";
   8.193 -by (IND_TAC nat_ind (simp_tac nat_ss) "j" 1);
   8.194 +by (IND_TAC nat_ind Simp_tac "j" 1);
   8.195  by (resolve_tac [impI RS allI] 1);
   8.196 -by (ALL_IND_TAC nat_exh (asm_simp_tac nat_ss) 1);
   8.197 +by (ALL_IND_TAC nat_exh Asm_simp_tac 1);
   8.198  qed "succ_le2";
   8.199  
   8.200  goal Nat2.thy "i<succ(j) <-> i=j | i<j";
   8.201 -by (IND_TAC nat_ind (simp_tac nat_ss) "j" 1);
   8.202 -by (ALL_IND_TAC nat_exh (simp_tac nat_ss) 1);
   8.203 +by (IND_TAC nat_ind Simp_tac "j" 1);
   8.204 +by (ALL_IND_TAC nat_exh Simp_tac 1);
   8.205  by (resolve_tac [impI RS allI] 1);
   8.206 -by (ALL_IND_TAC nat_exh (simp_tac nat_ss) 1);
   8.207 -by (asm_simp_tac nat_ss 1);
   8.208 +by (ALL_IND_TAC nat_exh Simp_tac 1);
   8.209 +by (Asm_simp_tac 1);
   8.210  qed "less_succ";
   8.211  
     9.1 --- a/src/FOL/ex/NatClass.ML	Fri Jan 03 10:48:28 1997 +0100
     9.2 +++ b/src/FOL/ex/NatClass.ML	Fri Jan 03 15:01:55 1997 +0100
     9.3 @@ -1,7 +1,6 @@
     9.4  (*  Title:      FOL/ex/NatClass.ML
     9.5      ID:         $Id$
     9.6 -    Author:     Lawrence C Paulson, Cambridge University Computer Laboratory
     9.7 -    Copyright   1992  University of Cambridge
     9.8 +    Author:     Markus Wenzel, TU Muenchen
     9.9  
    9.10  This is Nat.ML trivially modified to make it work with NatClass.thy.
    9.11  *)
    9.12 @@ -36,27 +35,27 @@
    9.13  by (rtac rec_Suc 1);
    9.14  qed "add_Suc";
    9.15  
    9.16 -val add_ss = FOL_ss addsimps [add_0, add_Suc];
    9.17 +Addsimps [add_0, add_Suc];
    9.18  
    9.19  goal NatClass.thy "(k+m)+n = k+(m+n)";
    9.20  by (res_inst_tac [("n","k")] induct 1);
    9.21 -by (simp_tac add_ss 1);
    9.22 -by (asm_simp_tac add_ss 1);
    9.23 +by (Simp_tac 1);
    9.24 +by (Asm_simp_tac 1);
    9.25  qed "add_assoc";
    9.26  
    9.27  goal NatClass.thy "m+0 = m";
    9.28  by (res_inst_tac [("n","m")] induct 1);
    9.29 -by (simp_tac add_ss 1);
    9.30 -by (asm_simp_tac add_ss 1);
    9.31 +by (Simp_tac 1);
    9.32 +by (Asm_simp_tac 1);
    9.33  qed "add_0_right";
    9.34  
    9.35  goal NatClass.thy "m+Suc(n) = Suc(m+n)";
    9.36  by (res_inst_tac [("n","m")] induct 1);
    9.37 -by (ALLGOALS (asm_simp_tac add_ss));
    9.38 +by (ALLGOALS (Asm_simp_tac));
    9.39  qed "add_Suc_right";
    9.40  
    9.41  val [prem] = goal NatClass.thy "(!!n. f(Suc(n)) = Suc(f(n))) ==> f(i+j) = i+f(j)";
    9.42  by (res_inst_tac [("n","i")] induct 1);
    9.43 -by (simp_tac add_ss 1);
    9.44 -by (asm_simp_tac (add_ss addsimps [prem]) 1);
    9.45 +by (Simp_tac 1);
    9.46 +by (asm_simp_tac (!simpset addsimps [prem]) 1);
    9.47  result();
    10.1 --- a/src/FOL/ex/cla.ML	Fri Jan 03 10:48:28 1997 +0100
    10.2 +++ b/src/FOL/ex/cla.ML	Fri Jan 03 15:01:55 1997 +0100
    10.3 @@ -11,17 +11,17 @@
    10.4  open Cla;    (*in case structure Int is open!*)
    10.5  
    10.6  goal FOL.thy "(P --> Q | R) --> (P-->Q) | (P-->R)";
    10.7 -by (fast_tac FOL_cs 1);
    10.8 +by (Fast_tac 1);
    10.9  result();
   10.10  
   10.11  (*If and only if*)
   10.12  
   10.13  goal FOL.thy "(P<->Q) <-> (Q<->P)";
   10.14 -by (fast_tac FOL_cs 1);
   10.15 +by (Fast_tac 1);
   10.16  result();
   10.17  
   10.18  goal FOL.thy "~ (P <-> ~P)";
   10.19 -by (fast_tac FOL_cs 1);
   10.20 +by (Fast_tac 1);
   10.21  result();
   10.22  
   10.23  
   10.24 @@ -38,132 +38,132 @@
   10.25  writeln"Pelletier's examples";
   10.26  (*1*)
   10.27  goal FOL.thy "(P-->Q)  <->  (~Q --> ~P)";
   10.28 -by (fast_tac FOL_cs 1);
   10.29 +by (Fast_tac 1);
   10.30  result();
   10.31  
   10.32  (*2*)
   10.33  goal FOL.thy "~ ~ P  <->  P";
   10.34 -by (fast_tac FOL_cs 1);
   10.35 +by (Fast_tac 1);
   10.36  result();
   10.37  
   10.38  (*3*)
   10.39  goal FOL.thy "~(P-->Q) --> (Q-->P)";
   10.40 -by (fast_tac FOL_cs 1);
   10.41 +by (Fast_tac 1);
   10.42  result();
   10.43  
   10.44  (*4*)
   10.45  goal FOL.thy "(~P-->Q)  <->  (~Q --> P)";
   10.46 -by (fast_tac FOL_cs 1);
   10.47 +by (Fast_tac 1);
   10.48  result();
   10.49  
   10.50  (*5*)
   10.51  goal FOL.thy "((P|Q)-->(P|R)) --> (P|(Q-->R))";
   10.52 -by (fast_tac FOL_cs 1);
   10.53 +by (Fast_tac 1);
   10.54  result();
   10.55  
   10.56  (*6*)
   10.57  goal FOL.thy "P | ~ P";
   10.58 -by (fast_tac FOL_cs 1);
   10.59 +by (Fast_tac 1);
   10.60  result();
   10.61  
   10.62  (*7*)
   10.63  goal FOL.thy "P | ~ ~ ~ P";
   10.64 -by (fast_tac FOL_cs 1);
   10.65 +by (Fast_tac 1);
   10.66  result();
   10.67  
   10.68  (*8.  Peirce's law*)
   10.69  goal FOL.thy "((P-->Q) --> P)  -->  P";
   10.70 -by (fast_tac FOL_cs 1);
   10.71 +by (Fast_tac 1);
   10.72  result();
   10.73  
   10.74  (*9*)
   10.75  goal FOL.thy "((P|Q) & (~P|Q) & (P| ~Q)) --> ~ (~P | ~Q)";
   10.76 -by (fast_tac FOL_cs 1);
   10.77 +by (Fast_tac 1);
   10.78  result();
   10.79  
   10.80  (*10*)
   10.81  goal FOL.thy "(Q-->R) & (R-->P&Q) & (P-->Q|R) --> (P<->Q)";
   10.82 -by (fast_tac FOL_cs 1);
   10.83 +by (Fast_tac 1);
   10.84  result();
   10.85  
   10.86  (*11.  Proved in each direction (incorrectly, says Pelletier!!)  *)
   10.87  goal FOL.thy "P<->P";
   10.88 -by (fast_tac FOL_cs 1);
   10.89 +by (Fast_tac 1);
   10.90  result();
   10.91  
   10.92  (*12.  "Dijkstra's law"*)
   10.93  goal FOL.thy "((P <-> Q) <-> R)  <->  (P <-> (Q <-> R))";
   10.94 -by (fast_tac FOL_cs 1);
   10.95 +by (Fast_tac 1);
   10.96  result();
   10.97  
   10.98  (*13.  Distributive law*)
   10.99  goal FOL.thy "P | (Q & R)  <-> (P | Q) & (P | R)";
  10.100 -by (fast_tac FOL_cs 1);
  10.101 +by (Fast_tac 1);
  10.102  result();
  10.103  
  10.104  (*14*)
  10.105  goal FOL.thy "(P <-> Q) <-> ((Q | ~P) & (~Q|P))";
  10.106 -by (fast_tac FOL_cs 1);
  10.107 +by (Fast_tac 1);
  10.108  result();
  10.109  
  10.110  (*15*)
  10.111  goal FOL.thy "(P --> Q) <-> (~P | Q)";
  10.112 -by (fast_tac FOL_cs 1);
  10.113 +by (Fast_tac 1);
  10.114  result();
  10.115  
  10.116  (*16*)
  10.117  goal FOL.thy "(P-->Q) | (Q-->P)";
  10.118 -by (fast_tac FOL_cs 1);
  10.119 +by (Fast_tac 1);
  10.120  result();
  10.121  
  10.122  (*17*)
  10.123  goal FOL.thy "((P & (Q-->R))-->S) <-> ((~P | Q | S) & (~P | ~R | S))";
  10.124 -by (fast_tac FOL_cs 1);
  10.125 +by (Fast_tac 1);
  10.126  result();
  10.127  
  10.128  writeln"Classical Logic: examples with quantifiers";
  10.129  
  10.130  goal FOL.thy "(ALL x. P(x) & Q(x)) <-> (ALL x. P(x))  &  (ALL x. Q(x))";
  10.131 -by (fast_tac FOL_cs 1);
  10.132 +by (Fast_tac 1);
  10.133  result(); 
  10.134  
  10.135  goal FOL.thy "(EX x. P-->Q(x))  <->  (P --> (EX x.Q(x)))";
  10.136 -by (fast_tac FOL_cs 1);
  10.137 +by (Fast_tac 1);
  10.138  result(); 
  10.139  
  10.140  goal FOL.thy "(EX x.P(x)-->Q)  <->  (ALL x.P(x)) --> Q";
  10.141 -by (fast_tac FOL_cs 1);
  10.142 +by (Fast_tac 1);
  10.143  result(); 
  10.144  
  10.145  goal FOL.thy "(ALL x.P(x)) | Q  <->  (ALL x. P(x) | Q)";
  10.146 -by (fast_tac FOL_cs 1);
  10.147 +by (Fast_tac 1);
  10.148  result(); 
  10.149  
  10.150  (*Discussed in Avron, Gentzen-Type Systems, Resolution and Tableaux,
  10.151    JAR 10 (265-281), 1993.  Proof is trivial!*)
  10.152  goal FOL.thy
  10.153      "~ ((EX x.~P(x)) & ((EX x.P(x)) | (EX x.P(x) & Q(x))) & ~ (EX x.P(x)))";
  10.154 -by (fast_tac FOL_cs 1);
  10.155 +by (Fast_tac 1);
  10.156  result();
  10.157  
  10.158  writeln"Problems requiring quantifier duplication";
  10.159  
  10.160  (*Needs multiple instantiation of ALL.*)
  10.161  goal FOL.thy "(ALL x. P(x)-->P(f(x)))  &  P(d)-->P(f(f(f(d))))";
  10.162 -by (deepen_tac FOL_cs 0 1);
  10.163 +by (Deepen_tac 0 1);
  10.164  result();
  10.165  
  10.166  (*Needs double instantiation of the quantifier*)
  10.167  goal FOL.thy "EX x. P(x) --> P(a) & P(b)";
  10.168 -by (deepen_tac FOL_cs 0 1);
  10.169 +by (Deepen_tac 0 1);
  10.170  result();
  10.171  
  10.172  goal FOL.thy "EX z. P(z) --> (ALL x. P(x))";
  10.173 -by (deepen_tac FOL_cs 0 1);
  10.174 +by (Deepen_tac 0 1);
  10.175  result();
  10.176  
  10.177  goal FOL.thy "EX x. (EX y. P(y)) --> P(x)";
  10.178 -by (deepen_tac FOL_cs 0 1);
  10.179 +by (Deepen_tac 0 1);
  10.180  result();
  10.181  
  10.182  (*V. Lifschitz, What Is the Inverse Method?, JAR 5 (1989), 1--23.  NOT PROVED*)
  10.183 @@ -176,40 +176,40 @@
  10.184  
  10.185  writeln"Problem 18";
  10.186  goal FOL.thy "EX y. ALL x. P(y)-->P(x)";
  10.187 -by (deepen_tac FOL_cs 0 1);
  10.188 +by (Deepen_tac 0 1);
  10.189  result(); 
  10.190  
  10.191  writeln"Problem 19";
  10.192  goal FOL.thy "EX x. ALL y z. (P(y)-->Q(z)) --> (P(x)-->Q(x))";
  10.193 -by (deepen_tac FOL_cs 0 1);
  10.194 +by (Deepen_tac 0 1);
  10.195  result();
  10.196  
  10.197  writeln"Problem 20";
  10.198  goal FOL.thy "(ALL x y. EX z. ALL w. (P(x)&Q(y)-->R(z)&S(w)))     \
  10.199  \   --> (EX x y. P(x) & Q(y)) --> (EX z. R(z))";
  10.200 -by (fast_tac FOL_cs 1); 
  10.201 +by (Fast_tac 1); 
  10.202  result();
  10.203  
  10.204  writeln"Problem 21";
  10.205  goal FOL.thy "(EX x. P-->Q(x)) & (EX x. Q(x)-->P) --> (EX x. P<->Q(x))";
  10.206 -by (deepen_tac FOL_cs 0 1);
  10.207 +by (Deepen_tac 0 1);
  10.208  result();
  10.209  
  10.210  writeln"Problem 22";
  10.211  goal FOL.thy "(ALL x. P <-> Q(x))  -->  (P <-> (ALL x. Q(x)))";
  10.212 -by (fast_tac FOL_cs 1); 
  10.213 +by (Fast_tac 1); 
  10.214  result();
  10.215  
  10.216  writeln"Problem 23";
  10.217  goal FOL.thy "(ALL x. P | Q(x))  <->  (P | (ALL x. Q(x)))";
  10.218 -by (best_tac FOL_cs 1);  
  10.219 +by (Best_tac 1);  
  10.220  result();
  10.221  
  10.222  writeln"Problem 24";
  10.223  goal FOL.thy "~(EX x. S(x)&Q(x)) & (ALL x. P(x) --> Q(x)|R(x)) &  \
  10.224  \    ~(EX x.P(x)) --> (EX x.Q(x)) & (ALL x. Q(x)|R(x) --> S(x))  \
  10.225  \   --> (EX x. P(x)&R(x))";
  10.226 -by (fast_tac FOL_cs 1); 
  10.227 +by (Fast_tac 1); 
  10.228  result();
  10.229  
  10.230  writeln"Problem 25";
  10.231 @@ -218,14 +218,14 @@
  10.232  \       (ALL x. P(x) --> (M(x) & L(x))) &   \
  10.233  \       ((ALL x. P(x)-->Q(x)) | (EX x. P(x)&R(x)))  \
  10.234  \   --> (EX x. Q(x)&P(x))";
  10.235 -by (best_tac FOL_cs 1); 
  10.236 +by (Best_tac 1); 
  10.237  result();
  10.238  
  10.239  writeln"Problem 26";
  10.240  goal FOL.thy "((EX x. p(x)) <-> (EX x. q(x))) & \
  10.241  \     (ALL x. ALL y. p(x) & q(y) --> (r(x) <-> s(y)))   \
  10.242  \ --> ((ALL x. p(x)-->r(x)) <-> (ALL x. q(x)-->s(x)))";
  10.243 -by (fast_tac FOL_cs 1);
  10.244 +by (Fast_tac 1);
  10.245  result();
  10.246  
  10.247  writeln"Problem 27";
  10.248 @@ -234,7 +234,7 @@
  10.249  \             (ALL x. M(x) & L(x) --> P(x)) &   \
  10.250  \             ((EX x. R(x) & ~ Q(x)) --> (ALL x. L(x) --> ~ R(x)))  \
  10.251  \         --> (ALL x. M(x) --> ~L(x))";
  10.252 -by (fast_tac FOL_cs 1); 
  10.253 +by (Fast_tac 1); 
  10.254  result();
  10.255  
  10.256  writeln"Problem 28.  AMENDED";
  10.257 @@ -242,21 +242,21 @@
  10.258  \       ((ALL x. Q(x)|R(x)) --> (EX x. Q(x)&S(x))) &  \
  10.259  \       ((EX x.S(x)) --> (ALL x. L(x) --> M(x)))  \
  10.260  \   --> (ALL x. P(x) & L(x) --> M(x))";
  10.261 -by (fast_tac FOL_cs 1);  
  10.262 +by (Fast_tac 1);  
  10.263  result();
  10.264  
  10.265  writeln"Problem 29.  Essentially the same as Principia Mathematica *11.71";
  10.266  goal FOL.thy "(EX x. P(x)) & (EX y. Q(y))  \
  10.267  \   --> ((ALL x. P(x)-->R(x)) & (ALL y. Q(y)-->S(y))   <->     \
  10.268  \        (ALL x y. P(x) & Q(y) --> R(x) & S(y)))";
  10.269 -by (fast_tac FOL_cs 1); 
  10.270 +by (Fast_tac 1); 
  10.271  result();
  10.272  
  10.273  writeln"Problem 30";
  10.274  goal FOL.thy "(ALL x. P(x) | Q(x) --> ~ R(x)) & \
  10.275  \       (ALL x. (Q(x) --> ~ S(x)) --> P(x) & R(x))  \
  10.276  \   --> (ALL x. S(x))";
  10.277 -by (fast_tac FOL_cs 1);  
  10.278 +by (Fast_tac 1);  
  10.279  result();
  10.280  
  10.281  writeln"Problem 31";
  10.282 @@ -264,7 +264,7 @@
  10.283  \       (EX x. L(x) & P(x)) & \
  10.284  \       (ALL x. ~ R(x) --> M(x))  \
  10.285  \   --> (EX x. L(x) & M(x))";
  10.286 -by (fast_tac FOL_cs 1);
  10.287 +by (Fast_tac 1);
  10.288  result();
  10.289  
  10.290  writeln"Problem 32";
  10.291 @@ -272,13 +272,13 @@
  10.292  \       (ALL x. S(x) & R(x) --> L(x)) & \
  10.293  \       (ALL x. M(x) --> R(x))  \
  10.294  \   --> (ALL x. P(x) & M(x) --> L(x))";
  10.295 -by (best_tac FOL_cs 1);
  10.296 +by (Best_tac 1);
  10.297  result();
  10.298  
  10.299  writeln"Problem 33";
  10.300  goal FOL.thy "(ALL x. P(a) & (P(x)-->P(b))-->P(c))  <->    \
  10.301  \    (ALL x. (~P(a) | P(x) | P(c)) & (~P(a) | ~P(b) | P(c)))";
  10.302 -by (best_tac FOL_cs 1);
  10.303 +by (Best_tac 1);
  10.304  result();
  10.305  
  10.306  writeln"Problem 34  AMENDED (TWICE!!)";
  10.307 @@ -287,13 +287,13 @@
  10.308  \              ((EX x. q(x)) <-> (ALL y. p(y))))     <->        \
  10.309  \             ((EX x. ALL y. q(x) <-> q(y))  <->                \
  10.310  \              ((EX x. p(x)) <-> (ALL y. q(y))))";
  10.311 -by (deepen_tac FOL_cs 0 1);
  10.312 +by (Deepen_tac 0 1);
  10.313  result();
  10.314  
  10.315  writeln"Problem 35";
  10.316  goal FOL.thy "EX x y. P(x,y) -->  (ALL u v. P(u,v))";
  10.317  by (mini_tac 1);
  10.318 -by (fast_tac FOL_cs 1);
  10.319 +by (Fast_tac 1);
  10.320  (*Without miniscope, would have to use deepen_tac; would be slower*)
  10.321  result();
  10.322  
  10.323 @@ -303,7 +303,7 @@
  10.324  \     (ALL x. EX y. G(x,y)) & \
  10.325  \     (ALL x y. J(x,y) | G(x,y) --> (ALL z. J(y,z) | G(y,z) --> H(x,z)))   \
  10.326  \ --> (ALL x. EX y. H(x,y))";
  10.327 -by (fast_tac FOL_cs 1);
  10.328 +by (Fast_tac 1);
  10.329  result();
  10.330  
  10.331  writeln"Problem 37";
  10.332 @@ -312,7 +312,7 @@
  10.333  \       (ALL x z. ~P(x,z) --> (EX y. Q(y,z))) & \
  10.334  \       ((EX x y. Q(x,y)) --> (ALL x. R(x,x)))  \
  10.335  \   --> (ALL x. EX y. R(x,y))";
  10.336 -by (fast_tac FOL_cs 1);
  10.337 +by (Fast_tac 1);
  10.338  result();
  10.339  
  10.340  writeln"Problem 38";
  10.341 @@ -322,40 +322,39 @@
  10.342  \    (ALL x. (~p(a) | p(x) | (EX z. EX w. p(z) & r(x,w) & r(w,z))) &    \
  10.343  \            (~p(a) | ~(EX y. p(y) & r(x,y)) |                          \
  10.344  \             (EX z. EX w. p(z) & r(x,w) & r(w,z))))";
  10.345 -by (deepen_tac FOL_cs 0 1);  (*beats fast_tac!*)
  10.346 +by (Deepen_tac 0 1);  (*beats fast_tac!*)
  10.347  result();
  10.348  
  10.349  writeln"Problem 39";
  10.350  goal FOL.thy "~ (EX x. ALL y. F(y,x) <-> ~F(y,y))";
  10.351 -by (fast_tac FOL_cs 1);
  10.352 +by (Fast_tac 1);
  10.353  result();
  10.354  
  10.355  writeln"Problem 40.  AMENDED";
  10.356  goal FOL.thy "(EX y. ALL x. F(x,y) <-> F(x,x)) -->  \
  10.357  \             ~(ALL x. EX y. ALL z. F(z,y) <-> ~ F(z,x))";
  10.358 -by (fast_tac FOL_cs 1);
  10.359 +by (Fast_tac 1);
  10.360  result();
  10.361  
  10.362  writeln"Problem 41";
  10.363  goal FOL.thy "(ALL z. EX y. ALL x. f(x,y) <-> f(x,z) & ~ f(x,x))        \
  10.364  \         --> ~ (EX z. ALL x. f(x,z))";
  10.365 -by (fast_tac FOL_cs 1);
  10.366 +by (Fast_tac 1);
  10.367  result();
  10.368  
  10.369  writeln"Problem 42";
  10.370  goal FOL.thy "~ (EX y. ALL x. p(x,y) <-> ~ (EX z. p(x,z) & p(z,x)))";
  10.371 -by (deepen_tac FOL_cs 0 1);
  10.372 +by (Deepen_tac 0 1);
  10.373  result();
  10.374  
  10.375  writeln"Problem 43";
  10.376  goal FOL.thy "(ALL x. ALL y. q(x,y) <-> (ALL z. p(z,x) <-> p(z,y)))     \
  10.377  \         --> (ALL x. ALL y. q(x,y) <-> q(y,x))";
  10.378 -by (mini_tac 1);
  10.379 -by (deepen_tac FOL_cs 5 1);
  10.380 -(*Faster alternative proof!
  10.381 -        by (asm_simp_tac FOL_ss 1); by (fast_tac FOL_cs 1);     
  10.382 +by (Auto_tac());
  10.383 +(*The proof above cheats by using rewriting!  A purely logical proof is
  10.384 +  by (mini_tac 1 THEN Deepen_tac 5 1);
  10.385  Can use just deepen_tac but it requires 253 secs?!?
  10.386 -	by (deepen_tac FOL_cs 0 1);     
  10.387 +  by (Deepen_tac 0 1);     
  10.388  *)
  10.389  result();
  10.390  
  10.391 @@ -364,7 +363,7 @@
  10.392  \             (EX y. g(y) & h(x,y) & (EX y. g(y) & ~ h(x,y))))  &       \
  10.393  \             (EX x. j(x) & (ALL y. g(y) --> h(x,y)))                   \
  10.394  \             --> (EX x. j(x) & ~f(x))";
  10.395 -by (fast_tac FOL_cs 1);
  10.396 +by (Fast_tac 1);
  10.397  result();
  10.398  
  10.399  writeln"Problem 45";
  10.400 @@ -374,7 +373,7 @@
  10.401  \     (EX x. f(x) & (ALL y. h(x,y) --> l(y))                    \
  10.402  \                 & (ALL y. g(y) & h(x,y) --> j(x,y)))          \
  10.403  \     --> (EX x. f(x) & ~ (EX y. g(y) & h(x,y)))";
  10.404 -by (best_tac FOL_cs 1); 
  10.405 +by (Best_tac 1); 
  10.406  result();
  10.407  
  10.408  
  10.409 @@ -382,7 +381,7 @@
  10.410  
  10.411  writeln"Problem 48";
  10.412  goal FOL.thy "(a=b | c=d) & (a=c | b=d) --> a=d | b=c";
  10.413 -by (fast_tac FOL_cs 1);
  10.414 +by (Fast_tac 1);
  10.415  result();
  10.416  
  10.417  writeln"Problem 49  NOT PROVED AUTOMATICALLY";
  10.418 @@ -390,26 +389,26 @@
  10.419    the type constraint ensures that x,y,z have the same type as a,b,u. *)
  10.420  goal FOL.thy "(EX x y::'a. ALL z. z=x | z=y) & P(a) & P(b) & a~=b \
  10.421  \               --> (ALL u::'a.P(u))";
  10.422 -by (safe_tac FOL_cs);
  10.423 +by (Step_tac 1);
  10.424  by (res_inst_tac [("x","a")] allE 1);
  10.425  by (assume_tac 1);
  10.426  by (res_inst_tac [("x","b")] allE 1);
  10.427  by (assume_tac 1);
  10.428 -by (fast_tac FOL_cs 1);
  10.429 +by (Fast_tac 1);
  10.430  result();
  10.431  
  10.432  writeln"Problem 50";  
  10.433  (*What has this to do with equality?*)
  10.434  goal FOL.thy "(ALL x. P(a,x) | (ALL y.P(x,y))) --> (EX x. ALL y.P(x,y))";
  10.435  by (mini_tac 1);
  10.436 -by (deepen_tac FOL_cs 0 1);
  10.437 +by (Deepen_tac 0 1);
  10.438  result();
  10.439  
  10.440  writeln"Problem 51";
  10.441  goal FOL.thy
  10.442      "(EX z w. ALL x y. P(x,y) <->  (x=z & y=w)) -->  \
  10.443  \    (EX z. ALL x. EX w. (ALL y. P(x,y) <-> y=w) <-> x=z)";
  10.444 -by (fast_tac FOL_cs 1);
  10.445 +by (Fast_tac 1);
  10.446  result();
  10.447  
  10.448  writeln"Problem 52";
  10.449 @@ -417,7 +416,7 @@
  10.450  goal FOL.thy
  10.451      "(EX z w. ALL x y. P(x,y) <->  (x=z & y=w)) -->  \
  10.452  \    (EX w. ALL y. EX z. (ALL x. P(x,y) <-> x=z) <-> y=w)";
  10.453 -by (best_tac FOL_cs 1);
  10.454 +by (Best_tac 1);
  10.455  result();
  10.456  
  10.457  writeln"Problem 55";
  10.458 @@ -436,12 +435,12 @@
  10.459  \  (ALL x. EX y. ~hates(x,y)) & \
  10.460  \  ~ agatha=butler --> \
  10.461  \  killed(?who,agatha)";
  10.462 -by (safe_tac FOL_cs);
  10.463 +by (Step_tac 1);
  10.464  by (dres_inst_tac [("x1","x")] (spec RS mp) 1);
  10.465  by (assume_tac 1);
  10.466  by (etac (spec RS exE) 1);
  10.467  by (REPEAT (etac allE 1));
  10.468 -by (fast_tac FOL_cs 1);
  10.469 +by (Fast_tac 1);
  10.470  result();
  10.471  ****)
  10.472  
  10.473 @@ -456,37 +455,37 @@
  10.474  \  (ALL x. hates(agatha,x) --> hates(butler,x)) & \
  10.475  \  (ALL x. ~hates(x,agatha) | ~hates(x,butler) | ~hates(x,charles)) --> \
  10.476  \   killed(?who,agatha)";
  10.477 -by (fast_tac FOL_cs 1);
  10.478 +by (Fast_tac 1);
  10.479  result();
  10.480  
  10.481  
  10.482  writeln"Problem 56";
  10.483  goal FOL.thy
  10.484      "(ALL x. (EX y. P(y) & x=f(y)) --> P(x)) <-> (ALL x. P(x) --> P(f(x)))";
  10.485 -by (fast_tac FOL_cs 1);
  10.486 +by (Fast_tac 1);
  10.487  result();
  10.488  
  10.489  writeln"Problem 57";
  10.490  goal FOL.thy
  10.491      "P(f(a,b), f(b,c)) & P(f(b,c), f(a,c)) & \
  10.492  \    (ALL x y z. P(x,y) & P(y,z) --> P(x,z))    -->   P(f(a,b), f(a,c))";
  10.493 -by (fast_tac FOL_cs 1);
  10.494 +by (Fast_tac 1);
  10.495  result();
  10.496  
  10.497  writeln"Problem 58  NOT PROVED AUTOMATICALLY";
  10.498  goal FOL.thy "(ALL x y. f(x)=g(y)) --> (ALL x y. f(f(x))=f(g(y)))";
  10.499 -by (slow_tac (FOL_cs addEs [subst_context]) 1);
  10.500 +by (slow_tac (!claset addEs [subst_context]) 1);
  10.501  result();
  10.502  
  10.503  writeln"Problem 59";
  10.504  goal FOL.thy "(ALL x. P(x) <-> ~P(f(x))) --> (EX x. P(x) & ~P(f(x)))";
  10.505 -by (deepen_tac FOL_cs 0 1);
  10.506 +by (Deepen_tac 0 1);
  10.507  result();
  10.508  
  10.509  writeln"Problem 60";
  10.510  goal FOL.thy
  10.511      "ALL x. P(x,f(x)) <-> (EX y. (ALL z. P(z,y) --> P(z,f(x))) & P(x,y))";
  10.512 -by (fast_tac FOL_cs 1);
  10.513 +by (Fast_tac 1);
  10.514  result();
  10.515  
  10.516  writeln"Problem 62 as corrected in AAR newletter #31";
  10.517 @@ -494,7 +493,7 @@
  10.518      "(ALL x. p(a) & (p(x) --> p(f(x))) --> p(f(f(x))))  <->     \
  10.519  \    (ALL x. (~p(a) | p(x) | p(f(f(x)))) &                      \
  10.520  \            (~p(a) | ~p(f(x)) | p(f(f(x)))))";
  10.521 -by (fast_tac FOL_cs 1);
  10.522 +by (Fast_tac 1);
  10.523  result();
  10.524  
  10.525  (*Halting problem: Formulation of Li Dafa (AAR Newsletter 27, Oct 1994.)
    11.1 --- a/src/FOL/ex/intro.ML	Fri Jan 03 10:48:28 1997 +0100
    11.2 +++ b/src/FOL/ex/intro.ML	Fri Jan 03 15:01:55 1997 +0100
    11.3 @@ -42,16 +42,16 @@
    11.4  result();
    11.5  
    11.6  
    11.7 -(**** Demonstration of fast_tac ****)
    11.8 +(**** Demonstration of Fast_tac ****)
    11.9  
   11.10  goal FOL.thy "(EX y. ALL x. J(y,x) <-> ~J(x,x))  \
   11.11  \       -->  ~ (ALL x. EX y. ALL z. J(z,y) <-> ~ J(z,x))";
   11.12 -by (fast_tac FOL_cs 1);
   11.13 +by (Fast_tac 1);
   11.14  result();
   11.15  
   11.16  goal FOL.thy "ALL x. P(x,f(x)) <-> \
   11.17  \       (EX y. (ALL z. P(z,y) --> P(z,f(x))) & P(x,y))";
   11.18 -by (fast_tac FOL_cs 1);
   11.19 +by (Fast_tac 1);
   11.20  result();
   11.21  
   11.22  
    12.1 --- a/src/FOL/simpdata.ML	Fri Jan 03 10:48:28 1997 +0100
    12.2 +++ b/src/FOL/simpdata.ML	Fri Jan 03 15:01:55 1997 +0100
    12.3 @@ -187,10 +187,33 @@
    12.4  
    12.5  open Simplifier Induction;
    12.6  
    12.7 +(*** Integration of simplifier with classical reasoner ***)
    12.8 +
    12.9 +(*Add a simpset to a classical set!*)
   12.10 +infix 4 addss;
   12.11 +fun cs addss ss = cs addbefore asm_full_simp_tac ss 1;
   12.12 +
   12.13 +fun Addss ss = (claset := !claset addbefore asm_full_simp_tac ss 1);
   12.14 +
   12.15 +(*Designed to be idempotent, except if best_tac instantiates variables
   12.16 +  in some of the subgoals*)
   12.17 +fun auto_tac (cs,ss) = 
   12.18 +    ALLGOALS (asm_full_simp_tac ss) THEN
   12.19 +    REPEAT (safe_tac cs THEN ALLGOALS (asm_full_simp_tac ss)) THEN
   12.20 +    REPEAT (FIRSTGOAL (best_tac (cs addss ss))) THEN
   12.21 +    prune_params_tac;
   12.22 +
   12.23 +fun Auto_tac() = auto_tac (!claset, !simpset);
   12.24 +
   12.25 +fun auto() = by (Auto_tac());
   12.26 +
   12.27 +
   12.28  (*Add congruence rules for = or <-> (instead of ==) *)
   12.29  infix 4 addcongs;
   12.30  fun ss addcongs congs =
   12.31 -    ss addeqcongs (congs RL [eq_reflection,iff_reflection]);
   12.32 +        ss addeqcongs (congs RL [eq_reflection,iff_reflection]);
   12.33 +
   12.34 +fun Addcongs congs = (simpset := !simpset addcongs congs);
   12.35  
   12.36  (*Add a simpset to a classical set!*)
   12.37  infix 4 addss;
   12.38 @@ -223,3 +246,24 @@
   12.39  
   12.40  val FOL_ss = IFOL_ss addsimps (cla_simps @ ex_simps @ all_simps);
   12.41  
   12.42 +
   12.43 +
   12.44 +(*** Install simpsets and datatypes in theory structure ***)
   12.45 +
   12.46 +simpset := FOL_ss;
   12.47 +
   12.48 +exception SS_DATA of simpset;
   12.49 +
   12.50 +let fun merge [] = SS_DATA empty_ss
   12.51 +      | merge ss = let val ss = map (fn SS_DATA x => x) ss;
   12.52 +                   in SS_DATA (foldl merge_ss (hd ss, tl ss)) end;
   12.53 +
   12.54 +    fun put (SS_DATA ss) = simpset := ss;
   12.55 +
   12.56 +    fun get () = SS_DATA (!simpset);
   12.57 +in add_thydata "FOL"
   12.58 +     ("simpset", ThyMethods {merge = merge, put = put, get = get})
   12.59 +end;
   12.60 +
   12.61 +
   12.62 +add_thy_reader_file "thy_data.ML";
    13.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    13.2 +++ b/src/FOL/thy_data.ML	Fri Jan 03 15:01:55 1997 +0100
    13.3 @@ -0,0 +1,19 @@
    13.4 +(*  Title:      FOL/thy_data.ML
    13.5 +    ID:         $Id$
    13.6 +    Author:     Carsten Clasohm
    13.7 +    Copyright   1995 TU Muenchen
    13.8 +
    13.9 +Definitions that have to be reread after init_thy_reader has been invoked
   13.10 +*)
   13.11 +
   13.12 +fun simpset_of tname =
   13.13 +  case get_thydata tname "simpset" of
   13.14 +      None => empty_ss
   13.15 +    | Some (SS_DATA ss) => ss;
   13.16 +
   13.17 +fun claset_of tname =
   13.18 +  case get_thydata tname "claset" of
   13.19 +      None => empty_cs
   13.20 +    | Some (CS_DATA cs) => cs;
   13.21 +
   13.22 +
    14.1 --- a/src/ZF/AC.ML	Fri Jan 03 10:48:28 1997 +0100
    14.2 +++ b/src/ZF/AC.ML	Fri Jan 03 15:01:55 1997 +0100
    14.3 @@ -12,7 +12,7 @@
    14.4  val [nonempty] = goal AC.thy
    14.5       "[| !!x. x:A ==> (EX y. y:B(x)) |] ==> EX z. z : Pi(A,B)";
    14.6  by (excluded_middle_tac "A=0" 1);
    14.7 -by (asm_simp_tac (ZF_ss addsimps [Pi_empty1]) 2 THEN fast_tac ZF_cs 2);
    14.8 +by (asm_simp_tac (!simpset addsimps [Pi_empty1]) 2 THEN Fast_tac 2);
    14.9  (*The non-trivial case*)
   14.10  by (fast_tac (eq_cs addIs [AC, nonempty]) 1);
   14.11  qed "AC_Pi";
   14.12 @@ -35,7 +35,7 @@
   14.13  \     |] ==> EX f: A->Union(A). ALL x:A. f`x : x";
   14.14  by (res_inst_tac [("B1", "%x.x")] (AC_Pi RS exE) 1);
   14.15  by (etac nonempty 1);
   14.16 -by (fast_tac (ZF_cs addDs [apply_type] addIs [Pi_type]) 1);
   14.17 +by (fast_tac (!claset addDs [apply_type] addIs [Pi_type]) 1);
   14.18  qed "AC_func";
   14.19  
   14.20  goal ZF.thy "!!x A. [| 0 ~: A;  x: A |] ==> EX y. y:x";
   14.21 @@ -53,7 +53,7 @@
   14.22  by (rtac bexI 2);
   14.23  by (assume_tac 2);
   14.24  by (etac fun_weaken_type 2);
   14.25 -by (ALLGOALS (fast_tac ZF_cs));
   14.26 +by (ALLGOALS (Fast_tac));
   14.27  qed "AC_func_Pow";
   14.28  
   14.29  goal AC.thy "!!A. 0 ~: A ==> EX f. f: (PROD x:A. x)";
    15.1 --- a/src/ZF/AC.thy	Fri Jan 03 10:48:28 1997 +0100
    15.2 +++ b/src/ZF/AC.thy	Fri Jan 03 15:01:55 1997 +0100
    15.3 @@ -8,7 +8,7 @@
    15.4  This definition comes from Halmos (1960), page 59.
    15.5  *)
    15.6  
    15.7 -AC = ZF + "func" +
    15.8 +AC = func +
    15.9  rules
   15.10    AC    "[| a: A;  !!x. x:A ==> (EX y. y:B(x)) |] ==> EX z. z : Pi(A,B)"
   15.11  end
    16.1 --- a/src/ZF/AC/AC0_AC1.ML	Fri Jan 03 10:48:28 1997 +0100
    16.2 +++ b/src/ZF/AC/AC0_AC1.ML	Fri Jan 03 15:01:55 1997 +0100
    16.3 @@ -7,11 +7,11 @@
    16.4  *)
    16.5  
    16.6  goal thy "!!A. 0~:A ==> A <= Pow(Union(A))-{0}";
    16.7 -by (fast_tac AC_cs 1);
    16.8 +by (Fast_tac 1);
    16.9  val subset_Pow_Union = result();
   16.10  
   16.11  goal thy "!!f. [| f:(PROD X:A. X); D<=A |] ==> EX g. g:(PROD X:D. X)";
   16.12 -by (fast_tac (AC_cs addSIs [restrict_type, apply_type]) 1);
   16.13 +by (fast_tac (!claset addSIs [restrict_type, apply_type]) 1);
   16.14  val lemma1 = result();
   16.15  
   16.16  goalw thy AC_defs "!!Z. AC0 ==> AC1"; 
   16.17 @@ -19,8 +19,8 @@
   16.18  qed "AC0_AC1";
   16.19  
   16.20  goalw thy AC_defs "!!Z. AC1 ==> AC0";
   16.21 -by (deepen_tac ZF_cs 0 1);
   16.22 +by (Deepen_tac 0 1);
   16.23  (*Large search space.  Faster proof by
   16.24 -  by (fast_tac (FOL_cs addSIs [notI, singletonI] addSEs [notE, DiffE]) 1);
   16.25 +  by (fast_tac (!claset addSIs [notI, singletonI] addSEs [notE, DiffE]) 1);
   16.26  *)
   16.27  qed "AC1_AC0";
    17.1 --- a/src/ZF/AC/AC10_AC15.ML	Fri Jan 03 10:48:28 1997 +0100
    17.2 +++ b/src/ZF/AC/AC10_AC15.ML	Fri Jan 03 15:01:55 1997 +0100
    17.3 @@ -30,7 +30,7 @@
    17.4  goalw thy [lepoll_def] "!!A. A~=0 ==> B lepoll A*B";
    17.5  by (etac not_emptyE 1);
    17.6  by (res_inst_tac [("x","lam z:B. <x,z>")] exI 1);
    17.7 -by (fast_tac (AC_cs addSIs [snd_conv, lam_injective]) 1);
    17.8 +by (fast_tac (!claset addSIs [snd_conv, lam_injective]) 1);
    17.9  val lepoll_Sigma = result();
   17.10  
   17.11  goal thy "!!A. 0~:A ==> ALL B:{cons(0,x*nat). x:A}. ~Finite(B)";
   17.12 @@ -41,18 +41,18 @@
   17.13  by (dresolve_tac [subset_consI RS subset_imp_lepoll RS lepoll_Finite] 1);
   17.14  by (resolve_tac [lepoll_Sigma RS lepoll_Finite RS (nat_not_Finite RS notE)] 1
   17.15          THEN (assume_tac 2));
   17.16 -by (fast_tac AC_cs 1);
   17.17 +by (Fast_tac 1);
   17.18  val cons_times_nat_not_Finite = result();
   17.19  
   17.20  goal thy "!!A. [| Union(C)=A; a:A |] ==> EX B:C. a:B & B <= A";
   17.21 -by (fast_tac ZF_cs 1);
   17.22 +by (Fast_tac 1);
   17.23  val lemma1 = result();
   17.24  
   17.25  goalw thy [pairwise_disjoint_def]
   17.26          "!!A. [| pairwise_disjoint(A); B:A; C:A; a:B; a:C |] ==> B=C";
   17.27  by (dtac IntI 1 THEN (assume_tac 1));
   17.28  by (dres_inst_tac [("A","B Int C")] not_emptyI 1);
   17.29 -by (fast_tac ZF_cs 1);
   17.30 +by (Fast_tac 1);
   17.31  val lemma2 = result();
   17.32  
   17.33  goalw thy [sets_of_size_between_def]
   17.34 @@ -62,12 +62,12 @@
   17.35  \               0:u & 2 lepoll u & u lepoll n";
   17.36  by (rtac ballI 1);
   17.37  by (etac ballE 1);
   17.38 -by (fast_tac ZF_cs 2);
   17.39 +by (Fast_tac 2);
   17.40  by (REPEAT (etac conjE 1));
   17.41  by (dresolve_tac [consI1 RSN (2, lemma1)] 1);
   17.42  by (etac bexE 1);
   17.43  by (rtac ex1I 1);
   17.44 -by (fast_tac ZF_cs 1);
   17.45 +by (Fast_tac 1);
   17.46  by (REPEAT (etac conjE 1));
   17.47  by (rtac lemma2 1 THEN (REPEAT (assume_tac 1)));
   17.48  val lemma3 = result();
   17.49 @@ -79,13 +79,13 @@
   17.50  by (res_inst_tac [("d", "%y. P(converse(f)`y)")] lam_injective 1);
   17.51  by (etac RepFunE 1);
   17.52  by (forward_tac [inj_is_fun RS apply_type] 1 THEN (assume_tac 1));
   17.53 -by (fast_tac (AC_cs addIs [LeastI2]
   17.54 +by (fast_tac (!claset addIs [LeastI2]
   17.55                  addSEs [Ord_in_Ord, inj_is_fun RS apply_type]) 1);
   17.56  by (etac RepFunE 1);
   17.57  by (rtac LeastI2 1);
   17.58 -by (fast_tac AC_cs 1);
   17.59 -by (fast_tac (AC_cs addSEs [Ord_in_Ord, inj_is_fun RS apply_type]) 1);
   17.60 -by (fast_tac (AC_cs addEs [sym, left_inverse RS ssubst]) 1);
   17.61 +by (Fast_tac 1);
   17.62 +by (fast_tac (!claset addSEs [Ord_in_Ord, inj_is_fun RS apply_type]) 1);
   17.63 +by (fast_tac (!claset addEs [sym, left_inverse RS ssubst]) 1);
   17.64  val lemma4 = result();
   17.65  
   17.66  goal thy "!!A. [| n:nat; B:A; u(B) <= cons(0, B*nat); 0:u(B); 2 lepoll u(B);  \
   17.67 @@ -93,15 +93,15 @@
   17.68  \       ==> (lam x:A. {fst(x). x:u(x)-{0}})`B ~= 0 &  \
   17.69  \               (lam x:A. {fst(x). x:u(x)-{0}})`B <= B &  \
   17.70  \               (lam x:A. {fst(x). x:u(x)-{0}})`B lepoll n";
   17.71 -by (asm_simp_tac AC_ss 1);
   17.72 +by (Asm_simp_tac 1);
   17.73  by (rtac conjI 1);
   17.74  by (fast_tac (empty_cs addSDs [RepFun_eq_0_iff RS iffD1]
   17.75                  addDs [lepoll_Diff_sing]
   17.76                  addEs [lepoll_trans RS succ_lepoll_natE, ssubst]
   17.77                  addSIs [notI, lepoll_refl, nat_0I]) 1);
   17.78  by (rtac conjI 1);
   17.79 -by (fast_tac (ZF_cs addSIs [fst_type] addSEs [consE]) 1);
   17.80 -by (fast_tac (ZF_cs addSEs [equalityE,
   17.81 +by (fast_tac (!claset addSIs [fst_type] addSEs [consE]) 1);
   17.82 +by (fast_tac (!claset addSEs [equalityE,
   17.83                  Diff_lepoll RS (nat_into_Ord RSN (2, lemma4))]) 1);
   17.84  val lemma5 = result();
   17.85  
   17.86 @@ -125,7 +125,7 @@
   17.87  
   17.88  goalw thy AC_defs "!!Z. [| n:nat; 1 le n; AC10(n) |] ==> AC11";
   17.89  by (rtac bexI 1 THEN (assume_tac 2));
   17.90 -by (fast_tac ZF_cs 1);
   17.91 +by (Fast_tac 1);
   17.92  qed "AC10_AC11";
   17.93  
   17.94  (* ********************************************************************** *)
   17.95 @@ -141,11 +141,11 @@
   17.96  (* ********************************************************************** *)
   17.97  
   17.98  goalw thy AC_defs "!!Z. AC12 ==> AC15";
   17.99 -by (safe_tac ZF_cs);
  17.100 +by (safe_tac (!claset));
  17.101  by (etac allE 1);
  17.102  by (etac impE 1);
  17.103  by (etac cons_times_nat_not_Finite 1);
  17.104 -by (fast_tac (ZF_cs addSIs [ex_fun_AC13_AC15]) 1);
  17.105 +by (fast_tac (!claset addSIs [ex_fun_AC13_AC15]) 1);
  17.106  qed "AC12_AC15";
  17.107  
  17.108  (* ********************************************************************** *)
  17.109 @@ -167,7 +167,7 @@
  17.110  (* ********************************************************************** *)
  17.111  
  17.112  goalw thy AC_defs "!!n. [| n:nat; 1 le n; AC10(n) |] ==> AC13(n)";
  17.113 -by (safe_tac ZF_cs);
  17.114 +by (safe_tac (!claset));
  17.115  by (fast_tac (empty_cs addSEs [allE, cons_times_nat_not_Finite RSN (2, impE),
  17.116                                  ex_fun_AC13_AC15]) 1);
  17.117  qed "AC10_AC13";
  17.118 @@ -187,10 +187,10 @@
  17.119  by (mp_tac 1);
  17.120  by (etac exE 1);
  17.121  by (res_inst_tac [("x","lam x:A. {f`x}")] exI 1);
  17.122 -by (asm_full_simp_tac (AC_ss addsimps
  17.123 +by (asm_full_simp_tac (!simpset addsimps
  17.124                  [singleton_eqpoll_1 RS eqpoll_imp_lepoll,
  17.125                  singletonI RS not_emptyI]) 1);
  17.126 -by (fast_tac (AC_cs addSEs [apply_type]) 1);
  17.127 +by (fast_tac (!claset addSEs [apply_type]) 1);
  17.128  qed "AC1_AC13";
  17.129  
  17.130  (* ********************************************************************** *)
  17.131 @@ -199,7 +199,7 @@
  17.132  
  17.133  goalw thy AC_defs "!!m n. [| m:nat; n:nat; m le n; AC13(m) |] ==> AC13(n)";
  17.134  by (dtac nat_le_imp_lepoll 1 THEN REPEAT (assume_tac 1));
  17.135 -by (fast_tac (ZF_cs addSEs [lepoll_trans]) 1);
  17.136 +by (fast_tac (!claset addSEs [lepoll_trans]) 1);
  17.137  qed "AC13_mono";
  17.138  
  17.139  (* ********************************************************************** *)
  17.140 @@ -219,7 +219,7 @@
  17.141  (* ********************************************************************** *)
  17.142  
  17.143  goalw thy AC_defs "!!Z. AC14 ==> AC15";
  17.144 -by (fast_tac ZF_cs 1);
  17.145 +by (Fast_tac 1);
  17.146  qed "AC14_AC15";
  17.147  
  17.148  (* ********************************************************************** *)
  17.149 @@ -231,7 +231,7 @@
  17.150  (* ********************************************************************** *)
  17.151  
  17.152  goal thy "!!A. [| A~=0; A lepoll 1 |] ==> EX a. A={a}";
  17.153 -by (fast_tac (AC_cs addSEs [not_emptyE, lepoll_1_is_sing]) 1);
  17.154 +by (fast_tac (!claset addSEs [not_emptyE, lepoll_1_is_sing]) 1);
  17.155  val lemma_aux = result();
  17.156  
  17.157  goal thy "!!f. ALL B:A. f(B)~=0 & f(B)<=B & f(B) lepoll 1  \
  17.158 @@ -240,12 +240,12 @@
  17.159  by (dtac bspec 1 THEN (assume_tac 1));
  17.160  by (REPEAT (etac conjE 1));
  17.161  by (eresolve_tac [lemma_aux RS exE] 1 THEN (assume_tac 1));
  17.162 -by (asm_full_simp_tac (AC_ss addsimps [the_element]) 1);
  17.163 -by (fast_tac (AC_cs addEs [ssubst]) 1);
  17.164 +by (asm_full_simp_tac (!simpset addsimps [the_element]) 1);
  17.165 +by (fast_tac (!claset addEs [ssubst]) 1);
  17.166  val lemma = result();
  17.167  
  17.168  goalw thy AC_defs "!!Z. AC13(1) ==> AC1";
  17.169 -by (fast_tac (AC_cs addSEs [lemma]) 1);
  17.170 +by (fast_tac (!claset addSEs [lemma]) 1);
  17.171  qed "AC13_AC1";
  17.172  
  17.173  (* ********************************************************************** *)
  17.174 @@ -253,5 +253,5 @@
  17.175  (* ********************************************************************** *)
  17.176  
  17.177  goalw thy [AC11_def, AC14_def] "!!Z. AC11 ==> AC14";
  17.178 -by (fast_tac (ZF_cs addSIs [AC10_AC13]) 1);
  17.179 +by (fast_tac (!claset addSIs [AC10_AC13]) 1);
  17.180  qed "AC11_AC14";
    18.1 --- a/src/ZF/AC/AC15_WO6.ML	Fri Jan 03 10:48:28 1997 +0100
    18.2 +++ b/src/ZF/AC/AC15_WO6.ML	Fri Jan 03 15:01:55 1997 +0100
    18.3 @@ -8,15 +8,15 @@
    18.4  open AC15_WO6;
    18.5  
    18.6  goal thy "!!x. Ord(x) ==> (UN a<x. F(a)) = (UN a:x. F(a))";
    18.7 -by (fast_tac (AC_cs addSIs [equalityI, ltI] addSDs [ltD]) 1);
    18.8 +by (fast_tac (!claset addSIs [equalityI, ltI] addSDs [ltD]) 1);
    18.9  val OUN_eq_UN = result();
   18.10  
   18.11  val [prem] = goal thy "ALL x:Pow(A)-{0}. f`x~=0 & f`x<=x & f`x lepoll m ==>  \
   18.12  \       (UN i<LEAST x. HH(f,A,x)={A}. HH(f,A,i)) = A";
   18.13 -by (simp_tac (AC_ss addsimps [Ord_Least RS OUN_eq_UN]) 1);
   18.14 +by (simp_tac (!simpset addsimps [Ord_Least RS OUN_eq_UN]) 1);
   18.15  by (rtac equalityI 1);
   18.16 -by (fast_tac (AC_cs addSDs [less_Least_subset_x]) 1);
   18.17 -by (fast_tac (AC_cs addSDs [prem RS bspec]
   18.18 +by (fast_tac (!claset addSDs [less_Least_subset_x]) 1);
   18.19 +by (fast_tac (!claset addSDs [prem RS bspec]
   18.20                  addSIs [f_subsets_imp_UN_HH_eq_x RS (Diff_eq_0_iff RS iffD1)]) 1);
   18.21  val lemma1 = result();
   18.22  
   18.23 @@ -26,7 +26,7 @@
   18.24  by (dresolve_tac [ltD RS less_Least_subset_x] 1);
   18.25  by (forward_tac [HH_subset_imp_eq] 1);
   18.26  by (etac ssubst 1);
   18.27 -by (fast_tac (AC_cs addIs [prem RS ballE]
   18.28 +by (fast_tac (!claset addIs [prem RS ballE]
   18.29                  addSDs [HH_subset_x_imp_subset_Diff_UN RS not_emptyI2]) 1);
   18.30  val lemma2 = result();
   18.31  
   18.32 @@ -34,13 +34,13 @@
   18.33  by (rtac allI 1);
   18.34  by (eres_inst_tac [("x","Pow(A)-{0}")] allE 1);
   18.35  by (etac impE 1);
   18.36 -by (fast_tac ZF_cs 1);
   18.37 +by (Fast_tac 1);
   18.38  by (REPEAT (eresolve_tac [bexE,conjE,exE] 1));
   18.39  by (rtac bexI 1 THEN (assume_tac 2));
   18.40  by (rtac conjI 1 THEN (assume_tac 1));
   18.41  by (res_inst_tac [("x","LEAST i. HH(f,A,i)={A}")] exI 1);
   18.42  by (res_inst_tac [("x","lam j: (LEAST i. HH(f,A,i)={A}). HH(f,A,j)")] exI 1);
   18.43 -by (asm_full_simp_tac AC_ss 1);
   18.44 -by (fast_tac (AC_cs addSIs [Ord_Least, lam_type RS domain_of_fun]
   18.45 +by (Asm_full_simp_tac 1);
   18.46 +by (fast_tac (!claset addSIs [Ord_Least, lam_type RS domain_of_fun]
   18.47                  addSEs [less_Least_subset_x, lemma1, lemma2]) 1);
   18.48  qed "AC15_WO6";
    19.1 --- a/src/ZF/AC/AC16_WO4.ML	Fri Jan 03 10:48:28 1997 +0100
    19.2 +++ b/src/ZF/AC/AC16_WO4.ML	Fri Jan 03 15:01:55 1997 +0100
    19.3 @@ -19,9 +19,9 @@
    19.4  by (etac exE 1);
    19.5  by (res_inst_tac [("x","n")] exI 1);
    19.6  by (res_inst_tac [("x","lam i:n. {f`i}")] exI 1);
    19.7 -by (asm_full_simp_tac AC_ss 1);
    19.8 +by (Asm_full_simp_tac 1);
    19.9  by (rewrite_goals_tac [bij_def, surj_def]);
   19.10 -by (fast_tac (AC_cs addSIs [ltI, nat_into_Ord, lam_funtype RS domain_of_fun,
   19.11 +by (fast_tac (!claset addSIs [ltI, nat_into_Ord, lam_funtype RS domain_of_fun,
   19.12          equalityI, singleton_eqpoll_1 RS eqpoll_imp_lepoll RS lepoll_trans,
   19.13          nat_1_lepoll_iff RS iffD2]
   19.14          addSEs [apply_type, ltE]) 1);
   19.15 @@ -35,12 +35,12 @@
   19.16  val well_ord_paired = standard (paired_bij RS bij_is_inj RS well_ord_rvimage);
   19.17  
   19.18  goal thy "!!A. [| A lepoll B; ~ A lepoll C |] ==> ~ B lepoll C";
   19.19 -by (fast_tac (FOL_cs addEs [notE, lepoll_trans]) 1);
   19.20 +by (fast_tac (!claset addEs [notE, lepoll_trans]) 1);
   19.21  val lepoll_trans1 = result();
   19.22  
   19.23  goalw thy [lepoll_def]
   19.24          "!!X.[| Y lepoll X; well_ord(X, R) |] ==> EX S. well_ord(Y, S)";
   19.25 -by (fast_tac (AC_cs addSEs [well_ord_rvimage]) 1);
   19.26 +by (fast_tac (!claset addSEs [well_ord_rvimage]) 1);
   19.27  val well_ord_lepoll = result();
   19.28  
   19.29  goal thy "!!X. [| well_ord(X,R); well_ord(Y,S)  \
   19.30 @@ -57,7 +57,7 @@
   19.31  by (res_inst_tac [("x","{{a,x}. a:nat Un  Hartog(z)}")] exI 1);
   19.32  by (resolve_tac [Ord_nat RS well_ord_Memrel RS (Ord_Hartog RS
   19.33                  well_ord_Memrel RSN (2, well_ord_Un)) RS exE] 1);
   19.34 -by (fast_tac (AC_cs addSIs [Ord_Hartog, well_ord_Memrel, well_ord_paired,
   19.35 +by (fast_tac (!claset addSIs [Ord_Hartog, well_ord_Memrel, well_ord_paired,
   19.36          equals0I, HartogI RSN (2, lepoll_trans1),
   19.37          subset_imp_lepoll RS (paired_eqpoll RS eqpoll_sym RS
   19.38          eqpoll_imp_lepoll RSN (2, lepoll_trans))]
   19.39 @@ -68,7 +68,7 @@
   19.40  val lemma2 = result();
   19.41  
   19.42  val [prem] = goal thy "~Finite(B) ==> ~Finite(A Un B)";
   19.43 -by (fast_tac (AC_cs
   19.44 +by (fast_tac (!claset
   19.45          addSIs [subset_imp_lepoll RS (prem RSN (2, lepoll_infinite))]) 1);
   19.46  val infinite_Un = result();
   19.47  
   19.48 @@ -90,13 +90,13 @@
   19.49  by (res_inst_tac [("d","%z. if(z=y, A, converse(f)`z)")] lam_injective 1);
   19.50  by (ALLGOALS
   19.51      (asm_simp_tac 
   19.52 -     (ZF_ss addsimps [inj_is_fun RS apply_type, left_inverse] 
   19.53 -      setloop (split_tac [expand_if] ORELSE' step_tac ZF_cs))));
   19.54 +     (!simpset addsimps [inj_is_fun RS apply_type, left_inverse] 
   19.55 +      setloop (split_tac [expand_if] ORELSE' Step_tac))));
   19.56  val succ_not_lepoll_lemma = result();
   19.57  
   19.58  goalw thy [lepoll_def, eqpoll_def, bij_def, surj_def]
   19.59          "!!A. [| ~A eqpoll B; A lepoll B |] ==> succ(A) lepoll B";
   19.60 -by (fast_tac (AC_cs addSEs [succ_not_lepoll_lemma, inj_is_fun]) 1);
   19.61 +by (fast_tac (!claset addSEs [succ_not_lepoll_lemma, inj_is_fun]) 1);
   19.62  val succ_not_lepoll_imp_eqpoll = result();
   19.63  
   19.64  val [prem] = goalw thy [s_u_def]
   19.65 @@ -108,7 +108,7 @@
   19.66  by (etac CollectE 1);
   19.67  by (etac conjE 1);
   19.68  by (etac swap 1);
   19.69 -by (fast_tac (AC_cs addSEs [succ_not_lepoll_imp_eqpoll]) 1);
   19.70 +by (fast_tac (!claset addSEs [succ_not_lepoll_imp_eqpoll]) 1);
   19.71  val suppose_not = result();
   19.72  
   19.73  (* ********************************************************************** *)
   19.74 @@ -130,13 +130,13 @@
   19.75  by (etac nat_lepoll_imp_ex_eqpoll_n 1);
   19.76  by (resolve_tac [ordertype_eqpoll RS eqpoll_sym RS eqpoll_imp_lepoll
   19.77          RSN (2, lepoll_trans)] 1 THEN (assume_tac 2));
   19.78 -by (fast_tac (AC_cs addSIs [nat_le_infinite_Ord RS le_imp_lepoll]
   19.79 +by (fast_tac (!claset addSIs [nat_le_infinite_Ord RS le_imp_lepoll]
   19.80                  addSEs [Ord_ordertype, ordertype_eqpoll RS eqpoll_imp_lepoll
   19.81                          RS lepoll_infinite]) 1);
   19.82  val ex_subset_eqpoll_n = result();
   19.83  
   19.84  goalw thy [lesspoll_def] "!!n. n: nat ==> n lesspoll nat";
   19.85 -by (fast_tac (AC_cs addSEs [Ord_nat RSN (2, ltI) RS leI RS le_imp_lepoll,
   19.86 +by (fast_tac (!claset addSEs [Ord_nat RSN (2, ltI) RS leI RS le_imp_lepoll,
   19.87          eqpoll_sym RS eqpoll_imp_lepoll]
   19.88          addIs [Ord_nat RSN (2, nat_succI RS ltI) RS leI
   19.89          RS le_imp_lepoll RS lepoll_trans RS succ_lepoll_natE]) 1);
   19.90 @@ -157,27 +157,27 @@
   19.91  val Diff_Finite_eqpoll = result();
   19.92  
   19.93  goal thy "!!x. [| a<=y; b:y-a; u:x |] ==> cons(b, cons(u, a)) : Pow(x Un y)";
   19.94 -by (fast_tac AC_cs 1);
   19.95 +by (Fast_tac 1);
   19.96  val cons_cons_subset = result();
   19.97  
   19.98  goal thy "!!x. [| a eqpoll k; a<=y; b:y-a; u:x; x Int y = 0  \
   19.99  \       |] ==> cons(b, cons(u, a)) eqpoll succ(succ(k))";
  19.100 -by (fast_tac (AC_cs addSIs [cons_eqpoll_succ] addEs [equals0D]) 1);
  19.101 +by (fast_tac (!claset addSIs [cons_eqpoll_succ] addEs [equals0D]) 1);
  19.102  val cons_cons_eqpoll = result();
  19.103  
  19.104  goalw thy [s_u_def] "s_u(u, t_n, k, y) <= t_n";
  19.105 -by (fast_tac AC_cs 1);
  19.106 +by (Fast_tac 1);
  19.107  val s_u_subset = result();
  19.108  
  19.109  goalw thy [s_u_def, succ_def]
  19.110          "!!w. [| w:t_n; cons(b,cons(u,a)) <= w; a <= y; b : y-a; k eqpoll a  \
  19.111  \       |] ==> w: s_u(u, t_n, succ(k), y)";
  19.112 -by (fast_tac (AC_cs addDs [eqpoll_imp_lepoll RS cons_lepoll_cong]
  19.113 +by (fast_tac (!claset addDs [eqpoll_imp_lepoll RS cons_lepoll_cong]
  19.114                  addSEs [subset_imp_lepoll RSN (2, lepoll_trans)]) 1);
  19.115  val s_uI = result();
  19.116  
  19.117  goalw thy [s_u_def] "!!v. v : s_u(u, t_n, k, y) ==> u : v";
  19.118 -by (fast_tac AC_cs 1);
  19.119 +by (Fast_tac 1);
  19.120  val in_s_u_imp_u_in = result();
  19.121  
  19.122  goal thy
  19.123 @@ -187,33 +187,33 @@
  19.124  \       ==> EX! c. c:{v:s_u(u, t_n, succ(k), y). a <= v} & b:c";
  19.125  by (etac ballE 1);
  19.126  by (fast_tac (FOL_cs addSIs [CollectI, cons_cons_subset,
  19.127 -                eqpoll_sym RS cons_cons_eqpoll]) 2);
  19.128 +			     eqpoll_sym RS cons_cons_eqpoll]) 2);
  19.129  by (etac ex1E 1);
  19.130  by (res_inst_tac [("a","w")] ex1I 1);
  19.131  by (rtac conjI 1);
  19.132  by (rtac CollectI 1);
  19.133  by (fast_tac (FOL_cs addSEs [s_uI]) 1);
  19.134 -by (fast_tac AC_cs 1);
  19.135 -by (fast_tac AC_cs 1);
  19.136 +by (Fast_tac 1);
  19.137 +by (Fast_tac 1);
  19.138  by (etac allE 1);
  19.139  by (etac impE 1);
  19.140  by (assume_tac 2);
  19.141 -by (fast_tac (AC_cs addSEs [s_u_subset RS subsetD, in_s_u_imp_u_in]) 1);
  19.142 +by (fast_tac (!claset addSEs [s_u_subset RS subsetD, in_s_u_imp_u_in]) 1);
  19.143  val ex1_superset_a = result();
  19.144  
  19.145  goal thy
  19.146          "!!A. [| succ(k) eqpoll A; k eqpoll B; B <= A; a : A-B; k:nat  \
  19.147  \       |] ==> A = cons(a, B)";
  19.148  by (rtac equalityI 1);
  19.149 -by (fast_tac AC_cs 2);
  19.150 +by (Fast_tac 2);
  19.151  by (resolve_tac [Diff_eq_0_iff RS iffD1] 1);
  19.152  by (rtac equals0I 1);
  19.153  by (dresolve_tac [eqpoll_sym RS eqpoll_imp_lepoll] 1);
  19.154  by (dresolve_tac [eqpoll_sym RS cons_eqpoll_succ] 1);
  19.155 -by (fast_tac AC_cs 1);
  19.156 +by (Fast_tac 1);
  19.157  by (dtac cons_eqpoll_succ 1);
  19.158 -by (fast_tac AC_cs 1);
  19.159 -by (fast_tac (AC_cs addSIs [nat_succI]
  19.160 +by (Fast_tac 1);
  19.161 +by (fast_tac (!claset addSIs [nat_succI]
  19.162          addSEs [[eqpoll_sym RS eqpoll_imp_lepoll, subset_imp_lepoll] MRS
  19.163          (lepoll_trans RS lepoll_trans) RS succ_lepoll_natE]) 1);
  19.164  val set_eq_cons = result();
  19.165 @@ -227,19 +227,19 @@
  19.166  \       Int y = cons(b, a)";
  19.167  by (dresolve_tac [ex1_superset_a RS theI] 1 THEN REPEAT (assume_tac 1));
  19.168  by (rtac set_eq_cons 1);
  19.169 -by (REPEAT (fast_tac AC_cs 1));
  19.170 +by (REPEAT (Fast_tac 1));
  19.171  val the_eq_cons = result();
  19.172  
  19.173  goal thy "!!a. [| cons(x,a) = cons(y,a); x~: a |] ==> x = y ";
  19.174 -by (fast_tac (AC_cs addSEs [equalityE]) 1);
  19.175 +by (fast_tac (!claset addSEs [equalityE]) 1);
  19.176  val cons_eqE = result();
  19.177  
  19.178  goal thy "!!A. A = B ==> A Int C = B Int C";
  19.179 -by (asm_simp_tac AC_ss 1);
  19.180 +by (Asm_simp_tac 1);
  19.181  val eq_imp_Int_eq = result();
  19.182  
  19.183  goal thy "!!a. [| a=b; a=c; b=d |] ==> c=d";
  19.184 -by (asm_full_simp_tac AC_ss 1);
  19.185 +by (Asm_full_simp_tac 1);
  19.186  val msubst = result();
  19.187  
  19.188  (* ********************************************************************** *)
  19.189 @@ -271,7 +271,7 @@
  19.190  by (resolve_tac [beta RS ssubst] 1 THEN (assume_tac 1));
  19.191  by (rtac impI 1);
  19.192  by (rtac cons_eqE 1);
  19.193 -by (fast_tac AC_cs 2);
  19.194 +by (Fast_tac 2);
  19.195  by (dres_inst_tac [("A","THE c. ?P(c)"), ("C","y")] eq_imp_Int_eq 1);
  19.196  by (eresolve_tac [[asm_rl, the_eq_cons, the_eq_cons] MRS msubst] 1
  19.197          THEN REPEAT (assume_tac 1));
  19.198 @@ -285,19 +285,19 @@
  19.199          "!!k. [| k:nat; m:nat |] ==>  \
  19.200  \       ALL A B. A eqpoll k #+ m & k lepoll B & B<=A --> A-B lepoll m";
  19.201  by (eres_inst_tac [("n","k")] nat_induct 1);
  19.202 -by (simp_tac (AC_ss addsimps [add_0]) 1);
  19.203 -by (fast_tac (AC_cs addIs [eqpoll_imp_lepoll RS
  19.204 +by (simp_tac (!simpset addsimps [add_0]) 1);
  19.205 +by (fast_tac (!claset addIs [eqpoll_imp_lepoll RS
  19.206          (Diff_subset RS subset_imp_lepoll RS lepoll_trans)]) 1);
  19.207  by (REPEAT (resolve_tac [allI,impI] 1));
  19.208  by (resolve_tac [succ_lepoll_imp_not_empty RS not_emptyE] 1);
  19.209 -by (fast_tac AC_cs 1);
  19.210 +by (Fast_tac 1);
  19.211  by (eres_inst_tac [("x","A - {xa}")] allE 1);
  19.212  by (eres_inst_tac [("x","B - {xa}")] allE 1);
  19.213  by (etac impE 1);
  19.214 -by (asm_full_simp_tac (AC_ss addsimps [add_succ]) 1);
  19.215 -by (fast_tac (AC_cs addSIs [Diff_sing_eqpoll, lepoll_Diff_sing]) 1);
  19.216 +by (asm_full_simp_tac (!simpset addsimps [add_succ]) 1);
  19.217 +by (fast_tac (!claset addSIs [Diff_sing_eqpoll, lepoll_Diff_sing]) 1);
  19.218  by (res_inst_tac [("P","%z. z lepoll m")] subst 1 THEN (assume_tac 2));
  19.219 -by (fast_tac (AC_cs addSIs [equalityI]) 1);
  19.220 +by (fast_tac (!claset addSIs [equalityI]) 1);
  19.221  val eqpoll_sum_imp_Diff_lepoll_lemma = result();
  19.222  
  19.223  goal thy "!!k. [| A eqpoll succ(k #+ m); B<=A; succ(k) lepoll B;  \
  19.224 @@ -306,7 +306,7 @@
  19.225  by (dresolve_tac [add_succ RS ssubst] 1);
  19.226  by (dresolve_tac [nat_succI RS eqpoll_sum_imp_Diff_lepoll_lemma] 1
  19.227          THEN (REPEAT (assume_tac 1)));
  19.228 -by (fast_tac AC_cs 1);
  19.229 +by (Fast_tac 1);
  19.230  val eqpoll_sum_imp_Diff_lepoll = result();
  19.231  
  19.232  (* ********************************************************************** *)
  19.233 @@ -317,19 +317,19 @@
  19.234          "!!k. [| k:nat; m:nat |] ==>  \
  19.235  \       ALL A B. A eqpoll k #+ m & k eqpoll B & B<=A --> A-B eqpoll m";
  19.236  by (eres_inst_tac [("n","k")] nat_induct 1);
  19.237 -by (fast_tac (AC_cs addSDs [eqpoll_sym RS eqpoll_imp_lepoll RS lepoll_0_is_0]
  19.238 -        addss (AC_ss addsimps [add_0])) 1);
  19.239 +by (fast_tac (!claset addSDs [eqpoll_sym RS eqpoll_imp_lepoll RS lepoll_0_is_0]
  19.240 +        addss (!simpset addsimps [add_0])) 1);
  19.241  by (REPEAT (resolve_tac [allI,impI] 1));
  19.242  by (resolve_tac [succ_lepoll_imp_not_empty RS not_emptyE] 1);
  19.243 -by (fast_tac (AC_cs addSEs [eqpoll_imp_lepoll]) 1);
  19.244 +by (fast_tac (!claset addSEs [eqpoll_imp_lepoll]) 1);
  19.245  by (eres_inst_tac [("x","A - {xa}")] allE 1);
  19.246  by (eres_inst_tac [("x","B - {xa}")] allE 1);
  19.247  by (etac impE 1);
  19.248 -by (fast_tac (AC_cs addSIs [Diff_sing_eqpoll,
  19.249 +by (fast_tac (!claset addSIs [Diff_sing_eqpoll,
  19.250          eqpoll_sym RSN (2, Diff_sing_eqpoll) RS eqpoll_sym]
  19.251 -        addss (AC_ss addsimps [add_succ])) 1);
  19.252 +        addss (!simpset addsimps [add_succ])) 1);
  19.253  by (res_inst_tac [("P","%z. z eqpoll m")] subst 1 THEN (assume_tac 2));
  19.254 -by (fast_tac (AC_cs addSIs [equalityI]) 1);
  19.255 +by (fast_tac (!claset addSIs [equalityI]) 1);
  19.256  val eqpoll_sum_imp_Diff_eqpoll_lemma = result();
  19.257  
  19.258  goal thy "!!k. [| A eqpoll succ(k #+ m); B<=A; succ(k) eqpoll B;  \
  19.259 @@ -338,7 +338,7 @@
  19.260  by (dresolve_tac [add_succ RS ssubst] 1);
  19.261  by (dresolve_tac [nat_succI RS eqpoll_sum_imp_Diff_eqpoll_lemma] 1
  19.262          THEN (REPEAT (assume_tac 1)));
  19.263 -by (fast_tac AC_cs 1);
  19.264 +by (Fast_tac 1);
  19.265  val eqpoll_sum_imp_Diff_eqpoll = result();
  19.266  
  19.267  (* ********************************************************************** *)
  19.268 @@ -347,7 +347,7 @@
  19.269  
  19.270  goal thy "!!w. [| x Int y = 0; w <= x Un y |]  \
  19.271  \        ==> w Int (x - {u}) = w - cons(u, w Int y)";
  19.272 -by (fast_tac (AC_cs addSIs [equalityI] addEs [equals0D]) 1);
  19.273 +by (fast_tac (!claset addSIs [equalityI] addEs [equals0D]) 1);
  19.274  val w_Int_eq_w_Diff = result();
  19.275  
  19.276  goal thy "!!w. [| w:{v:s_u(u, t_n, succ(l), y). a <= v};  \
  19.277 @@ -357,8 +357,8 @@
  19.278  \       |] ==> w Int (x - {u}) eqpoll m";
  19.279  by (etac CollectE 1);
  19.280  by (resolve_tac [w_Int_eq_w_Diff RS ssubst] 1 THEN (assume_tac 1));
  19.281 -by (fast_tac (AC_cs addSDs [s_u_subset RS subsetD]) 1);
  19.282 -by (fast_tac (AC_cs addEs [equals0D] addSDs [bspec]
  19.283 +by (fast_tac (!claset addSDs [s_u_subset RS subsetD]) 1);
  19.284 +by (fast_tac (!claset addEs [equals0D] addSDs [bspec]
  19.285          addDs [s_u_subset RS subsetD]
  19.286          addSEs [eqpoll_sym RS cons_eqpoll_succ RS eqpoll_sym, in_s_u_imp_u_in]
  19.287          addSIs [nat_succI, eqpoll_sum_imp_Diff_eqpoll]) 1);
  19.288 @@ -372,7 +372,7 @@
  19.289  goal thy
  19.290          "!!z. [| z : xa Int (x - {u}); l eqpoll a; a <= y; x Int y = 0; u:x  \
  19.291  \       |] ==> cons(z, cons(u, a)) : {v: Pow(x Un y). v eqpoll succ(succ(l))}";
  19.292 -by (fast_tac (AC_cs addSIs [cons_eqpoll_succ] addEs [equals0D, eqpoll_sym]) 1);
  19.293 +by (fast_tac (!claset addSIs [cons_eqpoll_succ] addEs [equals0D, eqpoll_sym]) 1);
  19.294  val cons_cons_in = result();
  19.295  
  19.296  (* ********************************************************************** *)
  19.297 @@ -396,17 +396,17 @@
  19.298  by (rtac CollectI 1);
  19.299  by (rtac lam_type 1);
  19.300  by (rtac CollectI 1);
  19.301 -by (fast_tac AC_cs 1);
  19.302 +by (Fast_tac 1);
  19.303  by (rtac w_Int_eqpoll_m 1 THEN REPEAT (assume_tac 1));
  19.304 -by (simp_tac AC_ss 1);
  19.305 +by (Simp_tac 1);
  19.306  by (REPEAT (resolve_tac [ballI, impI] 1));
  19.307  by (eresolve_tac [w_Int_eqpoll_m RSN (2, eqpoll_m_not_empty) RS not_emptyE] 1
  19.308          THEN REPEAT (assume_tac 1));
  19.309  by (dresolve_tac [equalityD1 RS subsetD] 1 THEN (assume_tac 1));
  19.310  by (dresolve_tac [cons_cons_in RSN (2, bspec)] 1 THEN REPEAT (assume_tac 1));
  19.311  by (etac ex1_two_eq 1);
  19.312 -by (fast_tac (AC_cs addSEs [s_u_subset RS subsetD, in_s_u_imp_u_in]) 1);
  19.313 -by (fast_tac (AC_cs addSEs [s_u_subset RS subsetD, in_s_u_imp_u_in]) 1);
  19.314 +by (fast_tac (!claset addSEs [s_u_subset RS subsetD, in_s_u_imp_u_in]) 1);
  19.315 +by (fast_tac (!claset addSEs [s_u_subset RS subsetD, in_s_u_imp_u_in]) 1);
  19.316  val subset_s_u_lepoll_w = result();
  19.317  
  19.318  goal thy "!!k. [| 0<k; k:nat |] ==> EX l:nat. k = succ(l)";
  19.319 @@ -438,7 +438,7 @@
  19.320  (* ********************************************************************** *)
  19.321  
  19.322  goal thy "{x:Pow(X). x lepoll 0} = {0}";
  19.323 -by (fast_tac (AC_cs addSDs [lepoll_0_is_0]
  19.324 +by (fast_tac (!claset addSDs [lepoll_0_is_0]
  19.325                      addSIs [lepoll_refl, equalityI]) 1);
  19.326  val subsets_lepoll_0_eq_unit = result();
  19.327  
  19.328 @@ -447,12 +447,12 @@
  19.329  by (resolve_tac [well_ord_infinite_subsets_eqpoll_X
  19.330          RS (eqpoll_def RS def_imp_iff RS iffD1) RS exE] 1
  19.331      THEN (REPEAT (assume_tac 1)));
  19.332 -by (fast_tac (ZF_cs addSEs [bij_is_inj RS well_ord_rvimage]) 1);
  19.333 +by (fast_tac (!claset addSEs [bij_is_inj RS well_ord_rvimage]) 1);
  19.334  val well_ord_subsets_eqpoll_n = result();
  19.335  
  19.336  goal thy "!!n. n:nat ==> {z:Pow(y). z lepoll succ(n)} =  \
  19.337  \       {z:Pow(y). z lepoll n} Un {z:Pow(y). z eqpoll succ(n)}";
  19.338 -by (fast_tac (ZF_cs addIs [le_refl, leI,
  19.339 +by (fast_tac (!claset addIs [le_refl, leI,
  19.340                  le_imp_lepoll, equalityI]
  19.341                  addSDs [lepoll_succ_disj]
  19.342                  addSEs [nat_into_Ord, lepoll_trans, eqpoll_imp_lepoll]) 1);
  19.343 @@ -460,7 +460,7 @@
  19.344  
  19.345  goal thy "!!n. n:nat ==>  \
  19.346  \       {z:Pow(y). z lepoll n} Int {z:Pow(y). z eqpoll succ(n)} = 0";
  19.347 -by (fast_tac (ZF_cs addSEs [eqpoll_sym RS eqpoll_imp_lepoll 
  19.348 +by (fast_tac (!claset addSEs [eqpoll_sym RS eqpoll_imp_lepoll 
  19.349                  RS lepoll_trans RS succ_lepoll_natE]
  19.350                  addSIs [equals0I]) 1);
  19.351  val Int_empty = result();
  19.352 @@ -471,15 +471,15 @@
  19.353  
  19.354  goalw thy [irrefl_def, trans_on_def, part_ord_def, linear_def, tot_ord_def]
  19.355          "tot_ord({a},0)";
  19.356 -by (simp_tac ZF_ss 1);
  19.357 +by (Simp_tac 1);
  19.358  val tot_ord_unit = result();
  19.359  
  19.360  goalw thy [wf_on_def, wf_def] "wf[{a}](0)";
  19.361 -by (fast_tac (ZF_cs addSIs [equalityI]) 1);
  19.362 +by (fast_tac (!claset addSIs [equalityI]) 1);
  19.363  val wf_on_unit = result();
  19.364  
  19.365  goalw thy [well_ord_def] "well_ord({a},0)";
  19.366 -by (simp_tac (ZF_ss addsimps [tot_ord_unit, wf_on_unit]) 1);
  19.367 +by (simp_tac (!simpset addsimps [tot_ord_unit, wf_on_unit]) 1);
  19.368  val well_ord_unit = result();
  19.369  
  19.370  (* ********************************************************************** *)
  19.371 @@ -489,22 +489,22 @@
  19.372  goal thy "!!y r. [| well_ord(y,r); ~Finite(y); n:nat |] ==>  \
  19.373  \       EX R. well_ord({z:Pow(y). z lepoll n}, R)";
  19.374  by (etac nat_induct 1);
  19.375 -by (fast_tac (ZF_cs addSIs [well_ord_unit]
  19.376 -        addss (ZF_ss addsimps [subsets_lepoll_0_eq_unit])) 1);
  19.377 +by (fast_tac (!claset addSIs [well_ord_unit]
  19.378 +        addss (!simpset addsimps [subsets_lepoll_0_eq_unit])) 1);
  19.379  by (etac exE 1);
  19.380  by (eresolve_tac [well_ord_subsets_eqpoll_n RS exE] 1 
  19.381          THEN REPEAT (assume_tac 1));
  19.382 -by (asm_simp_tac (ZF_ss addsimps [subsets_lepoll_succ]) 1);
  19.383 +by (asm_simp_tac (!simpset addsimps [subsets_lepoll_succ]) 1);
  19.384  by (dtac well_ord_radd 1 THEN (assume_tac 1));
  19.385  by (eresolve_tac [Int_empty RS disj_Un_eqpoll_sum RS 
  19.386                  (eqpoll_def RS def_imp_iff RS iffD1) RS exE] 1);
  19.387 -by (fast_tac (ZF_cs addSEs [bij_is_inj RS well_ord_rvimage]) 1);
  19.388 +by (fast_tac (!claset addSEs [bij_is_inj RS well_ord_rvimage]) 1);
  19.389  val well_ord_subsets_lepoll_n = result();
  19.390  
  19.391  goalw thy [LL_def, MM_def]
  19.392          "!!x. t_n <= {v:Pow(x Un y). v eqpoll n}  \
  19.393  \               ==> LL(t_n, k, y) <= {z:Pow(y). z lepoll n}";
  19.394 -by (fast_tac (AC_cs addSEs [RepFunE]
  19.395 +by (fast_tac (!claset addSEs [RepFunE]
  19.396          addIs [subset_imp_lepoll RS (eqpoll_imp_lepoll
  19.397                  RSN (2, lepoll_trans))]) 1);
  19.398  val LL_subset = result();
  19.399 @@ -526,16 +526,16 @@
  19.400  \       t_n <= {v:Pow(x Un y). v eqpoll n}; \
  19.401  \       v:LL(t_n, k, y)  \
  19.402  \       |] ==> EX! w. w:MM(t_n, k, y) & v<=w";
  19.403 -by (step_tac (AC_cs addSEs [RepFunE]) 1);
  19.404 +by (step_tac (!claset addSEs [RepFunE]) 1);
  19.405  by (resolve_tac [lepoll_imp_eqpoll_subset RS exE] 1 THEN (assume_tac 1));
  19.406  by (eres_inst_tac [("x","xa")] ballE 1);
  19.407 -by (fast_tac (AC_cs addSEs [eqpoll_sym]) 2);
  19.408 +by (fast_tac (!claset addSEs [eqpoll_sym]) 2);
  19.409  by (res_inst_tac [("a","v")] ex1I 1);
  19.410 -by (fast_tac AC_cs 1);
  19.411 +by (Fast_tac 1);
  19.412  by (etac ex1E 1);
  19.413  by (res_inst_tac [("x","v")] allE 1 THEN (assume_tac 1));
  19.414  by (eres_inst_tac [("x","xb")] allE 1);
  19.415 -by (fast_tac AC_cs 1);
  19.416 +by (Fast_tac 1);
  19.417  val unique_superset_in_MM = result();
  19.418  
  19.419  (* ********************************************************************** *)
  19.420 @@ -556,15 +556,15 @@
  19.421  by (eresolve_tac [exists_proper_in_s_u RS bexE] 1
  19.422          THEN REPEAT (assume_tac 1));
  19.423  by (rewrite_goals_tac [MM_def, s_u_def]);
  19.424 -by (fast_tac AC_cs 1);
  19.425 +by (Fast_tac 1);
  19.426  val exists_in_MM = result();
  19.427  
  19.428  goalw thy [LL_def] "!!w. w : MM(t_n, k, y) ==> w Int y : LL(t_n, k, y)";
  19.429 -by (fast_tac AC_cs 1);
  19.430 +by (Fast_tac 1);
  19.431  val Int_in_LL = result();
  19.432  
  19.433  goalw thy [MM_def] "MM(t_n, k, y) <= t_n";
  19.434 -by (fast_tac AC_cs 1);
  19.435 +by (Fast_tac 1);
  19.436  val MM_subset = result();
  19.437  
  19.438  goal thy 
  19.439 @@ -579,10 +579,10 @@
  19.440  by (res_inst_tac [("x","w Int y")] bexI 1);
  19.441  by (etac Int_in_LL 2);
  19.442  by (rewtac GG_def);
  19.443 -by (asm_full_simp_tac (AC_ss addsimps [Int_in_LL]) 1);
  19.444 +by (asm_full_simp_tac (!simpset addsimps [Int_in_LL]) 1);
  19.445  by (eresolve_tac [unique_superset_in_MM RS the_equality2 RS ssubst] 1
  19.446          THEN (assume_tac 1));
  19.447 -by (REPEAT (fast_tac (AC_cs addEs [equals0D] addSEs [Int_in_LL]) 1));
  19.448 +by (REPEAT (fast_tac (!claset addEs [equals0D] addSEs [Int_in_LL]) 1));
  19.449  val exists_in_LL = result();
  19.450  
  19.451  goalw thy [LL_def] 
  19.452 @@ -590,7 +590,7 @@
  19.453  \       t_n <= {v:Pow(x Un y). v eqpoll n};  \
  19.454  \       v : LL(t_n, k, y) |]  \
  19.455  \       ==> v = (THE x. x : MM(t_n, k, y) & v <= x) Int y";
  19.456 -by (fast_tac (AC_cs addSEs [Int_in_LL,
  19.457 +by (fast_tac (!claset addSEs [Int_in_LL,
  19.458                  unique_superset_in_MM RS the_equality2 RS ssubst]) 1);
  19.459  val in_LL_eq_Int = result();
  19.460  
  19.461 @@ -599,7 +599,7 @@
  19.462  \       t_n <= {v:Pow(x Un y). v eqpoll n};  \
  19.463  \       v : LL(t_n, k, y) |]  \
  19.464  \       ==> (THE x. x : MM(t_n, k, y) & v <= x) <= x Un y";
  19.465 -by (fast_tac (AC_cs addSDs [unique_superset_in_MM RS theI RS conjunct1 RS 
  19.466 +by (fast_tac (!claset addSDs [unique_superset_in_MM RS theI RS conjunct1 RS 
  19.467          (MM_subset RS subsetD)]) 1);
  19.468  val the_in_MM_subset = result();
  19.469  
  19.470 @@ -608,13 +608,13 @@
  19.471  \       t_n <= {v:Pow(x Un y). v eqpoll n};  \
  19.472  \       v : LL(t_n, k, y) |]  \
  19.473  \       ==> GG(t_n, k, y) ` v <= x";
  19.474 -by (asm_full_simp_tac AC_ss 1);
  19.475 +by (Asm_full_simp_tac 1);
  19.476  by (forward_tac [the_in_MM_subset] 1 THEN REPEAT (assume_tac 1));
  19.477  by (dtac in_LL_eq_Int 1 THEN REPEAT (assume_tac 1));
  19.478  by (rtac subsetI 1);
  19.479  by (etac DiffE 1);
  19.480  by (etac swap 1);
  19.481 -by (fast_tac (AC_cs addEs [ssubst]) 1);
  19.482 +by (fast_tac (!claset addEs [ssubst]) 1);
  19.483  val GG_subset = result();
  19.484  
  19.485  goal thy  
  19.486 @@ -649,12 +649,12 @@
  19.487  goalw thy [MM_def]
  19.488          "!!w. [| w : MM(t_n, k, y); t_n <= {v:Pow(x Un y). v eqpoll n}  \
  19.489  \       |] ==> w eqpoll n";
  19.490 -by (fast_tac AC_cs 1);
  19.491 +by (Fast_tac 1);
  19.492  val in_MM_eqpoll_n = result();
  19.493  
  19.494  goalw thy [LL_def, MM_def]
  19.495          "!!w. w : LL(t_n, k, y) ==> k lepoll w";
  19.496 -by (fast_tac AC_cs 1);
  19.497 +by (Fast_tac 1);
  19.498  val in_LL_eqpoll_n = result();
  19.499  
  19.500  goalw thy [GG_def] 
  19.501 @@ -666,13 +666,14 @@
  19.502  \       (GG(t_n, succ(k), y)) `  \
  19.503  \       (converse(ordermap(LL(t_n, succ(k), y), S)) ` b) lepoll m";
  19.504  by (rtac oallI 1);
  19.505 -by (asm_full_simp_tac (AC_ss addsimps [ltD,
  19.506 +by (asm_full_simp_tac (!simpset addsimps [ltD,
  19.507          ordermap_bij RS bij_converse_bij RS bij_is_fun RS apply_type]) 1);
  19.508  by (rtac eqpoll_sum_imp_Diff_lepoll 1);
  19.509 -by (REPEAT (fast_tac (FOL_cs addSDs [ltD]
  19.510 +by (REPEAT (fast_tac 
  19.511 +	    (FOL_cs addSDs [ltD]
  19.512          addSIs [eqpoll_sum_imp_Diff_lepoll, in_LL_eqpoll_n]
  19.513          addEs [unique_superset_in_MM RS theI RS conjunct1 RS in_MM_eqpoll_n,
  19.514 -        in_LL_eq_Int RS equalityD1 RS (Int_lower1 RSN (2, subset_trans)),
  19.515 +          in_LL_eq_Int RS equalityD1 RS (Int_lower1 RSN (2, subset_trans)),
  19.516          ordermap_bij RS bij_converse_bij RS bij_is_fun RS apply_type]) 1));
  19.517  val all_in_lepoll_m = result();
  19.518  
  19.519 @@ -691,12 +692,12 @@
  19.520  by (forward_tac [infinite_Un] 1 THEN (mp_tac 1));
  19.521  by (REPEAT (eresolve_tac [exE, conjE] 1));
  19.522  by (resolve_tac [well_ord_LL RS exE] 1 THEN REPEAT (assume_tac 1));
  19.523 -by (fast_tac (AC_cs addSIs [nat_succI, add_type]) 1);
  19.524 +by (fast_tac (!claset addSIs [nat_succI, add_type]) 1);
  19.525  by (res_inst_tac [("x","ordertype(LL(T, succ(k), y), x)")] exI 1);
  19.526  by (res_inst_tac [("x","lam b:ordertype(LL(T, succ(k), y), x).  \
  19.527  \       (GG(T, succ(k), y)) `  \
  19.528  \       (converse(ordermap(LL(T, succ(k), y), x)) ` b)")] exI 1);
  19.529 -by (simp_tac AC_ss 1);
  19.530 +by (Simp_tac 1);
  19.531  by (fast_tac (empty_cs addSIs [conjI, lam_funtype RS domain_of_fun]
  19.532          addSEs [Ord_ordertype, all_in_lepoll_m, OUN_eq_x]) 1);
  19.533  qed "AC16_WO4";
    20.1 --- a/src/ZF/AC/AC16_lemmas.ML	Fri Jan 03 10:48:28 1997 +0100
    20.2 +++ b/src/ZF/AC/AC16_lemmas.ML	Fri Jan 03 15:01:55 1997 +0100
    20.3 @@ -8,28 +8,28 @@
    20.4  open AC16_lemmas;
    20.5  
    20.6  goal thy "!!a. a~:A ==> cons(a,A)-{a}=A";
    20.7 -by (fast_tac (ZF_cs addSIs [equalityI]) 1);
    20.8 +by (fast_tac (!claset addSIs [equalityI]) 1);
    20.9  val cons_Diff_eq = result();
   20.10  
   20.11  goalw thy [lepoll_def] "1 lepoll X <-> (EX x. x:X)";
   20.12  by (rtac iffI 1);
   20.13 -by (fast_tac (ZF_cs addIs [inj_is_fun RS apply_type]) 1);
   20.14 +by (fast_tac (!claset addIs [inj_is_fun RS apply_type]) 1);
   20.15  by (etac exE 1);
   20.16  by (res_inst_tac [("x","lam a:1. x")] exI 1);
   20.17 -by (fast_tac (ZF_cs addSIs [lam_injective]) 1);
   20.18 +by (fast_tac (!claset addSIs [lam_injective]) 1);
   20.19  val nat_1_lepoll_iff = result();
   20.20  
   20.21  goal thy "X eqpoll 1 <-> (EX x. X={x})";
   20.22  by (rtac iffI 1);
   20.23  by (etac eqpollE 1);
   20.24  by (dresolve_tac [nat_1_lepoll_iff RS iffD1] 1);
   20.25 -by (fast_tac (ZF_cs addSIs [lepoll_1_is_sing]) 1);
   20.26 -by (fast_tac (ZF_cs addSIs [singleton_eqpoll_1]) 1);
   20.27 +by (fast_tac (!claset addSIs [lepoll_1_is_sing]) 1);
   20.28 +by (fast_tac (!claset addSIs [singleton_eqpoll_1]) 1);
   20.29  val eqpoll_1_iff_singleton = result();
   20.30  
   20.31  goalw thy [succ_def] 
   20.32        "!!x. [| x eqpoll n; y~:x |] ==> cons(y,x) eqpoll succ(n)";
   20.33 -by (fast_tac (ZF_cs addSEs [cons_eqpoll_cong, mem_irrefl]) 1);
   20.34 +by (fast_tac (!claset addSEs [cons_eqpoll_cong, mem_irrefl]) 1);
   20.35  val cons_eqpoll_succ = result();
   20.36  
   20.37  goal thy "{Y:Pow(X). Y eqpoll 1} = {{x}. x:X}";
   20.38 @@ -37,23 +37,23 @@
   20.39  by (rtac subsetI 1);
   20.40  by (etac CollectE 1);
   20.41  by (dresolve_tac [eqpoll_1_iff_singleton RS iffD1] 1);
   20.42 -by (fast_tac (AC_cs addSIs [RepFunI]) 1);
   20.43 +by (fast_tac (!claset addSIs [RepFunI]) 1);
   20.44  by (rtac subsetI 1);
   20.45  by (etac RepFunE 1);
   20.46  by (rtac CollectI 1);
   20.47 -by (fast_tac AC_cs 1);
   20.48 -by (fast_tac (AC_cs addSIs [singleton_eqpoll_1]) 1);
   20.49 +by (Fast_tac 1);
   20.50 +by (fast_tac (!claset addSIs [singleton_eqpoll_1]) 1);
   20.51  val subsets_eqpoll_1_eq = result();
   20.52  
   20.53  goalw thy [eqpoll_def, bij_def] "X eqpoll {{x}. x:X}";
   20.54  by (res_inst_tac [("x","lam x:X. {x}")] exI 1);
   20.55  by (rtac IntI 1);
   20.56  by (rewrite_goals_tac [inj_def, surj_def]);
   20.57 -by (asm_full_simp_tac AC_ss 1);
   20.58 -by (fast_tac (AC_cs addSIs [lam_type, RepFunI] 
   20.59 +by (Asm_full_simp_tac 1);
   20.60 +by (fast_tac (!claset addSIs [lam_type, RepFunI] 
   20.61                  addIs [singleton_eq_iff RS iffD1]) 1);
   20.62 -by (asm_full_simp_tac AC_ss 1);
   20.63 -by (fast_tac (AC_cs addSIs [lam_type]) 1);
   20.64 +by (Asm_full_simp_tac 1);
   20.65 +by (fast_tac (!claset addSIs [lam_type]) 1);
   20.66  val eqpoll_RepFun_sing = result();
   20.67  
   20.68  goal thy "{Y:Pow(X). Y eqpoll 1} eqpoll X";
   20.69 @@ -65,7 +65,7 @@
   20.70  \               ==> (LEAST i. i:y) : y";
   20.71  by (eresolve_tac [eqpoll_sym RS eqpoll_imp_lepoll RS 
   20.72                  succ_lepoll_imp_not_empty RS not_emptyE] 1);
   20.73 -by (fast_tac (AC_cs addIs [LeastI]
   20.74 +by (fast_tac (!claset addIs [LeastI]
   20.75          addSDs [InfCard_is_Card RS Card_is_Ord, PowD RS subsetD]
   20.76          addEs [Ord_in_Ord]) 1);
   20.77  val InfCard_Least_in = result();
   20.78 @@ -78,34 +78,34 @@
   20.79  by (res_inst_tac [("d","%z. cons(fst(z),snd(z))")] lam_injective 1);
   20.80  by (rtac SigmaI 1);
   20.81  by (etac CollectE 1);
   20.82 -by (asm_full_simp_tac AC_ss 3);
   20.83 +by (Asm_full_simp_tac 3);
   20.84  by (rtac equalityI 3);
   20.85 -by (fast_tac AC_cs 4);
   20.86 +by (Fast_tac 4);
   20.87  by (rtac subsetI 3);
   20.88  by (etac consE 3);
   20.89 -by (fast_tac AC_cs 4);
   20.90 +by (Fast_tac 4);
   20.91  by (rtac CollectI 2);
   20.92 -by (fast_tac AC_cs 2);
   20.93 +by (Fast_tac 2);
   20.94  by (resolve_tac [PowD RS subsetD] 1 THEN (assume_tac 1));
   20.95 -by (REPEAT (fast_tac (AC_cs addSIs [Diff_sing_eqpoll]
   20.96 +by (REPEAT (fast_tac (!claset addSIs [Diff_sing_eqpoll]
   20.97                  addIs [InfCard_Least_in]) 1));
   20.98  val subsets_lepoll_lemma1 = result();
   20.99  
  20.100  val prems = goal thy "(!!y. y:z ==> Ord(y)) ==> z <= succ(Union(z))";
  20.101  by (rtac subsetI 1);
  20.102  by (res_inst_tac [("Q","ALL y:z. y<=x")] (excluded_middle RS disjE) 1);
  20.103 -by (fast_tac (AC_cs addSIs [equalityI]) 2);
  20.104 +by (fast_tac (!claset addSIs [equalityI]) 2);
  20.105  by (etac swap 1);
  20.106  by (rtac ballI 1);
  20.107  by (rtac Ord_linear_le 1);
  20.108  by (dtac le_imp_subset 3 THEN (assume_tac 3));
  20.109 -by (fast_tac (AC_cs addDs prems) 1);
  20.110 -by (fast_tac (AC_cs addDs prems) 1);
  20.111 -by (fast_tac (AC_cs addSEs [leE,ltE]) 1);
  20.112 +by (fast_tac (!claset addDs prems) 1);
  20.113 +by (fast_tac (!claset addDs prems) 1);
  20.114 +by (fast_tac (!claset addSEs [leE,ltE]) 1);
  20.115  val set_of_Ord_succ_Union = result();
  20.116  
  20.117  goal thy "!!i. j<=i ==> i ~: j";
  20.118 -by (fast_tac (ZF_cs addSEs [mem_irrefl]) 1);
  20.119 +by (fast_tac (!claset addSEs [mem_irrefl]) 1);
  20.120  val subset_not_mem = result();
  20.121  
  20.122  val prems = goal thy "(!!y. y:z ==> Ord(y)) ==> succ(Union(z)) ~: z";
  20.123 @@ -114,31 +114,31 @@
  20.124  val succ_Union_not_mem = result();
  20.125  
  20.126  goal thy "Union(cons(succ(Union(z)),z)) = succ(Union(z))";
  20.127 -by (fast_tac (AC_cs addIs [equalityI]) 1);
  20.128 +by (fast_tac (!claset addIs [equalityI]) 1);
  20.129  val Union_cons_eq_succ_Union = result();
  20.130  
  20.131  goal thy "!!i. [| Ord(i); Ord(j) |] ==> i Un j = i | i Un j = j";
  20.132 -by (fast_tac (AC_cs addSDs [le_imp_subset] addIs [equalityI]
  20.133 +by (fast_tac (!claset addSDs [le_imp_subset] addIs [equalityI]
  20.134                  addEs [Ord_linear_le]) 1);
  20.135  val Un_Ord_disj = result();
  20.136  
  20.137  goal thy "!!X. x:X ==> Union(X) = x Un Union(X-{x})";
  20.138 -by (fast_tac (AC_cs addIs [equalityI]) 1);
  20.139 +by (fast_tac (!claset addIs [equalityI]) 1);
  20.140  val Union_eq_Un = result();
  20.141  
  20.142  goal thy "!!n. n:nat ==>  \
  20.143  \       ALL z. (ALL y:z. Ord(y)) & z eqpoll n & z~=0 --> Union(z) : z";
  20.144  by (etac nat_induct 1);
  20.145 -by (fast_tac (AC_cs addSDs [eqpoll_imp_lepoll RS lepoll_0_is_0]) 1);
  20.146 +by (fast_tac (!claset addSDs [eqpoll_imp_lepoll RS lepoll_0_is_0]) 1);
  20.147  by (REPEAT (resolve_tac [allI, impI] 1));
  20.148  by (etac natE 1);
  20.149 -by (fast_tac (AC_cs addSDs [eqpoll_1_iff_singleton RS iffD1]
  20.150 +by (fast_tac (!claset addSDs [eqpoll_1_iff_singleton RS iffD1]
  20.151          addSIs [Union_singleton]) 1);
  20.152  by (hyp_subst_tac 1);
  20.153  by (REPEAT (eresolve_tac [conjE, not_emptyE] 1));
  20.154  by (eres_inst_tac [("x","z-{xb}")] allE 1);
  20.155  by (etac impE 1);
  20.156 -by (fast_tac (AC_cs addSEs [Diff_sing_eqpoll,
  20.157 +by (fast_tac (!claset addSEs [Diff_sing_eqpoll,
  20.158                  Diff_sing_eqpoll RS eqpoll_succ_imp_not_empty]) 1);
  20.159  by (resolve_tac [Union_eq_Un RSN (2, subst_elem)] 1 THEN (assume_tac 2));
  20.160  by (forward_tac [bspec] 1 THEN (assume_tac 1));
  20.161 @@ -161,14 +161,14 @@
  20.162  by (resolve_tac [Limit_has_succ RS ltE] 1 THEN (assume_tac 3));
  20.163  by (etac InfCard_is_Limit 1);
  20.164  by (excluded_middle_tac "z=0" 1);
  20.165 -by (fast_tac (AC_cs addSIs [InfCard_is_Limit RS Limit_has_0]
  20.166 -        addIs [Union_0 RS ssubst]) 2);
  20.167 +by (fast_tac (!claset addSIs [InfCard_is_Limit RS Limit_has_0]
  20.168 +                      addss (!simpset)) 2);
  20.169  by (resolve_tac
  20.170          [PowD RS subsetD RS (InfCard_is_Card RS Card_is_Ord RSN (2, ltI))] 1
  20.171          THEN (TRYALL assume_tac));
  20.172 -by (fast_tac (AC_cs addSIs [Union_in]
  20.173 -                addSEs [PowD RS subsetD RSN (2,
  20.174 -                InfCard_is_Card RS Card_is_Ord RS Ord_in_Ord)]) 1);
  20.175 +by (fast_tac (!claset addSIs [Union_in]
  20.176 +                      addSEs [PowD RS subsetD RSN 
  20.177 +		 (2, InfCard_is_Card RS Card_is_Ord RS Ord_in_Ord)]) 1);
  20.178  val succ_Union_in_x = result();
  20.179  
  20.180  goalw thy [lepoll_def] "!!X. [| InfCard(x); n:nat |] ==>  \
  20.181 @@ -179,14 +179,14 @@
  20.182  by (res_inst_tac [("d","%z. z-{Union(z)}")] lam_injective 1);
  20.183  by (resolve_tac [Union_cons_eq_succ_Union RS ssubst] 2);
  20.184  by (rtac cons_Diff_eq 2);
  20.185 -by (fast_tac (AC_cs addSDs [InfCard_is_Card RS Card_is_Ord]
  20.186 +by (fast_tac (!claset addSDs [InfCard_is_Card RS Card_is_Ord]
  20.187          addEs [Ord_in_Ord] addSIs [succ_Union_not_mem]) 2);
  20.188  by (rtac CollectI 1);
  20.189 -by (fast_tac (AC_cs addSEs [cons_eqpoll_succ] 
  20.190 +by (fast_tac (!claset addSEs [cons_eqpoll_succ] 
  20.191                      addSIs [succ_Union_not_mem] 
  20.192                      addSDs [InfCard_is_Card RS Card_is_Ord] 
  20.193                      addEs  [Ord_in_Ord]) 2);
  20.194 -by (fast_tac (AC_cs addSIs [succ_Union_in_x, nat_succI]) 1);
  20.195 +by (fast_tac (!claset addSIs [succ_Union_in_x, nat_succI]) 1);
  20.196  val succ_lepoll_succ_succ = result();
  20.197  
  20.198  goal thy "!!X. [| InfCard(X); n:nat |]  \
  20.199 @@ -202,18 +202,18 @@
  20.200  by (resolve_tac [InfCard_is_Card RS Card_cardinal_eq RS ssubst] 2 
  20.201          THEN (REPEAT (assume_tac 2)));
  20.202  by (eresolve_tac [eqpoll_refl RS prod_eqpoll_cong RS eqpoll_imp_lepoll] 1);
  20.203 -by (fast_tac (AC_cs addEs [eqpoll_sym RS eqpoll_imp_lepoll RS lepoll_trans]
  20.204 +by (fast_tac (!claset addEs [eqpoll_sym RS eqpoll_imp_lepoll RS lepoll_trans]
  20.205          addSIs [succ_lepoll_succ_succ]) 1);
  20.206  val subsets_eqpoll_X = result();
  20.207  
  20.208  goalw thy [surj_def] "!!f. [| f:surj(A,B); y<=B |]  \
  20.209  \       ==> f``(converse(f)``y) = y";
  20.210 -by (fast_tac (AC_cs addSIs [equalityI] addDs [apply_equality2]
  20.211 +by (fast_tac (!claset addSIs [equalityI] addDs [apply_equality2]
  20.212          addEs [apply_iff RS iffD2]) 1);
  20.213  val image_vimage_eq = result();
  20.214  
  20.215  goal thy "!!f. [| f:inj(A,B); y<=A |] ==> converse(f)``(f``y) = y";
  20.216 -by (fast_tac (AC_cs addSIs [equalityI] addSEs [inj_is_fun RS apply_Pair]
  20.217 +by (fast_tac (!claset addSIs [equalityI] addSEs [inj_is_fun RS apply_Pair]
  20.218                  addDs [inj_equality]) 1);
  20.219  val vimage_image_eq = result();
  20.220  
  20.221 @@ -222,20 +222,20 @@
  20.222  by (etac exE 1);
  20.223  by (res_inst_tac [("x","lam X:{Y:Pow(A). EX f. f : bij(Y, n)}. f``X")] exI 1);
  20.224  by (res_inst_tac [("d","%Z. converse(f)``Z")] lam_bijective 1);
  20.225 -by (fast_tac (AC_cs
  20.226 +by (fast_tac (!claset
  20.227          addSIs [bij_is_inj RS restrict_bij RS bij_converse_bij RS comp_bij] 
  20.228          addSEs [bij_is_fun RS fun_is_rel RS image_subset RS PowI]) 1);
  20.229 -by (fast_tac (AC_cs addSIs [bij_converse_bij RS bij_is_inj RS restrict_bij
  20.230 +by (fast_tac (!claset addSIs [bij_converse_bij RS bij_is_inj RS restrict_bij
  20.231                          RS bij_converse_bij RS comp_bij] 
  20.232                      addSEs [bij_converse_bij RS bij_is_fun RS fun_is_rel
  20.233                          RS image_subset RS PowI]) 1);
  20.234 -by (fast_tac (AC_cs addSEs [bij_is_inj RS vimage_image_eq]) 1);
  20.235 -by (fast_tac (AC_cs addSEs [bij_is_surj RS image_vimage_eq]) 1);
  20.236 +by (fast_tac (!claset addSEs [bij_is_inj RS vimage_image_eq]) 1);
  20.237 +by (fast_tac (!claset addSEs [bij_is_surj RS image_vimage_eq]) 1);
  20.238  val subsets_eqpoll = result();
  20.239  
  20.240  goalw thy [WO2_def] "!!X. WO2 ==> EX a. Card(a) & X eqpoll a";
  20.241  by (REPEAT (eresolve_tac [allE,exE,conjE] 1));
  20.242 -by (fast_tac (AC_cs addSEs [well_ord_Memrel RS well_ord_cardinal_eqpoll RS
  20.243 +by (fast_tac (!claset addSEs [well_ord_Memrel RS well_ord_cardinal_eqpoll RS
  20.244                  (eqpoll_sym RSN (2, eqpoll_trans)) RS eqpoll_sym]
  20.245                  addSIs [Card_cardinal]) 1);
  20.246  val WO2_imp_ex_Card = result();
  20.247 @@ -245,7 +245,7 @@
  20.248  val lepoll_infinite = result();
  20.249  
  20.250  goalw thy [InfCard_def] "!!X. [| ~Finite(X); Card(X) |] ==> InfCard(X)";
  20.251 -by (fast_tac (AC_cs addSEs [Card_is_Ord RS nat_le_infinite_Ord]) 1);
  20.252 +by (fast_tac (!claset addSEs [Card_is_Ord RS nat_le_infinite_Ord]) 1);
  20.253  val infinite_Card_is_InfCard = result();
  20.254  
  20.255  goal thy "!!X n. [| WO2; n:nat; ~Finite(X) |]  \
  20.256 @@ -261,7 +261,7 @@
  20.257  val WO2_infinite_subsets_eqpoll_X = result();
  20.258  
  20.259  goal thy "!!X. well_ord(X,R) ==> EX a. Card(a) & X eqpoll a";
  20.260 -by (fast_tac (AC_cs addSEs [well_ord_cardinal_eqpoll RS eqpoll_sym]
  20.261 +by (fast_tac (!claset addSEs [well_ord_cardinal_eqpoll RS eqpoll_sym]
  20.262                  addSIs [Card_cardinal]) 1);
  20.263  val well_ord_imp_ex_Card = result();
  20.264  
    21.1 --- a/src/ZF/AC/AC16_lemmas.thy	Fri Jan 03 10:48:28 1997 +0100
    21.2 +++ b/src/ZF/AC/AC16_lemmas.thy	Fri Jan 03 15:01:55 1997 +0100
    21.3 @@ -1,3 +1,3 @@
    21.4  (*Dummy theory to document dependencies *)
    21.5  
    21.6 -AC16_lemmas = AC_Equiv + Hartog + first
    21.7 +AC16_lemmas = AC_Equiv + Hartog
    22.1 --- a/src/ZF/AC/AC17_AC1.ML	Fri Jan 03 10:48:28 1997 +0100
    22.2 +++ b/src/ZF/AC/AC17_AC1.ML	Fri Jan 03 15:01:55 1997 +0100
    22.3 @@ -34,7 +34,7 @@
    22.4  by (rtac ballI 1);
    22.5  by (etac swap 1);
    22.6  by (rtac impI 1);
    22.7 -by (fast_tac (AC_cs addSIs [restrict_type]) 1);
    22.8 +by (fast_tac (!claset addSIs [restrict_type]) 1);
    22.9  val not_AC1_imp_ex = result();
   22.10  
   22.11  goal thy "!!x. [| ALL f:Pow(x) - {0} -> x. EX u: Pow(x) - {0}. f`u~:u;  \
   22.12 @@ -50,25 +50,25 @@
   22.13  by (etac notE 1);
   22.14  by (rtac Pi_type 1 THEN (assume_tac 1));
   22.15  by (resolve_tac [apply_type RSN (2, subsetD)] 1 THEN TRYALL assume_tac);
   22.16 -by (fast_tac AC_cs 1);
   22.17 +by (Fast_tac 1);
   22.18  val lemma1 = result();
   22.19  
   22.20  goal thy "!!x. ~ (EX f: Pow(x)-{0}->x. x - F(f) = 0)  \
   22.21  \       ==> (lam f: Pow(x)-{0}->x. x - F(f))  \
   22.22  \               : (Pow(x) -{0} -> x) -> Pow(x) - {0}";
   22.23 -by (fast_tac (AC_cs addSIs [lam_type] addIs [equalityI]
   22.24 +by (fast_tac (!claset addSIs [lam_type] addIs [equalityI]
   22.25                  addSDs [Diff_eq_0_iff RS iffD1]) 1);
   22.26  val lemma2 = result();
   22.27  
   22.28  goal thy "!!f. [| f`Z : Z; Z:Pow(x)-{0} |] ==>  \
   22.29  \       (lam X:Pow(x)-{0}. {f`X})`Z : Pow(Z)-{0}";
   22.30 -by (asm_full_simp_tac AC_ss 1);
   22.31 -by (fast_tac (AC_cs addSDs [equals0D]) 1);
   22.32 +by (Asm_full_simp_tac 1);
   22.33 +by (fast_tac (!claset addSDs [equals0D]) 1);
   22.34  val lemma3 = result();
   22.35  
   22.36  goal thy "!!z. EX f:F. f`((lam f:F. Q(f))`f) : (lam f:F. Q(f))`f  \
   22.37  \       ==> EX f:F. f`Q(f) : Q(f)";
   22.38 -by (asm_full_simp_tac AC_ss 1);
   22.39 +by (Asm_full_simp_tac 1);
   22.40  val lemma4 = result();
   22.41  
   22.42  goalw thy [AC17_def] "!!Z. AC17 ==> AC1";
   22.43 @@ -88,6 +88,6 @@
   22.44  by (dresolve_tac [beta RS sym RSN (2, subst_elem)] 1);
   22.45  by (assume_tac 1);
   22.46  by (dtac lemma3 1 THEN (assume_tac 1));
   22.47 -by (fast_tac (AC_cs addSDs [HH_Least_eq_x RS sym RSN (2, subst_elem),
   22.48 +by (fast_tac (!claset addSDs [HH_Least_eq_x RS sym RSN (2, subst_elem),
   22.49                  f_subset_imp_HH_subset] addSEs [mem_irrefl]) 1);
   22.50  qed "AC17_AC1";
    23.1 --- a/src/ZF/AC/AC18_AC19.ML	Fri Jan 03 10:48:28 1997 +0100
    23.2 +++ b/src/ZF/AC/AC18_AC19.ML	Fri Jan 03 15:01:55 1997 +0100
    23.3 @@ -25,19 +25,19 @@
    23.4  by (rtac subsetI 1);
    23.5  by (eres_inst_tac [("x","{{b:B(a). x:X(a,b)}. a:A}")] allE 1);
    23.6  by (etac impE 1);
    23.7 -by (fast_tac (AC_cs addSEs [RepFunE] addSDs [INT_E]
    23.8 +by (fast_tac (!claset addSEs [RepFunE] addSDs [INT_E]
    23.9                  addEs [UN_E, sym RS equals0D]) 1);
   23.10  by (etac exE 1);
   23.11  by (rtac UN_I 1);
   23.12 -by (fast_tac (AC_cs addSEs [PROD_subsets]) 1);
   23.13 -by (simp_tac AC_ss 1);
   23.14 -by (fast_tac (FOL_cs addSEs [not_emptyE] addDs [RepFunI RSN (2, apply_type)]
   23.15 +by (fast_tac (!claset addSEs [PROD_subsets]) 1);
   23.16 +by (Simp_tac 1);
   23.17 +by (fast_tac (!claset addSEs [not_emptyE] addDs [RepFunI RSN (2, apply_type)]
   23.18                  addEs [CollectD2] addSIs [INT_I]) 1);
   23.19  val lemma_AC18 = result();
   23.20  
   23.21  val [prem] = goalw thy (AC18_def::AC_defs) "AC1 ==> AC18";
   23.22  by (resolve_tac [prem RS revcut_rl] 1);
   23.23 -by (fast_tac (AC_cs addSEs [lemma_AC18, UN_E, not_emptyE, apply_type]
   23.24 +by (fast_tac (!claset addSEs [lemma_AC18, UN_E, not_emptyE, apply_type]
   23.25                  addSIs [equalityI, INT_I, UN_I]) 1);
   23.26  qed "AC1_AC18";
   23.27  
   23.28 @@ -48,7 +48,7 @@
   23.29  val [prem] = goalw thy [AC18_def, AC19_def] "AC18 ==> AC19";
   23.30  by (rtac allI 1);
   23.31  by (res_inst_tac [("B1","%x.x")] (forall_elim_vars 0 prem RS revcut_rl) 1);
   23.32 -by (fast_tac AC_cs 1);
   23.33 +by (Fast_tac 1);
   23.34  qed "AC18_AC19";
   23.35  
   23.36  (* ********************************************************************** *)
   23.37 @@ -57,7 +57,7 @@
   23.38  
   23.39  goalw thy [u_def]
   23.40          "!!A. [| A ~= 0; 0 ~: A |] ==> {u_(a). a:A} ~= 0 & 0 ~: {u_(a). a:A}";
   23.41 -by (fast_tac (AC_cs addSIs [not_emptyI, RepFunI]
   23.42 +by (fast_tac (!claset addSIs [not_emptyI, RepFunI]
   23.43                  addSEs [not_emptyE, RepFunE]
   23.44                  addSDs [sym RS (RepFun_eq_0_iff RS iffD1)]) 1);
   23.45  val RepRep_conj = result();
   23.46 @@ -66,17 +66,17 @@
   23.47  by (hyp_subst_tac 1);
   23.48  by (rtac subst_elem 1 THEN (assume_tac 1));
   23.49  by (rtac equalityI 1);
   23.50 -by (fast_tac AC_cs 1);
   23.51 +by (Fast_tac 1);
   23.52  by (rtac subsetI 1);
   23.53  by (excluded_middle_tac "x=0" 1);
   23.54 -by (fast_tac AC_cs 1);
   23.55 -by (fast_tac (AC_cs addEs [notE, subst_elem] addSIs [equalityI])  1);
   23.56 +by (Fast_tac 1);
   23.57 +by (fast_tac (!claset addEs [notE, subst_elem] addSIs [equalityI])  1);
   23.58  val lemma1_1 = result();
   23.59  
   23.60  goalw thy [u_def]
   23.61          "!!a. [| f`(u_(a)) ~: a; f: (PROD B:{u_(a). a:A}. B); a:A |]  \
   23.62  \               ==> f`(u_(a))-{0} : a";
   23.63 -by (fast_tac (AC_cs addSEs [RepFunI, RepFunE, lemma1_1]
   23.64 +by (fast_tac (!claset addSEs [RepFunI, RepFunE, lemma1_1]
   23.65                  addSDs [apply_type]) 1);
   23.66  val lemma1_2 = result();
   23.67  
   23.68 @@ -87,35 +87,35 @@
   23.69  by (rtac lam_type 1);
   23.70  by (split_tac [expand_if] 1);
   23.71  by (rtac conjI 1);
   23.72 -by (fast_tac AC_cs 1);
   23.73 -by (fast_tac (AC_cs addSEs [lemma1_2]) 1);
   23.74 +by (Fast_tac 1);
   23.75 +by (fast_tac (!claset addSEs [lemma1_2]) 1);
   23.76  val lemma1 = result();
   23.77  
   23.78  goalw thy [u_def] "!!a. a~=0 ==> 0: (UN b:u_(a). b)";
   23.79 -by (fast_tac (AC_cs addSEs [not_emptyE] addSIs [UN_I, RepFunI]) 1);
   23.80 +by (fast_tac (!claset addSEs [not_emptyE] addSIs [UN_I, RepFunI]) 1);
   23.81  val lemma2_1 = result();
   23.82  
   23.83  goal thy "!!A C. [| A~=0; 0~:A |] ==> (INT x:{u_(a). a:A}. UN b:x. b) ~= 0";
   23.84  by (etac not_emptyE 1);
   23.85  by (res_inst_tac [("a","0")] not_emptyI 1);
   23.86 -by (fast_tac (AC_cs addSIs [INT_I, RepFunI, lemma2_1] addSEs [RepFunE]) 1);
   23.87 +by (fast_tac (!claset addSIs [INT_I, RepFunI, lemma2_1] addSEs [RepFunE]) 1);
   23.88  val lemma2 = result();
   23.89  
   23.90  goal thy "!!F. (UN f:F. P(f)) ~= 0 ==> F ~= 0";
   23.91 -by (fast_tac (AC_cs addSEs [not_emptyE]) 1);
   23.92 +by (fast_tac (!claset addSEs [not_emptyE]) 1);
   23.93  val lemma3 = result();
   23.94  
   23.95  goalw thy AC_defs "!!Z. AC19 ==> AC1";
   23.96  by (REPEAT (resolve_tac [allI,impI] 1));
   23.97  by (excluded_middle_tac "A=0" 1);
   23.98 -by (fast_tac (AC_cs addSIs [empty_fun]) 2);
   23.99 +by (fast_tac (!claset addSIs [empty_fun]) 2);
  23.100  by (eres_inst_tac [("x","{u_(a). a:A}")] allE 1);
  23.101  by (etac impE 1);
  23.102  by (etac RepRep_conj 1 THEN (assume_tac 1));
  23.103  by (rtac lemma1 1);
  23.104  by (dtac lemma2 1 THEN (assume_tac 1));
  23.105  by (dres_inst_tac [("P","%x. x~=0")] subst 1 THEN (assume_tac 1));
  23.106 -by (fast_tac (AC_cs addSEs [lemma3 RS not_emptyE]) 1);
  23.107 +by (fast_tac (!claset addSEs [lemma3 RS not_emptyE]) 1);
  23.108  qed "AC19_AC1";
  23.109  
  23.110  
    24.1 --- a/src/ZF/AC/AC1_AC17.ML	Fri Jan 03 10:48:28 1997 +0100
    24.2 +++ b/src/ZF/AC/AC1_AC17.ML	Fri Jan 03 15:01:55 1997 +0100
    24.3 @@ -8,7 +8,7 @@
    24.4  goal thy "!!f. f : (PROD X:Pow(A) - {0}. X) ==> f : (Pow(A) - {0} -> A)";
    24.5  by (rtac Pi_type 1 THEN (assume_tac 1));
    24.6  by (dtac apply_type 1 THEN (assume_tac 1));
    24.7 -by (fast_tac AC_cs 1);
    24.8 +by (Fast_tac 1);
    24.9  val lemma1 = result();
   24.10  
   24.11  goalw thy AC_defs "!!Z. AC1 ==> AC17";
   24.12 @@ -16,10 +16,10 @@
   24.13  by (rtac ballI 1);
   24.14  by (eres_inst_tac [("x","Pow(A)-{0}")] allE 1);
   24.15  by (etac impE 1);
   24.16 -by (fast_tac AC_cs 1);
   24.17 +by (Fast_tac 1);
   24.18  by (etac exE 1);
   24.19  by (rtac bexI 1);
   24.20  by (etac lemma1 2);
   24.21  by (rtac apply_type 1 THEN (assume_tac 1));
   24.22 -by (fast_tac (AC_cs addSDs [lemma1] addSEs [apply_type]) 1);
   24.23 +by (fast_tac (!claset addSDs [lemma1] addSEs [apply_type]) 1);
   24.24  qed "AC1_AC17";
    25.1 --- a/src/ZF/AC/AC1_WO2.ML	Fri Jan 03 10:48:28 1997 +0100
    25.2 +++ b/src/ZF/AC/AC1_WO2.ML	Fri Jan 03 15:01:55 1997 +0100
    25.3 @@ -13,12 +13,12 @@
    25.4  by (resolve_tac [bij_Least_HH_x RS bij_converse_bij] 1);
    25.5  by (rtac f_subsets_imp_UN_HH_eq_x 1);
    25.6  by (resolve_tac [lam_type RS apply_type] 1 THEN (assume_tac 2));
    25.7 -by (fast_tac (AC_cs addSDs [equals0D, prem RS apply_type]) 1);
    25.8 -by (fast_tac (AC_cs addSIs [prem RS Pi_weaken_type]) 1);
    25.9 +by (fast_tac (!claset addSDs [equals0D, prem RS apply_type]) 1);
   25.10 +by (fast_tac (!claset addSIs [prem RS Pi_weaken_type]) 1);
   25.11  val lemma1 = uresult() |> standard;
   25.12  
   25.13  goalw thy [AC1_def, WO2_def, eqpoll_def] "!!Z. AC1 ==> WO2";
   25.14  by (rtac allI 1);
   25.15  by (eres_inst_tac [("x","Pow(A)-{0}")] allE 1);
   25.16 -by (fast_tac (AC_cs addSDs [lemma1] addSIs [Ord_Least]) 1);
   25.17 +by (fast_tac (!claset addSDs [lemma1] addSIs [Ord_Least]) 1);
   25.18  qed "AC1_WO2";
    26.1 --- a/src/ZF/AC/AC2_AC6.ML	Fri Jan 03 10:48:28 1997 +0100
    26.2 +++ b/src/ZF/AC/AC2_AC6.ML	Fri Jan 03 15:01:55 1997 +0100
    26.3 @@ -16,12 +16,12 @@
    26.4  
    26.5  goal thy "!!B. [| B:A; f:(PROD X:A. X); 0~:A |]  \
    26.6  \               ==> {f`B} <= B Int {f`C. C:A}";
    26.7 -by (fast_tac (ZF_cs addSEs [apply_type]) 1);
    26.8 +by (fast_tac (!claset addSEs [apply_type]) 1);
    26.9  val lemma1 = result();
   26.10  
   26.11  goalw thy [pairwise_disjoint_def]
   26.12          "!!A. [| pairwise_disjoint(A); B:A; C:A; D:B; D:C |] ==> f`B = f`C";
   26.13 -by (fast_tac (ZF_cs addSEs [equals0D]) 1);
   26.14 +by (fast_tac (!claset addSEs [equals0D]) 1);
   26.15  val lemma2 = result();
   26.16  
   26.17  goalw thy AC_defs "!!Z. AC1 ==> AC2"; 
   26.18 @@ -30,7 +30,7 @@
   26.19  by (REPEAT (eresolve_tac [asm_rl,conjE,allE,exE,impE] 1));
   26.20  by (REPEAT (resolve_tac [exI,ballI,equalityI] 1));
   26.21  by (rtac lemma1 2 THEN (REPEAT (assume_tac 2)));
   26.22 -by (fast_tac (AC_cs addSEs [RepFunE, lemma2] addEs [apply_type]) 1);
   26.23 +by (fast_tac (!claset addSEs [RepFunE, lemma2] addEs [apply_type]) 1);
   26.24  qed "AC1_AC2";
   26.25  
   26.26  
   26.27 @@ -39,22 +39,22 @@
   26.28  (* ********************************************************************** *)
   26.29  
   26.30  goal thy "!!A. 0~:A ==> 0 ~: {B*{B}. B:A}";
   26.31 -by (fast_tac (AC_cs addSDs [sym RS (Sigma_empty_iff RS iffD1)]
   26.32 +by (fast_tac (!claset addSDs [sym RS (Sigma_empty_iff RS iffD1)]
   26.33          addSEs [RepFunE, equals0D]) 1);
   26.34  val lemma1 = result();
   26.35  
   26.36  goal thy "!!A. [| X*{X} Int C = {y}; X:A |]  \
   26.37  \               ==> (THE y. X*{X} Int C = {y}): X*A";
   26.38  by (rtac subst_elem 1);
   26.39 -by (fast_tac (ZF_cs addSIs [the_equality]
   26.40 +by (fast_tac (!claset addSIs [the_equality]
   26.41                  addSEs [sym RS trans RS (singleton_eq_iff RS iffD1)]) 2);
   26.42 -by (fast_tac (AC_cs addSEs [equalityE, make_elim singleton_subsetD]) 1);
   26.43 +by (fast_tac (!claset addSEs [equalityE, make_elim singleton_subsetD]) 1);
   26.44  val lemma2 = result();
   26.45  
   26.46  goal thy "!!A. ALL D:{E*{E}. E:A}. EX y. D Int C = {y}  \
   26.47  \       ==> (lam x:A. fst(THE z. (x*{x} Int C = {z}))) :  \
   26.48  \               (PROD X:A. X) ";
   26.49 -by (fast_tac (FOL_cs addSEs [lemma2]
   26.50 +by (fast_tac (!claset addSEs [lemma2]
   26.51                  addSIs [lam_type, RepFunI, fst_type]
   26.52                  addSDs [bspec]) 1);
   26.53  val lemma3 = result();
   26.54 @@ -62,8 +62,8 @@
   26.55  goalw thy (AC_defs@AC_aux_defs) "!!Z. AC2 ==> AC1";
   26.56  by (REPEAT (resolve_tac [allI, impI] 1));
   26.57  by (REPEAT (eresolve_tac [allE, impE] 1));
   26.58 -by (fast_tac (AC_cs addSEs [lemma3]) 2);
   26.59 -by (fast_tac (AC_cs addSIs [lemma1, equals0I]) 1);
   26.60 +by (fast_tac (!claset addSEs [lemma3]) 2);
   26.61 +by (fast_tac (!claset addSIs [lemma1, equals0I]) 1);
   26.62  qed "AC2_AC1";
   26.63  
   26.64  
   26.65 @@ -72,13 +72,13 @@
   26.66  (* ********************************************************************** *)
   26.67  
   26.68  goal thy "!!R. 0 ~: {R``{x}. x:domain(R)}";
   26.69 -by (fast_tac (AC_cs addEs [sym RS equals0D]) 1);
   26.70 +by (fast_tac (!claset addEs [sym RS equals0D]) 1);
   26.71  val lemma = result();
   26.72  
   26.73  goalw thy AC_defs "!!Z. AC1 ==> AC4";
   26.74  by (REPEAT (resolve_tac [allI, impI] 1));
   26.75  by (REPEAT (eresolve_tac [allE, lemma RSN (2, impE), exE] 1));
   26.76 -by (fast_tac (AC_cs addSIs [lam_type] addSEs [apply_type]) 1);
   26.77 +by (fast_tac (!claset addSIs [lam_type] addSEs [apply_type]) 1);
   26.78  qed "AC1_AC4";
   26.79  
   26.80  
   26.81 @@ -87,25 +87,25 @@
   26.82  (* ********************************************************************** *)
   26.83  
   26.84  goal thy "!!f. f:A->B ==> (UN z:A. {z}*f`z) <= A*Union(B)";
   26.85 -by (fast_tac (ZF_cs addSDs [apply_type]) 1);
   26.86 +by (fast_tac (!claset addSDs [apply_type]) 1);
   26.87  val lemma1 = result();
   26.88  
   26.89  goal thy "!!f. domain(UN z:A. {z}*f(z)) = {a:A. f(a)~=0}";
   26.90 -by (fast_tac (ZF_cs addIs [equalityI]
   26.91 +by (fast_tac (!claset addIs [equalityI]
   26.92                  addSEs [not_emptyE]
   26.93                  addSIs [not_emptyI]
   26.94                  addDs [range_type]) 1);
   26.95  val lemma2 = result();
   26.96  
   26.97  goal thy "!!f. x:A ==> (UN z:A. {z}*f(z))``{x} = f(x)";
   26.98 -by (fast_tac (ZF_cs addIs [equalityI]) 1);
   26.99 +by (fast_tac (!claset addIs [equalityI]) 1);
  26.100  val lemma3 = result();
  26.101  
  26.102  goalw thy AC_defs "!!Z. AC4 ==> AC3";
  26.103  by (REPEAT (resolve_tac [allI,ballI] 1));
  26.104  by (REPEAT (eresolve_tac [allE,impE] 1));
  26.105  by (etac lemma1 1);
  26.106 -by (asm_full_simp_tac (AC_ss addsimps [lemma2, lemma3]
  26.107 +by (asm_full_simp_tac (!simpset addsimps [lemma2, lemma3]
  26.108                          addcongs [Pi_cong]) 1);
  26.109  qed "AC4_AC3";
  26.110  
  26.111 @@ -114,16 +114,16 @@
  26.112  (* ********************************************************************** *)
  26.113  
  26.114  goal thy "!!A. b~:A ==> (PROD x:{a:A. id(A)`a~=b}. id(A)`x) = (PROD x:A. x)";
  26.115 -by (asm_full_simp_tac (AC_ss addsimps [id_def] addcongs [Pi_cong]) 1);
  26.116 +by (asm_full_simp_tac (!simpset addsimps [id_def] addcongs [Pi_cong]) 1);
  26.117  by (res_inst_tac [("b","A")] subst_context 1);
  26.118 -by (fast_tac (AC_cs addSIs [equalityI]) 1);
  26.119 +by (fast_tac (!claset addSIs [equalityI]) 1);
  26.120  val lemma = result();
  26.121  
  26.122  goalw thy AC_defs "!!Z. AC3 ==> AC1";
  26.123  by (REPEAT (resolve_tac [allI, impI] 1));
  26.124  by (REPEAT (eresolve_tac [allE, ballE] 1));
  26.125 -by (fast_tac (AC_cs addSIs [id_type]) 2);
  26.126 -by (fast_tac (AC_cs addEs [lemma RS subst]) 1);
  26.127 +by (fast_tac (!claset addSIs [id_type]) 2);
  26.128 +by (fast_tac (!claset addEs [lemma RS subst]) 1);
  26.129  qed "AC3_AC1";
  26.130  
  26.131  (* ********************************************************************** *)
  26.132 @@ -137,13 +137,13 @@
  26.133  by (etac exE 1);
  26.134  by (rtac bexI 1);
  26.135  by (rtac Pi_type 2 THEN (assume_tac 2));
  26.136 -by (fast_tac (ZF_cs addSDs [apply_type]
  26.137 +by (fast_tac (!claset addSDs [apply_type]
  26.138          addSEs [fun_is_rel RS converse_type RS subsetD RS SigmaD2]) 2);
  26.139  by (rtac ballI 1);
  26.140  by (rtac apply_equality 1 THEN (assume_tac 2));
  26.141  by (etac domainE 1);
  26.142  by (forward_tac [range_type] 1 THEN (assume_tac 1));
  26.143 -by (fast_tac (ZF_cs addDs [apply_equality]) 1);
  26.144 +by (fast_tac (!claset addDs [apply_equality]) 1);
  26.145  qed "AC4_AC5";
  26.146  
  26.147  
  26.148 @@ -152,24 +152,24 @@
  26.149  (* ********************************************************************** *)
  26.150  
  26.151  goal thy "!!A. R <= A*B ==> (lam x:R. fst(x)) : R -> A";
  26.152 -by (fast_tac (ZF_cs addSIs [lam_type, fst_type]) 1);
  26.153 +by (fast_tac (!claset addSIs [lam_type, fst_type]) 1);
  26.154  val lemma1 = result();
  26.155  
  26.156  goalw thy [range_def] "!!A. R <= A*B ==> range(lam x:R. fst(x)) = domain(R)";
  26.157  by (rtac equalityI 1);
  26.158 -by (fast_tac (AC_cs addSEs [lamE]
  26.159 +by (fast_tac (!claset addSEs [lamE]
  26.160                  addEs [subst_elem]
  26.161                  addSDs [Pair_fst_snd_eq]) 1);
  26.162  by (rtac subsetI 1);
  26.163  by (etac domainE 1);
  26.164  by (rtac domainI 1);
  26.165 -by (fast_tac (AC_cs addSEs [lamI RS subst_elem] addIs [fst_conv RS ssubst]) 1);
  26.166 +by (fast_tac (!claset addSEs [lamI RS subst_elem] addIs [fst_conv RS ssubst]) 1);
  26.167  val lemma2 = result();
  26.168  
  26.169  goal thy "!!A. [| EX f: A->C. P(f,domain(f)); A=B |] ==>  EX f: B->C. P(f,B)";
  26.170  by (etac bexE 1);
  26.171  by (forward_tac [domain_of_fun] 1);
  26.172 -by (fast_tac ZF_cs 1);
  26.173 +by (Fast_tac 1);
  26.174  val lemma3 = result();
  26.175  
  26.176  goal thy "!!g. [| R <= A*B; g: C->R; ALL x:C. (lam z:R. fst(z))` (g`x) = x |] \
  26.177 @@ -180,7 +180,7 @@
  26.178  by (rtac imageI 1);
  26.179  by (resolve_tac [subsetD RS Pair_fst_snd_eq RSN (2, subst_elem)] 1
  26.180          THEN (REPEAT (assume_tac 1)));
  26.181 -by (asm_full_simp_tac AC_ss 1);
  26.182 +by (Asm_full_simp_tac 1);
  26.183  val lemma4 = result();
  26.184  
  26.185  goalw thy AC_defs "!!Z. AC5 ==> AC4";
  26.186 @@ -188,7 +188,7 @@
  26.187  by (REPEAT (eresolve_tac [allE,ballE] 1));
  26.188  by (eresolve_tac [lemma1 RSN (2, notE)] 2 THEN (assume_tac 2));
  26.189  by (dresolve_tac [lemma2 RSN (2, lemma3)] 1 THEN (assume_tac 1));
  26.190 -by (fast_tac (AC_cs addSEs [lemma4]) 1);
  26.191 +by (fast_tac (!claset addSEs [lemma4]) 1);
  26.192  qed "AC5_AC4";
  26.193  
  26.194  
  26.195 @@ -197,6 +197,6 @@
  26.196  (* ********************************************************************** *)
  26.197  
  26.198  goalw thy AC_defs "AC1 <-> AC6";
  26.199 -by (fast_tac (ZF_cs addDs [equals0D] addSEs [not_emptyE]) 1);
  26.200 +by (fast_tac (!claset addDs [equals0D] addSEs [not_emptyE]) 1);
  26.201  qed "AC1_iff_AC6";
  26.202  
    27.1 --- a/src/ZF/AC/AC7_AC9.ML	Fri Jan 03 10:48:28 1997 +0100
    27.2 +++ b/src/ZF/AC/AC7_AC9.ML	Fri Jan 03 15:01:55 1997 +0100
    27.3 @@ -13,12 +13,12 @@
    27.4  (*  - Sigma_fun_space_eqpoll                                              *)
    27.5  (* ********************************************************************** *)
    27.6  
    27.7 -goal ZF.thy "!!A. [| C~:A; B:A |] ==> B~=C";
    27.8 -by (fast_tac ZF_cs 1);
    27.9 +goal upair.thy "!!A. [| C~:A; B:A |] ==> B~=C";
   27.10 +by (Fast_tac 1);
   27.11  val mem_not_eq_not_mem = result();
   27.12  
   27.13  goal thy "!!A. [| 0~:A; B:A |] ==> (nat->Union(A))*B ~= 0";
   27.14 -by (fast_tac (ZF_cs addSDs [Sigma_empty_iff RS iffD1]
   27.15 +by (fast_tac (!claset addSDs [Sigma_empty_iff RS iffD1]
   27.16                  addDs [fun_space_emptyD, mem_not_eq_not_mem]
   27.17                  addEs [equals0D]
   27.18                  addSIs [equals0I,UnionI]) 1);
   27.19 @@ -33,7 +33,7 @@
   27.20  goal thy "!!A. [| ALL a:A. if(a=b, P(a), Q(a)) = if(a=b, R(a), S(a)); b:A   \
   27.21  \       |] ==> P(b)=R(b)";
   27.22  by (dtac bspec 1 THEN (assume_tac 1));
   27.23 -by (asm_full_simp_tac ZF_ss 1);
   27.24 +by (Asm_full_simp_tac 1);
   27.25  val if_eqE1 = result();
   27.26  
   27.27  goal thy "!!A. ALL a:A. if(a=b, P(a), Q(a)) = if(a=b, R(a), S(a))  \
   27.28 @@ -41,11 +41,11 @@
   27.29  by (rtac ballI 1);
   27.30  by (rtac impI 1);
   27.31  by (dtac bspec 1 THEN (assume_tac 1));
   27.32 -by (asm_full_simp_tac ZF_ss 1);
   27.33 +by (Asm_full_simp_tac 1);
   27.34  val if_eqE2 = result();
   27.35  
   27.36  goal thy "!!A. [| (lam x:A. f(x))=(lam x:A. g(x)); a:A |] ==> f(a)=g(a)";
   27.37 -by (fast_tac (ZF_cs addDs [subsetD]
   27.38 +by (fast_tac (!claset addDs [subsetD]
   27.39                  addSIs [lamI]
   27.40                  addEs [equalityE, lamE]) 1);
   27.41  val lam_eqE = result();
   27.42 @@ -55,29 +55,27 @@
   27.43  \               (lam n:nat. if(n=0, snd(g), fst(g)`(n #- 1))))  \
   27.44  \               : inj((nat->Union(A))*C, (nat->Union(A)) ) ";
   27.45  by (rtac CollectI 1);
   27.46 -by (fast_tac (ZF_cs addSIs [lam_type,RepFunI,if_type,snd_type,apply_type,
   27.47 +by (fast_tac (!claset addSIs [lam_type,RepFunI,if_type,snd_type,apply_type,
   27.48                                  fst_type,diff_type,nat_succI,nat_0I]) 1);
   27.49  by (REPEAT (resolve_tac [ballI, impI] 1));
   27.50 -by (asm_full_simp_tac ZF_ss 1);
   27.51 +by (Asm_full_simp_tac 1);
   27.52  by (REPEAT (etac SigmaE 1));
   27.53  by (REPEAT (hyp_subst_tac 1));
   27.54 -by (asm_full_simp_tac ZF_ss 1);
   27.55 +by (Asm_full_simp_tac 1);
   27.56  by (rtac conjI 1);
   27.57  by (dresolve_tac [nat_0I RSN (2, lam_eqE)] 2);
   27.58 -by (asm_full_simp_tac AC_ss 2);
   27.59 +by (Asm_full_simp_tac 2);
   27.60  by (rtac fun_extension 1 THEN  REPEAT (assume_tac 1));
   27.61  by (dresolve_tac [nat_succI RSN (2, lam_eqE)] 1 THEN (assume_tac 1));
   27.62 -by (asm_full_simp_tac (AC_ss addsimps [succ_not_0 RS if_not_P]) 1);
   27.63 -by (fast_tac (AC_cs addSEs [diff_succ_succ RS (diff_0 RSN (2, trans)) RS subst]
   27.64 -                addSIs [nat_0I]) 1);
   27.65 +by (asm_full_simp_tac (!simpset addsimps [succ_not_0 RS if_not_P]) 1);
   27.66  val lemma = result();
   27.67  
   27.68  goal thy "!!A. [| C:A; 0~:A |] ==> (nat->Union(A)) * C eqpoll (nat->Union(A))";
   27.69  by (rtac eqpollI 1);
   27.70 -by (fast_tac (ZF_cs addSEs [prod_lepoll_self, not_sym RS not_emptyE,
   27.71 +by (fast_tac (!claset addSEs [prod_lepoll_self, not_sym RS not_emptyE,
   27.72                  subst_elem] addEs [swap]) 2);
   27.73  by (rewtac lepoll_def);
   27.74 -by (fast_tac (ZF_cs addSIs [lemma]) 1);
   27.75 +by (fast_tac (!claset addSIs [lemma]) 1);
   27.76  val Sigma_fun_space_eqpoll = result();
   27.77  
   27.78  
   27.79 @@ -86,7 +84,7 @@
   27.80  (* ********************************************************************** *)
   27.81  
   27.82  goalw thy AC_defs "!!Z. AC6 ==> AC7";
   27.83 -by (fast_tac ZF_cs 1);
   27.84 +by (Fast_tac 1);
   27.85  qed "AC6_AC7";
   27.86  
   27.87  (* ********************************************************************** *)
   27.88 @@ -96,22 +94,22 @@
   27.89  (* ********************************************************************** *)
   27.90  
   27.91  goal thy "!!y. y: (PROD B:A. Y*B) ==> (lam B:A. snd(y`B)): (PROD B:A. B)";
   27.92 -by (fast_tac (ZF_cs addSIs [lam_type, snd_type, apply_type]) 1);
   27.93 +by (fast_tac (!claset addSIs [lam_type, snd_type, apply_type]) 1);
   27.94  val lemma1_1 = result();
   27.95  
   27.96  goal thy "!!A. y: (PROD B:{Y*C. C:A}. B)  \
   27.97  \               ==> (lam B:A. y`(Y*B)): (PROD B:A. Y*B)";
   27.98 -by (fast_tac (ZF_cs addSIs [lam_type, apply_type]) 1);
   27.99 +by (fast_tac (!claset addSIs [lam_type, apply_type]) 1);
  27.100  val lemma1_2 = result();
  27.101  
  27.102  goal thy "!!A. (PROD B:{(nat->Union(A))*C. C:A}. B) ~= 0  \
  27.103  \               ==> (PROD B:A. B) ~= 0";
  27.104 -by (fast_tac (ZF_cs addSIs [equals0I,lemma1_1, lemma1_2]
  27.105 +by (fast_tac (!claset addSIs [equals0I,lemma1_1, lemma1_2]
  27.106                  addSEs [equals0D]) 1);
  27.107  val lemma1 = result();
  27.108  
  27.109  goal thy "!!A. 0 ~: A ==> 0 ~: {(nat -> Union(A)) * C. C:A}";
  27.110 -by (fast_tac (ZF_cs addEs [RepFunE,
  27.111 +by (fast_tac (!claset addEs [RepFunE,
  27.112                  Sigma_fun_space_not0 RS not_sym RS notE]) 1);
  27.113  val lemma2 = result();
  27.114  
  27.115 @@ -119,11 +117,11 @@
  27.116  by (rtac allI 1);
  27.117  by (rtac impI 1);
  27.118  by (excluded_middle_tac "A=0" 1);
  27.119 -by (fast_tac (ZF_cs addSIs [not_emptyI, empty_fun]) 2);
  27.120 +by (fast_tac (!claset addSIs [not_emptyI, empty_fun]) 2);
  27.121  by (rtac lemma1 1);
  27.122  by (etac allE 1);
  27.123  by (etac impE 1 THEN (assume_tac 2));
  27.124 -by (fast_tac (AC_cs addSEs [RepFunE]
  27.125 +by (fast_tac (!claset addSEs [RepFunE]
  27.126          addSIs [lemma2, all_eqpoll_imp_pair_eqpoll,
  27.127                  Sigma_fun_space_eqpoll]) 1);
  27.128  qed "AC7_AC6";
  27.129 @@ -141,14 +139,14 @@
  27.130  by (dtac bspec 1 THEN (assume_tac 1));
  27.131  by (REPEAT (eresolve_tac [exE,conjE] 1));
  27.132  by (hyp_subst_tac 1);
  27.133 -by (asm_full_simp_tac AC_ss 1);
  27.134 -by (fast_tac (AC_cs addSEs [sym RS equals0D]) 1);
  27.135 +by (Asm_full_simp_tac 1);
  27.136 +by (fast_tac (!claset addSEs [sym RS equals0D]) 1);
  27.137  val lemma1 = result();
  27.138  
  27.139  goal thy "!!A. [| f: (PROD X:RepFun(A,p). X); D:A |]  \
  27.140  \               ==> (lam x:A. f`p(x))`D : p(D)";
  27.141  by (resolve_tac [beta RS ssubst] 1 THEN (assume_tac 1));
  27.142 -by (fast_tac (AC_cs addSEs [apply_type]) 1);
  27.143 +by (fast_tac (!claset addSEs [apply_type]) 1);
  27.144  val lemma2 = result();
  27.145  
  27.146  goalw thy AC_defs "!!Z. AC1 ==> AC8";
  27.147 @@ -157,7 +155,7 @@
  27.148  by (rtac impI 1);
  27.149  by (etac impE 1);
  27.150  by (etac lemma1 1);
  27.151 -by (fast_tac (AC_cs addSEs [lemma2]) 1);
  27.152 +by (fast_tac (!claset addSEs [lemma2]) 1);
  27.153  qed "AC1_AC8";
  27.154  
  27.155  
  27.156 @@ -169,11 +167,11 @@
  27.157  
  27.158  goal thy "!!A. ALL B1:A. ALL B2:A. B1 eqpoll B2 ==>  \
  27.159  \               ALL B:A*A. EX B1 B2. B=<B1,B2> & B1 eqpoll B2";
  27.160 -by (fast_tac ZF_cs 1);
  27.161 +by (Fast_tac 1);
  27.162  val lemma1 = result();
  27.163  
  27.164  goal thy "!!f. f:bij(fst(<a,b>),snd(<a,b>)) ==> f:bij(a,b)";
  27.165 -by (asm_full_simp_tac AC_ss 1);
  27.166 +by (Asm_full_simp_tac 1);
  27.167  val lemma2 = result();
  27.168  
  27.169  goalw thy AC_defs "!!Z. AC8 ==> AC9";
  27.170 @@ -182,7 +180,7 @@
  27.171  by (etac allE 1);
  27.172  by (etac impE 1);
  27.173  by (etac lemma1 1);
  27.174 -by (fast_tac (AC_cs addSEs [lemma2]) 1);
  27.175 +by (fast_tac (!claset addSEs [lemma2]) 1);
  27.176  qed "AC8_AC9";
  27.177  
  27.178  
  27.179 @@ -197,12 +195,7 @@
  27.180  (* Rules nedded to prove lemma1 *)
  27.181  val snd_lepoll_SigmaI = prod_lepoll_self RS 
  27.182          ((prod_commute_eqpoll RS eqpoll_imp_lepoll) RSN (2,lepoll_trans));
  27.183 -val lemma1_cs = FOL_cs addSEs [UnE, RepFunE]
  27.184 -                addSIs [all_eqpoll_imp_pair_eqpoll, ballI,
  27.185 -                        nat_cons_eqpoll RS eqpoll_trans]
  27.186 -                addEs [Sigma_fun_space_not0 RS not_emptyE]
  27.187 -                addIs [snd_lepoll_SigmaI, eqpoll_refl RSN 
  27.188 -                        (2, prod_eqpoll_cong), Sigma_fun_space_eqpoll];
  27.189 +
  27.190  
  27.191  goal thy "!!A. [| 0~:A; A~=0 |]  \
  27.192  \       ==> ALL B1: ({((nat->Union(A))*B)*nat. B:A}  \
  27.193 @@ -210,7 +203,11 @@
  27.194  \       ALL B2: ({((nat->Union(A))*B)*nat. B:A}  \
  27.195  \               Un {cons(0,((nat->Union(A))*B)*nat). B:A}).  \
  27.196  \       B1 eqpoll B2";
  27.197 -by (fast_tac lemma1_cs 1);
  27.198 +by (fast_tac (!claset addSIs [all_eqpoll_imp_pair_eqpoll, ballI,
  27.199 +                        nat_cons_eqpoll RS eqpoll_trans]
  27.200 +                addEs [Sigma_fun_space_not0 RS not_emptyE]
  27.201 +                addIs [snd_lepoll_SigmaI, eqpoll_refl RSN 
  27.202 +                        (2, prod_eqpoll_cong), Sigma_fun_space_eqpoll]) 1);
  27.203  val lemma1 = result();
  27.204  
  27.205  goal thy "!!A. ALL B1:{(F*B)*N. B:A} Un {cons(0,(F*B)*N). B:A}.  \
  27.206 @@ -222,7 +219,7 @@
  27.207  by (rtac snd_type 1);
  27.208  by (rtac fst_type 1);
  27.209  by (resolve_tac [consI1 RSN (2, apply_type)] 1);
  27.210 -by (fast_tac (ZF_cs addSIs [fun_weaken_type, bij_is_fun]) 1);
  27.211 +by (fast_tac (!claset addSIs [fun_weaken_type, bij_is_fun]) 1);
  27.212  val lemma2 = result();
  27.213  
  27.214  goalw thy AC_defs "!!Z. AC9 ==> AC1";
  27.215 @@ -230,8 +227,8 @@
  27.216  by (rtac impI 1);
  27.217  by (etac allE 1);
  27.218  by (excluded_middle_tac "A=0" 1);
  27.219 -by (fast_tac (FOL_cs addSIs [empty_fun]) 2);
  27.220  by (etac impE 1);
  27.221  by (rtac lemma1 1 THEN (REPEAT (assume_tac 1)));
  27.222 -by (fast_tac (AC_cs addSEs [lemma2]) 1);
  27.223 +by (fast_tac (!claset addSEs [lemma2]) 1);
  27.224 +by (fast_tac (!claset addSIs [empty_fun]) 1);
  27.225  qed "AC9_AC1";
    28.1 --- a/src/ZF/AC/AC_Equiv.ML	Fri Jan 03 10:48:28 1997 +0100
    28.2 +++ b/src/ZF/AC/AC_Equiv.ML	Fri Jan 03 15:01:55 1997 +0100
    28.3 @@ -16,9 +16,6 @@
    28.4   
    28.5  val AC_aux_defs = [pairwise_disjoint_def, sets_of_size_between_def];
    28.6   
    28.7 -val AC_cs = OrdQuant_cs;
    28.8 -val AC_ss = OrdQuant_ss;
    28.9 - 
   28.10  (* ******************************************** *)
   28.11  
   28.12  (* Theorems analogous to ones presented in "ZF/Ordinal.ML" *)
   28.13 @@ -27,12 +24,11 @@
   28.14  val [prem] = goalw Cardinal.thy [lepoll_def]
   28.15               "m:nat ==> ALL n: nat. m le n --> m lepoll n";
   28.16  by (nat_ind_tac "m" [prem] 1);
   28.17 -by (fast_tac (ZF_cs addSIs [le_imp_subset RS id_subset_inj]) 1);
   28.18 +by (fast_tac (!claset addSIs [le_imp_subset RS id_subset_inj]) 1);
   28.19  by (rtac ballI 1);
   28.20  by (eres_inst_tac [("n","n")] natE 1);
   28.21 -by (asm_simp_tac (ZF_ss addsimps [inj_def, succI1 RS Pi_empty2]) 1);
   28.22 -by (fast_tac (ZF_cs addSDs [le0D]) 1);
   28.23 -by (fast_tac (ZF_cs addSIs [le_imp_subset RS id_subset_inj]) 1);
   28.24 +by (asm_simp_tac (!simpset addsimps [inj_def, succI1 RS Pi_empty2]) 1);
   28.25 +by (fast_tac (!claset addSIs [le_imp_subset RS id_subset_inj]) 1);
   28.26  val nat_le_imp_lepoll_lemma = result();
   28.27  
   28.28  (* used in : AC10-AC15.ML WO1-WO6.ML WO6WO1.ML*)
   28.29 @@ -43,14 +39,14 @@
   28.30  (* ********************************************************************** *)
   28.31  
   28.32  goal thy "!!X. (A->X)=0 ==> X=0";
   28.33 -by (fast_tac (ZF_cs addSIs [equals0I] addEs [lam_type RSN (2, equals0D)]) 1);
   28.34 +by (fast_tac (!claset addSIs [equals0I] addEs [lam_type RSN (2, equals0D)]) 1);
   28.35  val fun_space_emptyD = result();
   28.36  
   28.37  (* used only in WO1_DC.ML *)
   28.38  (*Note simpler proof*)
   28.39 -goal ZF.thy "!!A f g. [| ALL x:A. f`x=g`x; f:Df->Cf; g:Dg->Cg;  \
   28.40 +goal upair.thy "!!A f g. [| ALL x:A. f`x=g`x; f:Df->Cf; g:Dg->Cg;  \
   28.41  \         A<=Df; A<=Dg |] ==> f``A=g``A";
   28.42 -by (asm_simp_tac (ZF_ss addsimps [image_fun]) 1);
   28.43 +by (asm_simp_tac (!simpset addsimps [image_fun]) 1);
   28.44  val images_eq = result();
   28.45  
   28.46  (* used in : AC10-AC15.ML AC16WO4.ML WO6WO1.ML *)
   28.47 @@ -63,7 +59,7 @@
   28.48  by (res_inst_tac [("A2","A")] 
   28.49       (Diff_sing_lepoll RSN (2, subset_imp_lepoll RS lepoll_trans)) 1 
   28.50      THEN (REPEAT (assume_tac 2)));
   28.51 -by (fast_tac ZF_cs 1);
   28.52 +by (Fast_tac 1);
   28.53  val Diff_lepoll = result();
   28.54  
   28.55  (* ********************************************************************** *)
   28.56 @@ -77,12 +73,12 @@
   28.57  (* lemma for ordertype_Int *)
   28.58  goalw Cardinal.thy [rvimage_def] "rvimage(A,id(A),r) = r Int A*A";
   28.59  by (rtac equalityI 1);
   28.60 -by (step_tac ZF_cs 1);
   28.61 +by (Step_tac 1);
   28.62  by (dres_inst_tac [("P","%a. <id(A)`xb,a>:r")] (id_conv RS subst) 1
   28.63      THEN (assume_tac 1));
   28.64  by (dres_inst_tac [("P","%a. <a,ya>:r")] (id_conv RS subst) 1
   28.65      THEN (REPEAT (assume_tac 1)));
   28.66 -by (fast_tac (ZF_cs addIs [id_conv RS ssubst]) 1);
   28.67 +by (fast_tac (!claset addIs [id_conv RS ssubst]) 1);
   28.68  val rvimage_id = result();
   28.69  
   28.70  (* used only in Hartog.ML *)
   28.71 @@ -96,42 +92,42 @@
   28.72  (* used only in AC16_lemmas.ML *)
   28.73  goalw CardinalArith.thy [InfCard_def]
   28.74          "!!i. [| ~Finite(i); Card(i) |] ==> InfCard(i)";
   28.75 -by (asm_simp_tac (ZF_ss addsimps [Card_is_Ord RS nat_le_infinite_Ord]) 1);
   28.76 +by (asm_simp_tac (!simpset addsimps [Card_is_Ord RS nat_le_infinite_Ord]) 1);
   28.77  val Inf_Card_is_InfCard = result();
   28.78  
   28.79  goal thy "(THE z. {x}={z}) = x";
   28.80 -by (fast_tac (AC_cs addSIs [the_equality]
   28.81 +by (fast_tac (!claset addSIs [the_equality]
   28.82                  addSEs [singleton_eq_iff RS iffD1 RS sym]) 1);
   28.83  val the_element = result();
   28.84  
   28.85  goal thy "(lam x:A. {x}) : bij(A, {{x}. x:A})";
   28.86  by (res_inst_tac [("d","%z. THE x. z={x}")] lam_bijective 1);
   28.87  by (TRYALL (eresolve_tac [RepFunI, RepFunE]));
   28.88 -by (REPEAT (asm_full_simp_tac (AC_ss addsimps [the_element]) 1));
   28.89 +by (REPEAT (asm_full_simp_tac (!simpset addsimps [the_element]) 1));
   28.90  val lam_sing_bij = result();
   28.91  
   28.92  val [major,minor] = goal thy 
   28.93          "[| f : Pi(A,B); (!!x. x:A ==> B(x)<=C(x)) |] ==> f : Pi(A,C)";
   28.94 -by (fast_tac (AC_cs addSIs [major RS Pi_type, minor RS subsetD,
   28.95 +by (fast_tac (!claset addSIs [major RS Pi_type, minor RS subsetD,
   28.96                  major RS apply_type]) 1);
   28.97  val Pi_weaken_type = result();
   28.98  
   28.99  val [major, minor] = goalw thy [inj_def]
  28.100          "[| f:inj(A, B); (!!a. a:A ==> f`a : C) |] ==> f:inj(A,C)";
  28.101 -by (fast_tac (AC_cs addSEs [minor]
  28.102 +by (fast_tac (!claset addSEs [minor]
  28.103          addSIs [major RS CollectD1 RS Pi_type, major RS CollectD2]) 1);
  28.104  val inj_strengthen_type = result();
  28.105  
  28.106  goal thy "A*B=0 <-> A=0 | B=0";
  28.107 -by (fast_tac (ZF_cs addSIs [equals0I] addEs [equals0D]) 1);
  28.108 +by (fast_tac (!claset addSIs [equals0I] addEs [equals0D]) 1);
  28.109  val Sigma_empty_iff = result();
  28.110  
  28.111  goalw thy [Finite_def] "!!n. n:nat ==> Finite(n)";
  28.112 -by (fast_tac (AC_cs addSIs [eqpoll_refl]) 1);
  28.113 +by (fast_tac (!claset addSIs [eqpoll_refl]) 1);
  28.114  val nat_into_Finite = result();
  28.115  
  28.116  goalw thy [Finite_def] "~Finite(nat)";
  28.117 -by (fast_tac (AC_cs addSDs [eqpoll_imp_lepoll]
  28.118 +by (fast_tac (!claset addSDs [eqpoll_imp_lepoll]
  28.119                  addIs [Ord_nat RSN (2, ltI) RS lt_not_lepoll RS notE]) 1);
  28.120  val nat_not_Finite = result();
  28.121  
  28.122 @@ -144,8 +140,8 @@
  28.123  goal thy "!!x. [| EX! x. P(x); P(x); P(y) |] ==> x=y";
  28.124  by (etac ex1E 1);
  28.125  by (res_inst_tac [("b","xa")] (sym RSN (2, trans)) 1);
  28.126 -by (fast_tac AC_cs 1);
  28.127 -by (fast_tac AC_cs 1);
  28.128 +by (Fast_tac 1);
  28.129 +by (Fast_tac 1);
  28.130  val ex1_two_eq = result();
  28.131  
  28.132  (* ********************************************************************** *)
  28.133 @@ -155,16 +151,16 @@
  28.134  goalw thy [surj_def] "!!f. f : surj(A, B) ==> f``A = B";
  28.135  by (etac CollectE 1);
  28.136  by (resolve_tac [subset_refl RSN (2, image_fun) RS ssubst] 1 THEN (assume_tac 1));
  28.137 -by (fast_tac (AC_cs addSEs [RepFunE, apply_type]
  28.138 +by (fast_tac (!claset addSEs [RepFunE, apply_type]
  28.139                  addSIs [RepFunI] addIs [equalityI]) 1);
  28.140  val surj_image_eq = result();
  28.141  
  28.142  
  28.143  goal thy "!!y. succ(x) lepoll y ==> y ~= 0";
  28.144 -by (fast_tac (ZF_cs addSDs [lepoll_0_is_0]) 1);
  28.145 +by (fast_tac (!claset addSDs [lepoll_0_is_0]) 1);
  28.146  val succ_lepoll_imp_not_empty = result();
  28.147  
  28.148  goal thy "!!x. x eqpoll succ(n) ==> x ~= 0";
  28.149 -by (fast_tac (AC_cs addSEs [eqpoll_sym RS eqpoll_0_is_0 RS succ_neq_0]) 1);
  28.150 +by (fast_tac (!claset addSEs [eqpoll_sym RS eqpoll_0_is_0 RS succ_neq_0]) 1);
  28.151  val eqpoll_succ_imp_not_empty = result();
  28.152  
    29.1 --- a/src/ZF/AC/AC_Equiv.thy	Fri Jan 03 10:48:28 1997 +0100
    29.2 +++ b/src/ZF/AC/AC_Equiv.thy	Fri Jan 03 15:01:55 1997 +0100
    29.3 @@ -12,7 +12,7 @@
    29.4  but slightly changed.
    29.5  *)
    29.6  
    29.7 -AC_Equiv = CardinalArith + Univ + OrdQuant +
    29.8 +AC_Equiv = CardinalArith + Univ + 
    29.9  
   29.10  consts
   29.11    
    30.1 --- a/src/ZF/AC/Cardinal_aux.ML	Fri Jan 03 10:48:28 1997 +0100
    30.2 +++ b/src/ZF/AC/Cardinal_aux.ML	Fri Jan 03 15:01:55 1997 +0100
    30.3 @@ -15,15 +15,15 @@
    30.4  (* j=|A| *)
    30.5  goal Cardinal.thy
    30.6      "!!A. [| A lepoll i; Ord(i) |] ==> EX j. j le i & A eqpoll j";
    30.7 -by (fast_tac (ZF_cs addIs [lepoll_cardinal_le, well_ord_Memrel,
    30.8 -			    well_ord_cardinal_eqpoll RS eqpoll_sym]
    30.9 -		    addDs [lepoll_well_ord]) 1);
   30.10 +by (fast_tac (!claset addIs [lepoll_cardinal_le, well_ord_Memrel,
   30.11 +                            well_ord_cardinal_eqpoll RS eqpoll_sym]
   30.12 +                    addDs [lepoll_well_ord]) 1);
   30.13  qed "lepoll_imp_ex_le_eqpoll";
   30.14  
   30.15  (* j=|A| *)
   30.16  goalw Cardinal.thy [lesspoll_def]
   30.17      "!!A a. [| A lesspoll i; Ord(i) |] ==> EX j. j<i & A eqpoll j";
   30.18 -by (fast_tac (ZF_cs addSDs [lepoll_imp_ex_le_eqpoll] addSEs [leE]) 1);
   30.19 +by (fast_tac (!claset addSDs [lepoll_imp_ex_le_eqpoll] addSEs [leE]) 1);
   30.20  qed "lesspoll_imp_ex_lt_eqpoll";
   30.21  
   30.22  goalw thy [InfCard_def] "!!i. [| ~Finite(i); Ord(i) |] ==> InfCard(|i|)";
   30.23 @@ -49,7 +49,7 @@
   30.24  by (rtac eqpollI 1);
   30.25  by (eresolve_tac [subset_imp_lepoll RSN (2, eqpoll_sym RS eqpoll_imp_lepoll
   30.26          RS  lepoll_trans)] 2);
   30.27 -by (fast_tac AC_cs 2);
   30.28 +by (Fast_tac 2);
   30.29  by (resolve_tac [Un_lepoll_sum RS lepoll_trans] 1);
   30.30  by (resolve_tac [lepoll_imp_sum_lepoll_prod RS lepoll_trans] 1);
   30.31  by (eresolve_tac [eqpoll_sym RSN (2, eqpoll_trans) RS eqpoll_imp_lepoll] 1
   30.32 @@ -65,33 +65,33 @@
   30.33      THEN REPEAT (assume_tac 1));
   30.34  val Un_eqpoll_Inf_Ord = result();
   30.35  
   30.36 -val ss = ZF_ss addsimps [inj_is_fun RS apply_type, left_inverse] 
   30.37 +val ss = (!simpset) addsimps [inj_is_fun RS apply_type, left_inverse] 
   30.38                 setloop (split_tac [expand_if] ORELSE' etac UnE);
   30.39  
   30.40 -goal ZF.thy "{x, y} - {y} = {x} - {y}";
   30.41 +goal upair.thy "{x, y} - {y} = {x} - {y}";
   30.42  by (fast_tac eq_cs 1);
   30.43  val double_Diff_sing = result();
   30.44  
   30.45 -goal ZF.thy "if({y,z}-{z}=0, z, THE w. {y,z}-{z}={w}) = y";
   30.46 +goal upair.thy "if({y,z}-{z}=0, z, THE w. {y,z}-{z}={w}) = y";
   30.47  by (split_tac [expand_if] 1);
   30.48 -by (asm_full_simp_tac (ZF_ss addsimps [double_Diff_sing, Diff_eq_0_iff]) 1);
   30.49 -by (fast_tac (ZF_cs addSIs [the_equality, equalityI, equals0I]
   30.50 +by (asm_full_simp_tac (!simpset addsimps [double_Diff_sing, Diff_eq_0_iff]) 1);
   30.51 +by (fast_tac (!claset addSIs [the_equality, equalityI, equals0I]
   30.52                  addEs [equalityE]) 1);
   30.53  val paired_bij_lemma = result();
   30.54  
   30.55  goal thy "(lam y:{{y,z}. y:x}. if(y-{z}=0, z, THE w. y-{z}={w}))  \
   30.56  \               : bij({{y,z}. y:x}, x)";
   30.57  by (res_inst_tac [("d","%a. {a,z}")] lam_bijective 1);
   30.58 -by (TRYALL (fast_tac (AC_cs addSEs [RepFunE] addSIs [RepFunI] 
   30.59 -                addss (AC_ss addsimps [paired_bij_lemma]))));
   30.60 +by (TRYALL (fast_tac (!claset addSEs [RepFunE] addSIs [RepFunI] 
   30.61 +                addss (!simpset addsimps [paired_bij_lemma]))));
   30.62  val paired_bij = result();
   30.63  
   30.64  goalw thy [eqpoll_def] "{{y,z}. y:x} eqpoll x";
   30.65 -by (fast_tac (AC_cs addSIs [paired_bij]) 1);
   30.66 +by (fast_tac (!claset addSIs [paired_bij]) 1);
   30.67  val paired_eqpoll = result();
   30.68  
   30.69  goal thy "!!A. EX B. B eqpoll A & B Int C = 0";
   30.70 -by (fast_tac (AC_cs addSIs [paired_eqpoll, equals0I] addEs [mem_asym]) 1);
   30.71 +by (fast_tac (!claset addSIs [paired_eqpoll, equals0I] addEs [mem_asym]) 1);
   30.72  val ex_eqpoll_disjoint = result();
   30.73  
   30.74  goal thy "!!A. [| A lepoll i; B lepoll i; ~Finite(i); Ord(i) |]  \
   30.75 @@ -110,28 +110,28 @@
   30.76  by (eresolve_tac [Least_le RS leE] 1);
   30.77  by (etac Ord_in_Ord 1 THEN (assume_tac 1));
   30.78  by (etac ltE 1);
   30.79 -by (fast_tac (AC_cs addDs [OrdmemD]) 1);
   30.80 +by (fast_tac (!claset addDs [OrdmemD]) 1);
   30.81  by (etac subst_elem 1 THEN (assume_tac 1));
   30.82  val Least_in_Ord = result();
   30.83  
   30.84  goal thy "!!x. [| well_ord(x,r); y<=x; y lepoll succ(n); n:nat |]  \
   30.85  \       ==> y-{THE b. first(b,y,r)} lepoll n";
   30.86  by (res_inst_tac [("Q","y=0")] (excluded_middle RS disjE) 1);
   30.87 -by (fast_tac (AC_cs addSIs [Diff_sing_lepoll, the_first_in]) 1);
   30.88 +by (fast_tac (!claset addSIs [Diff_sing_lepoll, the_first_in]) 1);
   30.89  by (res_inst_tac [("b","y-{THE b. first(b, y, r)}")] subst 1);
   30.90  by (rtac empty_lepollI 2);
   30.91 -by (fast_tac (AC_cs addSIs [equalityI]) 1);
   30.92 +by (fast_tac (!claset addSIs [equalityI]) 1);
   30.93  val Diff_first_lepoll = result();
   30.94  
   30.95  goal thy "(UN x:X. P(x)) <= (UN x:X. P(x)-Q(x)) Un (UN x:X. Q(x))";
   30.96 -by (fast_tac AC_cs 1);
   30.97 +by (Fast_tac 1);
   30.98  val UN_subset_split = result();
   30.99  
  30.100  goalw thy [lepoll_def] "!!a. Ord(a) ==> (UN x:a. {P(x)}) lepoll a";
  30.101  by (res_inst_tac [("x","lam z:(UN x:a. {P(x)}). (LEAST i. P(i)=z)")] exI 1);
  30.102  by (res_inst_tac [("d","%z. P(z)")] lam_injective 1);
  30.103 -by (fast_tac (AC_cs addSIs [Least_in_Ord]) 1);
  30.104 -by (fast_tac (AC_cs addIs [LeastI] addSEs [Ord_in_Ord]) 1);
  30.105 +by (fast_tac (!claset addSIs [Least_in_Ord]) 1);
  30.106 +by (fast_tac (!claset addIs [LeastI] addSEs [Ord_in_Ord]) 1);
  30.107  val UN_sing_lepoll = result();
  30.108  
  30.109  goal thy "!!a T. [| well_ord(T, R); ~Finite(a); Ord(a); n:nat |] ==>  \
  30.110 @@ -143,14 +143,14 @@
  30.111  by (rtac empty_lepollI 2);
  30.112  by (resolve_tac [equals0I RS sym] 1);
  30.113  by (REPEAT (eresolve_tac [UN_E, allE] 1));
  30.114 -by (fast_tac (AC_cs addDs [lepoll_0_is_0 RS subst]) 1);
  30.115 +by (fast_tac (!claset addDs [lepoll_0_is_0 RS subst]) 1);
  30.116  by (rtac allI 1);
  30.117  by (rtac impI 1);
  30.118  by (eres_inst_tac [("x","lam x:a. f`x - {THE b. first(b,f`x,R)}")] allE 1);
  30.119  by (etac impE 1);
  30.120 -by (asm_full_simp_tac AC_ss 1);
  30.121 -by (fast_tac (AC_cs addSIs [Diff_first_lepoll]) 1);
  30.122 -by (asm_full_simp_tac AC_ss 1);
  30.123 +by (Asm_full_simp_tac 1);
  30.124 +by (fast_tac (!claset addSIs [Diff_first_lepoll]) 1);
  30.125 +by (Asm_full_simp_tac 1);
  30.126  by (resolve_tac [UN_subset_split RS subset_imp_lepoll RS lepoll_trans] 1);
  30.127  by (rtac Un_lepoll_Inf_Ord 1 THEN (REPEAT_FIRST assume_tac));
  30.128  by (etac UN_sing_lepoll 1);
  30.129 @@ -159,7 +159,7 @@
  30.130  goal thy "!!a f. [| ALL b:a. f`b lepoll n & f`b <= T; well_ord(T, R);  \
  30.131  \       ~Finite(a); Ord(a); n:nat |] ==> (UN b:a. f`b) lepoll a";
  30.132  by (eresolve_tac [UN_fun_lepoll_lemma RS allE] 1 THEN (REPEAT (assume_tac 1)));
  30.133 -by (fast_tac AC_cs 1);
  30.134 +by (Fast_tac 1);
  30.135  val UN_fun_lepoll = result();
  30.136  
  30.137  goal thy "!!a f. [| ALL b:a. F(b) lepoll n & F(b) <= T; well_ord(T, R);  \
  30.138 @@ -167,13 +167,13 @@
  30.139  by (rtac impE 1 THEN (assume_tac 3));
  30.140  by (res_inst_tac [("f","lam b:a. F(b)")] (UN_fun_lepoll) 2 
  30.141          THEN (TRYALL assume_tac));
  30.142 -by (simp_tac AC_ss 2);
  30.143 -by (asm_full_simp_tac AC_ss 1);
  30.144 +by (Simp_tac 2);
  30.145 +by (Asm_full_simp_tac 1);
  30.146  val UN_lepoll = result();
  30.147  
  30.148  goal thy "!!a. Ord(a) ==> (UN b:a. F(b)) = (UN b:a. F(b) - (UN c:b. F(c)))";
  30.149  by (rtac equalityI 1);
  30.150 -by (fast_tac AC_cs 2);
  30.151 +by (Fast_tac 2);
  30.152  by (rtac subsetI 1);
  30.153  by (etac UN_E 1);
  30.154  by (rtac UN_I 1);
  30.155 @@ -189,11 +189,11 @@
  30.156  goalw thy [eqpoll_def] "!!A B. A Int B = 0 ==> A Un B eqpoll A + B";
  30.157  by (res_inst_tac [("x","lam a:A Un B. if(a:A,Inl(a),Inr(a))")] exI 1);
  30.158  by (res_inst_tac [("d","%z. case(%x.x, %x.x, z)")] lam_bijective 1);
  30.159 -by (fast_tac (AC_cs addSIs [if_type, InlI, InrI]) 1);
  30.160 +by (fast_tac (!claset addSIs [if_type, InlI, InrI]) 1);
  30.161  by (TRYALL (etac sumE ));
  30.162  by (TRYALL (split_tac [expand_if]));
  30.163 -by (TRYALL (asm_simp_tac sum_ss));
  30.164 -by (fast_tac (AC_cs addDs [equals0D]) 1);
  30.165 +by (TRYALL Asm_simp_tac);
  30.166 +by (fast_tac (!claset addDs [equals0D]) 1);
  30.167  val disj_Un_eqpoll_sum = result();
  30.168  
  30.169  goalw thy [lepoll_def, eqpoll_def]
  30.170 @@ -201,7 +201,7 @@
  30.171  by (etac exE 1);
  30.172  by (forward_tac [subset_refl RSN (2, restrict_bij)] 1);
  30.173  by (res_inst_tac [("x","f``a")] exI 1);
  30.174 -by (fast_tac (AC_cs addSEs [inj_is_fun RS fun_is_rel RS image_subset]) 1);
  30.175 +by (fast_tac (!claset addSEs [inj_is_fun RS fun_is_rel RS image_subset]) 1);
  30.176  val lepoll_imp_eqpoll_subset = result();
  30.177  
  30.178  (* ********************************************************************** *)
  30.179 @@ -227,22 +227,22 @@
  30.180  by (dresolve_tac [[lepoll_Finite, lepoll_Finite] MRS Finite_Un] 2
  30.181          THEN (REPEAT (assume_tac 2)));
  30.182  by (dresolve_tac [subset_Un_Diff RS subset_imp_lepoll RS lepoll_Finite] 2);
  30.183 -by (fast_tac (AC_cs
  30.184 +by (fast_tac (!claset
  30.185          addDs [eqpoll_sym RS eqpoll_imp_lepoll RS lepoll_Finite]) 2);
  30.186  by (dresolve_tac [ Un_lepoll_Inf_Ord] 1
  30.187          THEN (REPEAT (assume_tac 1)));
  30.188 -by (fast_tac (AC_cs addSEs [ltE, Ord_in_Ord]) 1);
  30.189 +by (fast_tac (!claset addSEs [ltE, Ord_in_Ord]) 1);
  30.190  by (dresolve_tac [subset_Un_Diff RS subset_imp_lepoll RS lepoll_trans RSN
  30.191          (3, lt_Card_imp_lesspoll RS lepoll_lesspoll_lesspoll)] 1
  30.192          THEN (TRYALL assume_tac));
  30.193 -by (fast_tac (AC_cs addSDs [lesspoll_def RS def_imp_iff RS iffD1]) 1);
  30.194 +by (fast_tac (!claset addSDs [lesspoll_def RS def_imp_iff RS iffD1]) 1);
  30.195  val Diff_lesspoll_eqpoll_Card_lemma = result();
  30.196  
  30.197  goal thy "!!A. [| A eqpoll a; ~Finite(a); Card(a); B lesspoll a |]  \
  30.198  \       ==> A - B eqpoll a";
  30.199 -by (rtac swap 1 THEN (fast_tac AC_cs 1));
  30.200 +by (rtac swap 1 THEN (Fast_tac 1));
  30.201  by (rtac Diff_lesspoll_eqpoll_Card_lemma 1 THEN (REPEAT (assume_tac 1)));
  30.202 -by (fast_tac (AC_cs addSIs [lesspoll_def RS def_imp_iff RS iffD2,
  30.203 +by (fast_tac (!claset addSIs [lesspoll_def RS def_imp_iff RS iffD2,
  30.204          subset_imp_lepoll RS (eqpoll_imp_lepoll RSN (2, lepoll_trans))]) 1);
  30.205  val Diff_lesspoll_eqpoll_Card = result();
  30.206  
    31.1 --- a/src/ZF/AC/Cardinal_aux.thy	Fri Jan 03 10:48:28 1997 +0100
    31.2 +++ b/src/ZF/AC/Cardinal_aux.thy	Fri Jan 03 15:01:55 1997 +0100
    31.3 @@ -1,3 +1,3 @@
    31.4  (*Dummy theory to document dependencies *)
    31.5  
    31.6 -Cardinal_aux = AC_Equiv + first 
    31.7 +Cardinal_aux = AC_Equiv
    32.1 --- a/src/ZF/AC/DC.ML	Fri Jan 03 10:48:28 1997 +0100
    32.2 +++ b/src/ZF/AC/DC.ML	Fri Jan 03 15:01:55 1997 +0100
    32.3 @@ -33,16 +33,16 @@
    32.4  (*                                                                        *)
    32.5  (* ********************************************************************** *)
    32.6  
    32.7 -goal thy "{z:XX*XX. domain(snd(z))=succ(domain(fst(z)))  \
    32.8 -\       & restrict(snd(z), domain(fst(z))) = fst(z)} <= XX*XX";
    32.9 -by (fast_tac AC_cs 1);
   32.10 +goal thy "{<z1,z2>:XX*XX. domain(z2)=succ(domain(z1))  \
   32.11 +\       & restrict(z2, domain(z1)) = z1} <= XX*XX";
   32.12 +by (Fast_tac 1);
   32.13  val lemma1_1 = result();
   32.14  
   32.15  goal thy "!!X. ALL Y:Pow(X). Y lesspoll nat --> (EX x:X. <Y, x> : R)  \
   32.16 -\       ==> {z: (UN n:nat. {f:n->X. ALL k:n. <f``k, f`k> : R}) *  \
   32.17 +\       ==> {<z1,z2>: (UN n:nat. {f:n->X. ALL k:n. <f``k, f`k> : R}) *  \
   32.18  \               (UN n:nat. {f:n->X. ALL k:n. <f``k, f`k> : R}).  \
   32.19 -\               domain(snd(z))=succ(domain(fst(z)))  \
   32.20 -\               & restrict(snd(z), domain(fst(z))) = fst(z)} ~= 0";
   32.21 +\               domain(z2)=succ(domain(z1))  \
   32.22 +\               & restrict(z2, domain(z1)) = z1} ~= 0";
   32.23  by (etac ballE 1);
   32.24  by (eresolve_tac [empty_subsetI RS PowI RSN (2, notE)] 2);
   32.25  by (eresolve_tac [nat_0I RS n_lesspoll_nat RSN (2, impE)] 1);
   32.26 @@ -50,23 +50,23 @@
   32.27  by (res_inst_tac [("a","<0, {<0, x>}>")] not_emptyI 1);
   32.28  by (rtac CollectI 1);
   32.29  by (rtac SigmaI 1);
   32.30 -by (fast_tac (AC_cs addSIs [nat_0I RS UN_I, empty_fun]) 1);
   32.31 -by (fast_tac (AC_cs addSIs [nat_1I RS UN_I, singleton_fun RS Pi_type]
   32.32 -        addss (AC_ss addsimps [[lepoll_refl, succI1] MRS lepoll_1_is_sing,
   32.33 -        apply_singleton_eq, image_0])) 1);
   32.34 -by (asm_full_simp_tac (AC_ss addsimps [domain_0, restrict_0, domain_cons,
   32.35 -                [lepoll_refl, succI1] MRS lepoll_1_is_sing]) 1);
   32.36 +by (fast_tac (!claset addSIs [nat_0I RS UN_I, empty_fun]) 1);
   32.37 +br (nat_1I RS UN_I) 1;
   32.38 +by (fast_tac (!claset addSIs [singleton_fun RS Pi_type]
   32.39 +        addss (!simpset addsimps [singleton_0 RS sym])) 1);
   32.40 +by (asm_full_simp_tac (!simpset addsimps [domain_0, domain_cons,
   32.41 +                singleton_0]) 1);
   32.42  val lemma1_2 = result();
   32.43  
   32.44  goal thy "!!X. ALL Y:Pow(X). Y lesspoll nat --> (EX x:X. <Y, x> : R)  \
   32.45 -\       ==> range({z: (UN n:nat. {f:n->X. ALL k:n. <f``k, f`k> : R}) *  \
   32.46 +\       ==> range({<z1,z2>: (UN n:nat. {f:n->X. ALL k:n. <f``k, f`k> : R}) *  \
   32.47  \               (UN n:nat. {f:n->X. ALL k:n. <f``k, f`k> : R}).  \
   32.48 -\               domain(snd(z))=succ(domain(fst(z)))  \
   32.49 -\               & restrict(snd(z), domain(fst(z))) = fst(z)})  \
   32.50 -\       <=  domain({z: (UN n:nat. {f:n->X. ALL k:n. <f``k, f`k> : R}) *  \
   32.51 +\               domain(z2)=succ(domain(z1))  \
   32.52 +\               & restrict(z2, domain(z1)) = z1})  \
   32.53 +\       <=  domain({<z1,z2>: (UN n:nat. {f:n->X. ALL k:n. <f``k, f`k> : R}) *  \
   32.54  \               (UN n:nat. {f:n->X. ALL k:n. <f``k, f`k> : R}).  \
   32.55 -\               domain(snd(z))=succ(domain(fst(z)))  \
   32.56 -\               & restrict(snd(z), domain(fst(z))) = fst(z)})";
   32.57 +\               domain(z2)=succ(domain(z1))  \
   32.58 +\               & restrict(z2, domain(z1)) = z1})";
   32.59  by (rtac range_subset_domain 1);
   32.60  by (rtac subsetI 2);
   32.61  by (etac CollectD1 2);
   32.62 @@ -81,92 +81,82 @@
   32.63  by (res_inst_tac [("x","cons(<n,x>, g)")] exI 1);
   32.64  by (rtac CollectI 1);
   32.65  by (rtac SigmaI 1);
   32.66 -by (fast_tac AC_cs 1);
   32.67 +by (Fast_tac 1);
   32.68  by (rtac UN_I 1);
   32.69  by (etac nat_succI 1);
   32.70  by (rtac CollectI 1);
   32.71  by (etac cons_fun_type2 1 THEN (assume_tac 1));
   32.72 -by (fast_tac (AC_cs addSEs [succE] addss (AC_ss
   32.73 +by (fast_tac (!claset addSEs [succE] addss (!simpset
   32.74          addsimps [cons_image_n, cons_val_n, cons_image_k, cons_val_k])) 1);
   32.75 -by (asm_full_simp_tac (AC_ss
   32.76 +by (asm_full_simp_tac (!simpset
   32.77          addsimps [domain_cons, domain_of_fun, succ_def, restrict_cons_eq]) 1);
   32.78  val lemma1_3 = result();
   32.79  
   32.80  goal thy "!!X. [| XX = (UN n:nat. {f:n->X. ALL k:n. <f``k, f`k> : R});  \
   32.81 -\       RR = {z:XX*XX. domain(snd(z))=succ(domain(fst(z)))  \
   32.82 -\       & restrict(snd(z), domain(fst(z))) = fst(z)};  \
   32.83 +\       RR = {<z1,z2>:XX*XX. domain(z2)=succ(domain(z1))  \
   32.84 +\       & restrict(z2, domain(z1)) = z1};  \
   32.85  \       ALL Y:Pow(X). Y lesspoll nat --> (EX x:X. <Y, x> : R)  \
   32.86  \       |] ==> RR <= XX*XX & RR ~= 0 & range(RR) <= domain(RR)";
   32.87 -by (fast_tac (AC_cs addSIs [lemma1_1] addSEs [lemma1_2, lemma1_3]) 1);
   32.88 +by (fast_tac (!claset addSIs [lemma1_1] addSEs [lemma1_2, lemma1_3]) 1);
   32.89  val lemma1 = result();
   32.90  
   32.91 -goal thy "!!f. [| <f,g> : {z:XX*XX.  \
   32.92 -\               domain(snd(z))=succ(domain(fst(z))) & Q(z)};  \
   32.93 -\               XX = (UN n:nat. {f:n->X. ALL k:n. <f``k, f`k> : R}); f:k->X  \
   32.94 -\               |] ==> g:succ(k)->X";
   32.95 -by (etac CollectE 1);
   32.96 -by (dtac SigmaD2 1);
   32.97 -by (hyp_subst_tac 1);
   32.98 -by (etac UN_E 1);
   32.99 -by (etac CollectE 1);
  32.100 -by (asm_full_simp_tac AC_ss 1);
  32.101 -by (dtac domain_of_fun 1);
  32.102 -by (etac conjE 1);
  32.103 -by (forward_tac [domain_of_fun RS sym RS trans] 1 THEN (assume_tac 1));
  32.104 -by (fast_tac AC_cs 1);
  32.105 -val lemma2_1 = result();
  32.106 -
  32.107 -goal thy "!!X. [| XX = (UN n:nat. {f:n->X. ALL k:n. <f``k, f`k> : R});  \
  32.108 +goal thy
  32.109 +"!!X.[| XX = (UN n:nat. {f:n->X. ALL k:n. <f``k, f`k> : R});  \
  32.110  \       ALL n:nat. <f`n, f`succ(n)> :  \
  32.111 -\       {z:XX*XX. domain(snd(z))=succ(domain(fst(z)))  \
  32.112 -\       & restrict(snd(z), domain(fst(z))) = fst(z)};  \
  32.113 +\       {<z1,z2>:XX*XX. domain(z2)=succ(domain(z1))  \
  32.114 +\                       & restrict(z2, domain(z1)) = z1};  \
  32.115  \       f: nat -> XX; n:nat  \
  32.116 -\       |] ==> EX k:nat. f`succ(n) : k -> X & n:k  \
  32.117 -\       & <f`succ(n)``n, f`succ(n)`n> : R";
  32.118 +\    |] ==> EX k:nat. f`succ(n) : k -> X & n:k  \
  32.119 +\              & <f`succ(n)``n, f`succ(n)`n> : R";
  32.120  by (etac nat_induct 1);
  32.121  by (dresolve_tac [nat_1I RSN (2, apply_type)] 1);
  32.122  by (dresolve_tac [nat_0I RSN (2, bspec)] 1);
  32.123 -by (asm_full_simp_tac AC_ss 1);
  32.124 -by (etac UN_E 1);
  32.125 -by (etac CollectE 1);
  32.126 +by (Asm_full_simp_tac 1);
  32.127 +by (Step_tac 1);
  32.128  by (rtac bexI 1 THEN (assume_tac 2));
  32.129 -by (fast_tac (AC_cs addSEs [nat_0_le RS leE, ltD, ltD RSN (2, bspec)]
  32.130 -        addEs [sym RS trans RS succ_neq_0, domain_of_fun]) 1);
  32.131 -by (etac bexE 1);
  32.132 +by (best_tac (!claset addIs [ltD]
  32.133 +		      addSEs [nat_0_le RS leE]
  32.134 +        addEs [sym RS trans RS succ_neq_0, domain_of_fun]
  32.135 +	addss (!simpset)) 1);
  32.136 +(** LEVEL 7 **)
  32.137  by (dresolve_tac [nat_succI RSN (2, bspec)] 1 THEN (assume_tac 1));
  32.138 -by (etac conjE 1);
  32.139 -by (dtac lemma2_1 1 THEN REPEAT (assume_tac 1));
  32.140 -by (hyp_subst_tac 1);
  32.141 +by (subgoal_tac "f ` succ(succ(x)) : succ(k)->X" 1);
  32.142  by (dresolve_tac [nat_succI RS nat_succI RSN (2, apply_type)] 1
  32.143          THEN (assume_tac 1));
  32.144 -by (etac UN_E 1);
  32.145 -by (etac CollectE 1);
  32.146 -by (dresolve_tac [[domain_of_fun RS sym, domain_of_fun] MRS trans] 1
  32.147 -        THEN (assume_tac 1));
  32.148 -by (fast_tac (AC_cs addSEs [nat_succI, nat_into_Ord RS succ_in_succ]
  32.149 +by (Full_simp_tac 1);
  32.150 +by (Step_tac 1);
  32.151 +by (forw_inst_tac [("a","succ(k)")] (domain_of_fun RS sym RS trans) 1 THEN
  32.152 +    (assume_tac 1));
  32.153 +by (forw_inst_tac [("a","xa")] (domain_of_fun RS sym RS trans) 1 THEN
  32.154 +    (assume_tac 1));
  32.155 +by (fast_tac (!claset addSEs [nat_succI, nat_into_Ord RS succ_in_succ]
  32.156          addSDs [nat_into_Ord RS succ_in_succ RSN (2, bspec)]) 1);
  32.157 +by (dtac domain_of_fun 1);
  32.158 +by (Full_simp_tac 1);
  32.159 +by (deepen_tac (!claset addDs [domain_of_fun RS sym RS trans]) 0 1);
  32.160  val lemma2 = result();
  32.161  
  32.162 -goal thy "!!X. [| XX = (UN n:nat. {f:n->X. ALL k:n. <f``k, f`k> : R});  \
  32.163 +goal thy 
  32.164 +"!!X.[| XX = (UN n:nat. {f:n->X. ALL k:n. <f``k, f`k> : R});  \
  32.165  \       ALL n:nat. <f`n, f`succ(n)> :  \
  32.166 -\       {z:XX*XX. domain(snd(z))=succ(domain(fst(z)))  \
  32.167 -\       & restrict(snd(z), domain(fst(z))) = fst(z)};  \
  32.168 +\       {<z1,z2>:XX*XX. domain(z2)=succ(domain(z1))  \
  32.169 +\       & restrict(z2, domain(z1)) = z1};  \
  32.170  \       f: nat -> XX; n:nat \
  32.171 -\       |] ==>  ALL x:n. f`succ(n)`x = f`succ(x)`x";
  32.172 +\    |] ==>  ALL x:n. f`succ(n)`x = f`succ(x)`x";
  32.173  by (etac nat_induct 1);
  32.174 -by (fast_tac AC_cs 1);
  32.175 +by (Fast_tac 1);
  32.176  by (rtac ballI 1);
  32.177  by (etac succE 1);
  32.178  by (rtac restrict_eq_imp_val_eq 1);
  32.179  by (dresolve_tac [nat_succI RSN (2, bspec)] 1 THEN (assume_tac 1));
  32.180 -by (asm_full_simp_tac AC_ss 1);
  32.181 +by (Asm_full_simp_tac 1);
  32.182  by (dtac lemma2 1 THEN REPEAT (assume_tac 1));
  32.183 -by (fast_tac (AC_cs addSDs [domain_of_fun]) 1);
  32.184 +by (fast_tac (!claset addSDs [domain_of_fun]) 1);
  32.185  by (dres_inst_tac [("x","xa")] bspec 1 THEN (assume_tac 1));
  32.186  by (eresolve_tac [sym RS trans RS sym] 1);
  32.187  by (resolve_tac [restrict_eq_imp_val_eq RS sym] 1);
  32.188  by (dresolve_tac [nat_succI RSN (2, bspec)] 1 THEN (assume_tac 1));
  32.189 -by (asm_full_simp_tac AC_ss 1);
  32.190 +by (Asm_full_simp_tac 1);
  32.191  by (dtac lemma2 1 THEN REPEAT (assume_tac 1));
  32.192  by (fast_tac (FOL_cs addSDs [domain_of_fun]
  32.193          addSEs [bexE, nat_into_Ord RSN (2, OrdmemD) RS subsetD]) 1);
  32.194 @@ -174,31 +164,31 @@
  32.195  
  32.196  goal thy "!!n. ALL x:n. f`succ(n)`x = f`succ(x)`x   \
  32.197  \       ==> {f`succ(x)`x. x:n} = {f`succ(n)`x. x:n}";
  32.198 -by (asm_full_simp_tac AC_ss 1);
  32.199 +by (Asm_full_simp_tac 1);
  32.200  val lemma3_2 = result();
  32.201  
  32.202  goal thy "!!X. [| XX = (UN n:nat. {f:n->X. ALL k:n. <f``k, f`k> : R});  \
  32.203  \       ALL n:nat. <f`n, f`succ(n)> :  \
  32.204 -\       {z:XX*XX. domain(snd(z))=succ(domain(fst(z)))  \
  32.205 -\       & restrict(snd(z), domain(fst(z))) = fst(z)};  \
  32.206 +\       {<z1,z2>:XX*XX. domain(z2)=succ(domain(z1))  \
  32.207 +\       & restrict(z2, domain(z1)) = z1};  \
  32.208  \       f: nat -> XX; n:nat  \
  32.209  \       |] ==> (lam x:nat. f`succ(x)`x) `` n = f`succ(n)``n";
  32.210  by (etac natE 1);
  32.211 -by (asm_full_simp_tac (AC_ss addsimps [image_0]) 1);
  32.212 +by (asm_full_simp_tac (!simpset addsimps [image_0]) 1);
  32.213  by (resolve_tac [image_lam RS ssubst] 1);
  32.214 -by (fast_tac (AC_cs addSEs [[nat_succI, Ord_nat] MRS OrdmemD]) 1);
  32.215 +by (fast_tac (!claset addSEs [[nat_succI, Ord_nat] MRS OrdmemD]) 1);
  32.216  by (resolve_tac [lemma3_1 RS lemma3_2 RS ssubst] 1
  32.217          THEN REPEAT (assume_tac 1));
  32.218 -by (fast_tac (AC_cs addSEs [nat_succI]) 1);
  32.219 +by (fast_tac (!claset addSEs [nat_succI]) 1);
  32.220  by (dresolve_tac [nat_succI RSN (4, lemma2)] 1
  32.221          THEN REPEAT (assume_tac 1));
  32.222 -by (fast_tac (AC_cs addSEs [nat_into_Ord RSN (2, OrdmemD) RSN 
  32.223 -			    (2, image_fun RS sym)]) 1);
  32.224 +by (fast_tac (!claset addSEs [nat_into_Ord RSN (2, OrdmemD) RSN 
  32.225 +                            (2, image_fun RS sym)]) 1);
  32.226  val lemma3 = result();
  32.227  
  32.228  goal thy "!!f. [| f:A->B; B<=C |] ==> f:A->C";
  32.229  by (rtac Pi_type 1 THEN (assume_tac 1));
  32.230 -by (fast_tac (AC_cs addSEs [apply_type]) 1);
  32.231 +by (fast_tac (!claset addSEs [apply_type]) 1);
  32.232  val fun_type_gen = result();
  32.233  
  32.234  goalw thy [DC_def, DC0_def] "!!Z. DC0 ==> DC(nat)";
  32.235 @@ -208,16 +198,16 @@
  32.236          THEN (assume_tac 1));
  32.237  by (etac bexE 1);
  32.238  by (res_inst_tac [("x","lam n:nat. f`succ(n)`n")] bexI 1);
  32.239 -by (fast_tac (AC_cs addSIs [lam_type] addSDs [refl RS lemma2]
  32.240 +by (fast_tac (!claset addSIs [lam_type] addSDs [refl RS lemma2]
  32.241                  addSEs [fun_type_gen, apply_type]) 2);
  32.242  by (rtac oallI 1);
  32.243  by (forward_tac [ltD RSN (3, refl RS lemma2)] 1
  32.244          THEN assume_tac 2);
  32.245 -by (fast_tac (AC_cs addSEs [fun_type_gen]) 1);
  32.246 +by (fast_tac (!claset addSEs [fun_type_gen]) 1);
  32.247  by (eresolve_tac [ltD RSN (3, refl RS lemma3) RS ssubst] 1
  32.248          THEN assume_tac 2);
  32.249 -by (fast_tac (AC_cs addSEs [fun_type_gen]) 1);
  32.250 -by (fast_tac (AC_cs addss AC_ss) 1);
  32.251 +by (fast_tac (!claset addSEs [fun_type_gen]) 1);
  32.252 +by (fast_tac (!claset addss (!simpset)) 1);
  32.253  qed "DC0_DC_nat";
  32.254  
  32.255  (* ********************************************************************** *)
  32.256 @@ -231,11 +221,11 @@
  32.257  (*                                                                        *)
  32.258  (*      XX = (UN n:nat.                                                   *)
  32.259  (*      {f:succ(n)->domain(R). ALL k:n. <f`k, f`succ(k)> : R})            *)
  32.260 -(*      RR = {z:Fin(XX)*XX. (domain(snd(z))=succ(UN f:fst(z). domain(f))  *)
  32.261 -(*              & (ALL f:fst(z). restrict(snd(z), domain(f)) = f)) |      *)
  32.262 -(*              (~ (EX g:XX. domain(g)=succ(UN f:fst(z). domain(f))       *)
  32.263 -(*              & (ALL f:fst(z). restrict(g, domain(f)) = f)) &           *)
  32.264 -(*              snd(z)={<0,x>})}                                          *)
  32.265 +(*      RR = {<z1,z2>:Fin(XX)*XX. (domain(z2)=succ(UN f:z1. domain(f))  *)
  32.266 +(*              & (ALL f:z1. restrict(z2, domain(f)) = f)) |      *)
  32.267 +(*              (~ (EX g:XX. domain(g)=succ(UN f:z1. domain(f))       *)
  32.268 +(*              & (ALL f:z1. restrict(g, domain(f)) = f)) &           *)
  32.269 +(*              z2={<0,x>})}                                          *)
  32.270  (*                                                                        *)
  32.271  (* Then XX and RR satisfy the hypotheses of DC(omega).                    *)
  32.272  (* So applying DC:                                                        *)
  32.273 @@ -252,14 +242,14 @@
  32.274  
  32.275  goalw thy [lesspoll_def, Finite_def]
  32.276          "!!A. A lesspoll nat ==> Finite(A)";
  32.277 -by (fast_tac (AC_cs addSDs [ltD, lepoll_imp_ex_le_eqpoll]
  32.278 +by (fast_tac (!claset addSDs [ltD, lepoll_imp_ex_le_eqpoll]
  32.279          addSIs [Ord_nat]) 1);
  32.280  val lesspoll_nat_is_Finite = result();
  32.281  
  32.282  goal thy "!!n. n:nat ==> ALL A. (A eqpoll n & A <= X) --> A : Fin(X)";
  32.283  by (etac nat_induct 1);
  32.284  by (rtac allI 1);
  32.285 -by (fast_tac (AC_cs addSIs [Fin.emptyI]
  32.286 +by (fast_tac (!claset addSIs [Fin.emptyI]
  32.287          addSDs [eqpoll_imp_lepoll RS lepoll_0_is_0]) 1);
  32.288  by (rtac allI 1);
  32.289  by (rtac impI 1);
  32.290 @@ -269,10 +259,10 @@
  32.291  by (forward_tac [Diff_sing_eqpoll] 1 THEN (assume_tac 1));
  32.292  by (etac allE 1);
  32.293  by (etac impE 1);
  32.294 -by (fast_tac AC_cs 1);
  32.295 +by (Fast_tac 1);
  32.296  by (dtac subsetD 1 THEN (assume_tac 1));
  32.297  by (dresolve_tac [Fin.consI] 1 THEN (assume_tac 1));
  32.298 -by (asm_full_simp_tac (AC_ss addsimps [cons_Diff]) 1);
  32.299 +by (asm_full_simp_tac (!simpset addsimps [cons_Diff]) 1);
  32.300  val Finite_Fin_lemma = result();
  32.301  
  32.302  goalw thy [Finite_def] "!!A. [| Finite(A); A <= X |] ==> A : Fin(X)";
  32.303 @@ -281,60 +271,62 @@
  32.304  by (etac allE 1);
  32.305  by (etac impE 1);
  32.306  by (assume_tac 2);
  32.307 -by (fast_tac AC_cs 1);
  32.308 +by (Fast_tac 1);
  32.309  val Finite_Fin = result();
  32.310  
  32.311 -goal thy "!!x. x: X ==> {<0,x>}: (UN n:nat.  \
  32.312 -\               {f:succ(n)->X. ALL k:n. <f`k, f`succ(k)> : R})";
  32.313 -by (fast_tac (AC_cs addSIs [nat_0I RS UN_I, singleton_fun RS Pi_type]
  32.314 -        addss (AC_ss addsimps [[lepoll_refl, succI1] MRS lepoll_1_is_sing,
  32.315 -        apply_singleton_eq])) 1);
  32.316 +goal thy "!!x. x: X  \
  32.317 +\ ==> {<0,x>}: (UN n:nat. {f:succ(n)->X. ALL k:n. <f`k, f`succ(k)> : R})";
  32.318 +br (nat_0I RS UN_I) 1;
  32.319 +by (fast_tac (!claset addSIs [singleton_fun RS Pi_type]
  32.320 +        addss (!simpset addsimps [singleton_0 RS sym])) 1);
  32.321  val singleton_in_funs = result();
  32.322  
  32.323  goal thy
  32.324          "!!X. [| XX = (UN n:nat.  \
  32.325  \               {f:succ(n)->domain(R). ALL k:n. <f`k, f`succ(k)> : R});  \
  32.326 -\       RR = {z:Fin(XX)*XX. (domain(snd(z))=succ(UN f:fst(z). domain(f))  \
  32.327 -\       & (ALL f:fst(z). restrict(snd(z), domain(f)) = f)) |  \
  32.328 -\       (~ (EX g:XX. domain(g)=succ(UN f:fst(z). domain(f))  \
  32.329 -\       & (ALL f:fst(z). restrict(g, domain(f)) = f)) & snd(z)={<0,x>})};  \
  32.330 +\       RR = {<z1,z2>:Fin(XX)*XX. (domain(z2)=succ(UN f:z1. domain(f))  \
  32.331 +\       & (ALL f:z1. restrict(z2, domain(f)) = f)) |  \
  32.332 +\       (~ (EX g:XX. domain(g)=succ(UN f:z1. domain(f))  \
  32.333 +\       & (ALL f:z1. restrict(g, domain(f)) = f)) & z2={<0,x>})};  \
  32.334  \       range(R) <= domain(R); x:domain(R)  \
  32.335  \       |] ==> RR <= Pow(XX)*XX &  \
  32.336  \       (ALL Y:Pow(XX). Y lesspoll nat --> (EX x:XX. <Y,x>:RR))";
  32.337  by (rtac conjI 1);
  32.338 -by (deepen_tac (ZF_cs addSEs [FinD RS PowI]) 0 1);
  32.339 +by (deepen_tac (!claset addSEs [FinD RS PowI]) 0 1);
  32.340  by (rtac ballI 1);
  32.341  by (rtac impI 1);
  32.342  by (dresolve_tac [[lesspoll_nat_is_Finite, PowD] MRS Finite_Fin] 1
  32.343          THEN (assume_tac 1));
  32.344  by (excluded_middle_tac "EX g:XX. domain(g)=succ(UN f:Y. domain(f))  \
  32.345  \       & (ALL f:Y. restrict(g, domain(f)) = f)" 1);
  32.346 -by (fast_tac (AC_cs addss AC_ss) 2);
  32.347 -by (fast_tac (FOL_cs addSEs [CollectE, singleton_in_funs]
  32.348 -                addSIs [SigmaI] addIs [bexI] addss AC_ss) 1);
  32.349 +by (fast_tac (!claset addss (!simpset)) 2);
  32.350 +by (step_tac (!claset delrules [domainE]) 1);
  32.351 +by(swap_res_tac [bexI] 1 THEN etac singleton_in_funs 2);
  32.352 +by (asm_simp_tac (!simpset addsimps [nat_0I  RSN (2, bexI), 
  32.353 +				     cons_fun_type2, empty_fun]) 1);
  32.354  val lemma1 = result();
  32.355  
  32.356  goal thy "!!f. [| f:nat->X; n:nat |] ==>  \
  32.357  \       (UN x:f``succ(n). P(x)) =  P(f`n) Un (UN x:f``n. P(x))";
  32.358 -by (asm_full_simp_tac (AC_ss
  32.359 +by (asm_full_simp_tac (!simpset
  32.360          addsimps [Ord_nat RSN (2, OrdmemD) RSN (2, image_fun),
  32.361          [nat_succI, Ord_nat] MRS OrdmemD RSN (2, image_fun)]) 1);
  32.362  val UN_image_succ_eq = result();
  32.363  
  32.364  goal thy "!!f. [| (UN x:f``n. P(x)) = y; P(f`n) = succ(y);  \
  32.365  \       f:nat -> X; n:nat |] ==> (UN x:f``succ(n). P(x)) = succ(y)";
  32.366 -by (asm_full_simp_tac (AC_ss addsimps [UN_image_succ_eq]) 1);
  32.367 -by (fast_tac (AC_cs addSIs [equalityI]) 1);
  32.368 +by (asm_full_simp_tac (!simpset addsimps [UN_image_succ_eq]) 1);
  32.369 +by (fast_tac (!claset addSIs [equalityI]) 1);
  32.370  val UN_image_succ_eq_succ = result();
  32.371  
  32.372 -goal thy "!!f. [| f: (UN n:nat. {g:succ(n) -> D. P(g, n)});  \
  32.373 +goal thy "!!f. [| f:succ(n) -> D;  n:nat;  \
  32.374  \       domain(f)=succ(x); x=y |] ==> f`y : D";
  32.375 -by (fast_tac (AC_cs addEs [apply_type]
  32.376 +by (fast_tac (!claset addEs [apply_type]
  32.377          addSDs [[sym, domain_of_fun] MRS trans]) 1);
  32.378 -val apply_UN_type = result();
  32.379 +val apply_domain_type = result();
  32.380  
  32.381  goal thy "!!f. [| f : nat -> X; n:nat |] ==> f``succ(n) = cons(f`n, f``n)";
  32.382 -by (asm_full_simp_tac (AC_ss
  32.383 +by (asm_full_simp_tac (!simpset
  32.384          addsimps [nat_succI, Ord_nat RSN (2, OrdmemD), image_fun]) 1);
  32.385  val image_fun_succ = result();
  32.386  
  32.387 @@ -343,7 +335,7 @@
  32.388  \       u=k; n:nat  \
  32.389  \       |] ==> f`n : succ(k) -> domain(R)";
  32.390  by (dtac apply_type 1 THEN (assume_tac 1));
  32.391 -by (fast_tac (AC_cs addEs [UN_E, domain_eq_imp_fun_type]) 1);
  32.392 +by (fast_tac (!claset addEs [UN_E, domain_eq_imp_fun_type]) 1);
  32.393  val f_n_type = result();
  32.394  
  32.395  goal thy "!!f. [| f : nat -> (UN n:nat.  \
  32.396 @@ -354,8 +346,7 @@
  32.397  by (etac UN_E 1);
  32.398  by (etac CollectE 1);
  32.399  by (dresolve_tac [domain_of_fun RS sym RS trans] 1 THEN (assume_tac 1));
  32.400 -by (dtac succ_eqD 1);
  32.401 -by (asm_full_simp_tac AC_ss 1);
  32.402 +by (Asm_full_simp_tac 1);
  32.403  val f_n_pairs_in_R = result();
  32.404  
  32.405  goalw thy [restrict_def]
  32.406 @@ -363,9 +354,9 @@
  32.407  \       |] ==> restrict(cons(<n, y>, f), domain(x)) = x";
  32.408  by (eresolve_tac [sym RS trans RS sym] 1);
  32.409  by (rtac fun_extension 1);
  32.410 -by (fast_tac (AC_cs addSIs [lam_type]) 1);
  32.411 -by (fast_tac (AC_cs addSIs [lam_type]) 1);
  32.412 -by (asm_full_simp_tac (AC_ss addsimps [subsetD RS cons_val_k]) 1);
  32.413 +by (fast_tac (!claset addSIs [lam_type]) 1);
  32.414 +by (fast_tac (!claset addSIs [lam_type]) 1);
  32.415 +by (asm_full_simp_tac (!simpset addsimps [subsetD RS cons_val_k]) 1);
  32.416  val restrict_cons_eq_restrict = result();
  32.417  
  32.418  goal thy "!!f. [| ALL x:f``n. restrict(f`n, domain(x))=x;  \
  32.419 @@ -375,45 +366,50 @@
  32.420  \       (UN x:f``n. domain(x)) <= n |] \
  32.421  \       ==> ALL x:f``succ(n). restrict(cons(<succ(n),y>, f`n), domain(x))=x";
  32.422  by (rtac ballI 1);
  32.423 -by (asm_full_simp_tac (AC_ss addsimps [image_fun_succ]) 1);
  32.424 +by (asm_full_simp_tac (!simpset addsimps [image_fun_succ]) 1);
  32.425  by (dtac f_n_type 1 THEN REPEAT (ares_tac [refl] 1));
  32.426 -by (etac consE 1);
  32.427 -by (asm_full_simp_tac (AC_ss addsimps [domain_of_fun, restrict_cons_eq]) 1);
  32.428 +by (etac disjE 1);
  32.429 +by (asm_full_simp_tac (!simpset addsimps [domain_of_fun, restrict_cons_eq]) 1);
  32.430  by (dtac bspec 1 THEN (assume_tac 1));
  32.431 -by (fast_tac (AC_cs addSEs [restrict_cons_eq_restrict]) 1);
  32.432 +by (fast_tac (!claset addSEs [restrict_cons_eq_restrict]) 1);
  32.433  val all_in_image_restrict_eq = result();
  32.434  
  32.435 -goal thy "!!X. [| ALL b<nat. <f``b, f`b> :  \
  32.436 -\       {z:Fin(XX)*XX. (domain(snd(z))=succ(UN f:fst(z). domain(f))  \
  32.437 -\       & (ALL f:fst(z). restrict(snd(z), domain(f)) = f)) |  \
  32.438 -\       (~ (EX g:XX. domain(g)=succ(UN f:fst(z). domain(f))  \
  32.439 -\       & (ALL f:fst(z). restrict(g, domain(f)) = f)) & snd(z)={<0,x>})};  \
  32.440 +goal thy
  32.441 +"!!X.[| ALL b<nat. <f``b, f`b> :  \
  32.442 +\       {<z1,z2>:Fin(XX)*XX. (domain(z2)=succ(UN f:z1. domain(f))  \
  32.443 +\                & (ALL f:z1. restrict(z2, domain(f)) = f)) |  \
  32.444 +\                  (~ (EX g:XX. domain(g)=succ(UN f:z1. domain(f))  \
  32.445 +\                & (ALL f:z1. restrict(g, domain(f)) = f)) & z2={<0,x>})};  \
  32.446  \       XX = (UN n:nat.  \
  32.447  \       {f:succ(n)->domain(R). ALL k:n. <f`k, f`succ(k)> : R});  \
  32.448  \       f: nat -> XX; range(R) <= domain(R); x:domain(R)  \
  32.449 -\       |] ==> ALL b<nat. <f``b, f`b> :  \
  32.450 -\       {z:Fin(XX)*XX. (domain(snd(z))=succ(UN f:fst(z). domain(f))  \
  32.451 -\       & (UN f:fst(z). domain(f)) = b  \
  32.452 -\       & (ALL f:fst(z). restrict(snd(z), domain(f)) = f))}";
  32.453 +\    |] ==> ALL b<nat. <f``b, f`b> :  \
  32.454 +\           {<z1,z2>:Fin(XX)*XX. (domain(z2)=succ(UN f:z1. domain(f))  \
  32.455 +\           & (UN f:z1. domain(f)) = b  \
  32.456 +\           & (ALL f:z1. restrict(z2, domain(f)) = f))}";
  32.457  by (rtac oallI 1);
  32.458  by (dtac ltD 1);
  32.459  by (etac nat_induct 1);
  32.460  by (dresolve_tac [[nat_0I, Ord_nat] MRS ltI RSN (2, ospec)] 1);
  32.461  by (fast_tac (FOL_cs addss
  32.462 -        (ZF_ss addsimps [image_0, singleton_fun RS domain_of_fun,
  32.463 -        [lepoll_refl, succI1] MRS lepoll_1_is_sing, singleton_in_funs])) 1);
  32.464 +	      (!simpset addsimps [image_0, singleton_fun RS domain_of_fun,
  32.465 +				  singleton_0, singleton_in_funs])) 1);
  32.466 +(*induction step*) (** LEVEL 5 **)
  32.467 +by (Full_simp_tac 1);
  32.468  by (dresolve_tac [[nat_succI, Ord_nat] MRS ltI RSN (2, ospec)] 1
  32.469          THEN (assume_tac 1));
  32.470 -by (REPEAT (eresolve_tac [conjE, CollectE, disjE] 1));
  32.471 +by (REPEAT (eresolve_tac [conjE, disjE] 1));
  32.472  by (fast_tac (FOL_cs addSEs [trans, subst_context]
  32.473 -        addSIs [UN_image_succ_eq_succ] addss AC_ss) 1);
  32.474 +                     addSIs [UN_image_succ_eq_succ] addss (!simpset)) 1);
  32.475  by (etac conjE 1);
  32.476  by (etac notE 1);
  32.477 -by (asm_full_simp_tac (AC_ss addsimps [UN_image_succ_eq_succ]) 1);
  32.478 -by (etac conjE 1);
  32.479 -by (dtac apply_UN_type 1 THEN REPEAT (assume_tac 1));
  32.480 +by (asm_full_simp_tac (!simpset addsimps [UN_image_succ_eq_succ]) 1);
  32.481 +(** LEVEL 12 **)
  32.482 +by (REPEAT (eresolve_tac [conjE, bexE] 1));
  32.483 +by (dtac apply_domain_type 1 THEN REPEAT (assume_tac 1));
  32.484  by (etac domainE 1);
  32.485  by (etac domainE 1);
  32.486 +
  32.487  by (forward_tac [f_n_type] 1 THEN REPEAT (assume_tac 1));
  32.488  by (res_inst_tac [("x","cons(<succ(xa), ya>, f`xa)")] bexI 1);
  32.489  by (fast_tac (FOL_cs
  32.490 @@ -426,52 +422,53 @@
  32.491          THEN REPEAT (assume_tac 1));
  32.492  by (rtac ballI 1);
  32.493  by (etac succE 1);
  32.494 -by (asm_full_simp_tac (AC_ss addsimps [cons_val_n, cons_val_k]) 1);
  32.495 -by (dresolve_tac [domain_of_fun RSN (2, f_n_pairs_in_R)] 1
  32.496 -        THEN REPEAT (assume_tac 1));
  32.497 -by (dtac bspec 1 THEN (assume_tac 1));
  32.498 -by (asm_full_simp_tac (AC_ss
  32.499 -        addsimps [nat_into_Ord RS succ_in_succ, succI2, cons_val_k]) 1);
  32.500 +(** LEVEL 25 **)
  32.501 +by (dresolve_tac [domain_of_fun RSN (2, f_n_pairs_in_R)] 2
  32.502 +        THEN REPEAT (assume_tac 2));
  32.503 +by (dtac bspec 2 THEN (assume_tac 2));
  32.504 +by (asm_full_simp_tac (!simpset
  32.505 +        addsimps [nat_into_Ord RS succ_in_succ, succI2, cons_val_k]) 2);
  32.506 +by (asm_full_simp_tac (!simpset addsimps [cons_val_n, cons_val_k]) 1);
  32.507  val simplify_recursion = result();
  32.508  
  32.509 + 
  32.510  goal thy "!!X. [| XX = (UN n:nat.  \
  32.511  \               {f:succ(n)->domain(R). ALL k:n. <f`k, f`succ(k)> : R});  \
  32.512  \       ALL b<nat. <f``b, f`b> :  \
  32.513 -\       {z:Fin(XX)*XX. (domain(snd(z))=succ(UN f:fst(z). domain(f))  \
  32.514 -\       & (UN f:fst(z). domain(f)) = b  \
  32.515 -\       & (ALL f:fst(z). restrict(snd(z), domain(f)) = f))};  \
  32.516 +\       {<z1,z2>:Fin(XX)*XX. (domain(z2)=succ(UN f:z1. domain(f))  \
  32.517 +\       & (UN f:z1. domain(f)) = b  \
  32.518 +\       & (ALL f:z1. restrict(z2, domain(f)) = f))};  \
  32.519  \       f: nat -> XX; range(R) <= domain(R); x:domain(R); n:nat  \
  32.520  \       |] ==> f`n : succ(n) -> domain(R)  \
  32.521  \       & (ALL i:n. <f`n`i, f`n`succ(i)>:R)";
  32.522  by (dtac ospec 1);
  32.523  by (eresolve_tac [Ord_nat RSN (2, ltI)] 1);
  32.524  by (etac CollectE 1);
  32.525 -by (asm_full_simp_tac AC_ss 1);
  32.526 +by (Asm_full_simp_tac 1);
  32.527  by (rtac conjI 1);
  32.528 -by (fast_tac (AC_cs
  32.529 +by (fast_tac (!claset
  32.530          addSEs [trans RS domain_eq_imp_fun_type, subst_context]) 1);
  32.531 -by (fast_tac (FOL_cs
  32.532 -        addSEs [conjE, f_n_pairs_in_R, trans, subst_context]) 1);
  32.533 +by (fast_tac (FOL_cs addSEs [conjE, f_n_pairs_in_R, trans, subst_context]) 1);
  32.534  val lemma2 = result();
  32.535  
  32.536  goal thy "!!n. [| XX = (UN n:nat.  \
  32.537  \       {f:succ(n)->domain(R). ALL k:n. <f`k, f`succ(k)> : R});  \
  32.538  \       ALL b<nat. <f``b, f`b> :  \
  32.539 -\       {z:Fin(XX)*XX. (domain(snd(z))=succ(UN f:fst(z). domain(f))  \
  32.540 -\       & (UN f:fst(z). domain(f)) = b  \
  32.541 -\       & (ALL f:fst(z). restrict(snd(z), domain(f)) = f))};  \
  32.542 +\       {<z1,z2>:Fin(XX)*XX. (domain(z2)=succ(UN f:z1. domain(f))  \
  32.543 +\       & (UN f:z1. domain(f)) = b  \
  32.544 +\       & (ALL f:z1. restrict(z2, domain(f)) = f))};  \
  32.545  \       f : nat -> XX; n:nat; range(R) <= domain(R); x:domain(R)  \
  32.546  \       |] ==> f`n`n = f`succ(n)`n";
  32.547  by (forward_tac [lemma2 RS conjunct1 RS domain_of_fun] 1
  32.548          THEN REPEAT (assume_tac 1));
  32.549  by (dresolve_tac [[nat_succI, Ord_nat] MRS ltI RSN (2, ospec)] 1
  32.550          THEN (assume_tac 1));
  32.551 -by (asm_full_simp_tac AC_ss 1);
  32.552 +by (Asm_full_simp_tac 1);
  32.553  by (REPEAT (etac conjE 1));
  32.554  by (etac ballE 1);
  32.555  by (eresolve_tac [restrict_eq_imp_val_eq RS sym] 1);
  32.556 -by (fast_tac (AC_cs addSEs [ssubst]) 1);
  32.557 -by (asm_full_simp_tac (AC_ss
  32.558 +by (fast_tac (!claset addSEs [ssubst]) 1);
  32.559 +by (asm_full_simp_tac (!simpset
  32.560          addsimps [[nat_succI, Ord_nat] MRS OrdmemD RSN (2, image_fun)]) 1);
  32.561  val lemma3 = result();
  32.562  
  32.563 @@ -491,7 +488,7 @@
  32.564  by (forward_tac [refl RS (nat_succI RSN (6, lemma2)) RS conjunct2] 1
  32.565          THEN REPEAT (assume_tac 1));
  32.566  by (dresolve_tac [refl RS lemma3] 1 THEN REPEAT (assume_tac 1));
  32.567 -by (asm_full_simp_tac (AC_ss addsimps [nat_succI]) 1);
  32.568 +by (asm_full_simp_tac (!simpset addsimps [nat_succI]) 1);
  32.569  qed "DC_nat_DC0";
  32.570  
  32.571  (* ********************************************************************** *)
  32.572 @@ -500,7 +497,7 @@
  32.573  
  32.574  goalw thy [lesspoll_def]
  32.575          "!!A. [| ~ A lesspoll B; C lesspoll B |] ==> A - C ~= 0";
  32.576 -by (fast_tac (AC_cs addSDs [Diff_eq_0_iff RS iffD1 RS subset_imp_lepoll]
  32.577 +by (fast_tac (!claset addSDs [Diff_eq_0_iff RS iffD1 RS subset_imp_lepoll]
  32.578          addSIs [eqpollI] addEs [notE] addSEs [eqpollE, lepoll_trans]) 1);
  32.579  val lemma1 = result();
  32.580  
  32.581 @@ -512,27 +509,27 @@
  32.582  by (resolve_tac [Ord_a RS Ord_in_Ord RS Ord_linear_lt] 1
  32.583          THEN (assume_tac 1));
  32.584  by (eres_inst_tac [("j","x")] (Ord_a RS Ord_in_Ord) 1);
  32.585 -by (REPEAT (fast_tac (AC_cs addDs [not_eq, not_eq RS not_sym]) 1));
  32.586 +by (REPEAT (fast_tac (!claset addDs [not_eq, not_eq RS not_sym]) 1));
  32.587  val fun_Ord_inj = result();
  32.588  
  32.589  goal thy "!!a. [| f:X->Y; A<=X; a:A |] ==> f`a : f``A";
  32.590 -by (fast_tac (AC_cs addSEs [image_fun RS ssubst]) 1);
  32.591 +by (fast_tac (!claset addSEs [image_fun RS ssubst]) 1);
  32.592  val value_in_image = result();
  32.593  
  32.594  goalw thy [DC_def, WO3_def]
  32.595          "!!Z. ALL K. Card(K) --> DC(K) ==> WO3";
  32.596  by (rtac allI 1);
  32.597  by (excluded_middle_tac "A lesspoll Hartog(A)" 1);
  32.598 -by (fast_tac (AC_cs addSDs [lesspoll_imp_ex_lt_eqpoll]
  32.599 +by (fast_tac (!claset addSDs [lesspoll_imp_ex_lt_eqpoll]
  32.600          addSIs [Ord_Hartog, leI RS le_imp_subset]) 2);
  32.601  by (REPEAT (eresolve_tac [allE, impE] 1));
  32.602  by (rtac Card_Hartog 1);
  32.603  by (eres_inst_tac [("x","A")] allE 1);
  32.604 -by (eres_inst_tac [("x","{z:Pow(A)*A . fst(z)  \
  32.605 -\               lesspoll Hartog(A) & snd(z) ~: fst(z)}")] allE 1);
  32.606 -by (asm_full_simp_tac AC_ss 1);
  32.607 +by (eres_inst_tac [("x","{<z1,z2>:Pow(A)*A . z1  \
  32.608 +\               lesspoll Hartog(A) & z2 ~: z1}")] allE 1);
  32.609 +by (Asm_full_simp_tac 1);
  32.610  by (etac impE 1);
  32.611 -by (fast_tac (AC_cs addEs [lemma1 RS not_emptyE]) 1);
  32.612 +by (fast_tac (!claset addEs [lemma1 RS not_emptyE]) 1);
  32.613  by (etac bexE 1);
  32.614  by (resolve_tac [exI RS (lepoll_def RS (def_imp_iff RS iffD2))
  32.615          RS (HartogI RS notE)] 1);
  32.616 @@ -540,7 +537,7 @@
  32.617  by (dresolve_tac [Ord_Hartog RSN (2, OrdmemD) RSN (2,
  32.618          ltD RSN (3, value_in_image))] 1 
  32.619          THEN REPEAT (assume_tac 1));
  32.620 -by (fast_tac (AC_cs addSDs [Ord_Hartog RSN (2, ltI) RSN (2, ospec)]
  32.621 +by (fast_tac (!claset addSDs [Ord_Hartog RSN (2, ltI) RSN (2, ospec)]
  32.622          addEs [subst]) 1);
  32.623  qed "DC_WO3";
  32.624  
  32.625 @@ -551,21 +548,21 @@
  32.626  goal thy
  32.627          "!!a. [| Ord(a); b:a |] ==> (lam x:a. P(x))``b = (lam x:b. P(x))``b";
  32.628  by (rtac images_eq 1);
  32.629 -by (REPEAT (fast_tac (AC_cs addSEs [RepFunI, OrdmemD]
  32.630 +by (REPEAT (fast_tac (!claset addSEs [RepFunI, OrdmemD]
  32.631          addSIs [lam_type]) 2));
  32.632  by (rtac ballI 1);
  32.633  by (dresolve_tac [OrdmemD RS subsetD] 1
  32.634          THEN REPEAT (assume_tac 1));
  32.635 -by (asm_full_simp_tac AC_ss 1);
  32.636 +by (Asm_full_simp_tac 1);
  32.637  val lam_images_eq = result();
  32.638  
  32.639  goalw thy [lesspoll_def] "!!K. [| Card(K); b:K |] ==> b lesspoll K";
  32.640 -by (asm_full_simp_tac (AC_ss addsimps [Card_iff_initial]) 1);
  32.641 -by (fast_tac (AC_cs addSIs [le_imp_lepoll, ltI, leI]) 1);
  32.642 +by (asm_full_simp_tac (!simpset addsimps [Card_iff_initial]) 1);
  32.643 +by (fast_tac (!claset addSIs [le_imp_lepoll, ltI, leI]) 1);
  32.644  val in_Card_imp_lesspoll = result();
  32.645  
  32.646  goal thy "(lam b:a. P(b)) : a -> {P(b). b:a}";
  32.647 -by (fast_tac (AC_cs addSIs [lam_type, RepFunI]) 1);
  32.648 +by (fast_tac (!claset addSIs [lam_type, RepFunI]) 1);
  32.649  val lam_type_RepFun = result();
  32.650  
  32.651  goal thy "!!Z. [| ALL Y:Pow(X). Y lesspoll a --> (EX x:X. <Y, x> : R);  \
  32.652 @@ -584,13 +581,13 @@
  32.653  by (rtac impI 1);
  32.654  by (resolve_tac [ff_def RS def_transrec RS ssubst] 1);
  32.655  by (etac the_first_in 1);
  32.656 -by (fast_tac AC_cs 1);
  32.657 -by (asm_full_simp_tac (AC_ss
  32.658 +by (Fast_tac 1);
  32.659 +by (asm_full_simp_tac (!simpset
  32.660          addsimps [[lam_type_RepFun, subset_refl] MRS image_fun]) 1);
  32.661  by (etac lemma_ 1 THEN (assume_tac 1));
  32.662 -by (fast_tac (AC_cs addSEs [RepFunE, impE, notE]
  32.663 +by (fast_tac (!claset addSEs [RepFunE, impE, notE]
  32.664                  addEs [Card_is_Ord RSN (2, OrdmemD) RS subsetD]) 1);
  32.665 -by (fast_tac (AC_cs addSEs [[in_Card_imp_lesspoll, RepFun_lepoll]
  32.666 +by (fast_tac (!claset addSEs [[in_Card_imp_lesspoll, RepFun_lepoll]
  32.667                  MRS lepoll_lesspoll_lesspoll]) 1);
  32.668  val lemma = result();
  32.669  
  32.670 @@ -601,8 +598,8 @@
  32.671  by (res_inst_tac [("x","lam b:K. ff(b, X, Ra, R)")] bexI 1);
  32.672  by (rtac lam_type 2);
  32.673  by (resolve_tac [lemma RS CollectD1] 2 THEN REPEAT (assume_tac 2));
  32.674 -by (asm_full_simp_tac (AC_ss
  32.675 +by (asm_full_simp_tac (!simpset
  32.676          addsimps [[Card_is_Ord, ltD] MRS lam_images_eq]) 1);
  32.677 -by (fast_tac (AC_cs addSEs [ltE, lemma RS CollectD2]) 1);
  32.678 +by (fast_tac (!claset addSEs [ltE, lemma RS CollectD2]) 1);
  32.679  qed" WO1_DC_Card";
  32.680  
    33.1 --- a/src/ZF/AC/DC.thy	Fri Jan 03 10:48:28 1997 +0100
    33.2 +++ b/src/ZF/AC/DC.thy	Fri Jan 03 15:01:55 1997 +0100
    33.3 @@ -5,7 +5,7 @@
    33.4  Theory file for the proofs concernind the Axiom of Dependent Choice
    33.5  *)
    33.6  
    33.7 -DC  =  AC_Equiv + Hartog + first + Cardinal_aux + "DC_lemmas" + 
    33.8 +DC  =  AC_Equiv + Hartog + Cardinal_aux + "DC_lemmas" + 
    33.9  
   33.10  consts
   33.11  
    34.1 --- a/src/ZF/AC/DC_lemmas.ML	Fri Jan 03 10:48:28 1997 +0100
    34.2 +++ b/src/ZF/AC/DC_lemmas.ML	Fri Jan 03 15:01:55 1997 +0100
    34.3 @@ -10,7 +10,7 @@
    34.4          "Ord(a) ==> {P(b). b:a} lepoll a";
    34.5  by (res_inst_tac [("x","lam z:RepFun(a,P). LEAST i. z=P(i)")] exI 1);
    34.6  by (res_inst_tac [("d","%z. P(z)")] (sym RSN (2, lam_injective)) 1);
    34.7 -by (fast_tac (AC_cs addSEs [RepFunE] addSIs [Least_in_Ord, prem]) 1);
    34.8 +by (fast_tac (!claset addSEs [RepFunE] addSIs [Least_in_Ord, prem]) 1);
    34.9  by (REPEAT (eresolve_tac [RepFunE, LeastI, prem RS Ord_in_Ord] 1));
   34.10  val RepFun_lepoll = result();
   34.11  
   34.12 @@ -29,73 +29,49 @@
   34.13          "!!f. [| f:X->Y; Ord(X) |] ==> f``X lepoll X";
   34.14  by (res_inst_tac [("x","lam x:f``X. LEAST y. f`y = x")] exI 1);
   34.15  by (res_inst_tac [("d","%z. f`z")] lam_injective 1);
   34.16 -by (fast_tac (AC_cs addSIs [Least_in_Ord, apply_equality]) 1);
   34.17 -by (fast_tac (AC_cs addSEs [Ord_in_Ord] addSIs [LeastI, apply_equality]) 1);
   34.18 +by (fast_tac (!claset addSIs [Least_in_Ord, apply_equality]) 1);
   34.19 +by (fast_tac (!claset addSEs [Ord_in_Ord] addSIs [LeastI, apply_equality]) 1);
   34.20  val image_Ord_lepoll = result();
   34.21  
   34.22 -val apply_singleton_eq = [singletonI, singleton_fun] MRS apply_equality;
   34.23 -
   34.24 -goal thy "restrict(f, 0) = 0";
   34.25 -by (resolve_tac [singleton_iff RS iffD1] 1);
   34.26 -by (resolve_tac [Pi_empty1 RS subst] 1);
   34.27 -by (fast_tac (AC_cs addSIs [restrict_type]) 1);
   34.28 -val restrict_0 = result();
   34.29 -
   34.30  val [major, minor] = goal thy
   34.31          "[| (!!g. g:X ==> EX u. <g,u>:R); R<=X*X  \
   34.32  \       |] ==> range(R) <= domain(R)";
   34.33  by (rtac subsetI 1);
   34.34  by (etac rangeE 1);
   34.35  by (dresolve_tac [minor RS subsetD RS SigmaD2 RS major] 1);
   34.36 -by (fast_tac AC_cs 1);
   34.37 +by (Fast_tac 1);
   34.38  val range_subset_domain = result();
   34.39  
   34.40  val prems = goal thy "!!k. k:n ==> k~=n";
   34.41 -by (fast_tac (AC_cs addSEs [mem_irrefl]) 1);
   34.42 +by (fast_tac (!claset addSEs [mem_irrefl]) 1);
   34.43  val mem_not_eq = result();
   34.44  
   34.45 -goal thy "!!a. [| a:B; A<=B |] ==> cons(a, A) <= B";
   34.46 -by (fast_tac AC_cs 1);
   34.47 -val cons_subset = result();
   34.48 -
   34.49 -goal thy "!!g. g:n->X ==> cons(<n,x>, g) : succ(n) -> cons(x, X)";
   34.50 -by (resolve_tac [Pi_iff_old RS iffD2] 1);
   34.51 -by (rtac conjI 1);
   34.52 -by (fast_tac (AC_cs addSIs [cons_subset, succI1]
   34.53 -        addEs [fun_is_rel RS subset_trans RS subsetD, succI2]) 1);
   34.54 -by (rtac ballI 1);
   34.55 -by (etac succE 1);
   34.56 -by (fast_tac (AC_cs addDs [domain_of_fun, domainI] addSEs [mem_irrefl]) 1);
   34.57 -by (fast_tac (AC_cs addDs [fun_unique_Pair] addSEs [mem_irrefl]) 1);
   34.58 +goalw thy [succ_def] "!!g. g:n->X ==> cons(<n,x>, g) : succ(n) -> cons(x, X)";
   34.59 +by (fast_tac (!claset addSIs [fun_extend] addSEs [mem_irrefl]) 1);
   34.60  val cons_fun_type = result();
   34.61  
   34.62 -goal thy "!!x. x:X ==> cons(x, X) = X";
   34.63 -by (fast_tac (AC_cs addSIs [equalityI]) 1);
   34.64 -val cons_eq_self = result();
   34.65 -
   34.66 -val [g_type, x_in] = goal thy "[| g:n->X; x:X |] ==> cons(<n,x>, g) : succ(n) -> X";
   34.67 -by (resolve_tac [x_in RS cons_eq_self RS subst] 1);
   34.68 -by (resolve_tac [g_type RS cons_fun_type] 1);
   34.69 +goal thy "!!g. [| g:n->X; x:X |] ==> cons(<n,x>, g) : succ(n) -> X";
   34.70 +by (etac (cons_absorb RS subst) 1 THEN etac cons_fun_type 1);
   34.71  val cons_fun_type2 = result();
   34.72  
   34.73  goal thy "!!n. n: nat ==> cons(<n,x>, g)``n = g``n";
   34.74 -by (fast_tac (AC_cs addSIs [equalityI] addSEs [mem_irrefl]) 1);
   34.75 +by (fast_tac (!claset addSIs [equalityI] addSEs [mem_irrefl]) 1);
   34.76  val cons_image_n = result();
   34.77  
   34.78  goal thy "!!n. g:n->X ==> cons(<n,x>, g)`n = x";
   34.79 -by (fast_tac (AC_cs addSIs [apply_equality] addSEs [cons_fun_type]) 1);
   34.80 +by (fast_tac (!claset addSIs [apply_equality] addSEs [cons_fun_type]) 1);
   34.81  val cons_val_n = result();
   34.82  
   34.83  goal thy "!!k. k : n ==> cons(<n,x>, g)``k = g``k";
   34.84 -by (fast_tac (AC_cs addSIs [equalityI] addEs [mem_asym]) 1);
   34.85 +by (fast_tac (!claset addSIs [equalityI] addEs [mem_asym]) 1);
   34.86  val cons_image_k = result();
   34.87  
   34.88  goal thy "!!k. [| k:n; g:n->X |] ==> cons(<n,x>, g)`k = g`k";
   34.89 -by (fast_tac (AC_cs addSIs [apply_equality, consI2] addSEs [cons_fun_type, apply_Pair]) 1);
   34.90 +by (fast_tac (!claset addSIs [apply_equality, consI2] addSEs [cons_fun_type, apply_Pair]) 1);
   34.91  val cons_val_k = result();
   34.92  
   34.93  goal thy "!!f. domain(f)=x ==> domain(cons(<x,y>, f)) = succ(x)";
   34.94 -by (asm_full_simp_tac (AC_ss addsimps [domain_cons, succ_def]) 1);
   34.95 +by (asm_full_simp_tac (!simpset addsimps [domain_cons, succ_def]) 1);
   34.96  val domain_cons_eq_succ = result();
   34.97  
   34.98  goalw thy [restrict_def] "!!g. g:n->X ==> restrict(cons(<n,x>, g), n)=g";
   34.99 @@ -104,12 +80,12 @@
  34.100  by (eresolve_tac [cons_fun_type RS apply_type] 1);
  34.101  by (etac succI2 1);
  34.102  by (assume_tac 1);
  34.103 -by (asm_full_simp_tac (AC_ss addsimps [cons_val_k]) 1);
  34.104 +by (asm_full_simp_tac (!simpset addsimps [cons_val_k]) 1);
  34.105  val restrict_cons_eq = result();
  34.106  
  34.107  goal thy "!!k. [| Ord(k); i:k |] ==> succ(i) : succ(k)";
  34.108  by (resolve_tac [Ord_linear RS disjE] 1 THEN (assume_tac 3));
  34.109 -by (REPEAT (fast_tac (AC_cs addSIs [Ord_succ]
  34.110 +by (REPEAT (fast_tac (!claset addSIs [Ord_succ]
  34.111          addEs [Ord_in_Ord, mem_irrefl, mem_asym]
  34.112          addSDs [succ_inject]) 1));
  34.113  val succ_in_succ = result();
  34.114 @@ -117,26 +93,15 @@
  34.115  goalw thy [restrict_def]
  34.116          "!!f. [| restrict(f, domain(g)) = g; x: domain(g) |] ==> f`x = g`x";
  34.117  by (etac subst 1);
  34.118 -by (asm_full_simp_tac AC_ss 1);
  34.119 +by (Asm_full_simp_tac 1);
  34.120  val restrict_eq_imp_val_eq = result();
  34.121  
  34.122 -goal thy "!!a. succ(a) = succ(b) ==> a = b";
  34.123 -by (etac equalityE 1);
  34.124 -by (rtac equalityI 1);
  34.125 -by (fast_tac (AC_cs addSEs [mem_irrefl] addEs [mem_asym]) 1);
  34.126 -by (fast_tac (AC_cs addSEs [mem_irrefl] addEs [mem_asym]) 1);
  34.127 -val succ_eqD = result();
  34.128 -
  34.129 -goal thy "!!n. n:nat ==> 0:succ(n)";
  34.130 -by (fast_tac (AC_cs addSDs [[Ord_0, nat_into_Ord] MRS Ord_linear]) 1);
  34.131 -val nat_0_in_succ = result();
  34.132 -
  34.133  goal thy "!!f. [| domain(f)=A; f:B->C |] ==> f:A->C";
  34.134  by (forward_tac [domain_of_fun] 1);
  34.135 -by (fast_tac AC_cs 1);
  34.136 +by (Fast_tac 1);
  34.137  val domain_eq_imp_fun_type = result();
  34.138  
  34.139  goal thy "!!R. [| R <= A * B; R ~= 0 |] ==> EX x. x:domain(R)";
  34.140 -by (fast_tac (AC_cs addSEs [not_emptyE]) 1);
  34.141 +by (fast_tac (!claset addSEs [not_emptyE]) 1);
  34.142  val ex_in_domain = result();
  34.143  
    35.1 --- a/src/ZF/AC/DC_lemmas.thy	Fri Jan 03 10:48:28 1997 +0100
    35.2 +++ b/src/ZF/AC/DC_lemmas.thy	Fri Jan 03 15:01:55 1997 +0100
    35.3 @@ -1,4 +1,4 @@
    35.4  (*Dummy theory to document dependencies *)
    35.5  
    35.6 -DC_lemmas = AC_Equiv + first
    35.7 +DC_lemmas = AC_Equiv
    35.8  
    36.1 --- a/src/ZF/AC/HH.ML	Fri Jan 03 10:48:28 1997 +0100
    36.2 +++ b/src/ZF/AC/HH.ML	Fri Jan 03 15:01:55 1997 +0100
    36.3 @@ -18,30 +18,30 @@
    36.4  \       (let z = x - (UN b:a. HH(f,x,b))  \
    36.5  \       in  if(f`z:Pow(z)-{0}, f`z, {x}))";
    36.6  by (resolve_tac [HH_def RS def_transrec RS trans] 1);
    36.7 -by (simp_tac ZF_ss 1);
    36.8 +by (Simp_tac 1);
    36.9  val HH_def_satisfies_eq = result();
   36.10  
   36.11  goal thy "HH(f,x,a) : Pow(x)-{0} | HH(f,x,a)={x}";
   36.12  by (resolve_tac [HH_def_satisfies_eq RS ssubst] 1);
   36.13 -by (simp_tac (ZF_ss addsimps [Let_def, Diff_subset RS PowI] 
   36.14 +by (simp_tac (!simpset addsimps [Let_def, Diff_subset RS PowI] 
   36.15                      setloop split_tac [expand_if]) 1);
   36.16 -by (fast_tac ZF_cs 1);
   36.17 +by (Fast_tac 1);
   36.18  val HH_values = result();
   36.19  
   36.20  goal thy "!!A. B<=A ==> X-(UN a:A. P(a)) = X-(UN a:A-B. P(a))-(UN b:B. P(b))";
   36.21 -by (fast_tac (AC_cs addSIs [equalityI]) 1);
   36.22 +by (fast_tac (!claset addSIs [equalityI]) 1);
   36.23  val subset_imp_Diff_eq = result();
   36.24  
   36.25  goal thy "!!c. [| c:a-b; b<a |] ==> c=b | b<c & c<a";
   36.26  by (etac ltE 1);
   36.27  by (dres_inst_tac [("x","c")] Ord_linear 1);
   36.28 -by (fast_tac (AC_cs addEs [Ord_in_Ord]) 1);
   36.29 -by (fast_tac (AC_cs addSIs [ltI] addIs [Ord_in_Ord]) 1);
   36.30 +by (fast_tac (!claset addEs [Ord_in_Ord]) 1);
   36.31 +by (fast_tac (!claset addSIs [ltI] addIs [Ord_in_Ord]) 1);
   36.32  val Ord_DiffE = result();
   36.33  
   36.34  val prems = goal thy "(!!y. y:A ==> P(y) = {x}) ==> x - (UN y:A. P(y)) = x";
   36.35 -by (asm_full_simp_tac (AC_ss addsimps prems) 1);
   36.36 -by (fast_tac (AC_cs addSIs [equalityI] addSDs [prem]
   36.37 +by (asm_full_simp_tac (!simpset addsimps prems) 1);
   36.38 +by (fast_tac (!claset addSIs [equalityI] addSDs [prem]
   36.39                  addSEs [RepFunE, mem_irrefl]) 1);
   36.40  val Diff_UN_eq_self = result();
   36.41  
   36.42 @@ -62,23 +62,23 @@
   36.43  by (res_inst_tac [("t","%z. z-?X")] subst_context 1);
   36.44  by (rtac Diff_UN_eq_self 1);
   36.45  by (dtac Ord_DiffE 1 THEN (assume_tac 1));
   36.46 -by (fast_tac (AC_cs addEs [ltE]) 1);
   36.47 +by (fast_tac (!claset addEs [ltE]) 1);
   36.48  val HH_is_x_gt_too = result();
   36.49  
   36.50  goal thy "!!a. [| HH(f,x,a) : Pow(x)-{0}; b<a |] ==> HH(f,x,b) : Pow(x)-{0}";
   36.51  by (resolve_tac [HH_values RS disjE] 1 THEN (assume_tac 1));
   36.52  by (dtac HH_is_x_gt_too 1 THEN (assume_tac 1));
   36.53  by (dtac subst 1 THEN (assume_tac 1));
   36.54 -by (fast_tac (AC_cs addSEs [mem_irrefl]) 1);
   36.55 +by (fast_tac (!claset addSEs [mem_irrefl]) 1);
   36.56  val HH_subset_x_lt_too = result();
   36.57  
   36.58  goal thy "!!a. HH(f,x,a) : Pow(x)-{0}   \
   36.59  \               ==> HH(f,x,a) : Pow(x - (UN b:a. HH(f,x,b)))-{0}";
   36.60  by (dresolve_tac [HH_def_satisfies_eq RS subst] 1);
   36.61  by (resolve_tac [HH_def_satisfies_eq RS ssubst] 1);
   36.62 -by (asm_full_simp_tac (AC_ss addsimps [Let_def, Diff_subset RS PowI]) 1);
   36.63 +by (asm_full_simp_tac (!simpset addsimps [Let_def, Diff_subset RS PowI]) 1);
   36.64  by (dresolve_tac [expand_if RS iffD1] 1);
   36.65 -by (simp_tac (ZF_ss setloop split_tac [expand_if] ) 1);
   36.66 +by (simp_tac (!simpset setloop split_tac [expand_if] ) 1);
   36.67  by (fast_tac (subset_cs addSEs [mem_irrefl]) 1);
   36.68  val HH_subset_x_imp_subset_Diff_UN = result();
   36.69  
   36.70 @@ -86,7 +86,7 @@
   36.71  by (forw_inst_tac [("P","%y. y: Pow(x)-{0}")] subst 1 THEN (assume_tac 1));
   36.72  by (dres_inst_tac [("a","w")] HH_subset_x_imp_subset_Diff_UN 1);
   36.73  by (dtac subst_elem 1 THEN (assume_tac 1));
   36.74 -by (fast_tac (AC_cs addSIs [singleton_iff RS iffD2, equals0I]) 1);
   36.75 +by (fast_tac (!claset addSIs [singleton_iff RS iffD2, equals0I]) 1);
   36.76  val HH_eq_arg_lt = result();
   36.77  
   36.78  goal thy "!!x. [| HH(f,x,v)=HH(f,x,w); HH(f,x,w): Pow(x)-{0};  \
   36.79 @@ -101,7 +101,7 @@
   36.80  goalw thy [lepoll_def, inj_def]
   36.81          "!!i. [| HH(f, x, i) : Pow(x)-{0}; Ord(i) |] ==> i lepoll Pow(x)-{0}";
   36.82  by (res_inst_tac [("x","lam j:i. HH(f, x, j)")] exI 1);
   36.83 -by (asm_simp_tac AC_ss 1);
   36.84 +by (Asm_simp_tac 1);
   36.85  by (fast_tac (FOL_cs addSEs [HH_eq_imp_arg_eq, Ord_in_Ord, HH_subset_x_lt_too]
   36.86                  addSIs [lam_type, ballI, ltI] addIs [bexI]) 1);
   36.87  val HH_subset_x_imp_lepoll = result();
   36.88 @@ -113,7 +113,7 @@
   36.89  val HH_Hartog_is_x = result();
   36.90  
   36.91  goal thy "HH(f, x, LEAST i. HH(f, x, i) = {x}) = {x}";
   36.92 -by (fast_tac (AC_cs addSIs [Ord_Hartog, HH_Hartog_is_x, LeastI]) 1);
   36.93 +by (fast_tac (!claset addSIs [Ord_Hartog, HH_Hartog_is_x, LeastI]) 1);
   36.94  val HH_Least_eq_x = result();
   36.95  
   36.96  goal thy "!!a. a:(LEAST i. HH(f,x,i)={x}) ==> HH(f,x,a) : Pow(x)-{0}";
   36.97 @@ -130,8 +130,8 @@
   36.98  goalw thy [inj_def]
   36.99          "(lam a:(LEAST i. HH(f,x,i)={x}). HH(f,x,a)) :  \
  36.100  \               inj(LEAST i. HH(f,x,i)={x}, Pow(x)-{0})";
  36.101 -by (asm_full_simp_tac AC_ss 1);
  36.102 -by (fast_tac (AC_cs  addSIs [lam_type] addDs [less_Least_subset_x]
  36.103 +by (Asm_full_simp_tac 1);
  36.104 +by (fast_tac (!claset  addSIs [lam_type] addDs [less_Least_subset_x]
  36.105                  addSEs [HH_eq_imp_arg_eq, Ord_Least RS Ord_in_Ord]) 1);
  36.106  val lam_Least_HH_inj_Pow = result();
  36.107  
  36.108 @@ -139,65 +139,52 @@
  36.109  \               ==> (lam a:(LEAST i. HH(f,x,i)={x}). HH(f,x,a))  \
  36.110  \                       : inj(LEAST i. HH(f,x,i)={x}, {{y}. y:x})";
  36.111  by (resolve_tac [lam_Least_HH_inj_Pow RS inj_strengthen_type] 1);
  36.112 -by (asm_full_simp_tac AC_ss 1);
  36.113 -by (fast_tac (AC_cs addSEs [RepFun_eqI]) 1);
  36.114 +by (Asm_full_simp_tac 1);
  36.115  val lam_Least_HH_inj = result();
  36.116  
  36.117 -goal thy "!!A. [| A={a}; b:A |] ==> b=a";
  36.118 -by (fast_tac AC_cs 1);
  36.119 -val elem_of_sing_eq = result();
  36.120 -
  36.121  goalw thy [surj_def]
  36.122          "!!x. [| x - (UN a:A. F(a)) = 0;  \
  36.123  \               ALL a:A. EX z:x. F(a) = {z} |]  \
  36.124  \               ==> (lam a:A. F(a)) : surj(A, {{y}. y:x})";
  36.125 -by (asm_full_simp_tac (AC_ss addsimps [Diff_eq_0_iff]) 1);
  36.126 -by (rtac conjI 1);
  36.127 -by (fast_tac (AC_cs addSIs [lam_type] addSEs [RepFun_eqI]) 1);
  36.128 -by (rtac ballI 1);
  36.129 -by (etac RepFunE 1);
  36.130 -by (dtac subsetD 1 THEN (assume_tac 1));
  36.131 -by (etac UN_E 1);
  36.132 -by (dtac bspec 1 THEN (assume_tac 1));
  36.133 -by (etac bexE 1);
  36.134 -by (rtac bexI 1 THEN (assume_tac 2));
  36.135 -by (forward_tac [elem_of_sing_eq] 1 THEN (assume_tac 1));
  36.136 -by (fast_tac AC_cs 1);
  36.137 +by (asm_full_simp_tac (!simpset addsimps [lam_type, Diff_eq_0_iff]) 1);
  36.138 +by (Step_tac 1);
  36.139 +by (set_mp_tac 1);
  36.140 +by (deepen_tac (eq_cs addSIs [bexI] addSEs [equalityE]) 4 1);
  36.141  val lam_surj_sing = result();
  36.142  
  36.143  goal thy "!!x. y:Pow(x)-{0} ==> x ~= 0";
  36.144 -by (fast_tac (AC_cs addSIs [equals0I, singletonI RS subst_elem]
  36.145 +by (fast_tac (!claset addSIs [equals0I, singletonI RS subst_elem]
  36.146                  addSDs [equals0D]) 1);
  36.147  val not_emptyI2 = result();
  36.148  
  36.149  goal thy "!!f. f`(x - (UN j:i. HH(f,x,j))): Pow(x - (UN j:i. HH(f,x,j)))-{0}  \
  36.150  \       ==> HH(f, x, i) : Pow(x) - {0}";
  36.151  by (resolve_tac [HH_def_satisfies_eq RS ssubst] 1);
  36.152 -by (asm_full_simp_tac (AC_ss addsimps [Let_def, Diff_subset RS PowI,
  36.153 +by (asm_full_simp_tac (!simpset addsimps [Let_def, Diff_subset RS PowI,
  36.154                  not_emptyI2 RS if_P]) 1);
  36.155 -by (fast_tac AC_cs 1);
  36.156 +by (Fast_tac 1);
  36.157  val f_subset_imp_HH_subset = result();
  36.158  
  36.159  val [prem] = goal thy "(!!z. z:Pow(x)-{0} ==> f`z : Pow(z)-{0}) ==>  \
  36.160  \       x - (UN j: (LEAST i. HH(f,x,i)={x}). HH(f,x,j)) = 0";
  36.161  by (excluded_middle_tac "?P : {0}" 1);
  36.162 -by (fast_tac AC_cs 2);
  36.163 +by (Fast_tac 2);
  36.164  by (dresolve_tac [Diff_subset RS PowI RS DiffI RS prem RS
  36.165                  f_subset_imp_HH_subset] 1);
  36.166 -by (fast_tac (AC_cs addSDs [HH_Least_eq_x RS sym RSN (2, subst_elem)]
  36.167 +by (fast_tac (!claset addSDs [HH_Least_eq_x RS sym RSN (2, subst_elem)]
  36.168                  addSEs [mem_irrefl]) 1);
  36.169  val f_subsets_imp_UN_HH_eq_x = result();
  36.170  
  36.171  goal thy "HH(f,x,i)=f`(x - (UN j:i. HH(f,x,j))) | HH(f,x,i)={x}";
  36.172  by (resolve_tac [HH_def_satisfies_eq RS ssubst] 1);
  36.173 -by (simp_tac (ZF_ss addsimps [Let_def, Diff_subset RS PowI]
  36.174 +by (simp_tac (!simpset addsimps [Let_def, Diff_subset RS PowI]
  36.175                setloop split_tac [expand_if]) 1);
  36.176  val HH_values2 = result();
  36.177  
  36.178  goal thy
  36.179       "!!f. HH(f,x,i): Pow(x)-{0} ==> HH(f,x,i)=f`(x - (UN j:i. HH(f,x,j)))";
  36.180  by (resolve_tac [HH_values2 RS disjE] 1 THEN (assume_tac 1));
  36.181 -by (fast_tac (AC_cs addSEs [equalityE, mem_irrefl]
  36.182 +by (fast_tac (!claset addSEs [equalityE, mem_irrefl]
  36.183          addSDs [singleton_subsetD]) 1);
  36.184  val HH_subset_imp_eq = result();
  36.185  
  36.186 @@ -207,8 +194,8 @@
  36.187  by (forward_tac [HH_subset_imp_eq] 1);
  36.188  by (dtac apply_type 1);
  36.189  by (resolve_tac [Diff_subset RS PowI RS DiffI] 1);
  36.190 -by (fast_tac (AC_cs addSDs [HH_subset_x_imp_subset_Diff_UN RS not_emptyI2]) 1);
  36.191 -by (fast_tac (AC_cs addSEs [RepFunE] addEs [ssubst]) 1);
  36.192 +by (fast_tac (!claset addSDs [HH_subset_x_imp_subset_Diff_UN RS not_emptyI2]) 1);
  36.193 +by (fast_tac (!claset addSEs [RepFunE] addEs [ssubst]) 1);
  36.194  val f_sing_imp_HH_sing = result();
  36.195  
  36.196  goalw thy [bij_def] 
  36.197 @@ -216,7 +203,7 @@
  36.198  \       f : (PROD X:Pow(x)-{0}. {{z}. z:x}) |]  \
  36.199  \       ==> (lam a:(LEAST i. HH(f,x,i)={x}). HH(f,x,a))  \
  36.200  \                       : bij(LEAST i. HH(f,x,i)={x}, {{y}. y:x})";
  36.201 -by (fast_tac (AC_cs addSIs [lam_Least_HH_inj, lam_surj_sing,
  36.202 +by (fast_tac (!claset addSIs [lam_Least_HH_inj, lam_surj_sing,
  36.203                  f_sing_imp_HH_sing]) 1);
  36.204  val f_sing_lam_bij = result();
  36.205  
    37.1 --- a/src/ZF/AC/Hartog.ML	Fri Jan 03 10:48:28 1997 +0100
    37.2 +++ b/src/ZF/AC/Hartog.ML	Fri Jan 03 15:01:55 1997 +0100
    37.3 @@ -9,7 +9,7 @@
    37.4  
    37.5  goal thy "!!X. ALL a. Ord(a) --> a:X ==> P";
    37.6  by (res_inst_tac [("X1","{y:X. Ord(y)}")] (ON_class RS revcut_rl) 1);
    37.7 -by (fast_tac ZF_cs 1);
    37.8 +by (Fast_tac 1);
    37.9  qed "Ords_in_set";
   37.10  
   37.11  goalw thy [lepoll_def] "!!X. [| Ord(a); a lepoll X |] ==>  \
   37.12 @@ -31,10 +31,10 @@
   37.13  goal thy "!!X. [| Ord(a); a lepoll X |] ==>  \
   37.14  \               EX Y. Y<=X & (EX R. R<=X*X & ordertype(Y,R)=a)";
   37.15  by (dtac Ord_lepoll_imp_ex_well_ord 1 THEN (assume_tac 1));
   37.16 -by (step_tac ZF_cs 1);
   37.17 +by (Step_tac 1);
   37.18  by (REPEAT (ares_tac [exI, conjI] 1));
   37.19  by (etac ordertype_Int 2);
   37.20 -by (fast_tac ZF_cs 1);
   37.21 +by (Fast_tac 1);
   37.22  qed "Ord_lepoll_imp_eq_ordertype";
   37.23  
   37.24  goal thy "!!X. ALL a. Ord(a) --> a lepoll X ==>  \
   37.25 @@ -44,7 +44,7 @@
   37.26  by (REPEAT (eresolve_tac [allE, impE] 1));
   37.27  by (assume_tac 1);
   37.28  by (dtac Ord_lepoll_imp_eq_ordertype 1 THEN (assume_tac 1));
   37.29 -by (fast_tac (ZF_cs addSIs [ReplaceI] addEs [sym]) 1);
   37.30 +by (fast_tac (!claset addSIs [ReplaceI] addEs [sym]) 1);
   37.31  qed "Ords_lepoll_set_lemma";
   37.32  
   37.33  goal thy "!!X. ALL a. Ord(a) --> a lepoll X ==> P";
   37.34 @@ -53,15 +53,15 @@
   37.35  
   37.36  goal thy "EX a. Ord(a) & ~a lepoll X";
   37.37  by (rtac swap 1);
   37.38 -by (fast_tac ZF_cs 1);
   37.39 +by (Fast_tac 1);
   37.40  by (rtac Ords_lepoll_set 1);
   37.41 -by (fast_tac ZF_cs 1);
   37.42 +by (Fast_tac 1);
   37.43  qed "ex_Ord_not_lepoll";
   37.44  
   37.45  goalw thy [Hartog_def] "~ Hartog(A) lepoll A";
   37.46  by (resolve_tac [ex_Ord_not_lepoll RS exE] 1);
   37.47  by (rtac LeastI 1);
   37.48 -by (REPEAT (fast_tac ZF_cs 1));
   37.49 +by (REPEAT (Fast_tac 1));
   37.50  qed "HartogI";
   37.51  
   37.52  val HartogE = HartogI RS notE;
   37.53 @@ -71,14 +71,14 @@
   37.54  qed "Ord_Hartog";
   37.55  
   37.56  goalw thy [Hartog_def] "!!i. [| i < Hartog(A); ~ i lepoll A |] ==> P";
   37.57 -by (fast_tac (ZF_cs addEs [less_LeastE]) 1);
   37.58 +by (fast_tac (!claset addEs [less_LeastE]) 1);
   37.59  qed "less_HartogE1";
   37.60  
   37.61  goal thy "!!i. [| i < Hartog(A); i eqpoll Hartog(A) |] ==> P";
   37.62 -by (fast_tac (ZF_cs addEs [less_HartogE1, eqpoll_sym RS eqpoll_imp_lepoll
   37.63 +by (fast_tac (!claset addEs [less_HartogE1, eqpoll_sym RS eqpoll_imp_lepoll
   37.64                  RS lepoll_trans RS HartogE]) 1);
   37.65  qed "less_HartogE";
   37.66  
   37.67  goal thy "Card(Hartog(A))";
   37.68 -by (fast_tac (ZF_cs addSIs [CardI, Ord_Hartog] addEs [less_HartogE]) 1);
   37.69 +by (fast_tac (!claset addSIs [CardI, Ord_Hartog] addEs [less_HartogE]) 1);
   37.70  qed "Card_Hartog";
    38.1 --- a/src/ZF/AC/OrdQuant.ML	Fri Jan 03 10:48:28 1997 +0100
    38.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    38.3 @@ -1,104 +0,0 @@
    38.4 -(*  Title:      ZF/AC/OrdQuant.thy
    38.5 -    ID:         $Id$
    38.6 -    Authors:    Krzysztof Grabczewski and L C Paulson
    38.7 -
    38.8 -Quantifiers and union operator for ordinals. 
    38.9 -*)
   38.10 -
   38.11 -open OrdQuant;
   38.12 -
   38.13 -(*** universal quantifier for ordinals ***)
   38.14 -
   38.15 -qed_goalw "oallI" thy [oall_def]
   38.16 -    "[| !!x. x<A ==> P(x) |] ==> ALL x<A. P(x)"
   38.17 - (fn prems=> [ (REPEAT (ares_tac (prems @ [allI,impI]) 1)) ]);
   38.18 -
   38.19 -qed_goalw "ospec" thy [oall_def]
   38.20 -    "[| ALL x<A. P(x);  x<A |] ==> P(x)"
   38.21 - (fn major::prems=>
   38.22 -  [ (rtac (major RS spec RS mp) 1),
   38.23 -    (resolve_tac prems 1) ]);
   38.24 -
   38.25 -qed_goalw "oallE" thy [oall_def]
   38.26 -    "[| ALL x<A. P(x);  P(x) ==> Q;  ~x<A ==> Q |] ==> Q"
   38.27 - (fn major::prems=>
   38.28 -  [ (rtac (major RS allE) 1),
   38.29 -    (REPEAT (eresolve_tac (prems@[asm_rl,impCE]) 1)) ]);
   38.30 -
   38.31 -qed_goal "rev_oallE" thy
   38.32 -    "[| ALL x<A. P(x);  ~x<A ==> Q;  P(x) ==> Q |] ==> Q"
   38.33 - (fn major::prems=>
   38.34 -  [ (rtac (major RS oallE) 1),
   38.35 -    (REPEAT (eresolve_tac prems 1)) ]);
   38.36 -
   38.37 -(*Trival rewrite rule;   (ALL x<a.P)<->P holds only if a is not 0!*)
   38.38 -qed_goal "oall_simp" thy "(ALL x<a. True) <-> True"
   38.39 - (fn _=> [ (REPEAT (ares_tac [TrueI,oallI,iffI] 1)) ]);
   38.40 -
   38.41 -(*Congruence rule for rewriting*)
   38.42 -qed_goalw "oall_cong" thy [oall_def]
   38.43 -    "[| a=a';  !!x. x<a' ==> P(x) <-> P'(x) |] ==> oall(a,P) <-> oall(a',P')"
   38.44 - (fn prems=> [ (simp_tac (FOL_ss addsimps prems) 1) ]);
   38.45 -
   38.46 -
   38.47 -(*** existential quantifier for ordinals ***)
   38.48 -
   38.49 -qed_goalw "oexI" thy [oex_def]
   38.50 -    "[| P(x);  x<A |] ==> EX x<A. P(x)"
   38.51 - (fn prems=> [ (REPEAT (ares_tac (prems @ [exI,conjI]) 1)) ]);
   38.52 -
   38.53 -(*Not of the general form for such rules; ~EX has become ALL~ *)
   38.54 -qed_goal "oexCI" thy 
   38.55 -   "[| ALL x<A. ~P(x) ==> P(a);  a<A |] ==> EX x<A.P(x)"
   38.56 - (fn prems=>
   38.57 -  [ (rtac classical 1),
   38.58 -    (REPEAT (ares_tac (prems@[oexI,oallI,notI,notE]) 1)) ]);
   38.59 -
   38.60 -qed_goalw "oexE" thy [oex_def]
   38.61 -    "[| EX x<A. P(x);  !!x. [| x<A; P(x) |] ==> Q \
   38.62 -\    |] ==> Q"
   38.63 - (fn major::prems=>
   38.64 -  [ (rtac (major RS exE) 1),
   38.65 -    (REPEAT (eresolve_tac (prems @ [asm_rl,conjE]) 1)) ]);
   38.66 -
   38.67 -qed_goalw "oex_cong" thy [oex_def]
   38.68 -    "[| a=a';  !!x. x<a' ==> P(x) <-> P'(x) \
   38.69 -\    |] ==> oex(a,P) <-> oex(a',P')"
   38.70 - (fn prems=> [ (simp_tac (FOL_ss addsimps prems addcongs [conj_cong]) 1) ]);
   38.71 -
   38.72 -
   38.73 -(*** Rules for Ordinal-Indexed Unions ***)
   38.74 -
   38.75 -qed_goalw "OUN_I" thy [OUnion_def]
   38.76 -        "!!i. [| a<i;  b: B(a) |] ==> b: (UN z<i. B(z))"
   38.77 - (fn _=> [ fast_tac (ZF_cs addSEs [ltE]) 1 ]);
   38.78 -
   38.79 -qed_goalw "OUN_E" thy [OUnion_def]
   38.80 -    "[| b : (UN z<i. B(z));  !!a.[| b: B(a);  a<i |] ==> R |] ==> R"
   38.81 - (fn major::prems=>
   38.82 -  [ (rtac (major RS CollectE) 1),
   38.83 -    (rtac UN_E 1),
   38.84 -    (REPEAT (ares_tac (ltI::prems) 1)) ]);
   38.85 -
   38.86 -qed_goalw "OUN_iff" thy [oex_def]
   38.87 -    "b : (UN x<i. B(x)) <-> (EX x<i. b : B(x))"
   38.88 - (fn _=> [ (fast_tac (FOL_cs addIs [OUN_I] addSEs [OUN_E]) 1) ]);
   38.89 -
   38.90 -qed_goal "OUN_cong" thy
   38.91 -    "[| i=j;  !!x. x<j ==> C(x)=D(x) |] ==> (UN x<i.C(x)) = (UN x<j.D(x))"
   38.92 - (fn prems=>
   38.93 -      [ rtac equality_iffI 1,
   38.94 -        simp_tac (ZF_ss addcongs [oex_cong] addsimps (OUN_iff::prems)) 1 ]);
   38.95 -
   38.96 -val OrdQuant_cs = ZF_cs
   38.97 -                  addSIs [oallI]
   38.98 -                  addIs  [oexI, OUN_I]
   38.99 -                  addSEs [oexE, OUN_E]
  38.100 -                  addEs  [rev_oallE];
  38.101 -
  38.102 -val Ord_atomize = atomize (("oall", [ospec])::ZF_conn_pairs, 
  38.103 -                           ZF_mem_pairs);
  38.104 -
  38.105 -val OrdQuant_ss = ZF_ss setmksimps (map mk_meta_eq o Ord_atomize o gen_all)
  38.106 -                        addsimps [oall_simp, ltD RS beta]
  38.107 -                        addcongs [oall_cong, oex_cong, OUN_cong];
    39.1 --- a/src/ZF/AC/OrdQuant.thy	Fri Jan 03 10:48:28 1997 +0100
    39.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    39.3 @@ -1,38 +0,0 @@
    39.4 -(*  Title:      ZF/AC/OrdQuant.thy
    39.5 -    ID:         $Id$
    39.6 -    Authors:    Krzysztof Grabczewski and L C Paulson
    39.7 -
    39.8 -Quantifiers and union operator for ordinals. 
    39.9 -*)
   39.10 -
   39.11 -OrdQuant = Ordinal +
   39.12 -
   39.13 -consts
   39.14 -  
   39.15 -  (* Ordinal Quantifiers *)
   39.16 -  oall, oex   :: [i, i => o] => o
   39.17 -
   39.18 -  (* Ordinal Union *)
   39.19 -  OUnion      :: [i, i => i] => i
   39.20 -  
   39.21 -syntax
   39.22 -  
   39.23 -  "@oall"     :: [idt, i, o] => o        ("(3ALL _<_./ _)" 10)
   39.24 -  "@oex"      :: [idt, i, o] => o        ("(3EX _<_./ _)" 10)
   39.25 -  "@OUNION"   :: [idt, i, i] => i        ("(3UN _<_./ _)" 10)
   39.26 -
   39.27 -translations
   39.28 -  
   39.29 -  "ALL x<a. P"  == "oall(a, %x. P)"
   39.30 -  "EX x<a. P"   == "oex(a, %x. P)"
   39.31 -  "UN x<a. B"   == "OUnion(a, %x. B)"
   39.32 -
   39.33 -defs
   39.34 -  
   39.35 -  (* Ordinal Quantifiers *)
   39.36 -  oall_def      "oall(A, P) == ALL x. x<A --> P(x)"
   39.37 -  oex_def       "oex(A, P) == EX x. x<A & P(x)"
   39.38 -
   39.39 -  OUnion_def     "OUnion(i,B) == {z: UN x:i. B(x). Ord(i)}"
   39.40 -  
   39.41 -end
    40.1 --- a/src/ZF/AC/Transrec2.ML	Fri Jan 03 10:48:28 1997 +0100
    40.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    40.3 @@ -1,33 +0,0 @@
    40.4 -(*  Title:      ZF/AC/Transrec2.ML
    40.5 -    ID:         $Id$
    40.6 -    Author:     Krzysztof Grabczewski
    40.7 -
    40.8 -Transfinite recursion introduced to handle definitions based on the three
    40.9 -cases of ordinals.
   40.10 -*)
   40.11 -
   40.12 -open Transrec2;
   40.13 -
   40.14 -goal thy "transrec2(0,a,b) = a";
   40.15 -by (rtac (transrec2_def RS def_transrec RS trans) 1);
   40.16 -by (simp_tac ZF_ss 1);
   40.17 -val transrec2_0 = result();
   40.18 -
   40.19 -goal thy "(THE j. i=j) = i";
   40.20 -by (fast_tac (ZF_cs addSIs [the_equality]) 1);
   40.21 -val THE_eq = result();
   40.22 -
   40.23 -goal thy "transrec2(succ(i),a,b) = b(i, transrec2(i,a,b))";
   40.24 -by (rtac (transrec2_def RS def_transrec RS trans) 1);
   40.25 -by (simp_tac (ZF_ss addsimps [succ_not_0, THE_eq, if_P]
   40.26 -                    setsolver K (fast_tac FOL_cs)) 1);
   40.27 -val transrec2_succ = result();
   40.28 -
   40.29 -goal thy "!!i. Limit(i) ==> transrec2(i,a,b) = (UN j<i. transrec2(j,a,b))";
   40.30 -by (rtac (transrec2_def RS def_transrec RS trans) 1);
   40.31 -by (resolve_tac [if_not_P RS trans] 1 THEN
   40.32 -    fast_tac (OrdQuant_cs addSDs [Limit_has_0] addSEs [ltE]) 1);
   40.33 -by (resolve_tac [if_not_P RS trans] 1 THEN
   40.34 -    fast_tac (OrdQuant_cs addSEs [succ_LimitE]) 1);
   40.35 -by (simp_tac OrdQuant_ss 1);
   40.36 -val transrec2_Limit = result();
    41.1 --- a/src/ZF/AC/Transrec2.thy	Fri Jan 03 10:48:28 1997 +0100
    41.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    41.3 @@ -1,23 +0,0 @@
    41.4 -(*  Title:      ZF/AC/Transrec2.thy
    41.5 -    ID:         $Id$
    41.6 -    Author:     Krzysztof Grabczewski
    41.7 -
    41.8 -Transfinite recursion introduced to handle definitions based on the three
    41.9 -cases of ordinals.
   41.10 -*)
   41.11 -
   41.12 -Transrec2 = OrdQuant + Epsilon +
   41.13 -
   41.14 -consts
   41.15 -  
   41.16 -  transrec2               :: [i, i, [i,i]=>i] =>i
   41.17 -
   41.18 -defs
   41.19 -
   41.20 -  transrec2_def  "transrec2(alpha, a, b) ==                     
   41.21 -                         transrec(alpha, %i r. if(i=0,          
   41.22 -                                  a, if(EX j. i=succ(j),        
   41.23 -                                  b(THE j. i=succ(j), r`(THE j. i=succ(j))),   
   41.24 -                                  UN j<i. r`j)))"
   41.25 -
   41.26 -end
    42.1 --- a/src/ZF/AC/WO1_AC.ML	Fri Jan 03 10:48:28 1997 +0100
    42.2 +++ b/src/ZF/AC/WO1_AC.ML	Fri Jan 03 15:01:55 1997 +0100
    42.3 @@ -32,7 +32,7 @@
    42.4  (* ********************************************************************** *)
    42.5  
    42.6  goalw thy [AC1_def, WO1_def] "!!Z. WO1 ==> AC1";
    42.7 -by (fast_tac (AC_cs addSEs [ex_choice_fun]) 1);
    42.8 +by (fast_tac (!claset addSEs [ex_choice_fun]) 1);
    42.9  qed "WO1_AC1";
   42.10  
   42.11  (* ********************************************************************** *)
   42.12 @@ -44,19 +44,19 @@
   42.13  by (eres_inst_tac [("x","Union({{C:D(B). P(C,B)}. B:A})")] allE 1);
   42.14  by (etac exE 1);
   42.15  by (dtac ex_choice_fun 1);
   42.16 -by (fast_tac (AC_cs addEs [RepFunE, sym RS equals0D]) 1);
   42.17 +by (fast_tac (!claset addEs [RepFunE, sym RS equals0D]) 1);
   42.18  by (etac exE 1);
   42.19  by (res_inst_tac [("x","lam x:A. f`{C:D(x). P(C,x)}")] exI 1);
   42.20 -by (asm_full_simp_tac AC_ss 1);
   42.21 -by (fast_tac (AC_cs addSDs [RepFunI RSN (2, apply_type)]
   42.22 +by (Asm_full_simp_tac 1);
   42.23 +by (fast_tac (!claset addSDs [RepFunI RSN (2, apply_type)]
   42.24                  addSEs [CollectD2]) 1);
   42.25  val lemma1 = result();
   42.26  
   42.27  goalw thy [WO1_def] "!!A. [| ~Finite(B); WO1 |] ==> |B| + |B| eqpoll  B";
   42.28  by (rtac eqpoll_trans 1);
   42.29 -by (fast_tac (AC_cs addSEs [well_ord_cardinal_eqpoll]) 2);
   42.30 +by (fast_tac (!claset addSEs [well_ord_cardinal_eqpoll]) 2);
   42.31  by (resolve_tac [eqpoll_sym RS eqpoll_trans] 1);
   42.32 -by (fast_tac (AC_cs addSEs [well_ord_cardinal_eqpoll]) 1);
   42.33 +by (fast_tac (!claset addSEs [well_ord_cardinal_eqpoll]) 1);
   42.34  by (resolve_tac [cadd_def RS def_imp_eq RS subst] 1);
   42.35  by (resolve_tac [Card_cardinal RSN (2, Inf_Card_is_InfCard) RS 
   42.36                          InfCard_cdouble_eq RS ssubst] 1);
   42.37 @@ -65,23 +65,23 @@
   42.38  by (etac notE 1);
   42.39  by (resolve_tac [eqpoll_sym RS eqpoll_imp_lepoll RS lepoll_Finite] 1
   42.40          THEN (assume_tac 2));
   42.41 -by (fast_tac (AC_cs addSEs [well_ord_cardinal_eqpoll]) 1);
   42.42 +by (fast_tac (!claset addSEs [well_ord_cardinal_eqpoll]) 1);
   42.43  val lemma2_1 = result();
   42.44  
   42.45  goal thy "!!f. f : bij(D+D, B) ==> {{f`Inl(i), f`Inr(i)}. i:D} : Pow(Pow(B))";
   42.46 -by (fast_tac (AC_cs addSIs [InlI, InrI]
   42.47 +by (fast_tac (!claset addSIs [InlI, InrI]
   42.48                  addSEs [RepFunE, bij_is_fun RS apply_type]) 1);
   42.49  val lemma2_2 = result();
   42.50  
   42.51  goal thy "!!f. [| f:inj(A,B); f`a = f`b; a:A; b:A |] ==> a=b";
   42.52  by (rtac inj_equality 1);
   42.53 -by (TRYALL (fast_tac (AC_cs addSEs [inj_is_fun RS apply_Pair] addEs [subst])));
   42.54 +by (TRYALL (fast_tac (!claset addSEs [inj_is_fun RS apply_Pair] addEs [subst])));
   42.55  val lemma = result();
   42.56  
   42.57  goalw thy AC_aux_defs
   42.58          "!!f. f : bij(D+D, B) ==>  \
   42.59  \               pairwise_disjoint({{f`Inl(i), f`Inr(i)}. i:D})";
   42.60 -by (fast_tac (AC_cs addSEs [RepFunE, not_emptyE] 
   42.61 +by (fast_tac (!claset addSEs [RepFunE, not_emptyE] 
   42.62          addDs [bij_is_inj RS lemma, Inl_iff RS iffD1,
   42.63                  Inr_iff RS iffD1, Inl_Inr_iff RS iffD1 RS FalseE,
   42.64                  Inr_Inl_iff RS iffD1 RS FalseE]
   42.65 @@ -92,7 +92,7 @@
   42.66          "[| f : bij(D+D, B); 1 le n |] ==>  \
   42.67  \       sets_of_size_between({{f`Inl(i), f`Inr(i)}. i:D}, 2, succ(n))";
   42.68  by (rewtac succ_def);
   42.69 -by (fast_tac (AC_cs addSIs [cons_lepoll_cong, minor, lepoll_refl, InlI, InrI] 
   42.70 +by (fast_tac (!claset addSIs [cons_lepoll_cong, minor, lepoll_refl, InlI, InrI] 
   42.71          addIs [singleton_eqpoll_1 RS eqpoll_imp_lepoll RS lepoll_trans,
   42.72                  le_imp_subset RS subset_imp_lepoll]
   42.73          addDs [major RS bij_is_inj RS lemma, Inl_Inr_iff RS iffD1 RS FalseE]
   42.74 @@ -101,7 +101,7 @@
   42.75  
   42.76  goalw thy [bij_def, surj_def]
   42.77          "!!f. f : bij(D+D, B) ==> Union({{f`Inl(i), f`Inr(i)}. i:D})=B";
   42.78 -by (fast_tac (AC_cs addSEs [inj_is_fun RS apply_type, CollectE, sumE]
   42.79 +by (fast_tac (!claset addSEs [inj_is_fun RS apply_type, CollectE, sumE]
   42.80          addSIs [InlI, InrI, equalityI]) 1);
   42.81  val lemma2_5 = result();
   42.82  
   42.83 @@ -116,5 +116,5 @@
   42.84  val lemma2 = result();
   42.85  
   42.86  goalw thy AC_defs "!!n. [| WO1; 1 le n |] ==> AC10(n)";
   42.87 -by (fast_tac (AC_cs addSIs [lemma1] addSEs [lemma2]) 1);
   42.88 +by (fast_tac (!claset addSIs [lemma1] addSEs [lemma2]) 1);
   42.89  qed "WO1_AC10";
    43.1 --- a/src/ZF/AC/WO1_WO6.ML	Fri Jan 03 10:48:28 1997 +0100
    43.2 +++ b/src/ZF/AC/WO1_WO6.ML	Fri Jan 03 15:01:55 1997 +0100
    43.3 @@ -5,43 +5,43 @@
    43.4    Proofs needed to state that formulations WO1,...,WO6 are all equivalent.
    43.5    All but one WO6 ==> WO1 (placed in separate file WO6_WO1.ML)
    43.6  
    43.7 -  Every proofs (exept one) presented in this file are referred as clear
    43.8 +  Every proof (exept one) presented in this file are referred as "clear"
    43.9    by Rubin & Rubin (page 2). 
   43.10 -  They refer reader to a book by G"odel to see the proof WO1 ==> WO2.
   43.11 +  They refer reader to a book by Gödel to see the proof WO1 ==> WO2.
   43.12    Fortunately order types made this proof also very easy.
   43.13  *)
   43.14  
   43.15  (* ********************************************************************** *)
   43.16  
   43.17  goalw thy WO_defs "!!Z. WO2 ==> WO3";
   43.18 -by (fast_tac ZF_cs 1);
   43.19 +by (Fast_tac 1);
   43.20  qed "WO2_WO3";
   43.21  
   43.22  (* ********************************************************************** *)
   43.23  
   43.24  goalw thy (eqpoll_def::WO_defs) "!!Z. WO3 ==> WO1";
   43.25 -by (fast_tac (ZF_cs addSEs [bij_is_inj RS well_ord_rvimage, 
   43.26 -                        well_ord_Memrel RS well_ord_subset]) 1);
   43.27 +by (fast_tac (!claset addSEs [bij_is_inj RS well_ord_rvimage, 
   43.28 +			      well_ord_Memrel RS well_ord_subset]) 1);
   43.29  qed "WO3_WO1";
   43.30  
   43.31  (* ********************************************************************** *)
   43.32  
   43.33  goalw thy (eqpoll_def::WO_defs) "!!Z. WO1 ==> WO2";
   43.34 -by (fast_tac (ZF_cs addSIs [Ord_ordertype, ordermap_bij]) 1);
   43.35 +by (fast_tac (!claset addSIs [Ord_ordertype, ordermap_bij]) 1);
   43.36  qed "WO1_WO2";
   43.37  
   43.38  (* ********************************************************************** *)
   43.39  
   43.40  goal thy "!!f. f: A->B ==> (lam x:A. {f`x}): A -> {{b}. b:B}";
   43.41 -by (fast_tac (ZF_cs addSIs [lam_type, apply_type]) 1);
   43.42 +by (fast_tac (!claset addSIs [lam_type, apply_type]) 1);
   43.43  val lam_sets = result();
   43.44  
   43.45  goalw thy [surj_def] "!!f. f:surj(A,B) ==> (UN a:A. {f`a}) = B";
   43.46 -by (fast_tac (ZF_cs addSIs [equalityI] addSEs [apply_type]) 1);
   43.47 +by (fast_tac (!claset addSIs [equalityI] addSEs [apply_type]) 1);
   43.48  val surj_imp_eq_ = result();
   43.49  
   43.50  goal thy "!!f. [| f:surj(A,B); Ord(A) |] ==> (UN a<A. {f`a}) = B";
   43.51 -by (fast_tac (AC_cs addSDs [surj_imp_eq_]
   43.52 +by (fast_tac (!claset addSDs [surj_imp_eq_]
   43.53                  addSIs [equalityI, ltI] addSEs [ltE]) 1);
   43.54  val surj_imp_eq = result();
   43.55  
   43.56 @@ -54,7 +54,7 @@
   43.57  by (rtac conjI 1);
   43.58  by (eresolve_tac [ordermap_bij RS bij_converse_bij RS bij_is_fun RS
   43.59                  lam_sets RS domain_of_fun] 1);
   43.60 -by (asm_simp_tac (AC_ss addsimps [singleton_eqpoll_1 RS eqpoll_imp_lepoll,
   43.61 +by (asm_simp_tac (!simpset addsimps [singleton_eqpoll_1 RS eqpoll_imp_lepoll,
   43.62                    Ord_ordertype RSN (2, ordermap_bij RS bij_converse_bij RS
   43.63                          bij_is_surj RS surj_imp_eq)]) 1);
   43.64  qed "WO1_WO4";
   43.65 @@ -62,18 +62,20 @@
   43.66  (* ********************************************************************** *)
   43.67  
   43.68  goalw thy WO_defs "!!Z. [| m:nat; n:nat; m le n; WO4(m) |] ==> WO4(n)";
   43.69 -by (fast_tac (AC_cs addIs [nat_le_imp_lepoll RSN (2, lepoll_trans)]) 1);
   43.70 +by (fast_tac (!claset addIs [nat_le_imp_lepoll RSN (2, lepoll_trans)]) 1);
   43.71  qed "WO4_mono";
   43.72  
   43.73  (* ********************************************************************** *)
   43.74  
   43.75  goalw thy WO_defs "!!Z. [| m:nat; 1 le m; WO4(m) |] ==> WO5";
   43.76 +    (*ZF_cs is essential: default claset's too slow*)
   43.77  by (fast_tac ZF_cs 1);
   43.78  qed "WO4_WO5";
   43.79  
   43.80  (* ********************************************************************** *)
   43.81  
   43.82  goalw thy WO_defs "!!Z. WO5 ==> WO6";
   43.83 +    (*ZF_cs is essential: default claset's too slow*)
   43.84  by (fast_tac ZF_cs 1);
   43.85  qed "WO5_WO6";
   43.86  
    44.1 --- a/src/ZF/AC/WO1_WO7.ML	Fri Jan 03 10:48:28 1997 +0100
    44.2 +++ b/src/ZF/AC/WO1_WO7.ML	Fri Jan 03 15:01:55 1997 +0100
    44.3 @@ -12,7 +12,7 @@
    44.4  
    44.5  goalw thy [WO7_def] "WO7 <-> (ALL X. ~Finite(X) -->  \
    44.6  \                       (EX R. well_ord(X,R) & ~well_ord(X,converse(R))))";
    44.7 -by (fast_tac (ZF_cs addSEs [Finite_well_ord_converse]) 1);
    44.8 +by (fast_tac (!claset addSEs [Finite_well_ord_converse]) 1);
    44.9  val WO7_iff_LEMMA = result();
   44.10  
   44.11  (* ********************************************************************** *)
   44.12 @@ -24,9 +24,9 @@
   44.13  by (rtac allI 1);
   44.14  by (etac allE 1);
   44.15  by (excluded_middle_tac "Finite(A)" 1);
   44.16 -by (fast_tac AC_cs 1);
   44.17 +by (Fast_tac 1);
   44.18  by (rewrite_goals_tac [Finite_def, eqpoll_def]);
   44.19 -by (fast_tac (ZF_cs addSIs [[bij_is_inj, nat_implies_well_ord] MRS
   44.20 +by (fast_tac (!claset addSIs [[bij_is_inj, nat_implies_well_ord] MRS
   44.21                                   well_ord_rvimage]) 1);
   44.22  val LEMMA_imp_WO1 = result();
   44.23  
   44.24 @@ -50,16 +50,16 @@
   44.25  by (rtac notI 1);
   44.26  by (eres_inst_tac [("x","nat")] allE 1);
   44.27  by (etac disjE 1);
   44.28 -by (fast_tac (ZF_cs addSDs [nat_0I RSN (2,equals0D)]) 1);
   44.29 +by (fast_tac (!claset addSDs [nat_0I RSN (2,equals0D)]) 1);
   44.30  by (etac bexE 1);
   44.31  by (eres_inst_tac [("x","succ(x)")] allE 1);
   44.32 -by (fast_tac (ZF_cs addSIs [nat_succI, converseI, MemrelI, 
   44.33 +by (fast_tac (!claset addSIs [nat_succI, converseI, MemrelI, 
   44.34                              nat_succI RSN (2, subsetD)]) 1);
   44.35  val converse_Memrel_not_wf_on = result();
   44.36  
   44.37  goalw thy [well_ord_def] 
   44.38      "!!a. [| Ord(a); ~Finite(a) |] ==> ~well_ord(a,converse(Memrel(a)))";
   44.39 -by (fast_tac (ZF_cs addSDs [converse_Memrel_not_wf_on]) 1);
   44.40 +by (fast_tac (!claset addSDs [converse_Memrel_not_wf_on]) 1);
   44.41  val converse_Memrel_not_well_ord = result();
   44.42  
   44.43  goal thy "!!A. [| well_ord(A,r); well_ord(A,converse(r)) |]  \
    45.1 --- a/src/ZF/AC/WO1_WO8.ML	Fri Jan 03 10:48:28 1997 +0100
    45.2 +++ b/src/ZF/AC/WO1_WO8.ML	Fri Jan 03 15:01:55 1997 +0100
    45.3 @@ -10,7 +10,7 @@
    45.4  (* ********************************************************************** *)
    45.5  
    45.6  goalw thy WO_defs "!!Z. WO1 ==> WO8";
    45.7 -by (fast_tac ZF_cs 1);
    45.8 +by (Fast_tac 1);
    45.9  qed "WO1_WO8";
   45.10  
   45.11  (* ********************************************************************** *)
   45.12 @@ -21,10 +21,10 @@
   45.13  by (rtac allI 1);
   45.14  by (eres_inst_tac [("x","{{x}. x:A}")] allE 1);
   45.15  by (etac impE 1);
   45.16 -by (fast_tac (AC_cs addSEs [lam_sing_bij RS bij_is_inj RS
   45.17 +by (fast_tac (!claset addSEs [lam_sing_bij RS bij_is_inj RS
   45.18                          well_ord_rvimage]) 2);
   45.19  by (res_inst_tac [("x","lam a:{{x}. x:A}. THE x. a={x}")] exI 1);
   45.20 -by (fast_tac (ZF_cs addSEs [singleton_eq_iff RS iffD1 RS sym]
   45.21 +by (fast_tac (!claset addSEs [singleton_eq_iff RS iffD1 RS sym]
   45.22                  addSIs [lam_type]
   45.23                  addIs [the_equality RS ssubst]) 1);
   45.24  qed "WO8_WO1";
    46.1 --- a/src/ZF/AC/WO2_AC16.ML	Fri Jan 03 10:48:28 1997 +0100
    46.2 +++ b/src/ZF/AC/WO2_AC16.ML	Fri Jan 03 15:01:55 1997 +0100
    46.3 @@ -42,18 +42,17 @@
    46.4  by (etac lemma3_1 1 THEN (REPEAT (assume_tac 1)));
    46.5  val lemma3 = result();
    46.6  
    46.7 -goal thy "!!a. [| ALL y:x. y < a --> F(y) <= X &  \
    46.8 +goal thy "!!a. [| ALL y<x. F(y) <= X &  \
    46.9  \               (ALL x<a. x < y | (EX Y:F(y). fa(x) <= Y) -->  \
   46.10  \                       (EX! Y. Y : F(y) & fa(x) <= Y)); x < a |]  \
   46.11  \               ==> ALL y<x. ALL z<a. z < y | (EX Y:F(y). fa(z) <= Y) -->  \
   46.12  \                       (EX! Y. Y : F(y) & fa(z) <= Y)";
   46.13  by (REPEAT (resolve_tac [oallI, impI] 1));
   46.14 -by (dresolve_tac [ltD RSN (2, bspec)] 1 THEN (assume_tac 1));
   46.15 -by (eresolve_tac [lt_trans RSN (2, impE)] 1 THEN (REPEAT (assume_tac 1)));
   46.16 +by (dresolve_tac [ospec] 1 THEN (assume_tac 1));
   46.17  by (fast_tac (FOL_cs addSEs [oallE]) 1);
   46.18  val lemma4 = result();
   46.19  
   46.20 -goal thy "!!a. [| ALL y:x. y < a --> F(y) <= X &  \
   46.21 +goal thy "!!a. [| ALL y<x. F(y) <= X &  \
   46.22  \               (ALL x<a. x < y | (EX Y:F(y). fa(x) <= Y) -->  \
   46.23  \                       (EX! Y. Y : F(y) & fa(x) <= Y)); \
   46.24  \               x < a; Limit(x); ALL i j. i le j --> F(i) <= F(j) |]  \
   46.25 @@ -63,9 +62,8 @@
   46.26  by (rtac conjI 1);
   46.27  by (rtac subsetI 1);
   46.28  by (etac OUN_E 1);
   46.29 -by (dresolve_tac [ltD RSN (2, bspec)] 1 THEN (assume_tac 1));
   46.30 -by (eresolve_tac [lt_trans RSN (2, impE)] 1 THEN (REPEAT (assume_tac 1)));
   46.31 -by (fast_tac AC_cs 1);
   46.32 +by (dresolve_tac [ospec] 1 THEN (assume_tac 1));
   46.33 +by (Fast_tac 1);
   46.34  by (dtac lemma4 1 THEN (assume_tac 1));
   46.35  by (rtac oallI 1);
   46.36  by (rtac impI 1);
   46.37 @@ -119,9 +117,9 @@
   46.38  by (dresolve_tac [nat_le_infinite_Ord RS le_imp_lepoll] 1
   46.39          THEN (assume_tac 1));
   46.40  by (rewtac Finite_def);
   46.41 -by (fast_tac (AC_cs addSEs [eqpoll_sym RS eqpoll_trans]) 2);
   46.42 +by (fast_tac (!claset addSEs [eqpoll_sym RS eqpoll_trans]) 2);
   46.43  by (rtac lepoll_trans 1 THEN (assume_tac 2));
   46.44 -by (fast_tac (AC_cs addSEs [Ord_nat RSN (2, ltI) RS leI RS le_imp_subset RS 
   46.45 +by (fast_tac (!claset addSEs [Ord_nat RSN (2, ltI) RS leI RS le_imp_subset RS 
   46.46          subset_imp_lepoll RSN (2, eqpoll_imp_lepoll RS lepoll_trans)]) 1);
   46.47  val Finite_lesspoll_infinite_Ord = result();
   46.48  
   46.49 @@ -132,25 +130,25 @@
   46.50  goal thy "!!n. n:nat ==> ALL X. X eqpoll n --> (ALL x:X. Finite(x))  \
   46.51  \       --> Finite(Union(X))";
   46.52  by (etac nat_induct 1);
   46.53 -by (fast_tac (AC_cs addSDs [eqpoll_imp_lepoll RS lepoll_0_is_0]
   46.54 -        addSIs [nat_0I RS nat_into_Finite] addIs [Union_0 RS ssubst]) 1);
   46.55 +by (fast_tac (!claset addSDs [eqpoll_imp_lepoll RS lepoll_0_is_0]
   46.56 +        addSIs [nat_0I RS nat_into_Finite] addss (!simpset)) 1);
   46.57  by (REPEAT (resolve_tac [allI, impI] 1));
   46.58  by (resolve_tac [eqpoll_succ_imp_not_empty RS not_emptyE] 1 THEN (assume_tac 1));
   46.59  by (res_inst_tac [("P","%z. Finite(z)")] (Union_eq_Un_Diff RS ssubst) 1
   46.60          THEN (assume_tac 1));
   46.61  by (rtac Finite_Un 1);
   46.62 -by (fast_tac AC_cs 2);
   46.63 -by (fast_tac (AC_cs addSIs [Diff_sing_eqpoll]) 1);
   46.64 +by (Fast_tac 2);
   46.65 +by (fast_tac (!claset addSIs [Diff_sing_eqpoll]) 1);
   46.66  val Finite_Union_lemma = result();
   46.67  
   46.68  goal thy "!!X. [| ALL x:X. Finite(x); Finite(X) |] ==> Finite(Union(X))";
   46.69  by (eresolve_tac [Finite_def RS def_imp_iff RS iffD1 RS bexE] 1);
   46.70  by (dtac Finite_Union_lemma 1);
   46.71 -by (fast_tac AC_cs 1);
   46.72 +by (Fast_tac 1);
   46.73  val Finite_Union = result();
   46.74  
   46.75  goalw thy [Finite_def] "!!x. [| x lepoll n; n:nat |] ==> Finite(x)";
   46.76 -by (fast_tac (AC_cs
   46.77 +by (fast_tac (!claset
   46.78          addEs [nat_into_Ord RSN (2, lepoll_imp_ex_le_eqpoll) RS exE,
   46.79          Ord_nat RSN (2, ltI) RSN (2, lt_trans1) RS ltD]) 1);
   46.80  val lepoll_nat_num_imp_Finite = result();
   46.81 @@ -161,7 +159,7 @@
   46.82  by (excluded_middle_tac "Finite(X)" 1);
   46.83  by (resolve_tac [Card_is_Ord RSN (3, Finite_lesspoll_infinite_Ord)] 2
   46.84          THEN (REPEAT (assume_tac 3)));
   46.85 -by (fast_tac (AC_cs addSEs [lepoll_nat_num_imp_Finite]
   46.86 +by (fast_tac (!claset addSEs [lepoll_nat_num_imp_Finite]
   46.87                  addSIs [Finite_Union]) 2);
   46.88  by (dresolve_tac [lt_Ord RSN (2, lepoll_imp_ex_le_eqpoll)] 1 THEN (assume_tac 1));
   46.89  by (REPEAT (eresolve_tac [exE, conjE] 1));
   46.90 @@ -176,7 +174,7 @@
   46.91  by (eresolve_tac [lt_trans1 RSN (2, lt_Card_imp_lesspoll)] 1
   46.92          THEN REPEAT (assume_tac 1));
   46.93  by (rtac UN_lepoll 1
   46.94 -        THEN (TRYALL (fast_tac (AC_cs addSEs [lt_Ord]))));
   46.95 +        THEN (TRYALL (fast_tac (!claset addSEs [lt_Ord]))));
   46.96  val Union_lesspoll = result();
   46.97  
   46.98  (* ********************************************************************** *)
   46.99 @@ -188,36 +186,36 @@
  46.100  val Un_sing_eq_cons = result();
  46.101  
  46.102  goal thy "!!A. A lepoll B ==> A Un {a} lepoll succ(B)";
  46.103 -by (asm_simp_tac (AC_ss addsimps [Un_sing_eq_cons, succ_def]) 1);
  46.104 +by (asm_simp_tac (!simpset addsimps [Un_sing_eq_cons, succ_def]) 1);
  46.105  by (eresolve_tac [mem_not_refl RSN (2, cons_lepoll_cong)] 1);
  46.106  val Un_lepoll_succ = result();
  46.107  
  46.108  goal thy "!!a. Ord(a) ==> F(a) - (UN b<succ(a). F(b)) = 0";
  46.109 -by (fast_tac (AC_cs addSIs [OUN_I, le_refl] addIs [equalityI]) 1);
  46.110 +by (fast_tac (!claset addSIs [OUN_I, le_refl] addIs [equalityI]) 1);
  46.111  val Diff_UN_succ_empty = result();
  46.112  
  46.113  goal thy "!!a. Ord(a) ==> F(a) Un X - (UN b<succ(a). F(b)) <= X";
  46.114 -by (fast_tac (AC_cs addSIs [OUN_I, le_refl]) 1);
  46.115 +by (fast_tac (!claset addSIs [OUN_I, le_refl]) 1);
  46.116  val Diff_UN_succ_subset = result();
  46.117  
  46.118  goal thy "!!x. Ord(x) ==>  \
  46.119  \       recfunAC16(f, g, x, a) - (UN i<x. recfunAC16(f, g, i, a)) lepoll 1";
  46.120  by (etac Ord_cases 1);
  46.121 -by (asm_simp_tac (AC_ss addsimps [recfunAC16_0,
  46.122 +by (asm_simp_tac (!simpset addsimps [recfunAC16_0,
  46.123                  empty_subsetI RS subset_imp_lepoll]) 1);
  46.124 -by (asm_simp_tac (AC_ss addsimps [recfunAC16_Limit,
  46.125 +by (asm_simp_tac (!simpset addsimps [recfunAC16_Limit,
  46.126                  Diff_cancel, empty_subsetI RS subset_imp_lepoll]) 2);
  46.127 -by (asm_simp_tac (AC_ss addsimps [recfunAC16_succ]) 1);
  46.128 +by (asm_simp_tac (!simpset addsimps [recfunAC16_succ]) 1);
  46.129  by (resolve_tac [conjI RS (expand_if RS iffD2)] 1);
  46.130 -by (fast_tac (AC_cs addSIs [empty_subsetI RS subset_imp_lepoll]
  46.131 +by (fast_tac (!claset addSIs [empty_subsetI RS subset_imp_lepoll]
  46.132                  addSEs [Diff_UN_succ_empty RS ssubst]) 1);
  46.133 -by (fast_tac (AC_cs addSEs [Diff_UN_succ_subset RS subset_imp_lepoll RS
  46.134 +by (fast_tac (!claset addSEs [Diff_UN_succ_subset RS subset_imp_lepoll RS
  46.135          (singleton_eqpoll_1 RS eqpoll_imp_lepoll RSN (2, lepoll_trans))]) 1);
  46.136  val recfunAC16_Diff_lepoll_1 = result();
  46.137  
  46.138  goal thy "!!z. [| z : F(x); Ord(x) |]  \
  46.139  \       ==> z:F(LEAST i. z:F(i)) - (UN j<(LEAST i. z:F(i)). F(j))";
  46.140 -by (fast_tac (AC_cs addEs [less_LeastE] addSEs [OUN_E, LeastI]) 1);
  46.141 +by (fast_tac (!claset addEs [less_LeastE] addSEs [OUN_E, LeastI]) 1);
  46.142  val in_Least_Diff = result();
  46.143  
  46.144  goal thy "!!w. [| (LEAST i. w:F(i)) = (LEAST i. z:F(i));  \
  46.145 @@ -234,7 +232,7 @@
  46.146  val Least_eq_imp_ex = result();
  46.147  
  46.148  goal thy "!!A. [| A lepoll 1; a:A; b:A |] ==> a=b";
  46.149 -by (fast_tac (AC_cs addSDs [lepoll_1_is_sing]) 1);
  46.150 +by (fast_tac (!claset addSDs [lepoll_1_is_sing]) 1);
  46.151  val two_in_lepoll_1 = result();
  46.152  
  46.153  goal thy "!!a. [| ALL i<a. F(i)-(UN j<i. F(j)) lepoll 1; Limit(a) |]  \
  46.154 @@ -250,23 +248,23 @@
  46.155  by (etac lt_Ord2 1);
  46.156  by (rtac ballI 1);
  46.157  by (rtac ballI 1);
  46.158 -by (asm_simp_tac AC_ss 1);
  46.159 +by (Asm_simp_tac 1);
  46.160  by (rtac impI 1);
  46.161  by (dtac Least_eq_imp_ex 1 THEN (REPEAT (assume_tac 1)));
  46.162 -by (fast_tac (AC_cs addSEs [two_in_lepoll_1]) 1);
  46.163 +by (fast_tac (!claset addSEs [two_in_lepoll_1]) 1);
  46.164  val UN_lepoll_index = result();
  46.165  
  46.166  goal thy "!!y. Ord(y) ==> recfunAC16(f, fa, y, a) lepoll y";
  46.167  by (etac trans_induct 1);
  46.168  by (etac Ord_cases 1);
  46.169 -by (asm_simp_tac (AC_ss addsimps [recfunAC16_0, lepoll_refl]) 1);
  46.170 -by (asm_simp_tac (AC_ss addsimps [recfunAC16_succ]) 1);
  46.171 -by (fast_tac (AC_cs addIs [conjI RS (expand_if RS iffD2)]
  46.172 +by (asm_simp_tac (!simpset addsimps [recfunAC16_0, lepoll_refl]) 1);
  46.173 +by (asm_simp_tac (!simpset addsimps [recfunAC16_succ]) 1);
  46.174 +by (fast_tac (!claset addIs [conjI RS (expand_if RS iffD2)]
  46.175          addSDs [succI1 RSN (2, bspec)]
  46.176          addSEs [subset_succI RS subset_imp_lepoll RSN (2, lepoll_trans),
  46.177                  Un_lepoll_succ]) 1);
  46.178 -by (asm_simp_tac (AC_ss addsimps [recfunAC16_Limit]) 1);
  46.179 -by (fast_tac (AC_cs addSEs [lt_Ord RS recfunAC16_Diff_lepoll_1]
  46.180 +by (asm_simp_tac (!simpset addsimps [recfunAC16_Limit]) 1);
  46.181 +by (fast_tac (!claset addSEs [lt_Ord RS recfunAC16_Diff_lepoll_1]
  46.182          addSIs [UN_lepoll_index]) 1);
  46.183  val recfunAC16_lepoll_index = result();
  46.184  
  46.185 @@ -278,7 +276,7 @@
  46.186  by (eresolve_tac [lt_Ord RS recfunAC16_lepoll_index] 3);
  46.187  by (eresolve_tac [[bij_is_inj, Card_is_Ord RS well_ord_Memrel] MRS
  46.188          well_ord_rvimage] 2 THEN (assume_tac 2));
  46.189 -by (fast_tac (AC_cs addSEs [eqpoll_imp_lepoll]) 1);
  46.190 +by (fast_tac (!claset addSEs [eqpoll_imp_lepoll]) 1);
  46.191  val Union_recfunAC16_lesspoll = result();
  46.192  
  46.193  goal thy
  46.194 @@ -308,11 +306,11 @@
  46.195  \       fa : bij(a, {x: Pow(A) . x eqpoll k}); i<a; k:nat; m:nat |]  \
  46.196  \       ==> fa ` i Un x : {x: Pow(A) . x eqpoll k #+ m}";
  46.197  by (rtac CollectI 1);
  46.198 -by (fast_tac (AC_cs addSIs [PowD RS (PowD RSN (2, Un_least RS PowI))] 
  46.199 +by (fast_tac (!claset addSIs [PowD RS (PowD RSN (2, Un_least RS PowI))] 
  46.200          addSEs [ltD RSN (2, bij_is_fun RS apply_type RS CollectE)]) 1);
  46.201  by (rtac disj_Un_eqpoll_nat_sum 1
  46.202          THEN (TRYALL assume_tac));
  46.203 -by (fast_tac (AC_cs addSIs [equals0I]) 1);
  46.204 +by (fast_tac (!claset addSIs [equals0I]) 1);
  46.205  by (eresolve_tac [ltD RSN (2, bij_is_fun RS apply_type RS CollectE)] 1
  46.206          THEN (REPEAT (assume_tac 1)));
  46.207  val Un_in_Collect = result();
  46.208 @@ -321,18 +319,17 @@
  46.209  (* Lemmas simplifying assumptions                                         *)
  46.210  (* ********************************************************************** *)
  46.211  
  46.212 -goal thy "!!j. [| ALL y:succ(j). y<a --> F(y)<=X & (ALL x<a. x<y | P(x,y)  \
  46.213 +goal thy "!!j. [| ALL y<succ(j). F(y)<=X & (ALL x<a. x<y | P(x,y)  \
  46.214  \       --> Q(x,y)); succ(j)<a |]  \
  46.215  \       ==> F(j)<=X & (ALL x<a. x<j | P(x,j) --> Q(x,j))";
  46.216 -by (dresolve_tac [succI1 RSN (2, bspec)] 1);
  46.217 -by (etac impE 1);
  46.218 -by (resolve_tac [lt_Ord RS (succI1 RS ltI RS lt_Ord RS le_refl) RS lt_trans] 1
  46.219 +by (dresolve_tac [ospec] 1);
  46.220 +by (resolve_tac [lt_Ord RS (succI1 RS ltI RS lt_Ord RS le_refl)] 1
  46.221          THEN (REPEAT (assume_tac 1)));
  46.222  val lemma6 = result();
  46.223  
  46.224  goal thy "!!j. [| F(j)<=X; (ALL x<a. x<j | P(x,j) --> Q(x,j)); succ(j)<a |]  \
  46.225  \       ==> P(j,j) --> F(j) <= X & (ALL x<a. x le j | P(x,j) --> Q(x,j))";
  46.226 -by (fast_tac (AC_cs addSEs [leE]) 1);
  46.227 +by (fast_tac (!claset addSEs [leE]) 1);
  46.228  val lemma7 = result();
  46.229  
  46.230  (* ********************************************************************** *)
  46.231 @@ -348,15 +345,15 @@
  46.232                  ((eqpoll_sym RS eqpoll_imp_lepoll) RSN (2, lepoll_trans)) RS 
  46.233                  lepoll_imp_eqpoll_subset RS exE] 1 
  46.234          THEN REPEAT (assume_tac 1));
  46.235 -by (fast_tac (AC_cs addSEs [eqpoll_sym]) 1);
  46.236 +by (fast_tac (!claset addSEs [eqpoll_sym]) 1);
  46.237  val ex_subset_eqpoll = result();
  46.238  
  46.239  goal thy "!!A. [| A <= B Un C; A Int C = 0 |] ==> A <= B";
  46.240 -by (fast_tac (AC_cs addDs [equals0D]) 1);
  46.241 +by (fast_tac (!claset addDs [equals0D]) 1);
  46.242  val subset_Un_disjoint = result();
  46.243  
  46.244  goal thy "!!F. [| X:Pow(A - Union(B) -C); T:B; F<=T |] ==> F Int X = 0";
  46.245 -by (fast_tac (AC_cs addSIs [equals0I]) 1);
  46.246 +by (fast_tac (!claset addSIs [equals0I]) 1);
  46.247  val Int_empty = result();
  46.248  
  46.249  (* ********************************************************************** *)
  46.250 @@ -369,7 +366,7 @@
  46.251  
  46.252  goal thy "!!A. m:nat ==> ALL A B. A <= B & m lepoll A & B lepoll m --> A=B";
  46.253  by (etac nat_induct 1);
  46.254 -by (fast_tac (AC_cs addSDs [lepoll_0_is_0] addSIs [equalityI]) 1);
  46.255 +by (fast_tac (!claset addSDs [lepoll_0_is_0] addSIs [equalityI]) 1);
  46.256  by (REPEAT (resolve_tac [allI, impI] 1));
  46.257  by (REPEAT (etac conjE 1));
  46.258  by (resolve_tac [succ_lepoll_imp_not_empty RS not_emptyE] 1
  46.259 @@ -379,8 +376,8 @@
  46.260  by (forward_tac [lepoll_Diff_sing] 1);
  46.261  by (REPEAT (eresolve_tac [allE, impE] 1));
  46.262  by (rtac conjI 1);
  46.263 -by (fast_tac AC_cs 2);
  46.264 -by (fast_tac ZF_cs 1);
  46.265 +by (Fast_tac 2);
  46.266 +by (Fast_tac 1);
  46.267  by (etac Diffs_eq_imp_eq 1
  46.268          THEN REPEAT (assume_tac 1));
  46.269  val subset_imp_eq_lemma = result();
  46.270 @@ -393,12 +390,12 @@
  46.271  \       y<a |] ==> b=y";
  46.272  by (dtac subset_imp_eq 1);
  46.273  by (etac nat_succI 3);
  46.274 -by (fast_tac (AC_cs addSEs [bij_is_fun RS (ltD RSN (2, apply_type)) RS
  46.275 +by (fast_tac (!claset addSEs [bij_is_fun RS (ltD RSN (2, apply_type)) RS
  46.276                  CollectE, eqpoll_sym RS eqpoll_imp_lepoll]) 1);
  46.277 -by (fast_tac (AC_cs addSEs [bij_is_fun RS (ltD RSN (2, apply_type)) RS
  46.278 +by (fast_tac (!claset addSEs [bij_is_fun RS (ltD RSN (2, apply_type)) RS
  46.279          CollectE, eqpoll_imp_lepoll]) 1);
  46.280  by (rewrite_goals_tac [bij_def, inj_def]);
  46.281 -by (fast_tac (AC_cs addSDs [ltD]) 1);
  46.282 +by (fast_tac (!claset addSDs [ltD]) 1);
  46.283  val bij_imp_arg_eq = result();
  46.284  
  46.285  goal thy
  46.286 @@ -423,7 +420,7 @@
  46.287  by (etac nat_succI 1);
  46.288  by (assume_tac 1);
  46.289  by (rtac conjI 1);
  46.290 -by (fast_tac AC_cs 1);
  46.291 +by (Fast_tac 1);
  46.292  by (REPEAT (resolve_tac [ballI, impI, oallI, notI] 1));
  46.293  by (dresolve_tac [Int_empty RSN (2, subset_Un_disjoint)] 1
  46.294          THEN REPEAT (assume_tac 1));
  46.295 @@ -456,7 +453,7 @@
  46.296  val ex_next_Ord = result();
  46.297  
  46.298  goal thy "!!Z. [| EX! Y. Y:Z & P(Y); ~P(W) |] ==> EX! Y. Y:Z Un {W} & P(Y)";
  46.299 -by (fast_tac ZF_cs 1);
  46.300 +by (Fast_tac 1);
  46.301  val ex1_in_Un_sing = result();
  46.302  
  46.303  (* ********************************************************************** *)
  46.304 @@ -470,7 +467,7 @@
  46.305  \       (ALL x<a. x le j | (EX xa:F(j) Un {L}. P(x, xa)) -->  \
  46.306  \               (EX! Y. Y:F(j) Un {L} & P(x, Y)))";
  46.307  by (rtac conjI 1);
  46.308 -by (fast_tac (AC_cs addSIs [singleton_subsetI]) 1);
  46.309 +by (fast_tac (!claset addSIs [singleton_subsetI]) 1);
  46.310  by (rtac oallI 1);
  46.311  by (etac oallE 1 THEN (contr_tac 2));
  46.312  by (rtac impI 1);
  46.313 @@ -479,12 +476,12 @@
  46.314  by (eresolve_tac [disjI1 RSN (2, impE)] 1 THEN (assume_tac 1));
  46.315  by (rtac ex1E 1 THEN (assume_tac 1));
  46.316  by (etac ex1_in_Un_sing 1);
  46.317 -by (fast_tac AC_cs 1);
  46.318 -by (fast_tac AC_cs 1);
  46.319 +by (Fast_tac 1);
  46.320 +by (Fast_tac 1);
  46.321  by (etac bexE 1);
  46.322  by (etac UnE 1);
  46.323 -by (fast_tac (AC_cs addSEs [ex1_in_Un_sing]) 1);
  46.324 -by (fast_tac AC_cs 1);
  46.325 +by (fast_tac (!claset addSEs [ex1_in_Un_sing]) 1);
  46.326 +by (Fast_tac 1);
  46.327  val lemma8 = result();
  46.328  
  46.329  (* ********************************************************************** *)
  46.330 @@ -499,21 +496,19 @@
  46.331  \       ==> recfunAC16(f, fa, b, a) <= {X: Pow(A) . X eqpoll succ(k #+ m)} &  \
  46.332  \       (ALL x<a. x < b | (EX Y:recfunAC16(f, fa, b, a). fa ` x <= Y) -->  \
  46.333  \       (EX! Y. Y:recfunAC16(f, fa, b, a) & fa ` x <= Y))";
  46.334 -by (rtac impE 1 THEN (REPEAT (assume_tac 2)));
  46.335 -by (eresolve_tac [lt_Ord RS trans_induct] 1);
  46.336 -by (rtac impI 1);
  46.337 +by (etac lt_induct 1);
  46.338 +by (forward_tac [lt_Ord] 1);
  46.339  by (etac Ord_cases 1);
  46.340  (* case 0 *)
  46.341 -by (asm_simp_tac (AC_ss addsimps [recfunAC16_0]) 1);
  46.342 -by (fast_tac (AC_cs addSEs [ltE]) 1);
  46.343 +by (asm_simp_tac (!simpset addsimps [recfunAC16_0]) 1);
  46.344  (* case Limit *)
  46.345 -by (asm_simp_tac (AC_ss addsimps [recfunAC16_Limit]) 2);
  46.346 -by (etac lemma5 2 THEN (REPEAT (assume_tac 2)));
  46.347 +by (asm_simp_tac (!simpset addsimps [recfunAC16_Limit]) 2);
  46.348 +by (rtac lemma5 2 THEN (REPEAT (assume_tac 2)));
  46.349  by (fast_tac (FOL_cs addSEs [recfunAC16_mono]) 2);
  46.350  (* case succ *)
  46.351  by (hyp_subst_tac 1);
  46.352  by (eresolve_tac [lemma6 RS conjE] 1 THEN (assume_tac 1));
  46.353 -by (asm_simp_tac (AC_ss addsimps [recfunAC16_succ]) 1);
  46.354 +by (asm_simp_tac (!simpset addsimps [recfunAC16_succ]) 1);
  46.355  by (resolve_tac [conjI RS (expand_if RS iffD2)] 1);
  46.356  by (etac lemma7 1 THEN (REPEAT (assume_tac 1)));
  46.357  by (rtac impI 1);
  46.358 @@ -523,6 +518,7 @@
  46.359  by (resolve_tac [bij_is_fun RS apply_type] 1 THEN (assume_tac 1));
  46.360  by (eresolve_tac [Least_le RS lt_trans2 RS ltD] 1 
  46.361          THEN REPEAT (ares_tac [lt_Ord, succ_leI] 1));
  46.362 +(*VERY SLOW!  24 secs??*)
  46.363  by (eresolve_tac [lt_Ord RSN (2, LeastI)] 1 THEN (assume_tac 1));
  46.364  val main_induct = result();
  46.365  
  46.366 @@ -541,7 +537,7 @@
  46.367  by (rtac subsetI 1);
  46.368  by (etac OUN_E 1);
  46.369  by (dtac prem1 1);
  46.370 -by (fast_tac AC_cs 1);
  46.371 +by (Fast_tac 1);
  46.372  by (rtac ballI 1);
  46.373  by (etac imageE 1);
  46.374  by (dresolve_tac [prem3 RS Limit_is_Ord RSN (2, ltI) RS
  46.375 @@ -550,15 +546,15 @@
  46.376  by (etac conjE 1);
  46.377  by (dresolve_tac [leI RS succ_leE RSN (2, ospec)] 1 THEN (assume_tac 1));
  46.378  by (etac impE 1);
  46.379 -by (fast_tac (AC_cs addSEs [leI RS succ_leE RS lt_Ord RS le_refl]) 1);
  46.380 +by (fast_tac (!claset addSEs [leI RS succ_leE RS lt_Ord RS le_refl]) 1);
  46.381  by (dresolve_tac [prem2 RSN (2, apply_equality)] 1);
  46.382  by (REPEAT (eresolve_tac [conjE, ex1E] 1));
  46.383  by (rtac ex1I 1);
  46.384 -by (fast_tac (AC_cs addSIs [OUN_I]) 1);
  46.385 +by (fast_tac (!claset addSIs [OUN_I]) 1);
  46.386  by (REPEAT (eresolve_tac [conjE, OUN_E] 1));
  46.387  by (eresolve_tac [lt_Ord RSN (2, lt_Ord RS Ord_linear_le)] 1 THEN (assume_tac 1));
  46.388  by (dresolve_tac [prem4 RS subsetD] 2 THEN (assume_tac 2));
  46.389 -by (fast_tac FOL_cs 2);
  46.390 +by (Fast_tac 2);
  46.391  by (forward_tac [prem1] 1);
  46.392  by (forward_tac [succ_leE] 1);
  46.393  by (dresolve_tac [prem4 RS subsetD] 1 THEN (assume_tac 1));
  46.394 @@ -566,7 +562,7 @@
  46.395  by (dresolve_tac [lt_trans RSN (2, ospec)] 1 THEN (TRYALL assume_tac));
  46.396  by (dresolve_tac [disjI1 RSN (2, mp)] 1 THEN (assume_tac 1));
  46.397  by (etac ex1_two_eq 1);
  46.398 -by (REPEAT (fast_tac FOL_cs 1));
  46.399 +by (REPEAT (Fast_tac 1));
  46.400  val lemma_simp_induct = result();
  46.401  
  46.402  (* ********************************************************************** *)
    47.1 --- a/src/ZF/AC/WO6_WO1.ML	Fri Jan 03 10:48:28 1997 +0100
    47.2 +++ b/src/ZF/AC/WO6_WO1.ML	Fri Jan 03 15:01:55 1997 +0100
    47.3 @@ -16,12 +16,12 @@
    47.4  by (res_inst_tac [("i","k"),("j","i")] Ord_linear2 1);
    47.5  by (dtac odiff_lt_mono2 4 THEN assume_tac 4);
    47.6  by (asm_full_simp_tac
    47.7 -    (ZF_ss addsimps [oadd_odiff_inverse, odiff_oadd_inverse]) 4);
    47.8 -by (safe_tac (ZF_cs addSEs [lt_Ord]));
    47.9 +    (!simpset addsimps [oadd_odiff_inverse, odiff_oadd_inverse]) 4);
   47.10 +by (safe_tac (!claset addSEs [lt_Ord]));
   47.11  val lt_oadd_odiff_disj = result();
   47.12  
   47.13  (*The corresponding elimination rule*)
   47.14 -val lt_oadd_odiff_cases = rule_by_tactic (safe_tac ZF_cs)
   47.15 +val lt_oadd_odiff_cases = rule_by_tactic (safe_tac (!claset))
   47.16                                           (lt_oadd_odiff_disj RS disjE);
   47.17  
   47.18  (* ********************************************************************** *)
   47.19 @@ -33,25 +33,25 @@
   47.20  (* ********************************************************************** *)
   47.21  
   47.22  goalw thy [uu_def] "domain(uu(f,b,g,d)) <= f`b";
   47.23 -by (fast_tac ZF_cs 1);
   47.24 +by (Fast_tac 1);
   47.25  val domain_uu_subset = result();
   47.26  
   47.27  goal thy "!! a. ALL b<a. f`b lepoll m ==> \
   47.28  \               ALL b<a. ALL g<a. ALL d<a. domain(uu(f,b,g,d)) lepoll m";
   47.29 -by (fast_tac (AC_cs addSEs
   47.30 +by (fast_tac (!claset addSEs
   47.31          [domain_uu_subset RS subset_imp_lepoll RS lepoll_trans]) 1);
   47.32  val quant_domain_uu_lepoll_m = result();
   47.33  
   47.34  goalw thy [uu_def] "uu(f,b,g,d) <= f`b * f`g";
   47.35 -by (fast_tac ZF_cs 1);
   47.36 +by (Fast_tac 1);
   47.37  val uu_subset1 = result();
   47.38  
   47.39  goalw thy [uu_def] "uu(f,b,g,d) <= f`d";
   47.40 -by (fast_tac ZF_cs 1);
   47.41 +by (Fast_tac 1);
   47.42  val uu_subset2 = result();
   47.43  
   47.44  goal thy "!! a. [| ALL b<a. f`b lepoll m;  d<a |] ==> uu(f,b,g,d) lepoll m";
   47.45 -by (fast_tac (AC_cs
   47.46 +by (fast_tac (!claset
   47.47          addSEs [uu_subset2 RS subset_imp_lepoll RS lepoll_trans]) 1);
   47.48  val uu_lepoll_m = result();
   47.49  
   47.50 @@ -64,15 +64,15 @@
   47.51  \                                       u(f,b,g,d) lesspoll m)) |  \
   47.52  \            (EX b<a. f`b ~= 0 & (ALL g<a. ALL d<a. u(f,b,g,d) ~= 0 -->  \
   47.53  \                                       u(f,b,g,d) eqpoll m))";
   47.54 -by (asm_simp_tac OrdQuant_ss 1);
   47.55 -by (fast_tac AC_cs 1);
   47.56 +by (Asm_simp_tac 1);
   47.57 +by (Fast_tac 1);
   47.58  val cases = result();
   47.59  
   47.60  (* ********************************************************************** *)
   47.61  (* Lemmas used in both cases                                              *)
   47.62  (* ********************************************************************** *)
   47.63  goal thy "!!a C. Ord(a) ==> (UN b<a++a. C(b)) = (UN b<a. C(b) Un C(a++b))";
   47.64 -by (fast_tac (AC_cs addSIs [equalityI] addIs [ltI] 
   47.65 +by (fast_tac (!claset addSIs [equalityI] addIs [ltI] 
   47.66                      addSDs [lt_oadd_disj]
   47.67                      addSEs [lt_oadd1, oadd_lt_mono2]) 1);
   47.68  val UN_oadd = result();
   47.69 @@ -85,7 +85,7 @@
   47.70  goalw thy [vv1_def] "vv1(f,m,b) <= f`b";
   47.71  by (rtac (LetI RS LetI) 1);
   47.72  by (split_tac [expand_if] 1);
   47.73 -by (simp_tac (ZF_ss addsimps [domain_uu_subset]) 1);
   47.74 +by (simp_tac (!simpset addsimps [domain_uu_subset]) 1);
   47.75  val vv1_subset = result();
   47.76  
   47.77  (* ********************************************************************** *)
   47.78 @@ -95,14 +95,14 @@
   47.79    "!! a f y. [| Ord(a);  m:nat |] ==>   \
   47.80  \            (UN b<a++a. gg1(f,a,m)`b) = (UN b<a. f`b)";
   47.81  by (asm_simp_tac
   47.82 -    (OrdQuant_ss addsimps [UN_oadd, lt_oadd1,
   47.83 +    (!simpset addsimps [UN_oadd, lt_oadd1,
   47.84                             oadd_le_self RS le_imp_not_lt, lt_Ord,
   47.85                             odiff_oadd_inverse, ltD,
   47.86                             vv1_subset RS Diff_partition, ww1_def]) 1);
   47.87  val UN_gg1_eq = result();
   47.88  
   47.89  goal thy "domain(gg1(f,a,m)) = a++a";
   47.90 -by (simp_tac (ZF_ss addsimps [lam_funtype RS domain_of_fun, gg1_def]) 1);
   47.91 +by (simp_tac (!simpset addsimps [lam_funtype RS domain_of_fun, gg1_def]) 1);
   47.92  val domain_gg1 = result();
   47.93  
   47.94  (* ********************************************************************** *)
   47.95 @@ -113,7 +113,7 @@
   47.96  \               ==> P(Least_a, LEAST b. P(Least_a, b))";
   47.97  by (etac ssubst 1);
   47.98  by (res_inst_tac [("Q","%z. P(z, LEAST b. P(z, b))")] LeastI2 1);
   47.99 -by (REPEAT (fast_tac (ZF_cs addSEs [LeastI]) 1));
  47.100 +by (REPEAT (fast_tac (!claset addSEs [LeastI]) 1));
  47.101  val nested_LeastI = result();
  47.102  
  47.103  val nested_Least_instance = 
  47.104 @@ -129,24 +129,24 @@
  47.105  \                             domain(uu(f,b,g,d)) lepoll m);            \
  47.106  \            ALL b<a. f`b lepoll succ(m);  b<a++a                       \
  47.107  \         |] ==> gg1(f,a,m)`b lepoll m";
  47.108 -by (asm_simp_tac OrdQuant_ss 1);
  47.109 -by (safe_tac (OrdQuant_cs addSEs [lt_oadd_odiff_cases]));
  47.110 +by (Asm_simp_tac 1);
  47.111 +by (safe_tac (!claset addSEs [lt_oadd_odiff_cases]));
  47.112  (*Case b<a   : show vv1(f,m,b) lepoll m *)
  47.113 -by (asm_simp_tac (ZF_ss addsimps [vv1_def, Let_def] 
  47.114 +by (asm_simp_tac (!simpset addsimps [vv1_def, Let_def] 
  47.115                          setloop split_tac [expand_if]) 1);
  47.116 -by (fast_tac (AC_cs addIs [nested_Least_instance RS conjunct2]
  47.117 +by (fast_tac (!claset addIs [nested_Least_instance RS conjunct2]
  47.118                  addSEs [lt_Ord]
  47.119                  addSIs [empty_lepollI]) 1);
  47.120  (*Case a le b: show ww1(f,m,b--a) lepoll m *)
  47.121 -by (asm_simp_tac (ZF_ss addsimps [ww1_def]) 1);
  47.122 +by (asm_simp_tac (!simpset addsimps [ww1_def]) 1);
  47.123  by (excluded_middle_tac "f`(b--a) = 0" 1);
  47.124 -by (asm_simp_tac (OrdQuant_ss addsimps [empty_lepollI]) 2);
  47.125 +by (asm_simp_tac (!simpset addsimps [empty_lepollI]) 2);
  47.126  by (rtac Diff_lepoll 1);
  47.127 -by (fast_tac AC_cs 1);
  47.128 +by (Fast_tac 1);
  47.129  by (rtac vv1_subset 1);
  47.130  by (dtac (ospec RS mp) 1);
  47.131  by (REPEAT (eresolve_tac [asm_rl, oexE] 1));
  47.132 -by (asm_simp_tac (ZF_ss
  47.133 +by (asm_simp_tac (!simpset
  47.134          addsimps [vv1_def, Let_def, lt_Ord, 
  47.135                    nested_Least_instance RS conjunct1]) 1);
  47.136  val gg1_lepoll_m = result();
  47.137 @@ -162,7 +162,7 @@
  47.138  goalw thy [uu_def] "!!f. [| b<a;  g<a;  f`b~=0;  f`g~=0;        \
  47.139  \                           y*y <= y;  (UN b<a. f`b)=y          \
  47.140  \                        |] ==> EX d<a. uu(f,b,g,d) ~= 0";
  47.141 -by (fast_tac (AC_cs addSIs [not_emptyI] 
  47.142 +by (fast_tac (!claset addSIs [not_emptyI] 
  47.143                      addSDs [SigmaI RSN (2, subsetD)]
  47.144                      addSEs [not_emptyE]) 1);
  47.145  val ex_d_uu_not_empty = result();
  47.146 @@ -171,10 +171,10 @@
  47.147  \                       y*y<=y; (UN b<a. f`b)=y |]  \
  47.148  \               ==> uu(f,b,g,LEAST d. (uu(f,b,g,d) ~= 0)) ~= 0";
  47.149  by (dtac ex_d_uu_not_empty 1 THEN REPEAT (assume_tac 1));
  47.150 -by (fast_tac (AC_cs addSEs [LeastI, lt_Ord]) 1);
  47.151 +by (fast_tac (!claset addSEs [LeastI, lt_Ord]) 1);
  47.152  val uu_not_empty = result();
  47.153  
  47.154 -goal ZF.thy "!!r. [| r<=A*B; r~=0 |] ==> domain(r)~=0";
  47.155 +goal upair.thy "!!r. [| r<=A*B; r~=0 |] ==> domain(r)~=0";
  47.156  by (REPEAT (eresolve_tac [asm_rl, not_emptyE, subsetD RS SigmaE, 
  47.157                  sym RSN (2, subst_elem) RS domainI RS not_emptyI] 1));
  47.158  val not_empty_rel_imp_domain = result();
  47.159 @@ -188,14 +188,14 @@
  47.160          THEN (REPEAT (ares_tac [lt_Ord] 1)));
  47.161  val Least_uu_not_empty_lt_a = result();
  47.162  
  47.163 -goal ZF.thy "!!B. [| B<=A; a~:B |] ==> B <= A-{a}";
  47.164 -by (fast_tac ZF_cs 1);
  47.165 +goal upair.thy "!!B. [| B<=A; a~:B |] ==> B <= A-{a}";
  47.166 +by (Fast_tac 1);
  47.167  val subset_Diff_sing = result();
  47.168  
  47.169  (*Could this be proved more directly?*)
  47.170  goal thy "!!A B. [| A lepoll m; m lepoll B; B <= A; m:nat |] ==> A=B";
  47.171  by (etac natE 1);
  47.172 -by (fast_tac (AC_cs addSDs [lepoll_0_is_0] addSIs [equalityI]) 1);
  47.173 +by (fast_tac (!claset addSDs [lepoll_0_is_0] addSIs [equalityI]) 1);
  47.174  by (hyp_subst_tac 1);
  47.175  by (rtac equalityI 1);
  47.176  by (assume_tac 2);
  47.177 @@ -222,7 +222,7 @@
  47.178          uu_subset1 RSN (4, rel_is_fun)))] 1
  47.179          THEN TRYALL assume_tac);
  47.180  by (rtac (eqpoll_sym RS eqpoll_imp_lepoll RSN (2, supset_lepoll_imp_eq)) 1);
  47.181 -by (REPEAT (fast_tac (AC_cs addSIs [domain_uu_subset, nat_succI]) 1));
  47.182 +by (REPEAT (fast_tac (!claset addSIs [domain_uu_subset, nat_succI]) 1));
  47.183  val uu_Least_is_fun = result();
  47.184  
  47.185  goalw thy [vv2_def]
  47.186 @@ -232,9 +232,9 @@
  47.187  \            (UN b<a. f`b)=y;  b<a;  g<a;  m:nat;  s:f`b                \
  47.188  \          |] ==> vv2(f,b,g,s) <= f`g";
  47.189  by (split_tac [expand_if] 1);
  47.190 -by (fast_tac (FOL_cs addSEs [uu_Least_is_fun]
  47.191 -                     addSIs [empty_subsetI, not_emptyI, 
  47.192 -                             singleton_subsetI, apply_type]) 1);
  47.193 +by (Step_tac 1);
  47.194 +be (uu_Least_is_fun RS apply_type) 1;
  47.195 +by (REPEAT_SOME (fast_tac (!claset addSIs [not_emptyI, singleton_subsetI])));
  47.196  val vv2_subset = result();
  47.197  
  47.198  (* ********************************************************************** *)
  47.199 @@ -248,14 +248,14 @@
  47.200  \         |] ==> (UN g<a++a. gg2(f,a,b,s) ` g) = y";
  47.201  by (dtac sym 1);
  47.202  by (asm_simp_tac
  47.203 -    (OrdQuant_ss addsimps [UN_oadd, lt_oadd1,
  47.204 +    (!simpset addsimps [UN_oadd, lt_oadd1,
  47.205                             oadd_le_self RS le_imp_not_lt, lt_Ord,
  47.206                             odiff_oadd_inverse, ww2_def,
  47.207                             vv2_subset RS Diff_partition]) 1);
  47.208  val UN_gg2_eq = result();
  47.209  
  47.210  goal thy "domain(gg2(f,a,b,s)) = a++a";
  47.211 -by (simp_tac (ZF_ss addsimps [lam_funtype RS domain_of_fun, gg2_def]) 1);
  47.212 +by (simp_tac (!simpset addsimps [lam_funtype RS domain_of_fun, gg2_def]) 1);
  47.213  val domain_gg2 = result();
  47.214  
  47.215  (* ********************************************************************** *)
  47.216 @@ -264,9 +264,9 @@
  47.217  
  47.218  goalw thy [vv2_def]
  47.219      "!!m. [| m:nat; m~=0 |] ==> vv2(f,b,g,s) lepoll m";
  47.220 -by (asm_simp_tac (OrdQuant_ss addsimps [empty_lepollI]
  47.221 +by (asm_simp_tac (!simpset addsimps [empty_lepollI]
  47.222                                setloop split_tac [expand_if]) 1);
  47.223 -by (fast_tac (AC_cs
  47.224 +by (fast_tac (!claset
  47.225          addSDs [le_imp_subset RS subset_imp_lepoll RS lepoll_0_is_0]
  47.226          addSIs [singleton_eqpoll_1 RS eqpoll_imp_lepoll RS lepoll_trans,
  47.227                  not_lt_imp_le RS le_imp_subset RS subset_imp_lepoll,
  47.228 @@ -277,11 +277,11 @@
  47.229      "!!m. [| ALL b<a. f`b lepoll succ(m);  g<a;  m:nat;  vv2(f,b,g,d) <= f`g  \
  47.230  \         |] ==> ww2(f,b,g,d) lepoll m";
  47.231  by (excluded_middle_tac "f`g = 0" 1);
  47.232 -by (asm_simp_tac (OrdQuant_ss addsimps [empty_lepollI]) 2);
  47.233 +by (asm_simp_tac (!simpset addsimps [empty_lepollI]) 2);
  47.234  by (dtac ospec 1 THEN (assume_tac 1));
  47.235  by (rtac Diff_lepoll 1
  47.236          THEN (TRYALL assume_tac));
  47.237 -by (asm_simp_tac (OrdQuant_ss addsimps [vv2_def, expand_if, not_emptyI]) 1);
  47.238 +by (asm_simp_tac (!simpset addsimps [vv2_def, expand_if, not_emptyI]) 1);
  47.239  val ww2_lepoll = result();
  47.240  
  47.241  goalw thy [gg2_def]
  47.242 @@ -290,10 +290,10 @@
  47.243  \            ALL b<a. f`b lepoll succ(m);  y*y <= y;                    \
  47.244  \            (UN b<a. f`b)=y;  b<a;  s:f`b;  m:nat;  m~= 0;  g<a++a     \
  47.245  \         |] ==> gg2(f,a,b,s) ` g lepoll m";
  47.246 -by (asm_simp_tac OrdQuant_ss 1);
  47.247 -by (safe_tac (OrdQuant_cs addSEs [lt_oadd_odiff_cases, lt_Ord2]));
  47.248 -by (asm_simp_tac (OrdQuant_ss addsimps [vv2_lepoll]) 1);
  47.249 -by (asm_simp_tac (ZF_ss addsimps [ww2_lepoll, vv2_subset]) 1);
  47.250 +by (Asm_simp_tac 1);
  47.251 +by (safe_tac (!claset addSEs [lt_oadd_odiff_cases, lt_Ord2]));
  47.252 +by (asm_simp_tac (!simpset addsimps [vv2_lepoll]) 1);
  47.253 +by (asm_simp_tac (!simpset addsimps [ww2_lepoll, vv2_subset]) 1);
  47.254  val gg2_lepoll_m = result();
  47.255  
  47.256  (* ********************************************************************** *)
  47.257 @@ -305,9 +305,9 @@
  47.258  by (resolve_tac [quant_domain_uu_lepoll_m RS cases RS disjE] 1
  47.259      THEN (assume_tac 1));
  47.260  (* case 1 *)
  47.261 -by (asm_full_simp_tac (ZF_ss addsimps [lesspoll_succ_iff]) 1);
  47.262 +by (asm_full_simp_tac (!simpset addsimps [lesspoll_succ_iff]) 1);
  47.263  by (res_inst_tac [("x","a++a")] exI 1);
  47.264 -by (fast_tac (OrdQuant_cs addSIs [Ord_oadd, domain_gg1, UN_gg1_eq, 
  47.265 +by (fast_tac (!claset addSIs [Ord_oadd, domain_gg1, UN_gg1_eq, 
  47.266                                    gg1_lepoll_m]) 1);
  47.267  (* case 2 *)
  47.268  by (REPEAT (eresolve_tac [oexE, conjE] 1));
  47.269 @@ -318,7 +318,7 @@
  47.270  by (res_inst_tac [("x","gg2(f,a,b,x)")] exI 1);
  47.271  (*Calling fast_tac might get rid of the res_inst_tac calls, but it
  47.272    is just too slow.*)
  47.273 -by (asm_simp_tac (OrdQuant_ss addsimps 
  47.274 +by (asm_simp_tac (!simpset addsimps 
  47.275                    [Ord_oadd, domain_gg2, UN_gg2_eq, gg2_lepoll_m]) 1);
  47.276  val lemma_ii = result();
  47.277  
  47.278 @@ -333,14 +333,14 @@
  47.279  
  47.280  goal thy "ALL n:nat. rec(n, x, %k r. r Un r*r) <=  \
  47.281  \                    rec(succ(n), x, %k r. r Un r*r)";
  47.282 -by (fast_tac (ZF_cs addIs [rec_succ RS ssubst]) 1);
  47.283 +by (fast_tac (!claset addIs [rec_succ RS ssubst]) 1);
  47.284  val z_n_subset_z_succ_n = result();
  47.285  
  47.286  goal thy "!!n. [| ALL n:nat. f(n)<=f(succ(n)); n le m; n : nat; m: nat |]  \
  47.287  \              ==> f(n)<=f(m)";
  47.288 -by (res_inst_tac [("P","n le m")] impE 1 THEN (REPEAT (assume_tac 2)));
  47.289 +by (eres_inst_tac [("P","n le m")] rev_mp 1);
  47.290  by (res_inst_tac [("P","%z. n le z --> f(n) <= f(z)")] nat_induct 1);
  47.291 -by (REPEAT (fast_tac lt_cs 1));
  47.292 +by (REPEAT (fast_tac le_cs 1));
  47.293  val le_subsets = result();
  47.294  
  47.295  goal thy "!!n m. [| n le m; m:nat |] ==>  \
  47.296 @@ -353,13 +353,14 @@
  47.297  
  47.298  goal thy "EX y. x Un y*y <= y";
  47.299  by (res_inst_tac [("x","UN n:nat. rec(n, x, %k r. r Un r*r)")] exI 1);
  47.300 -by (safe_tac ZF_cs);
  47.301 -by (fast_tac (ZF_cs addSIs [nat_0I] addss nat_ss) 1);
  47.302 +by (safe_tac (!claset));
  47.303 +br (nat_0I RS UN_I) 1;
  47.304 +by (Asm_simp_tac 1);
  47.305  by (res_inst_tac [("a","succ(n Un na)")] UN_I 1);
  47.306  by (eresolve_tac [Un_nat_type RS nat_succI] 1 THEN (assume_tac 1));
  47.307  by (fast_tac (ZF_cs addIs [le_imp_rec_subset RS subsetD]
  47.308                  addSIs [Un_upper1_le, Un_upper2_le, Un_nat_type]
  47.309 -                addSEs [nat_into_Ord] addss nat_ss) 1);
  47.310 +                addSEs [nat_into_Ord] addss (!simpset)) 1);
  47.311  val lemma_iv = result();
  47.312  
  47.313  (* ********************************************************************** *)
  47.314 @@ -387,13 +388,13 @@
  47.315  
  47.316  goal thy "!!f. [| (UN b<a. f`b)=y; x:y; ALL b<a. f`b lepoll 1; Ord(a) |]  \
  47.317  \               ==> EX c<a. f`c = {x}";
  47.318 -by (fast_tac (AC_cs addSEs [lepoll_1_is_sing]) 1);
  47.319 +by (fast_tac (!claset addSEs [lepoll_1_is_sing]) 1);
  47.320  val lemma1 = result();
  47.321  
  47.322  goal thy "!!f. [| (UN b<a. f`b)=y; x:y; ALL b<a. f`b lepoll 1; Ord(a) |]  \
  47.323  \               ==> f` (LEAST i. f`i = {x}) = {x}";
  47.324  by (dtac lemma1 1 THEN REPEAT (assume_tac 1));
  47.325 -by (fast_tac (AC_cs addSEs [lt_Ord] addIs [LeastI]) 1);
  47.326 +by (fast_tac (!claset addSEs [lt_Ord] addIs [LeastI]) 1);
  47.327  val lemma2 = result();
  47.328  
  47.329  goalw thy [NN_def] "!!y. 1 : NN(y) ==> EX a f. Ord(a) & f:inj(y, a)";
  47.330 @@ -404,14 +405,14 @@
  47.331  by (rtac conjI 1 THEN (assume_tac 1));
  47.332  by (res_inst_tac [("d","%i. THE x. x:f`i")] lam_injective 1);
  47.333  by (dtac lemma1 1 THEN REPEAT (assume_tac 1));
  47.334 -by (fast_tac (AC_cs addSEs [Least_le RS lt_trans1 RS ltD, lt_Ord]) 1);
  47.335 +by (fast_tac (!claset addSEs [Least_le RS lt_trans1 RS ltD, lt_Ord]) 1);
  47.336  by (resolve_tac [lemma2 RS ssubst] 1 THEN REPEAT (assume_tac 1));
  47.337 -by (fast_tac (ZF_cs addSIs [the_equality]) 1);
  47.338 +by (fast_tac (!claset addSIs [the_equality]) 1);
  47.339  val NN_imp_ex_inj = result();
  47.340  
  47.341  goal thy "!!y. [| y*y <= y; 1 : NN(y) |] ==> EX r. well_ord(y, r)";
  47.342  by (dtac NN_imp_ex_inj 1);
  47.343 -by (fast_tac (ZF_cs addSEs [well_ord_Memrel RSN (2,  well_ord_rvimage)]) 1);
  47.344 +by (fast_tac (!claset addSEs [well_ord_Memrel RSN (2,  well_ord_rvimage)]) 1);
  47.345  val y_well_ord = result();
  47.346  
  47.347  (* ********************************************************************** *)
  47.348 @@ -423,10 +424,10 @@
  47.349  \       ==> n~=0 --> P(n) --> P(1)";
  47.350  by (res_inst_tac [("n","n")] nat_induct 1);
  47.351  by (rtac prem1 1);
  47.352 -by (fast_tac ZF_cs 1);
  47.353 +by (Fast_tac 1);
  47.354  by (excluded_middle_tac "x=0" 1);
  47.355 -by (fast_tac ZF_cs 2);
  47.356 -by (fast_tac (ZF_cs addSIs [prem2]) 1);
  47.357 +by (Fast_tac 2);
  47.358 +by (fast_tac (!claset addSIs [prem2]) 1);
  47.359  val rev_induct_lemma = result();
  47.360  
  47.361  val prems = goal thy
  47.362 @@ -453,21 +454,21 @@
  47.363  
  47.364  (* another helpful lemma *)
  47.365  goalw thy [NN_def] "!!y. 0:NN(y) ==> y=0";
  47.366 -by (fast_tac (AC_cs addSIs [equalityI] 
  47.367 +by (fast_tac (!claset addSIs [equalityI] 
  47.368                      addSDs [lepoll_0_is_0] addEs [subst]) 1);
  47.369  val NN_y_0 = result();
  47.370  
  47.371  goalw thy [WO1_def] "!!Z. WO6 ==> WO1";
  47.372  by (rtac allI 1);
  47.373  by (excluded_middle_tac "A=0" 1);
  47.374 -by (fast_tac (ZF_cs addSIs [well_ord_Memrel, nat_0I RS nat_into_Ord]) 2);
  47.375 +by (fast_tac (!claset addSIs [well_ord_Memrel, nat_0I RS nat_into_Ord]) 2);
  47.376  by (res_inst_tac [("x1","A")] (lemma_iv RS revcut_rl) 1);
  47.377  by (etac exE 1);
  47.378  by (dtac WO6_imp_NN_not_empty 1);
  47.379  by (eresolve_tac [Un_subset_iff RS iffD1 RS conjE] 1);
  47.380  by (eres_inst_tac [("A","NN(y)")] not_emptyE 1);
  47.381  by (forward_tac [y_well_ord] 1);
  47.382 -by (fast_tac (ZF_cs addEs [well_ord_subset]) 2);
  47.383 -by (fast_tac (ZF_cs addSIs [lemma3] addSDs [NN_y_0] addSEs [not_emptyE]) 1);
  47.384 +by (fast_tac (!claset addEs [well_ord_subset]) 2);
  47.385 +by (fast_tac (!claset addSIs [lemma3] addSDs [NN_y_0] addSEs [not_emptyE]) 1);
  47.386  qed "WO6_imp_WO1";
  47.387  
    48.1 --- a/src/ZF/AC/WO_AC.ML	Fri Jan 03 10:48:28 1997 +0100
    48.2 +++ b/src/ZF/AC/WO_AC.ML	Fri Jan 03 15:01:55 1997 +0100
    48.3 @@ -9,14 +9,14 @@
    48.4  
    48.5  goal thy "!!A. [| well_ord(Union(A),r); 0~:A; B:A |]  \
    48.6  \               ==> (THE b. first(b,B,r)) : B";
    48.7 -by (fast_tac (AC_cs addSEs [well_ord_imp_ex1_first RS theI RS
    48.8 +by (fast_tac (!claset addSEs [well_ord_imp_ex1_first RS theI RS
    48.9                  (first_def RS def_imp_iff RS iffD1 RS conjunct1)]) 1);
   48.10  val first_in_B = result();
   48.11  
   48.12  goal thy "!!A. [| well_ord(Union(A), R); 0~:A |] ==> EX f. f:(PROD X:A. X)";
   48.13 -by (fast_tac (AC_cs addSEs [first_in_B] addSIs [lam_type]) 1);
   48.14 +by (fast_tac (!claset addSEs [first_in_B] addSIs [lam_type]) 1);
   48.15  val ex_choice_fun = result();
   48.16  
   48.17  goal thy "!!A. well_ord(A, R) ==> EX f. f:(PROD X: Pow(A)-{0}. X)";
   48.18 -by (fast_tac (AC_cs addSEs [well_ord_subset RS ex_choice_fun]) 1);
   48.19 +by (fast_tac (!claset addSEs [well_ord_subset RS ex_choice_fun]) 1);
   48.20  val ex_choice_fun_Pow = result();
    49.1 --- a/src/ZF/AC/WO_AC.thy	Fri Jan 03 10:48:28 1997 +0100
    49.2 +++ b/src/ZF/AC/WO_AC.thy	Fri Jan 03 15:01:55 1997 +0100
    49.3 @@ -1,3 +1,3 @@
    49.4  (*Dummy theory to document dependencies *)
    49.5  
    49.6 -WO_AC = Order + first
    49.7 +WO_AC = Order
    50.1 --- a/src/ZF/AC/first.ML	Fri Jan 03 10:48:28 1997 +0100
    50.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    50.3 @@ -1,29 +0,0 @@
    50.4 -(*  Title:      ZF/AC/first.ML
    50.5 -    ID:         $Id$
    50.6 -    Author:     Krzysztof Grabczewski
    50.7 -
    50.8 -Lemmas involving the first element of a well ordered set
    50.9 -*)
   50.10 -
   50.11 -open first;
   50.12 -
   50.13 -goalw thy [first_def] "!!b. first(b,B,r) ==> b:B";
   50.14 -by (fast_tac AC_cs 1);
   50.15 -val first_is_elem = result();
   50.16 -
   50.17 -goalw thy [well_ord_def, wf_on_def, wf_def,     first_def] 
   50.18 -        "!!r. [| well_ord(A,r); B<=A; B~=0 |] ==> (EX! b. first(b,B,r))";
   50.19 -by (REPEAT (eresolve_tac [conjE,allE,disjE] 1));
   50.20 -by (contr_tac 1);
   50.21 -by (etac bexE 1);
   50.22 -by (res_inst_tac [("a","x")] ex1I 1);
   50.23 -by (fast_tac ZF_cs 2);
   50.24 -by (rewrite_goals_tac [tot_ord_def, linear_def]);
   50.25 -by (fast_tac ZF_cs 1);
   50.26 -val well_ord_imp_ex1_first = result();
   50.27 -
   50.28 -goal thy "!!r. [| well_ord(A,r); B<=A; B~=0 |] ==> (THE b. first(b,B,r)) : B";
   50.29 -by (dtac well_ord_imp_ex1_first 1 THEN REPEAT (assume_tac 1));
   50.30 -by (rtac first_is_elem 1);
   50.31 -by (etac theI 1);
   50.32 -val the_first_in = result();
    51.1 --- a/src/ZF/AC/first.thy	Fri Jan 03 10:48:28 1997 +0100
    51.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    51.3 @@ -1,18 +0,0 @@
    51.4 -(*  Title:      ZF/AC/first.thy
    51.5 -    ID:         $Id$
    51.6 -    Author:     Krzysztof Grabczewski
    51.7 -
    51.8 -Theory helpful in proofs using first element of a well ordered set
    51.9 -*)
   51.10 -
   51.11 -first = Order +
   51.12 -
   51.13 -consts
   51.14 -
   51.15 -  first                   :: [i, i, i] => o
   51.16 -
   51.17 -defs
   51.18 -
   51.19 -  first_def                "first(u, X, R) 
   51.20 -                            == u:X & (ALL v:X. v~=u --> <u,v> : R)"
   51.21 -end
    52.1 --- a/src/ZF/AC/recfunAC16.ML	Fri Jan 03 10:48:28 1997 +0100
    52.2 +++ b/src/ZF/AC/recfunAC16.ML	Fri Jan 03 15:01:55 1997 +0100
    52.3 @@ -33,15 +33,15 @@
    52.4  (* ********************************************************************** *)
    52.5  
    52.6  val [prem1, prem2] = goal thy 
    52.7 -    "[| !!g r. r <= B(g,r); Ord(i) |]  \
    52.8 +    "[| !!g r. r <= B(g,r);  Ord(i) |]  \
    52.9  \       ==> j<i --> transrec2(j, 0, B) <= transrec2(i, 0, B)";
   52.10  by (resolve_tac [prem2 RS trans_induct] 1);
   52.11  by (rtac Ord_cases 1 THEN (REPEAT (assume_tac 1)));
   52.12 -by (fast_tac lt_cs 1);
   52.13 -by (asm_simp_tac (AC_ss addsimps [transrec2_succ]) 1);
   52.14 +by (Fast_tac 1);
   52.15 +by (Asm_simp_tac 1);
   52.16  by (fast_tac (FOL_cs addSIs [succI1, prem1]
   52.17          addSEs [ballE, leE, prem1 RSN (2, subset_trans)]) 1);
   52.18 -by (fast_tac (AC_cs addIs [OUN_I, ltI]
   52.19 +by (fast_tac (!claset addIs [OUN_I, ltI]
   52.20          addSEs [Limit_has_succ RS ltE, succI1 RSN (2, Ord_in_Ord) RS le_refl,
   52.21                  transrec2_Limit RS ssubst]) 1);
   52.22  val transrec2_mono_lemma = result();
   52.23 @@ -50,7 +50,7 @@
   52.24  \       ==> transrec2(j, 0, B) <= transrec2(i, 0, B)";
   52.25  by (resolve_tac [prem2 RS leE] 1);
   52.26  by (resolve_tac [transrec2_mono_lemma RS impE] 1);
   52.27 -by (TRYALL (fast_tac (AC_cs addSIs [prem1, prem2, lt_Ord2])));
   52.28 +by (TRYALL (fast_tac (!claset addSIs [prem1, prem2, lt_Ord2])));
   52.29  val transrec2_mono = result();
   52.30  
   52.31  (* ********************************************************************** *)
   52.32 @@ -60,6 +60,6 @@
   52.33  goalw thy [recfunAC16_def]
   52.34          "!!i. i le j ==> recfunAC16(f, g, i, a) <= recfunAC16(f, g, j, a)";
   52.35  by (rtac transrec2_mono 1);
   52.36 -by (REPEAT (fast_tac (AC_cs addIs [expand_if RS iffD2]) 1));
   52.37 +by (REPEAT (fast_tac (!claset addIs [expand_if RS iffD2]) 1));
   52.38  val recfunAC16_mono = result();
   52.39  
    53.1 --- a/src/ZF/AC/recfunAC16.thy	Fri Jan 03 10:48:28 1997 +0100
    53.2 +++ b/src/ZF/AC/recfunAC16.thy	Fri Jan 03 15:01:55 1997 +0100
    53.3 @@ -5,15 +5,11 @@
    53.4  A recursive definition used in the proof of WO2 ==> AC16
    53.5  *)
    53.6  
    53.7 -recfunAC16 = Transrec2 + Cardinal +
    53.8 -
    53.9 -consts
   53.10 +recfunAC16 = Cardinal + Epsilon +
   53.11  
   53.12 -  recfunAC16              :: [i, i, i, i] => i
   53.13 +constdefs
   53.14 +  recfunAC16 :: [i, i, i, i] => i
   53.15  
   53.16 -defs
   53.17 -
   53.18 -  recfunAC16_def
   53.19      "recfunAC16(f,fa,i,a) == 
   53.20           transrec2(i, 0, 
   53.21                %g r. if(EX y:r. fa`g <= y, r, 
    54.1 --- a/src/ZF/AC/rel_is_fun.ML	Fri Jan 03 10:48:28 1997 +0100
    54.2 +++ b/src/ZF/AC/rel_is_fun.ML	Fri Jan 03 15:01:55 1997 +0100
    54.3 @@ -15,36 +15,28 @@
    54.4  by (res_inst_tac [("x",
    54.5          "lam x:domain(u). LEAST i. EX y. <x,y> : u & f`<x,y> = i")] exI 1);
    54.6  by (res_inst_tac [("d","%y. fst(converse(f)`y)")] lam_injective 1);
    54.7 -by (fast_tac (ZF_cs addIs [LeastI2, nat_into_Ord RS Ord_in_Ord,
    54.8 +by (fast_tac (!claset addIs [LeastI2, nat_into_Ord RS Ord_in_Ord,
    54.9                          inj_is_fun RS apply_type]) 1);
   54.10  by (etac domainE 1);
   54.11  by (forward_tac [inj_is_fun RS apply_type] 1 THEN (atac 1));
   54.12  by (rtac LeastI2 1);
   54.13 -by (REPEAT (fast_tac (ZF_cs addIs [fst_conv, left_inverse RS ssubst]
   54.14 +by (REPEAT (fast_tac (!claset addIs [fst_conv, left_inverse RS ssubst]
   54.15                          addSEs [nat_into_Ord RS Ord_in_Ord]) 1));
   54.16  val lepoll_m_imp_domain_lepoll_m = result();
   54.17  
   54.18 -goal ZF.thy "!!r. [| <a,c> : r; c~=b |] ==> domain(r-{<a,b>}) = domain(r)";
   54.19 -by (rtac equalityI 1);
   54.20 -by (fast_tac (ZF_cs addSIs [domain_mono]) 1);
   54.21 -by (rtac subsetI 1);
   54.22 -by (excluded_middle_tac "x = a" 1);
   54.23 -by (REPEAT (fast_tac ZF_cs 1));
   54.24 -val domain_Diff_eq_domain = result();
   54.25 -
   54.26  goalw Cardinal.thy [function_def]
   54.27      "!!r. [| succ(m) lepoll domain(r); r lepoll succ(m); m:nat |] ==> \
   54.28  \         function(r)";
   54.29 -by (safe_tac ZF_cs);
   54.30 +by (safe_tac (!claset));
   54.31  by (resolve_tac [excluded_middle RS disjE] 1 THEN (atac 2));
   54.32 -by (fast_tac (ZF_cs addSEs [lepoll_trans RS succ_lepoll_natE, 
   54.33 +by (fast_tac (!claset addSEs [lepoll_trans RS succ_lepoll_natE, 
   54.34                          Diff_sing_lepoll RSN (2, lepoll_m_imp_domain_lepoll_m)]
   54.35 -                addEs [not_sym RSN (2, domain_Diff_eq_domain) RS subst]) 1);
   54.36 +                addEs [not_sym RSN (2, domain_Diff_eq) RS subst]) 1);
   54.37  val rel_domain_ex1 = result();
   54.38  
   54.39  goal Cardinal.thy
   54.40      "!!r. [| succ(m) lepoll domain(r);  r lepoll succ(m);  m:nat;  \
   54.41  \            r<=A*B; A=domain(r) |] ==> r: A->B";
   54.42  by (hyp_subst_tac 1);
   54.43 -by (asm_simp_tac (ZF_ss addsimps [Pi_iff, rel_domain_ex1]) 1);
   54.44 +by (asm_simp_tac (!simpset addsimps [Pi_iff, rel_domain_ex1]) 1);
   54.45  val rel_is_fun = result();
    55.1 --- a/src/ZF/AC/rel_is_fun.thy	Fri Jan 03 10:48:28 1997 +0100
    55.2 +++ b/src/ZF/AC/rel_is_fun.thy	Fri Jan 03 15:01:55 1997 +0100
    55.3 @@ -1,3 +1,1 @@
    55.4 -(*Dummy theory to document dependencies *)
    55.5 -
    55.6 -rel_is_fun = "Cardinal"
    55.7 +rel_is_fun = Cardinal
    56.1 --- a/src/ZF/Arith.ML	Fri Jan 03 10:48:28 1997 +0100
    56.2 +++ b/src/ZF/Arith.ML	Fri Jan 03 15:01:55 1997 +0100
    56.3 @@ -29,9 +29,11 @@
    56.4  
    56.5  goal Arith.thy "rec(succ(m),a,b) = b(m, rec(m,a,b))";
    56.6  by (rtac rec_trans 1);
    56.7 -by (simp_tac (ZF_ss addsimps [nat_case_succ, nat_succI]) 1);
    56.8 +by (Simp_tac 1);
    56.9  qed "rec_succ";
   56.10  
   56.11 +Addsimps [rec_0, rec_succ];
   56.12 +
   56.13  val major::prems = goal Arith.thy
   56.14      "[| n: nat;  \
   56.15  \       a: C(0);  \
   56.16 @@ -39,22 +41,17 @@
   56.17  \    |] ==> rec(n,a,b) : C(n)";
   56.18  by (rtac (major RS nat_induct) 1);
   56.19  by (ALLGOALS
   56.20 -    (asm_simp_tac (ZF_ss addsimps (prems@[rec_0,rec_succ]))));
   56.21 +    (asm_simp_tac (!simpset addsimps prems)));
   56.22  qed "rec_type";
   56.23  
   56.24 +Addsimps [rec_type, nat_0_le, nat_le_refl];
   56.25  val nat_typechecks = [rec_type, nat_0I, nat_1I, nat_succI, Ord_nat];
   56.26  
   56.27 -val nat_simps = [rec_0, rec_succ, not_lt0, nat_0_le, le0_iff, succ_le_iff,
   56.28 -                 nat_le_refl];
   56.29 -
   56.30 -val nat_ss = ZF_ss addsimps (nat_simps @ nat_typechecks);
   56.31 -
   56.32 -
   56.33  goal Arith.thy "!!k. [| 0<k; k: nat |] ==> EX j: nat. k = succ(j)";
   56.34  by (etac rev_mp 1);
   56.35  by (etac nat_induct 1);
   56.36 -by (simp_tac nat_ss 1);
   56.37 -by (fast_tac ZF_cs 1);
   56.38 +by (Simp_tac 1);
   56.39 +by (Fast_tac 1);
   56.40  val lemma = result();
   56.41  
   56.42  (* [| 0 < k; k: nat; !!j. [| j: nat; k = succ(j) |] ==> Q |] ==> Q *)
   56.43 @@ -75,6 +72,8 @@
   56.44      "succ(m) #+ n = succ(m #+ n)"
   56.45   (fn _=> [ (rtac rec_succ 1) ]); 
   56.46  
   56.47 +Addsimps [add_0, add_succ];
   56.48 +
   56.49  (** Multiplication **)
   56.50  
   56.51  qed_goalw "mult_type" Arith.thy [mult_def]
   56.52 @@ -90,6 +89,8 @@
   56.53      "succ(m) #* n = n #+ (m #* n)"
   56.54   (fn _ => [ (rtac rec_succ 1) ]); 
   56.55  
   56.56 +Addsimps [mult_0, mult_succ];
   56.57 +
   56.58  (** Difference **)
   56.59  
   56.60  qed_goalw "diff_type" Arith.thy [diff_def]
   56.61 @@ -104,35 +105,32 @@
   56.62      "n:nat ==> 0 #- n = 0"
   56.63   (fn [prem]=>
   56.64    [ (rtac (prem RS nat_induct) 1),
   56.65 -    (ALLGOALS (asm_simp_tac nat_ss)) ]);
   56.66 +    (ALLGOALS (Asm_simp_tac)) ]);
   56.67  
   56.68  (*Must simplify BEFORE the induction!!  (Else we get a critical pair)
   56.69    succ(m) #- succ(n)   rewrites to   pred(succ(m) #- n)  *)
   56.70  qed_goalw "diff_succ_succ" Arith.thy [diff_def]
   56.71      "[| m:nat;  n:nat |] ==> succ(m) #- succ(n) = m #- n"
   56.72   (fn prems=>
   56.73 -  [ (asm_simp_tac (nat_ss addsimps prems) 1),
   56.74 +  [ (asm_simp_tac (!simpset addsimps prems) 1),
   56.75      (nat_ind_tac "n" prems 1),
   56.76 -    (ALLGOALS (asm_simp_tac (nat_ss addsimps prems))) ]);
   56.77 +    (ALLGOALS (asm_simp_tac (!simpset addsimps prems))) ]);
   56.78 +
   56.79 +Addsimps [diff_0, diff_0_eq_0, diff_succ_succ];
   56.80  
   56.81  val prems = goal Arith.thy 
   56.82      "[| m:nat;  n:nat |] ==> m #- n le m";
   56.83  by (rtac (prems MRS diff_induct) 1);
   56.84  by (etac leE 3);
   56.85  by (ALLGOALS
   56.86 -    (asm_simp_tac
   56.87 -     (nat_ss addsimps (prems @ [le_iff, diff_0, diff_0_eq_0, 
   56.88 -                                diff_succ_succ, nat_into_Ord]))));
   56.89 +    (asm_simp_tac (!simpset addsimps (prems @ [le_iff, nat_into_Ord]))));
   56.90  qed "diff_le_self";
   56.91  
   56.92  (*** Simplification over add, mult, diff ***)
   56.93  
   56.94  val arith_typechecks = [add_type, mult_type, diff_type];
   56.95 -val arith_simps = [add_0, add_succ,
   56.96 -                   mult_0, mult_succ,
   56.97 -                   diff_0, diff_0_eq_0, diff_succ_succ];
   56.98 +Addsimps arith_typechecks;
   56.99  
  56.100 -val arith_ss = nat_ss addsimps (arith_simps@arith_typechecks);
  56.101  
  56.102  (*** Addition ***)
  56.103  
  56.104 @@ -141,7 +139,7 @@
  56.105      "m:nat ==> (m #+ n) #+ k = m #+ (n #+ k)"
  56.106   (fn prems=>
  56.107    [ (nat_ind_tac "m" prems 1),
  56.108 -    (ALLGOALS (asm_simp_tac (arith_ss addsimps prems))) ]);
  56.109 +    (ALLGOALS (asm_simp_tac (!simpset addsimps prems))) ]);
  56.110  
  56.111  (*The following two lemmas are used for add_commute and sometimes
  56.112    elsewhere, since they are safe for rewriting.*)
  56.113 @@ -149,26 +147,27 @@
  56.114      "m:nat ==> m #+ 0 = m"
  56.115   (fn prems=>
  56.116    [ (nat_ind_tac "m" prems 1),
  56.117 -    (ALLGOALS (asm_simp_tac (arith_ss addsimps prems))) ]); 
  56.118 +    (ALLGOALS (asm_simp_tac (!simpset addsimps prems))) ]); 
  56.119  
  56.120  qed_goal "add_succ_right" Arith.thy
  56.121      "m:nat ==> m #+ succ(n) = succ(m #+ n)"
  56.122   (fn prems=>
  56.123    [ (nat_ind_tac "m" prems 1),
  56.124 -    (ALLGOALS (asm_simp_tac (arith_ss addsimps prems))) ]); 
  56.125 +    (ALLGOALS (asm_simp_tac (!simpset addsimps prems))) ]); 
  56.126 +
  56.127 +Addsimps [add_0_right, add_succ_right];
  56.128  
  56.129  (*Commutative law for addition*)  
  56.130  qed_goal "add_commute" Arith.thy 
  56.131      "!!m n. [| m:nat;  n:nat |] ==> m #+ n = n #+ m"
  56.132   (fn _ =>
  56.133    [ (nat_ind_tac "n" [] 1),
  56.134 -    (ALLGOALS
  56.135 -     (asm_simp_tac (arith_ss addsimps [add_0_right, add_succ_right]))) ]);
  56.136 +    (ALLGOALS Asm_simp_tac) ]);
  56.137  
  56.138  (*for a/c rewriting*)
  56.139  qed_goal "add_left_commute" Arith.thy
  56.140      "!!m n k. [| m:nat;  n:nat |] ==> m#+(n#+k)=n#+(m#+k)"
  56.141 - (fn _ => [asm_simp_tac (ZF_ss addsimps [add_assoc RS sym, add_commute]) 1]);
  56.142 + (fn _ => [asm_simp_tac(!simpset addsimps [add_assoc RS sym, add_commute]) 1]);
  56.143  
  56.144  (*Addition is an AC-operator*)
  56.145  val add_ac = [add_assoc, add_commute, add_left_commute];
  56.146 @@ -178,7 +177,7 @@
  56.147      "[| k #+ m = k #+ n;  k:nat |] ==> m=n";
  56.148  by (rtac (eqn RS rev_mp) 1);
  56.149  by (nat_ind_tac "k" [knat] 1);
  56.150 -by (ALLGOALS (simp_tac arith_ss));
  56.151 +by (ALLGOALS (Simp_tac));
  56.152  qed "add_left_cancel";
  56.153  
  56.154  (*** Multiplication ***)
  56.155 @@ -188,53 +187,53 @@
  56.156      "!!m. m:nat ==> m #* 0 = 0"
  56.157   (fn _=>
  56.158    [ (nat_ind_tac "m" [] 1),
  56.159 -    (ALLGOALS (asm_simp_tac arith_ss))  ]);
  56.160 +    (ALLGOALS (Asm_simp_tac))  ]);
  56.161  
  56.162  (*right successor law for multiplication*)
  56.163  qed_goal "mult_succ_right" Arith.thy 
  56.164      "!!m n. [| m:nat;  n:nat |] ==> m #* succ(n) = m #+ (m #* n)"
  56.165   (fn _ =>
  56.166    [ (nat_ind_tac "m" [] 1),
  56.167 -    (ALLGOALS (asm_simp_tac (arith_ss addsimps add_ac))) ]);
  56.168 +    (ALLGOALS (asm_simp_tac (!simpset addsimps add_ac))) ]);
  56.169 +
  56.170 +Addsimps [mult_0_right, mult_succ_right];
  56.171  
  56.172  goal Arith.thy "!!n. n:nat ==> 1 #* n = n";
  56.173 -by (asm_simp_tac (arith_ss addsimps [add_0_right]) 1);
  56.174 +by (Asm_simp_tac 1);
  56.175  qed "mult_1";
  56.176  
  56.177  goal Arith.thy "!!n. n:nat ==> n #* 1 = n";
  56.178 -by (asm_simp_tac (arith_ss addsimps [mult_0_right, add_0_right, 
  56.179 -                                     mult_succ_right]) 1);
  56.180 +by (Asm_simp_tac 1);
  56.181  qed "mult_1_right";
  56.182  
  56.183  (*Commutative law for multiplication*)
  56.184  qed_goal "mult_commute" Arith.thy 
  56.185 -    "[| m:nat;  n:nat |] ==> m #* n = n #* m"
  56.186 - (fn prems=>
  56.187 -  [ (nat_ind_tac "m" prems 1),
  56.188 -    (ALLGOALS (asm_simp_tac
  56.189 -             (arith_ss addsimps (prems@[mult_0_right, mult_succ_right])))) ]);
  56.190 +    "!!m n. [| m:nat;  n:nat |] ==> m #* n = n #* m"
  56.191 + (fn _=>
  56.192 +  [ (nat_ind_tac "m" [] 1),
  56.193 +    (ALLGOALS Asm_simp_tac) ]);
  56.194  
  56.195  (*addition distributes over multiplication*)
  56.196  qed_goal "add_mult_distrib" Arith.thy 
  56.197      "!!m n. [| m:nat;  k:nat |] ==> (m #+ n) #* k = (m #* k) #+ (n #* k)"
  56.198   (fn _=>
  56.199    [ (etac nat_induct 1),
  56.200 -    (ALLGOALS (asm_simp_tac (arith_ss addsimps [add_assoc RS sym]))) ]);
  56.201 +    (ALLGOALS (asm_simp_tac (!simpset addsimps [add_assoc RS sym]))) ]);
  56.202  
  56.203  (*Distributive law on the left; requires an extra typing premise*)
  56.204  qed_goal "add_mult_distrib_left" Arith.thy 
  56.205      "!!m. [| m:nat;  n:nat;  k:nat |] ==> k #* (m #+ n) = (k #* m) #+ (k #* n)"
  56.206   (fn prems=>
  56.207    [ (nat_ind_tac "m" [] 1),
  56.208 -    (asm_simp_tac (arith_ss addsimps [mult_0_right]) 1),
  56.209 -    (asm_simp_tac (arith_ss addsimps ([mult_succ_right] @ add_ac)) 1) ]);
  56.210 +    (Asm_simp_tac 1),
  56.211 +    (asm_simp_tac (!simpset addsimps add_ac) 1) ]);
  56.212  
  56.213  (*Associative law for multiplication*)
  56.214  qed_goal "mult_assoc" Arith.thy 
  56.215      "!!m n k. [| m:nat;  n:nat;  k:nat |] ==> (m #* n) #* k = m #* (n #* k)"
  56.216   (fn _=>
  56.217    [ (etac nat_induct 1),
  56.218 -    (ALLGOALS (asm_simp_tac (arith_ss addsimps [add_mult_distrib]))) ]);
  56.219 +    (ALLGOALS (asm_simp_tac (!simpset addsimps [add_mult_distrib]))) ]);
  56.220  
  56.221  (*for a/c rewriting*)
  56.222  qed_goal "mult_left_commute" Arith.thy 
  56.223 @@ -253,7 +252,7 @@
  56.224      "m:nat ==> m #- m = 0"
  56.225   (fn prems=>
  56.226    [ (nat_ind_tac "m" prems 1),
  56.227 -    (ALLGOALS (asm_simp_tac (arith_ss addsimps prems))) ]);
  56.228 +    (ALLGOALS (asm_simp_tac (!simpset addsimps prems))) ]);
  56.229  
  56.230  (*Addition is the inverse of subtraction*)
  56.231  goal Arith.thy "!!m n. [| n le m;  m:nat |] ==> n #+ (m#-n) = m";
  56.232 @@ -261,7 +260,7 @@
  56.233  by (etac nat_succI 1);
  56.234  by (etac rev_mp 1);
  56.235  by (res_inst_tac [("m","m"),("n","n")] diff_induct 1);
  56.236 -by (ALLGOALS (asm_simp_tac arith_ss));
  56.237 +by (ALLGOALS Asm_simp_tac);
  56.238  qed "add_diff_inverse";
  56.239  
  56.240  (*Proof is IDENTICAL to that above*)
  56.241 @@ -270,7 +269,7 @@
  56.242  by (etac nat_succI 1);
  56.243  by (etac rev_mp 1);
  56.244  by (res_inst_tac [("m","m"),("n","n")] diff_induct 1);
  56.245 -by (ALLGOALS (asm_simp_tac arith_ss));
  56.246 +by (ALLGOALS Asm_simp_tac);
  56.247  qed "diff_succ";
  56.248  
  56.249  (** Subtraction is the inverse of addition. **)
  56.250 @@ -278,7 +277,7 @@
  56.251  val [mnat,nnat] = goal Arith.thy
  56.252      "[| m:nat;  n:nat |] ==> (n#+m) #- n = m";
  56.253  by (rtac (nnat RS nat_induct) 1);
  56.254 -by (ALLGOALS (asm_simp_tac (arith_ss addsimps [mnat])));
  56.255 +by (ALLGOALS (asm_simp_tac (!simpset addsimps [mnat])));
  56.256  qed "diff_add_inverse";
  56.257  
  56.258  goal Arith.thy
  56.259 @@ -290,19 +289,19 @@
  56.260  goal Arith.thy
  56.261      "!!k. [| k:nat; m: nat; n: nat |] ==> (k#+m) #- (k#+n) = m #- n";
  56.262  by (nat_ind_tac "k" [] 1);
  56.263 -by (ALLGOALS (asm_simp_tac arith_ss));
  56.264 +by (ALLGOALS Asm_simp_tac);
  56.265  qed "diff_cancel";
  56.266  
  56.267  goal Arith.thy
  56.268      "!!n. [| k:nat; m: nat; n: nat |] ==> (m#+k) #- (n#+k) = m #- n";
  56.269  val add_commute_k = read_instantiate [("n","k")] add_commute;
  56.270 -by (asm_simp_tac (arith_ss addsimps [add_commute_k, diff_cancel]) 1);
  56.271 +by (asm_simp_tac (!simpset addsimps [add_commute_k, diff_cancel]) 1);
  56.272  qed "diff_cancel2";
  56.273  
  56.274  val [mnat,nnat] = goal Arith.thy
  56.275      "[| m:nat;  n:nat |] ==> n #- (n#+m) = 0";
  56.276  by (rtac (nnat RS nat_induct) 1);
  56.277 -by (ALLGOALS (asm_simp_tac (arith_ss addsimps [mnat])));
  56.278 +by (ALLGOALS (asm_simp_tac (!simpset addsimps [mnat])));
  56.279  qed "diff_add_0";
  56.280  
  56.281  (** Difference distributes over multiplication **)
  56.282 @@ -310,13 +309,13 @@
  56.283  goal Arith.thy 
  56.284    "!!m n. [| m:nat; n: nat; k:nat |] ==> (m #- n) #* k = (m #* k) #- (n #* k)";
  56.285  by (res_inst_tac [("m","m"),("n","n")] diff_induct 1);
  56.286 -by (ALLGOALS (asm_simp_tac (arith_ss addsimps [diff_cancel])));
  56.287 +by (ALLGOALS (asm_simp_tac (!simpset addsimps [diff_cancel])));
  56.288  qed "diff_mult_distrib" ;
  56.289  
  56.290  goal Arith.thy 
  56.291    "!!m. [| m:nat; n: nat; k:nat |] ==> k #* (m #- n) = (k #* m) #- (k #* n)";
  56.292  val mult_commute_k = read_instantiate [("m","k")] mult_commute;
  56.293 -by (asm_simp_tac (arith_ss addsimps 
  56.294 +by (asm_simp_tac (!simpset addsimps 
  56.295                    [mult_commute_k, diff_mult_distrib]) 1);
  56.296  qed "diff_mult_distrib2" ;
  56.297  
  56.298 @@ -327,7 +326,7 @@
  56.299  by (etac rev_mp 1);
  56.300  by (etac rev_mp 1);
  56.301  by (res_inst_tac [("m","m"),("n","n")] diff_induct 1);
  56.302 -by (ALLGOALS (asm_simp_tac (nat_ss addsimps [diff_le_self,diff_succ_succ])));
  56.303 +by (ALLGOALS (asm_simp_tac (!simpset addsimps [diff_le_self,diff_succ_succ])));
  56.304  qed "div_termination";
  56.305  
  56.306  val div_rls =   (*for mod and div*)
  56.307 @@ -335,8 +334,8 @@
  56.308      [Ord_transrec_type, apply_type, div_termination RS ltD, if_type,
  56.309       nat_into_Ord, not_lt_iff_le RS iffD1];
  56.310  
  56.311 -val div_ss = ZF_ss addsimps [nat_into_Ord, div_termination RS ltD,
  56.312 -                             not_lt_iff_le RS iffD2];
  56.313 +val div_ss = (!simpset) addsimps [nat_into_Ord, div_termination RS ltD,
  56.314 +				  not_lt_iff_le RS iffD2];
  56.315  
  56.316  (*Type checking depends upon termination!*)
  56.317  goalw Arith.thy [mod_def] "!!m n. [| 0<n;  m:nat;  n:nat |] ==> m mod n : nat";
  56.318 @@ -354,6 +353,8 @@
  56.319  by (asm_simp_tac div_ss 1);
  56.320  qed "mod_geq";
  56.321  
  56.322 +Addsimps [mod_type, mod_less, mod_geq];
  56.323 +
  56.324  (*** Quotient ***)
  56.325  
  56.326  (*Type checking depends upon termination!*)
  56.327 @@ -374,17 +375,18 @@
  56.328  by (asm_simp_tac div_ss 1);
  56.329  qed "div_geq";
  56.330  
  56.331 +Addsimps [div_type, div_less, div_geq];
  56.332 +
  56.333  (*A key result*)
  56.334  goal Arith.thy
  56.335      "!!m n. [| 0<n;  m:nat;  n:nat |] ==> (m div n)#*n #+ m mod n = m";
  56.336  by (etac complete_induct 1);
  56.337  by (excluded_middle_tac "x<n" 1);
  56.338  (*case x<n*)
  56.339 -by (asm_simp_tac (arith_ss addsimps [mod_less, div_less]) 2);
  56.340 +by (Asm_simp_tac 2);
  56.341  (*case n le x*)
  56.342  by (asm_full_simp_tac
  56.343 -     (arith_ss addsimps [not_lt_iff_le, nat_into_Ord,
  56.344 -                         mod_geq, div_geq, add_assoc,
  56.345 +     (!simpset addsimps [not_lt_iff_le, nat_into_Ord, add_assoc,
  56.346                           div_termination RS ltD, add_diff_inverse]) 1);
  56.347  qed "mod_div_equality";
  56.348  
  56.349 @@ -396,26 +398,26 @@
  56.350  by (etac complete_induct 1);
  56.351  by (excluded_middle_tac "succ(x)<n" 1);
  56.352  (* case succ(x) < n *)
  56.353 -by (asm_simp_tac (arith_ss addsimps [mod_less, nat_le_refl RS lt_trans,
  56.354 +by (asm_simp_tac (!simpset addsimps [mod_less, nat_le_refl RS lt_trans,
  56.355                                       succ_neq_self]) 2);
  56.356 -by (asm_simp_tac (arith_ss addsimps [ltD RS mem_imp_not_eq]) 2);
  56.357 +by (asm_simp_tac (!simpset addsimps [ltD RS mem_imp_not_eq]) 2);
  56.358  (* case n le succ(x) *)
  56.359  by (asm_full_simp_tac
  56.360 -     (arith_ss addsimps [not_lt_iff_le, nat_into_Ord, mod_geq]) 1);
  56.361 +     (!simpset addsimps [not_lt_iff_le, nat_into_Ord, mod_geq]) 1);
  56.362  by (etac leE 1);
  56.363 -by (asm_simp_tac (arith_ss addsimps [div_termination RS ltD, diff_succ, 
  56.364 +by (asm_simp_tac (!simpset addsimps [div_termination RS ltD, diff_succ, 
  56.365                                       mod_geq]) 1);
  56.366 -by (asm_simp_tac (arith_ss addsimps [mod_less, diff_self_eq_0]) 1);
  56.367 +by (asm_simp_tac (!simpset addsimps [mod_less, diff_self_eq_0]) 1);
  56.368  qed "mod_succ";
  56.369  
  56.370  goal Arith.thy "!!m n. [| 0<n;  m:nat;  n:nat |] ==> m mod n < n";
  56.371  by (etac complete_induct 1);
  56.372  by (excluded_middle_tac "x<n" 1);
  56.373  (*case x<n*)
  56.374 -by (asm_simp_tac (arith_ss addsimps [mod_less]) 2);
  56.375 +by (asm_simp_tac (!simpset addsimps [mod_less]) 2);
  56.376  (*case n le x*)
  56.377  by (asm_full_simp_tac
  56.378 -     (arith_ss addsimps [not_lt_iff_le, nat_into_Ord,
  56.379 +     (!simpset addsimps [not_lt_iff_le, nat_into_Ord,
  56.380                           mod_geq, div_termination RS ltD]) 1);
  56.381  qed "mod_less_divisor";
  56.382  
  56.383 @@ -423,22 +425,22 @@
  56.384  goal Arith.thy
  56.385      "!!k b. [| k: nat; b<2 |] ==> k mod 2 = b | k mod 2 = if(b=1,0,1)";
  56.386  by (subgoal_tac "k mod 2: 2" 1);
  56.387 -by (asm_simp_tac (arith_ss addsimps [mod_less_divisor RS ltD]) 2);
  56.388 +by (asm_simp_tac (!simpset addsimps [mod_less_divisor RS ltD]) 2);
  56.389  by (dtac ltD 1);
  56.390 -by (asm_simp_tac (ZF_ss setloop split_tac [expand_if]) 1);
  56.391 -by (fast_tac ZF_cs 1);
  56.392 +by (asm_simp_tac (!simpset setloop split_tac [expand_if]) 1);
  56.393 +by (Fast_tac 1);
  56.394  qed "mod2_cases";
  56.395  
  56.396  goal Arith.thy "!!m. m:nat ==> succ(succ(m)) mod 2 = m mod 2";
  56.397  by (subgoal_tac "m mod 2: 2" 1);
  56.398 -by (asm_simp_tac (arith_ss addsimps [mod_less_divisor RS ltD]) 2);
  56.399 -by (asm_simp_tac (arith_ss addsimps [mod_succ] setloop step_tac ZF_cs) 1);
  56.400 +by (asm_simp_tac (!simpset addsimps [mod_less_divisor RS ltD]) 2);
  56.401 +by (asm_simp_tac (!simpset addsimps [mod_succ] setloop step_tac (!claset)) 1);
  56.402  qed "mod2_succ_succ";
  56.403  
  56.404  goal Arith.thy "!!m. m:nat ==> (m#+m) mod 2 = 0";
  56.405  by (etac nat_induct 1);
  56.406 -by (simp_tac (arith_ss addsimps [mod_less]) 1);
  56.407 -by (asm_simp_tac (arith_ss addsimps [mod2_succ_succ, add_succ_right]) 1);
  56.408 +by (simp_tac (!simpset addsimps [mod_less]) 1);
  56.409 +by (asm_simp_tac (!simpset addsimps [mod2_succ_succ, add_succ_right]) 1);
  56.410  qed "mod2_add_self";
  56.411  
  56.412  
  56.413 @@ -446,7 +448,7 @@
  56.414  
  56.415  goal Arith.thy "!!m n. [| m:nat;  n:nat |] ==> m le m #+ n";
  56.416  by (etac nat_induct 1);
  56.417 -by (ALLGOALS (asm_simp_tac arith_ss));
  56.418 +by (ALLGOALS Asm_simp_tac);
  56.419  qed "add_le_self";
  56.420  
  56.421  goal Arith.thy "!!m n. [| m:nat;  n:nat |] ==> m le n #+ m";
  56.422 @@ -461,7 +463,7 @@
  56.423  by (forward_tac [lt_nat_in_nat] 1);
  56.424  by (assume_tac 1);
  56.425  by (etac succ_lt_induct 1);
  56.426 -by (ALLGOALS (asm_simp_tac (arith_ss addsimps [leI])));
  56.427 +by (ALLGOALS (asm_simp_tac (!simpset addsimps [leI])));
  56.428  qed "add_lt_mono1";
  56.429  
  56.430  (*strict, in both arguments*)
  56.431 @@ -481,7 +483,7 @@
  56.432  \        i le j;  j:k                           \
  56.433  \     |] ==> f(i) le f(j)";
  56.434  by (cut_facts_tac prems 1);
  56.435 -by (fast_tac (lt_cs addSIs [lt_mono,ford] addSEs [leE]) 1);
  56.436 +by (fast_tac (le_cs addSIs [lt_mono,ford] addSEs [leE]) 1);
  56.437  qed "Ord_lt_mono_imp_le_mono";
  56.438  
  56.439  (*le monotonicity, 1st argument*)
  56.440 @@ -507,8 +509,7 @@
  56.441  goal Arith.thy "!!i j k. [| i le j; j:nat; k:nat |] ==> i#*k le j#*k";
  56.442  by (forward_tac [lt_nat_in_nat] 1);
  56.443  by (nat_ind_tac "k" [] 2);
  56.444 -by (ALLGOALS (asm_simp_tac (arith_ss addsimps [mult_0_right, mult_succ_right,
  56.445 -                                               add_le_mono])));
  56.446 +by (ALLGOALS (asm_simp_tac (!simpset addsimps [add_le_mono])));
  56.447  qed "mult_le_mono1";
  56.448  
  56.449  (* le monotonicity, BOTH arguments*)
  56.450 @@ -526,17 +527,17 @@
  56.451  goal Arith.thy "!!i j k. [| i<j; 0<k; j:nat; k:nat |] ==> k#*i < k#*j";
  56.452  by (etac zero_lt_natE 1);
  56.453  by (forward_tac [lt_nat_in_nat] 2);
  56.454 -by (ALLGOALS (asm_simp_tac arith_ss));
  56.455 +by (ALLGOALS Asm_simp_tac);
  56.456  by (nat_ind_tac "x" [] 1);
  56.457 -by (ALLGOALS (asm_simp_tac (arith_ss addsimps [add_0_right, add_lt_mono])));
  56.458 +by (ALLGOALS (asm_simp_tac (!simpset addsimps [add_lt_mono])));
  56.459  qed "mult_lt_mono2";
  56.460  
  56.461  goal Arith.thy "!!k. [| m: nat; n: nat |] ==> 0 < m#*n <-> 0<m & 0<n";
  56.462 -by (best_tac (ZF_cs addEs [natE] addss (arith_ss addsimps [mult_0_right])) 1);
  56.463 +by (best_tac (!claset addEs [natE] addss (!simpset)) 1);
  56.464  qed "zero_lt_mult_iff";
  56.465  
  56.466  goal Arith.thy "!!k. [| m: nat; n: nat |] ==> m#*n = 1 <-> m=1 & n=1";
  56.467 -by (best_tac (ZF_cs addEs [natE] addss (arith_ss addsimps [mult_0_right])) 1);
  56.468 +by (best_tac (!claset addEs [natE] addss (!simpset)) 1);
  56.469  qed "mult_eq_1_iff";
  56.470  
  56.471  (*Cancellation law for division*)
  56.472 @@ -544,10 +545,10 @@
  56.473     "!!k. [| 0<n; 0<k; k:nat; m:nat; n:nat |] ==> (k#*m) div (k#*n) = m div n";
  56.474  by (eres_inst_tac [("i","m")] complete_induct 1);
  56.475  by (excluded_middle_tac "x<n" 1);
  56.476 -by (asm_simp_tac (arith_ss addsimps [div_less, zero_lt_mult_iff, 
  56.477 +by (asm_simp_tac (!simpset addsimps [div_less, zero_lt_mult_iff, 
  56.478                                       mult_lt_mono2]) 2);
  56.479  by (asm_full_simp_tac
  56.480 -     (arith_ss addsimps [not_lt_iff_le, nat_into_Ord,
  56.481 +     (!simpset addsimps [not_lt_iff_le, nat_into_Ord,
  56.482                           zero_lt_mult_iff, le_refl RS mult_le_mono, div_geq,
  56.483                           diff_mult_distrib2 RS sym,
  56.484                           div_termination RS ltD]) 1);
  56.485 @@ -558,10 +559,10 @@
  56.486  \        (k#*m) mod (k#*n) = k #* (m mod n)";
  56.487  by (eres_inst_tac [("i","m")] complete_induct 1);
  56.488  by (excluded_middle_tac "x<n" 1);
  56.489 -by (asm_simp_tac (arith_ss addsimps [mod_less, zero_lt_mult_iff, 
  56.490 +by (asm_simp_tac (!simpset addsimps [mod_less, zero_lt_mult_iff, 
  56.491                                       mult_lt_mono2]) 2);
  56.492  by (asm_full_simp_tac
  56.493 -     (arith_ss addsimps [not_lt_iff_le, nat_into_Ord,
  56.494 +     (!simpset addsimps [not_lt_iff_le, nat_into_Ord,
  56.495                           zero_lt_mult_iff, le_refl RS mult_le_mono, mod_geq,
  56.496                           diff_mult_distrib2 RS sym,
  56.497                           div_termination RS ltD]) 1);
  56.498 @@ -575,13 +576,24 @@
  56.499  by (rtac disjCI 1);
  56.500  by (dtac sym 1);
  56.501  by (rtac Ord_linear_lt 1 THEN REPEAT_SOME (ares_tac [nat_into_Ord,nat_1I]));
  56.502 -by (fast_tac (lt_cs addss (arith_ss addsimps [mult_0_right])) 1);
  56.503 -by (fast_tac (lt_cs addDs [mono_lemma] 
  56.504 -                    addss (arith_ss addsimps [mult_1_right])) 1);
  56.505 +by (fast_tac (!claset addss (!simpset)) 1);
  56.506 +by (fast_tac (le_cs addDs [mono_lemma] 
  56.507 +                    addss (!simpset addsimps [mult_1_right])) 1);
  56.508  qed "mult_eq_self_implies_10";
  56.509  
  56.510 -val arith_ss0 = arith_ss
  56.511 -and arith_ss = arith_ss addsimps [add_0_right, add_succ_right,
  56.512 -                                  mult_0_right, mult_succ_right,
  56.513 -                                  mod_type, div_type,
  56.514 -                                  mod_less, mod_geq, div_less, div_geq];
  56.515 +
  56.516 +(*Thanks to Sten Agerholm*)
  56.517 +goal Arith.thy  (* add_le_elim1 *)
  56.518 +    "!!m n k. [|m#+n le m#+k; m:nat; n:nat; k:nat|] ==> n le k";
  56.519 +be rev_mp 1;
  56.520 +by (eres_inst_tac[("n","n")]nat_induct 1);
  56.521 +by (Asm_simp_tac 1);
  56.522 +by (Step_tac 1);
  56.523 +by (asm_full_simp_tac (!simpset addsimps [not_le_iff_lt,nat_into_Ord]) 1);
  56.524 +by (etac lt_asym 1);
  56.525 +by (assume_tac 1);
  56.526 +by (Asm_full_simp_tac 1);
  56.527 +by (asm_full_simp_tac (!simpset addsimps [le_iff, nat_into_Ord]) 1);
  56.528 +by (Fast_tac 1);
  56.529 +qed "add_le_elim1";
  56.530 +
    57.1 --- a/src/ZF/Arith.thy	Fri Jan 03 10:48:28 1997 +0100
    57.2 +++ b/src/ZF/Arith.thy	Fri Jan 03 15:01:55 1997 +0100
    57.3 @@ -6,7 +6,7 @@
    57.4  Arithmetic operators and their definitions
    57.5  *)
    57.6  
    57.7 -Arith = Epsilon + "simpdata" +
    57.8 +Arith = Epsilon + 
    57.9  consts
   57.10      rec  :: [i, i, [i,i]=>i]=>i
   57.11      "#*" :: [i,i]=>i                    (infixl 70)
    58.1 --- a/src/ZF/Bool.ML	Fri Jan 03 10:48:28 1997 +0100
    58.2 +++ b/src/ZF/Bool.ML	Fri Jan 03 15:01:55 1997 +0100
    58.3 @@ -10,6 +10,10 @@
    58.4  
    58.5  val bool_defs = [bool_def,cond_def];
    58.6  
    58.7 +goalw Bool.thy [succ_def] "{0} = 1";
    58.8 +br refl 1;
    58.9 +qed "singleton_0";
   58.10 +
   58.11  (* Introduction rules *)
   58.12  
   58.13  goalw Bool.thy bool_defs "1 : bool";
   58.14 @@ -45,11 +49,14 @@
   58.15  by (rtac (succ_not_0 RS not_sym RS if_not_P) 1);
   58.16  qed "cond_0";
   58.17  
   58.18 -val major::prems = goal Bool.thy 
   58.19 -    "[|  b: bool;  c: A(1);  d: A(0) |] ==> cond(b,c,d): A(b)";
   58.20 -by (rtac (major RS boolE) 1);
   58.21 -by (asm_simp_tac (ZF_ss addsimps (cond_1::prems)) 1);
   58.22 -by (asm_simp_tac (ZF_ss addsimps (cond_0::prems)) 1);
   58.23 +Addsimps [cond_1, cond_0];
   58.24 +
   58.25 +fun bool_tac i = fast_tac (!claset addSEs [boolE] addss (!simpset)) i;
   58.26 +
   58.27 +
   58.28 +goal Bool.thy 
   58.29 +    "!!b. [|  b: bool;  c: A(1);  d: A(0) |] ==> cond(b,c,d): A(b)";
   58.30 +by (bool_tac 1);
   58.31  qed "cond_type";
   58.32  
   58.33  val [rew] = goal Bool.thy "[| !!b. j(b)==cond(b,c,d) |] ==> j(1) = c";
   58.34 @@ -65,12 +72,11 @@
   58.35  fun conds def = [standard (def RS def_cond_1), standard (def RS def_cond_0)];
   58.36  
   58.37  val [not_1,not_0] = conds not_def;
   58.38 -
   58.39  val [and_1,and_0] = conds and_def;
   58.40 +val [or_1,or_0]   = conds or_def;
   58.41 +val [xor_1,xor_0] = conds xor_def;
   58.42  
   58.43 -val [or_1,or_0] = conds or_def;
   58.44 -
   58.45 -val [xor_1,xor_0] = conds xor_def;
   58.46 +Addsimps [not_1,not_0,and_1,and_0,or_1,or_0,xor_1,xor_0];
   58.47  
   58.48  qed_goalw "not_type" Bool.thy [not_def]
   58.49      "a:bool ==> not(a) : bool"
   58.50 @@ -89,71 +95,65 @@
   58.51   (fn prems=> [ (typechk_tac(prems@[bool_1I, bool_0I, cond_type, not_type])) ]);
   58.52  
   58.53  val bool_typechecks = [bool_1I, bool_0I, cond_type, not_type, and_type, 
   58.54 -                       or_type, xor_type]
   58.55 -
   58.56 -val bool_simps = [cond_1,cond_0,not_1,not_0,and_1,and_0,or_1,or_0,xor_1,xor_0];
   58.57 -
   58.58 -val bool_ss0 = ZF_ss addsimps bool_simps;
   58.59 -
   58.60 -fun bool0_tac i =
   58.61 -    EVERY [etac boolE i, asm_simp_tac bool_ss0 (i+1), asm_simp_tac bool_ss0 i];
   58.62 +                       or_type, xor_type];
   58.63  
   58.64  (*** Laws for 'not' ***)
   58.65  
   58.66  goal Bool.thy "!!a. a:bool ==> not(not(a)) = a";
   58.67 -by (bool0_tac 1);
   58.68 +by (bool_tac 1);
   58.69  qed "not_not";
   58.70  
   58.71  goal Bool.thy "!!a b. a:bool ==> not(a and b) = not(a) or not(b)";
   58.72 -by (bool0_tac 1);
   58.73 +by (bool_tac 1);
   58.74  qed "not_and";
   58.75  
   58.76  goal Bool.thy "!!a b. a:bool ==> not(a or b) = not(a) and not(b)";
   58.77 -by (bool0_tac 1);
   58.78 +by (bool_tac 1);
   58.79  qed "not_or";
   58.80  
   58.81 +Addsimps [not_not, not_and, not_or];
   58.82 +
   58.83  (*** Laws about 'and' ***)
   58.84  
   58.85  goal Bool.thy "!!a. a: bool ==> a and a = a";
   58.86 -by (bool0_tac 1);
   58.87 +by (bool_tac 1);
   58.88  qed "and_absorb";
   58.89  
   58.90 +Addsimps [and_absorb];
   58.91 +
   58.92  goal Bool.thy "!!a b. [| a: bool; b:bool |] ==> a and b = b and a";
   58.93 -by (etac boolE 1);
   58.94 -by (bool0_tac 1);
   58.95 -by (bool0_tac 1);
   58.96 +by (bool_tac 1);
   58.97  qed "and_commute";
   58.98  
   58.99 -goal Bool.thy
  58.100 - "!!a. a: bool ==> (a and b) and c  =  a and (b and c)";
  58.101 -by (bool0_tac 1);
  58.102 +goal Bool.thy "!!a. a: bool ==> (a and b) and c  =  a and (b and c)";
  58.103 +by (bool_tac 1);
  58.104  qed "and_assoc";
  58.105  
  58.106  goal Bool.thy
  58.107   "!!a. [| a: bool; b:bool; c:bool |] ==> \
  58.108  \      (a or b) and c  =  (a and c) or (b and c)";
  58.109 -by (REPEAT (bool0_tac 1));
  58.110 +by (bool_tac 1);
  58.111  qed "and_or_distrib";
  58.112  
  58.113  (** binary orion **)
  58.114  
  58.115  goal Bool.thy "!!a. a: bool ==> a or a = a";
  58.116 -by (bool0_tac 1);
  58.117 +by (bool_tac 1);
  58.118  qed "or_absorb";
  58.119  
  58.120 +Addsimps [or_absorb];
  58.121 +
  58.122  goal Bool.thy "!!a b. [| a: bool; b:bool |] ==> a or b = b or a";
  58.123 -by (etac boolE 1);
  58.124 -by (bool0_tac 1);
  58.125 -by (bool0_tac 1);
  58.126 +by (bool_tac 1);
  58.127  qed "or_commute";
  58.128  
  58.129  goal Bool.thy "!!a. a: bool ==> (a or b) or c  =  a or (b or c)";
  58.130 -by (bool0_tac 1);
  58.131 +by (bool_tac 1);
  58.132  qed "or_assoc";
  58.133  
  58.134  goal Bool.thy
  58.135   "!!a b c. [| a: bool; b: bool; c: bool |] ==> \
  58.136  \          (a and b) or c  =  (a or c) and (b or c)";
  58.137 -by (REPEAT (bool0_tac 1));
  58.138 +by (bool_tac 1);
  58.139  qed "or_and_distrib";
  58.140  
    59.1 --- a/src/ZF/Bool.thy	Fri Jan 03 10:48:28 1997 +0100
    59.2 +++ b/src/ZF/Bool.thy	Fri Jan 03 15:01:55 1997 +0100
    59.3 @@ -8,7 +8,7 @@
    59.4  2 is equal to bool, but serves a different purpose
    59.5  *)
    59.6  
    59.7 -Bool = ZF + "simpdata" +
    59.8 +Bool = upair + 
    59.9  consts
   59.10      "1"         :: i             ("1")
   59.11      "2"         :: i             ("2")
    60.1 --- a/src/ZF/Cardinal.ML	Fri Jan 03 10:48:28 1997 +0100
    60.2 +++ b/src/ZF/Cardinal.ML	Fri Jan 03 15:01:55 1997 +0100
    60.3 @@ -25,7 +25,7 @@
    60.4  \    X - lfp(X, %W. X - g``(Y - f``W)) ";
    60.5  by (res_inst_tac [("P", "%u. ?v = X-u")] 
    60.6       (decomp_bnd_mono RS lfp_Tarski RS ssubst) 1);
    60.7 -by (simp_tac (ZF_ss addsimps [subset_refl, double_complement,
    60.8 +by (simp_tac (!simpset addsimps [subset_refl, double_complement,
    60.9                               gfun RS fun_is_rel RS image_subset]) 1);
   60.10  qed "Banach_last_equation";
   60.11  
   60.12 @@ -45,7 +45,7 @@
   60.13      "[| f: inj(X,Y);  g: inj(Y,X) |] ==> EX h. h: bij(X,Y)";
   60.14  by (cut_facts_tac prems 1);
   60.15  by (cut_facts_tac [(prems RL [inj_is_fun]) MRS decomposition] 1);
   60.16 -by (fast_tac (ZF_cs addSIs [restrict_bij,bij_disjoint_Un]
   60.17 +by (fast_tac (!claset addSIs [restrict_bij,bij_disjoint_Un]
   60.18                      addIs [bij_converse_bij]) 1);
   60.19  (* The instantiation of exI to "restrict(f,XA) Un converse(restrict(g,YB))"
   60.20     is forced by the context!! *)
   60.21 @@ -62,12 +62,12 @@
   60.22  bind_thm ("eqpoll_refl", id_bij RS bij_imp_eqpoll);
   60.23  
   60.24  goalw Cardinal.thy [eqpoll_def] "!!X Y. X eqpoll Y ==> Y eqpoll X";
   60.25 -by (fast_tac (ZF_cs addIs [bij_converse_bij]) 1);
   60.26 +by (fast_tac (!claset addIs [bij_converse_bij]) 1);
   60.27  qed "eqpoll_sym";
   60.28  
   60.29  goalw Cardinal.thy [eqpoll_def]
   60.30      "!!X Y. [| X eqpoll Y;  Y eqpoll Z |] ==> X eqpoll Z";
   60.31 -by (fast_tac (ZF_cs addIs [comp_bij]) 1);
   60.32 +by (fast_tac (!claset addIs [comp_bij]) 1);
   60.33  qed "eqpoll_trans";
   60.34  
   60.35  (** Le-pollence is a partial ordering **)
   60.36 @@ -83,12 +83,12 @@
   60.37  
   60.38  goalw Cardinal.thy [eqpoll_def, bij_def, lepoll_def]
   60.39      "!!X Y. X eqpoll Y ==> X lepoll Y";
   60.40 -by (fast_tac ZF_cs 1);
   60.41 +by (Fast_tac 1);
   60.42  qed "eqpoll_imp_lepoll";
   60.43  
   60.44  goalw Cardinal.thy [lepoll_def]
   60.45      "!!X Y. [| X lepoll Y;  Y lepoll Z |] ==> X lepoll Z";
   60.46 -by (fast_tac (ZF_cs addIs [comp_inj]) 1);
   60.47 +by (fast_tac (!claset addIs [comp_inj]) 1);
   60.48  qed "lepoll_trans";
   60.49  
   60.50  (*Asymmetry law*)
   60.51 @@ -106,7 +106,7 @@
   60.52  qed "eqpollE";
   60.53  
   60.54  goal Cardinal.thy "X eqpoll Y <-> X lepoll Y & Y lepoll X";
   60.55 -by (fast_tac (ZF_cs addIs [eqpollI] addSEs [eqpollE]) 1);
   60.56 +by (fast_tac (!claset addIs [eqpollI] addSEs [eqpollE]) 1);
   60.57  qed "eqpoll_iff";
   60.58  
   60.59  goalw Cardinal.thy [lepoll_def, inj_def] "!!A. A lepoll 0 ==> A = 0";
   60.60 @@ -117,70 +117,70 @@
   60.61  bind_thm ("empty_lepollI", empty_subsetI RS subset_imp_lepoll);
   60.62  
   60.63  goal Cardinal.thy "A lepoll 0 <-> A=0";
   60.64 -by (fast_tac (ZF_cs addIs [lepoll_0_is_0, lepoll_refl]) 1);
   60.65 +by (fast_tac (!claset addIs [lepoll_0_is_0, lepoll_refl]) 1);
   60.66  qed "lepoll_0_iff";
   60.67  
   60.68  goalw Cardinal.thy [lepoll_def] 
   60.69      "!!A. [| A lepoll B; C lepoll D; B Int D = 0 |] ==> A Un C lepoll B Un D";
   60.70 -by (fast_tac (ZF_cs addIs [inj_disjoint_Un]) 1);
   60.71 +by (fast_tac (!claset addIs [inj_disjoint_Un]) 1);
   60.72  qed "Un_lepoll_Un";
   60.73  
   60.74  (*A eqpoll 0 ==> A=0*)
   60.75  bind_thm ("eqpoll_0_is_0",  eqpoll_imp_lepoll RS lepoll_0_is_0);
   60.76  
   60.77  goal Cardinal.thy "A eqpoll 0 <-> A=0";
   60.78 -by (fast_tac (ZF_cs addIs [eqpoll_0_is_0, eqpoll_refl]) 1);
   60.79 +by (fast_tac (!claset addIs [eqpoll_0_is_0, eqpoll_refl]) 1);
   60.80  qed "eqpoll_0_iff";
   60.81  
   60.82  goalw Cardinal.thy [eqpoll_def] 
   60.83      "!!A. [| A eqpoll B;  C eqpoll D;  A Int C = 0;  B Int D = 0 |] ==> \
   60.84  \         A Un C eqpoll B Un D";
   60.85 -by (fast_tac (ZF_cs addIs [bij_disjoint_Un]) 1);
   60.86 +by (fast_tac (!claset addIs [bij_disjoint_Un]) 1);
   60.87  qed "eqpoll_disjoint_Un";
   60.88  
   60.89  
   60.90  (*** lesspoll: contributions by Krzysztof Grabczewski ***)
   60.91  
   60.92  goalw Cardinal.thy [lesspoll_def] "!!A. A lesspoll B ==> A lepoll B";
   60.93 -by (fast_tac ZF_cs 1);
   60.94 +by (Fast_tac 1);
   60.95  qed "lesspoll_imp_lepoll";
   60.96  
   60.97  goalw Cardinal.thy [lepoll_def]
   60.98          "!!A. [| A lepoll B; well_ord(B,r) |] ==> EX s. well_ord(A,s)";
   60.99 -by (fast_tac (ZF_cs addSEs [well_ord_rvimage]) 1);
  60.100 +by (fast_tac (!claset addSEs [well_ord_rvimage]) 1);
  60.101  qed "lepoll_well_ord";
  60.102  
  60.103  goalw Cardinal.thy [lesspoll_def] "A lepoll B <-> A lesspoll B | A eqpoll B";
  60.104 -by (fast_tac (ZF_cs addSIs [eqpollI] addSEs [eqpollE]) 1);
  60.105 +by (fast_tac (!claset addSIs [eqpollI] addSEs [eqpollE]) 1);
  60.106  qed "lepoll_iff_leqpoll";
  60.107  
  60.108  goalw Cardinal.thy [inj_def, surj_def] 
  60.109    "!!f. [| f : inj(A, succ(m)); f ~: surj(A, succ(m)) |] ==> EX f. f:inj(A,m)";
  60.110 -by (safe_tac lemmas_cs);
  60.111 +by (safe_tac (claset_of"ZF"));
  60.112  by (swap_res_tac [exI] 1);
  60.113  by (res_inst_tac [("a", "lam z:A. if(f`z=m, y, f`z)")] CollectI 1);
  60.114 -by (fast_tac (ZF_cs addSIs [if_type RS lam_type]
  60.115 -                    addEs [apply_funtype RS succE]) 1);
  60.116 +by (fast_tac (!claset addSIs [if_type RS lam_type]
  60.117 +                      addEs [apply_funtype RS succE]) 1);
  60.118  (*Proving it's injective*)
  60.119 -by (asm_simp_tac (ZF_ss setloop split_tac [expand_if]) 1);
  60.120 -by (fast_tac ZF_cs 1);
  60.121 +by (asm_simp_tac (!simpset setloop split_tac [expand_if]) 1);
  60.122 +by (Fast_tac 1);
  60.123  qed "inj_not_surj_succ";
  60.124  
  60.125  (** Variations on transitivity **)
  60.126  
  60.127  goalw Cardinal.thy [lesspoll_def]
  60.128        "!!X. [| X lesspoll Y; Y lesspoll Z |] ==> X lesspoll Z";
  60.129 -by (fast_tac (ZF_cs addSIs [eqpollI] addSEs [eqpollE] addIs [lepoll_trans]) 1);
  60.130 +by (fast_tac (!claset addSIs [eqpollI] addSEs [eqpollE] addIs [lepoll_trans]) 1);
  60.131  qed "lesspoll_trans";
  60.132  
  60.133  goalw Cardinal.thy [lesspoll_def]
  60.134        "!!X. [| X lesspoll Y; Y lepoll Z |] ==> X lesspoll Z";
  60.135 -by (fast_tac (ZF_cs addSIs [eqpollI] addSEs [eqpollE] addIs [lepoll_trans]) 1);
  60.136 +by (fast_tac (!claset addSIs [eqpollI] addSEs [eqpollE] addIs [lepoll_trans]) 1);
  60.137  qed "lesspoll_lepoll_lesspoll";
  60.138  
  60.139  goalw Cardinal.thy [lesspoll_def] 
  60.140        "!!X. [| X lesspoll Y; Z lepoll X |] ==> Z lesspoll Y";
  60.141 -by (fast_tac (ZF_cs addSIs [eqpollI] addSEs [eqpollE] addIs [lepoll_trans]) 1);
  60.142 +by (fast_tac (!claset addSIs [eqpollI] addSEs [eqpollE] addIs [lepoll_trans]) 1);
  60.143  qed "lepoll_lesspoll_lesspoll";
  60.144  
  60.145  
  60.146 @@ -189,10 +189,10 @@
  60.147  val [premP,premOrd,premNot] = goalw Cardinal.thy [Least_def]
  60.148      "[| P(i);  Ord(i);  !!x. x<i ==> ~P(x) |] ==> (LEAST x.P(x)) = i";
  60.149  by (rtac the_equality 1);
  60.150 -by (fast_tac (ZF_cs addSIs [premP,premOrd,premNot]) 1);
  60.151 +by (fast_tac (!claset addSIs [premP,premOrd,premNot]) 1);
  60.152  by (REPEAT (etac conjE 1));
  60.153  by (etac (premOrd RS Ord_linear_lt) 1);
  60.154 -by (ALLGOALS (fast_tac (ZF_cs addSIs [premP] addSDs [premNot])));
  60.155 +by (ALLGOALS (fast_tac (!claset addSIs [premP] addSDs [premNot])));
  60.156  qed "Least_equality";
  60.157  
  60.158  goal Cardinal.thy "!!i. [| P(i);  Ord(i) |] ==> P(LEAST x.P(x))";
  60.159 @@ -202,7 +202,7 @@
  60.160  by (rtac classical 1);
  60.161  by (EVERY1 [stac Least_equality, assume_tac, assume_tac]);
  60.162  by (assume_tac 2);
  60.163 -by (fast_tac (ZF_cs addSEs [ltE]) 1);
  60.164 +by (fast_tac (!claset addSEs [ltE]) 1);
  60.165  qed "LeastI";
  60.166  
  60.167  (*Proof is almost identical to the one above!*)
  60.168 @@ -213,7 +213,7 @@
  60.169  by (rtac classical 1);
  60.170  by (EVERY1 [stac Least_equality, assume_tac, assume_tac]);
  60.171  by (etac le_refl 2);
  60.172 -by (fast_tac (ZF_cs addEs [ltE, lt_trans1] addIs [leI, ltI]) 1);
  60.173 +by (fast_tac (!claset addEs [ltE, lt_trans1] addIs [leI, ltI]) 1);
  60.174  qed "Least_le";
  60.175  
  60.176  (*LEAST really is the smallest*)
  60.177 @@ -234,12 +234,12 @@
  60.178  goalw Cardinal.thy [Least_def]
  60.179      "!!P. [| ~ (EX i. Ord(i) & P(i)) |] ==> (LEAST x.P(x)) = 0";
  60.180  by (rtac the_0 1);
  60.181 -by (fast_tac ZF_cs 1);
  60.182 +by (Fast_tac 1);
  60.183  qed "Least_0";
  60.184  
  60.185  goal Cardinal.thy "Ord(LEAST x.P(x))";
  60.186  by (excluded_middle_tac "EX i. Ord(i) & P(i)" 1);
  60.187 -by (safe_tac ZF_cs);
  60.188 +by (safe_tac (!claset));
  60.189  by (rtac (Least_le RS ltE) 2);
  60.190  by (REPEAT_SOME assume_tac);
  60.191  by (etac (Least_0 RS ssubst) 1);
  60.192 @@ -252,14 +252,14 @@
  60.193  (*Not needed for simplification, but helpful below*)
  60.194  val prems = goal Cardinal.thy
  60.195      "[| !!y. P(y) <-> Q(y) |] ==> (LEAST x.P(x)) = (LEAST x.Q(x))";
  60.196 -by (simp_tac (FOL_ss addsimps prems) 1);
  60.197 +by (simp_tac (!simpset addsimps prems) 1);
  60.198  qed "Least_cong";
  60.199  
  60.200  (*Need AC to get X lepoll Y ==> |X| le |Y|;  see well_ord_lepoll_imp_Card_le
  60.201    Converse also requires AC, but see well_ord_cardinal_eqE*)
  60.202  goalw Cardinal.thy [eqpoll_def,cardinal_def] "!!X Y. X eqpoll Y ==> |X| = |Y|";
  60.203  by (rtac Least_cong 1);
  60.204 -by (fast_tac (ZF_cs addEs [comp_bij,bij_converse_bij]) 1);
  60.205 +by (fast_tac (!claset addEs [comp_bij,bij_converse_bij]) 1);
  60.206  qed "cardinal_cong";
  60.207  
  60.208  (*Under AC, the premise becomes trivial; one consequence is ||A|| = |A|*)
  60.209 @@ -277,12 +277,12 @@
  60.210      "!!X Y. [| well_ord(X,r);  well_ord(Y,s);  |X| = |Y| |] ==> X eqpoll Y";
  60.211  by (rtac (eqpoll_sym RS eqpoll_trans) 1);
  60.212  by (etac well_ord_cardinal_eqpoll 1);
  60.213 -by (asm_simp_tac (ZF_ss addsimps [well_ord_cardinal_eqpoll]) 1);
  60.214 +by (asm_simp_tac (!simpset addsimps [well_ord_cardinal_eqpoll]) 1);
  60.215  qed "well_ord_cardinal_eqE";
  60.216  
  60.217  goal Cardinal.thy
  60.218      "!!X Y. [| well_ord(X,r);  well_ord(Y,s) |] ==> |X| = |Y| <-> X eqpoll Y";
  60.219 -by (fast_tac (ZF_cs addSEs [cardinal_cong, well_ord_cardinal_eqE]) 1);
  60.220 +by (fast_tac (!claset addSEs [cardinal_cong, well_ord_cardinal_eqE]) 1);
  60.221  qed "well_ord_cardinal_eqpoll_iff";
  60.222  
  60.223  
  60.224 @@ -309,7 +309,7 @@
  60.225  qed "Card_is_Ord";
  60.226  
  60.227  goal Cardinal.thy "!!K. Card(K) ==> K le |K|";
  60.228 -by (asm_simp_tac (ZF_ss addsimps [le_refl, Card_is_Ord, Card_cardinal_eq]) 1);
  60.229 +by (asm_simp_tac (!simpset addsimps [le_refl, Card_is_Ord, Card_cardinal_eq]) 1);
  60.230  qed "Card_cardinal_le";
  60.231  
  60.232  goalw Cardinal.thy [cardinal_def] "Ord(|A|)";
  60.233 @@ -318,8 +318,8 @@
  60.234  
  60.235  (*The cardinals are the initial ordinals*)
  60.236  goal Cardinal.thy "Card(K) <-> Ord(K) & (ALL j. j<K --> ~ j eqpoll K)";
  60.237 -by (safe_tac (ZF_cs addSIs [CardI, Card_is_Ord]));
  60.238 -by (fast_tac ZF_cs 2);
  60.239 +by (safe_tac (!claset addSIs [CardI, Card_is_Ord]));
  60.240 +by (Fast_tac 2);
  60.241  by (rewrite_goals_tac [Card_def, cardinal_def]);
  60.242  by (rtac less_LeastE 1);
  60.243  by (etac subst 2);
  60.244 @@ -328,21 +328,21 @@
  60.245  
  60.246  goalw Cardinal.thy [lesspoll_def] "!!a. [| Card(a); i<a |] ==> i lesspoll a";
  60.247  by (dresolve_tac [Card_iff_initial RS iffD1] 1);
  60.248 -by (fast_tac (ZF_cs addSEs [leI RS le_imp_lepoll]) 1);
  60.249 +by (fast_tac (!claset addSEs [leI RS le_imp_lepoll]) 1);
  60.250  qed "lt_Card_imp_lesspoll";
  60.251  
  60.252  goal Cardinal.thy "Card(0)";
  60.253  by (rtac (Ord_0 RS CardI) 1);
  60.254 -by (fast_tac (ZF_cs addSEs [ltE]) 1);
  60.255 +by (fast_tac (!claset addSEs [ltE]) 1);
  60.256  qed "Card_0";
  60.257  
  60.258  val [premK,premL] = goal Cardinal.thy
  60.259      "[| Card(K);  Card(L) |] ==> Card(K Un L)";
  60.260  by (rtac ([premK RS Card_is_Ord, premL RS Card_is_Ord] MRS Ord_linear_le) 1);
  60.261  by (asm_simp_tac 
  60.262 -    (ZF_ss addsimps [premL, le_imp_subset, subset_Un_iff RS iffD1]) 1);
  60.263 +    (!simpset addsimps [premL, le_imp_subset, subset_Un_iff RS iffD1]) 1);
  60.264  by (asm_simp_tac
  60.265 -    (ZF_ss addsimps [premK, le_imp_subset, subset_Un_iff2 RS iffD1]) 1);
  60.266 +    (!simpset addsimps [premK, le_imp_subset, subset_Un_iff2 RS iffD1]) 1);
  60.267  qed "Card_Un";
  60.268  
  60.269  (*Infinite unions of cardinals?  See Devlin, Lemma 6.7, page 98*)
  60.270 @@ -351,7 +351,7 @@
  60.271  by (excluded_middle_tac "EX i. Ord(i) & i eqpoll A" 1);
  60.272  by (etac (Least_0 RS ssubst) 1 THEN rtac Card_0 1);
  60.273  by (rtac (Ord_Least RS CardI) 1);
  60.274 -by (safe_tac ZF_cs);
  60.275 +by (safe_tac (!claset));
  60.276  by (rtac less_LeastE 1);
  60.277  by (assume_tac 2);
  60.278  by (etac eqpoll_trans 1);
  60.279 @@ -388,16 +388,16 @@
  60.280  qed "cardinal_lt_imp_lt";
  60.281  
  60.282  goal Cardinal.thy "!!i j. [| |i| < K;  Ord(i);  Card(K) |] ==> i < K";
  60.283 -by (asm_simp_tac (ZF_ss addsimps 
  60.284 +by (asm_simp_tac (!simpset addsimps 
  60.285                    [cardinal_lt_imp_lt, Card_is_Ord, Card_cardinal_eq]) 1);
  60.286  qed "Card_lt_imp_lt";
  60.287  
  60.288  goal Cardinal.thy "!!i j. [| Ord(i);  Card(K) |] ==> (|i| < K) <-> (i < K)";
  60.289 -by (fast_tac (ZF_cs addEs [Card_lt_imp_lt, Ord_cardinal_le RS lt_trans1]) 1);
  60.290 +by (fast_tac (!claset addEs [Card_lt_imp_lt, Ord_cardinal_le RS lt_trans1]) 1);
  60.291  qed "Card_lt_iff";
  60.292  
  60.293  goal Cardinal.thy "!!i j. [| Ord(i);  Card(K) |] ==> (K le |i|) <-> (K le i)";
  60.294 -by (asm_simp_tac (ZF_ss addsimps 
  60.295 +by (asm_simp_tac (!simpset addsimps 
  60.296                    [Card_lt_iff, Card_is_Ord, Ord_cardinal, 
  60.297                     not_lt_iff_le RS iff_sym]) 1);
  60.298  qed "Card_le_iff";
  60.299 @@ -433,22 +433,22 @@
  60.300  
  60.301  goalw Cardinal.thy [lepoll_def, inj_def]
  60.302   "!!A B. [| cons(u,A) lepoll cons(v,B);  u~:A;  v~:B |] ==> A lepoll B";
  60.303 -by (safe_tac ZF_cs);
  60.304 +by (safe_tac (!claset));
  60.305  by (res_inst_tac [("x", "lam x:A. if(f`x=v, f`u, f`x)")] exI 1);
  60.306  by (rtac CollectI 1);
  60.307  (*Proving it's in the function space A->B*)
  60.308  by (rtac (if_type RS lam_type) 1);
  60.309 -by (fast_tac (ZF_cs addEs [apply_funtype RS consE]) 1);
  60.310 -by (fast_tac (ZF_cs addSEs [mem_irrefl] addEs [apply_funtype RS consE]) 1);
  60.311 +by (fast_tac (!claset addEs [apply_funtype RS consE]) 1);
  60.312 +by (fast_tac (!claset addSEs [mem_irrefl] addEs [apply_funtype RS consE]) 1);
  60.313  (*Proving it's injective*)
  60.314 -by (asm_simp_tac (ZF_ss setloop split_tac [expand_if]) 1);
  60.315 -by (fast_tac ZF_cs 1);
  60.316 +by (asm_simp_tac (!simpset setloop split_tac [expand_if]) 1);
  60.317 +by (Fast_tac 1);
  60.318  qed "cons_lepoll_consD";
  60.319  
  60.320  goal Cardinal.thy
  60.321   "!!A B. [| cons(u,A) eqpoll cons(v,B);  u~:A;  v~:B |] ==> A eqpoll B";
  60.322 -by (asm_full_simp_tac (ZF_ss addsimps [eqpoll_iff]) 1);
  60.323 -by (fast_tac (ZF_cs addIs [cons_lepoll_consD]) 1);
  60.324 +by (asm_full_simp_tac (!simpset addsimps [eqpoll_iff]) 1);
  60.325 +by (fast_tac (!claset addIs [cons_lepoll_consD]) 1);
  60.326  qed "cons_eqpoll_consD";
  60.327  
  60.328  (*Lemma suggested by Mike Fourman*)
  60.329 @@ -460,12 +460,12 @@
  60.330  val [prem] = goal Cardinal.thy
  60.331      "m:nat ==> ALL n: nat. m lepoll n --> m le n";
  60.332  by (nat_ind_tac "m" [prem] 1);
  60.333 -by (fast_tac (ZF_cs addSIs [nat_0_le]) 1);
  60.334 +by (fast_tac (!claset addSIs [nat_0_le]) 1);
  60.335  by (rtac ballI 1);
  60.336  by (eres_inst_tac [("n","n")] natE 1);
  60.337 -by (asm_simp_tac (ZF_ss addsimps [lepoll_def, inj_def, 
  60.338 +by (asm_simp_tac (!simpset addsimps [lepoll_def, inj_def, 
  60.339                                    succI1 RS Pi_empty2]) 1);
  60.340 -by (fast_tac (ZF_cs addSIs [succ_leI] addSDs [succ_lepoll_succD]) 1);
  60.341 +by (fast_tac (!claset addSIs [succ_leI] addSDs [succ_lepoll_succD]) 1);
  60.342  qed "nat_lepoll_imp_le_lemma";
  60.343  
  60.344  bind_thm ("nat_lepoll_imp_le", nat_lepoll_imp_le_lemma RS bspec RS mp);
  60.345 @@ -473,8 +473,8 @@
  60.346  goal Cardinal.thy
  60.347      "!!m n. [| m:nat; n: nat |] ==> m eqpoll n <-> m = n";
  60.348  by (rtac iffI 1);
  60.349 -by (asm_simp_tac (ZF_ss addsimps [eqpoll_refl]) 2);
  60.350 -by (fast_tac (ZF_cs addIs [nat_lepoll_imp_le, le_anti_sym] 
  60.351 +by (asm_simp_tac (!simpset addsimps [eqpoll_refl]) 2);
  60.352 +by (fast_tac (!claset addIs [nat_lepoll_imp_le, le_anti_sym] 
  60.353                      addSEs [eqpollE]) 1);
  60.354  qed "nat_eqpoll_iff";
  60.355  
  60.356 @@ -483,8 +483,8 @@
  60.357      "!!n. n: nat ==> Card(n)";
  60.358  by (stac Least_equality 1);
  60.359  by (REPEAT_FIRST (ares_tac [eqpoll_refl, nat_into_Ord, refl]));
  60.360 -by (asm_simp_tac (ZF_ss addsimps [lt_nat_in_nat RS nat_eqpoll_iff]) 1);
  60.361 -by (fast_tac (ZF_cs addSEs [lt_irrefl]) 1);
  60.362 +by (asm_simp_tac (!simpset addsimps [lt_nat_in_nat RS nat_eqpoll_iff]) 1);
  60.363 +by (fast_tac (!claset addSEs [lt_irrefl]) 1);
  60.364  qed "nat_into_Card";
  60.365  
  60.366  (*Part of Kunen's Lemma 10.6*)
  60.367 @@ -499,7 +499,7 @@
  60.368  goalw Cardinal.thy [lesspoll_def]
  60.369        "!!m. [| A lepoll m; m:nat |] ==> A lesspoll succ(m)";
  60.370  by (rtac conjI 1);
  60.371 -by (fast_tac (ZF_cs addIs [subset_imp_lepoll RSN (2,lepoll_trans)]) 1);
  60.372 +by (fast_tac (!claset addIs [subset_imp_lepoll RSN (2,lepoll_trans)]) 1);
  60.373  by (rtac notI 1);
  60.374  by (dresolve_tac [eqpoll_sym RS eqpoll_imp_lepoll] 1);
  60.375  by (dtac lepoll_trans 1 THEN assume_tac 1);
  60.376 @@ -508,12 +508,12 @@
  60.377  
  60.378  goalw Cardinal.thy [lesspoll_def, lepoll_def, eqpoll_def, bij_def]
  60.379        "!!m. [| A lesspoll succ(m); m:nat |] ==> A lepoll m";
  60.380 -by (step_tac ZF_cs 1);
  60.381 -by (fast_tac (ZF_cs addSIs [inj_not_surj_succ]) 1);
  60.382 +by (step_tac (!claset) 1);
  60.383 +by (fast_tac (!claset addSIs [inj_not_surj_succ]) 1);
  60.384  qed "lesspoll_succ_imp_lepoll";
  60.385  
  60.386  goal Cardinal.thy "!!m. m:nat ==> A lesspoll succ(m) <-> A lepoll m";
  60.387 -by (fast_tac (ZF_cs addSIs [lepoll_imp_lesspoll_succ, 
  60.388 +by (fast_tac (!claset addSIs [lepoll_imp_lesspoll_succ, 
  60.389                              lesspoll_succ_imp_lepoll]) 1);
  60.390  qed "lesspoll_succ_iff";
  60.391  
  60.392 @@ -522,7 +522,7 @@
  60.393  by (rtac disjCI 1);
  60.394  by (rtac lesspoll_succ_imp_lepoll 1);
  60.395  by (assume_tac 2);
  60.396 -by (asm_simp_tac (ZF_ss addsimps [lesspoll_def]) 1);
  60.397 +by (asm_simp_tac (!simpset addsimps [lesspoll_def]) 1);
  60.398  qed "lepoll_succ_disj";
  60.399  
  60.400  
  60.401 @@ -539,7 +539,7 @@
  60.402  
  60.403  goal Cardinal.thy "!!i n. [| Ord(i);  n:nat |] ==> i eqpoll n <-> i=n";
  60.404  by (rtac iffI 1);
  60.405 -by (asm_simp_tac (ZF_ss addsimps [eqpoll_refl]) 2);
  60.406 +by (asm_simp_tac (!simpset addsimps [eqpoll_refl]) 2);
  60.407  by (rtac Ord_linear_lt 1);
  60.408  by (REPEAT_SOME (eresolve_tac [asm_rl, nat_into_Ord]));
  60.409  by (etac (lt_nat_in_nat RS nat_eqpoll_iff RS iffD1) 1 THEN
  60.410 @@ -552,7 +552,7 @@
  60.411  by (stac Least_equality 1);
  60.412  by (REPEAT_FIRST (ares_tac [eqpoll_refl, Ord_nat, refl]));
  60.413  by (etac ltE 1);
  60.414 -by (asm_simp_tac (ZF_ss addsimps [eqpoll_iff, lt_not_lepoll, ltI]) 1);
  60.415 +by (asm_simp_tac (!simpset addsimps [eqpoll_iff, lt_not_lepoll, ltI]) 1);
  60.416  qed "Card_nat";
  60.417  
  60.418  (*Allows showing that |i| is a limit cardinal*)
  60.419 @@ -568,40 +568,40 @@
  60.420  (*Congruence law for  cons  under equipollence*)
  60.421  goalw Cardinal.thy [lepoll_def]
  60.422      "!!A B. [| A lepoll B;  b ~: B |] ==> cons(a,A) lepoll cons(b,B)";
  60.423 -by (safe_tac ZF_cs);
  60.424 +by (safe_tac (!claset));
  60.425  by (res_inst_tac [("x", "lam y: cons(a,A).if(y=a, b, f`y)")] exI 1);
  60.426  by (res_inst_tac [("d","%z.if(z:B, converse(f)`z, a)")] 
  60.427      lam_injective 1);
  60.428 -by (asm_simp_tac (ZF_ss addsimps [inj_is_fun RS apply_type, cons_iff]
  60.429 +by (asm_simp_tac (!simpset addsimps [inj_is_fun RS apply_type, cons_iff]
  60.430                          setloop etac consE') 1);
  60.431 -by (asm_simp_tac (ZF_ss addsimps [inj_is_fun RS apply_type, left_inverse]
  60.432 +by (asm_simp_tac (!simpset addsimps [inj_is_fun RS apply_type, left_inverse]
  60.433                          setloop etac consE') 1);
  60.434  qed "cons_lepoll_cong";
  60.435  
  60.436  goal Cardinal.thy
  60.437      "!!A B. [| A eqpoll B;  a ~: A;  b ~: B |] ==> cons(a,A) eqpoll cons(b,B)";
  60.438 -by (asm_full_simp_tac (ZF_ss addsimps [eqpoll_iff, cons_lepoll_cong]) 1);
  60.439 +by (asm_full_simp_tac (!simpset addsimps [eqpoll_iff, cons_lepoll_cong]) 1);
  60.440  qed "cons_eqpoll_cong";
  60.441  
  60.442  goal Cardinal.thy
  60.443      "!!A B. [| a ~: A;  b ~: B |] ==> \
  60.444  \           cons(a,A) lepoll cons(b,B)  <->  A lepoll B";
  60.445 -by (fast_tac (ZF_cs addIs [cons_lepoll_cong, cons_lepoll_consD]) 1);
  60.446 +by (fast_tac (!claset addIs [cons_lepoll_cong, cons_lepoll_consD]) 1);
  60.447  qed "cons_lepoll_cons_iff";
  60.448  
  60.449  goal Cardinal.thy
  60.450      "!!A B. [| a ~: A;  b ~: B |] ==> \
  60.451  \           cons(a,A) eqpoll cons(b,B)  <->  A eqpoll B";
  60.452 -by (fast_tac (ZF_cs addIs [cons_eqpoll_cong, cons_eqpoll_consD]) 1);
  60.453 +by (fast_tac (!claset addIs [cons_eqpoll_cong, cons_eqpoll_consD]) 1);
  60.454  qed "cons_eqpoll_cons_iff";
  60.455  
  60.456  goalw Cardinal.thy [succ_def] "{a} eqpoll 1";
  60.457 -by (fast_tac (ZF_cs addSIs [eqpoll_refl RS cons_eqpoll_cong]) 1);
  60.458 +by (fast_tac (!claset addSIs [eqpoll_refl RS cons_eqpoll_cong]) 1);
  60.459  qed "singleton_eqpoll_1";
  60.460  
  60.461  goal Cardinal.thy "|{a}| = 1";
  60.462  by (resolve_tac [singleton_eqpoll_1 RS cardinal_cong RS trans] 1);
  60.463 -by (simp_tac (arith_ss addsimps [nat_into_Card RS Card_cardinal_eq]) 1);
  60.464 +by (simp_tac (!simpset addsimps [nat_into_Card RS Card_cardinal_eq]) 1);
  60.465  qed "cardinal_singleton";
  60.466  
  60.467  (*Congruence law for  succ  under equipollence*)
  60.468 @@ -613,13 +613,13 @@
  60.469  (*Congruence law for + under equipollence*)
  60.470  goalw Cardinal.thy [eqpoll_def]
  60.471      "!!A B C D. [| A eqpoll C;  B eqpoll D |] ==> A+B eqpoll C+D";
  60.472 -by (fast_tac (ZF_cs addSIs [sum_bij]) 1);
  60.473 +by (fast_tac (!claset addSIs [sum_bij]) 1);
  60.474  qed "sum_eqpoll_cong";
  60.475  
  60.476  (*Congruence law for * under equipollence*)
  60.477  goalw Cardinal.thy [eqpoll_def]
  60.478      "!!A B C D. [| A eqpoll C;  B eqpoll D |] ==> A*B eqpoll C*D";
  60.479 -by (fast_tac (ZF_cs addSIs [prod_bij]) 1);
  60.480 +by (fast_tac (!claset addSIs [prod_bij]) 1);
  60.481  qed "prod_eqpoll_cong";
  60.482  
  60.483  goalw Cardinal.thy [eqpoll_def]
  60.484 @@ -628,16 +628,16 @@
  60.485  by (res_inst_tac [("c", "%x. if(x:A, f`x, x)"),
  60.486                    ("d", "%y. if(y: range(f), converse(f)`y, y)")] 
  60.487      lam_bijective 1);
  60.488 -by (fast_tac (ZF_cs addSIs [if_type, apply_type] addIs [inj_is_fun]) 1);
  60.489 +by (fast_tac (!claset addSIs [if_type, apply_type] addIs [inj_is_fun]) 1);
  60.490  by (asm_simp_tac 
  60.491 -    (ZF_ss addsimps [inj_converse_fun RS apply_funtype]
  60.492 +    (!simpset addsimps [inj_converse_fun RS apply_funtype]
  60.493             setloop split_tac [expand_if]) 1);
  60.494 -by (asm_simp_tac (ZF_ss addsimps [inj_is_fun RS apply_rangeI, left_inverse]
  60.495 +by (asm_simp_tac (!simpset addsimps [inj_is_fun RS apply_rangeI, left_inverse]
  60.496                          setloop etac UnE') 1);
  60.497  by (asm_simp_tac 
  60.498 -    (ZF_ss addsimps [inj_converse_fun RS apply_funtype, right_inverse]
  60.499 +    (!simpset addsimps [inj_converse_fun RS apply_funtype, right_inverse]
  60.500             setloop split_tac [expand_if]) 1);
  60.501 -by (fast_tac (ZF_cs addEs [equals0D]) 1);
  60.502 +by (fast_tac (!claset addEs [equals0D]) 1);
  60.503  qed "inj_disjoint_eqpoll";
  60.504  
  60.505  
  60.506 @@ -650,7 +650,7 @@
  60.507  by (rtac cons_lepoll_consD 1);
  60.508  by (rtac mem_not_refl 3);
  60.509  by (eresolve_tac [cons_Diff RS ssubst] 1);
  60.510 -by (safe_tac ZF_cs);
  60.511 +by (safe_tac (!claset));
  60.512  qed "Diff_sing_lepoll";
  60.513  
  60.514  (*If A has at least n+1 elements then A-{a} has at least n.*)
  60.515 @@ -658,12 +658,12 @@
  60.516        "!!A a n. [| succ(n) lepoll A |] ==> n lepoll A - {a}";
  60.517  by (rtac cons_lepoll_consD 1);
  60.518  by (rtac mem_not_refl 2);
  60.519 -by (fast_tac ZF_cs 2);
  60.520 -by (fast_tac (ZF_cs addSEs [subset_imp_lepoll RSN (2, lepoll_trans)]) 1);
  60.521 +by (Fast_tac 2);
  60.522 +by (fast_tac (!claset addSEs [subset_imp_lepoll RSN (2, lepoll_trans)]) 1);
  60.523  qed "lepoll_Diff_sing";
  60.524  
  60.525  goal Cardinal.thy "!!A a n. [| a:A; A eqpoll succ(n) |] ==> A - {a} eqpoll n";
  60.526 -by (fast_tac (ZF_cs addSIs [eqpollI] addSEs [eqpollE] 
  60.527 +by (fast_tac (!claset addSIs [eqpollI] addSEs [eqpollE] 
  60.528                      addIs [Diff_sing_lepoll,lepoll_Diff_sing]) 1);
  60.529  qed "Diff_sing_eqpoll";
  60.530  
  60.531 @@ -678,8 +678,8 @@
  60.532  by (res_inst_tac [("x","lam x: A Un B. if (x:A,Inl(x),Inr(x))")] exI 1);
  60.533  by (res_inst_tac [("d","%z. snd(z)")] lam_injective 1);
  60.534  by (split_tac [expand_if] 1);
  60.535 -by (fast_tac (ZF_cs addSIs [InlI, InrI]) 1);
  60.536 -by (asm_full_simp_tac (ZF_ss addsimps [Inl_def, Inr_def]
  60.537 +by (fast_tac (!claset addSIs [InlI, InrI]) 1);
  60.538 +by (asm_full_simp_tac (!simpset addsimps [Inl_def, Inr_def]
  60.539                         setloop split_tac [expand_if]) 1);
  60.540  qed "Un_lepoll_sum";
  60.541  
  60.542 @@ -687,20 +687,20 @@
  60.543  (*** Finite and infinite sets ***)
  60.544  
  60.545  goalw Cardinal.thy [Finite_def] "Finite(0)";
  60.546 -by (fast_tac (ZF_cs addSIs [eqpoll_refl, nat_0I]) 1);
  60.547 +by (fast_tac (!claset addSIs [eqpoll_refl, nat_0I]) 1);
  60.548  qed "Finite_0";
  60.549  
  60.550  goalw Cardinal.thy [Finite_def]
  60.551      "!!A. [| A lepoll n;  n:nat |] ==> Finite(A)";
  60.552  by (etac rev_mp 1);
  60.553  by (etac nat_induct 1);
  60.554 -by (fast_tac (ZF_cs addSDs [lepoll_0_is_0] addSIs [eqpoll_refl,nat_0I]) 1);
  60.555 -by (fast_tac (ZF_cs addSDs [lepoll_succ_disj] addSIs [nat_succI]) 1);
  60.556 +by (fast_tac (!claset addSDs [lepoll_0_is_0] addSIs [eqpoll_refl,nat_0I]) 1);
  60.557 +by (fast_tac (!claset addSDs [lepoll_succ_disj] addSIs [nat_succI]) 1);
  60.558  qed "lepoll_nat_imp_Finite";
  60.559  
  60.560  goalw Cardinal.thy [Finite_def]
  60.561       "!!X. [| Y lepoll X;  Finite(X) |] ==> Finite(Y)";
  60.562 -by (fast_tac (ZF_cs addSEs [eqpollE] 
  60.563 +by (fast_tac (!claset addSEs [eqpollE] 
  60.564                      addEs [lepoll_trans RS 
  60.565                       rewrite_rule [Finite_def] lepoll_nat_imp_Finite]) 1);
  60.566  qed "lepoll_Finite";
  60.567 @@ -711,12 +711,12 @@
  60.568  
  60.569  goalw Cardinal.thy [Finite_def] "!!x. Finite(x) ==> Finite(cons(y,x))";
  60.570  by (excluded_middle_tac "y:x" 1);
  60.571 -by (asm_simp_tac (ZF_ss addsimps [cons_absorb]) 2);
  60.572 +by (asm_simp_tac (!simpset addsimps [cons_absorb]) 2);
  60.573  by (etac bexE 1);
  60.574  by (rtac bexI 1);
  60.575  by (etac nat_succI 2);
  60.576  by (asm_simp_tac 
  60.577 -    (ZF_ss addsimps [succ_def, cons_eqpoll_cong, mem_not_refl]) 1);
  60.578 +    (!simpset addsimps [succ_def, cons_eqpoll_cong, mem_not_refl]) 1);
  60.579  qed "Finite_cons";
  60.580  
  60.581  goalw Cardinal.thy [succ_def] "!!x. Finite(x) ==> Finite(succ(x))";
  60.582 @@ -727,12 +727,12 @@
  60.583        "!!i. [| Ord(i);  ~ Finite(i) |] ==> nat le i";
  60.584  by (eresolve_tac [Ord_nat RSN (2,Ord_linear2)] 1);
  60.585  by (assume_tac 2);
  60.586 -by (fast_tac (ZF_cs addSIs [eqpoll_refl] addSEs [ltE]) 1);
  60.587 +by (fast_tac (!claset addSIs [eqpoll_refl] addSEs [ltE]) 1);
  60.588  qed "nat_le_infinite_Ord";
  60.589  
  60.590  goalw Cardinal.thy [Finite_def, eqpoll_def]
  60.591      "!!A. Finite(A) ==> EX r. well_ord(A,r)";
  60.592 -by (fast_tac (ZF_cs addIs [well_ord_rvimage, bij_is_inj, well_ord_Memrel, 
  60.593 +by (fast_tac (!claset addIs [well_ord_rvimage, bij_is_inj, well_ord_Memrel, 
  60.594                             nat_into_Ord]) 1);
  60.595  qed "Finite_imp_well_ord";
  60.596  
  60.597 @@ -742,22 +742,22 @@
  60.598  
  60.599  goal Nat.thy "!!n. n:nat ==> wf[n](converse(Memrel(n)))";
  60.600  by (etac nat_induct 1);
  60.601 -by (fast_tac (ZF_cs addIs [wf_onI]) 1);
  60.602 +by (fast_tac (!claset addIs [wf_onI]) 1);
  60.603  by (rtac wf_onI 1);
  60.604 -by (asm_full_simp_tac (ZF_ss addsimps [wf_on_def, wf_def, Memrel_iff]) 1);
  60.605 +by (asm_full_simp_tac (!simpset addsimps [wf_on_def, wf_def, Memrel_iff]) 1);
  60.606  by (excluded_middle_tac "x:Z" 1);
  60.607  by (dres_inst_tac [("x", "x")] bspec 2 THEN assume_tac 2);
  60.608 -by (fast_tac (ZF_cs addSEs [mem_irrefl] addEs [mem_asym]) 2);
  60.609 +by (fast_tac (!claset addSEs [mem_irrefl] addEs [mem_asym]) 2);
  60.610  by (dres_inst_tac [("x", "Z")] spec 1);
  60.611 -by (safe_tac ZF_cs);
  60.612 +by (safe_tac (!claset));
  60.613  by (dres_inst_tac [("x", "xa")] bspec 1 THEN assume_tac 1);
  60.614 -by (fast_tac ZF_cs 1);
  60.615 +by (Fast_tac 1);
  60.616  qed "nat_wf_on_converse_Memrel";
  60.617  
  60.618  goal Cardinal.thy "!!n. n:nat ==> well_ord(n,converse(Memrel(n)))";
  60.619  by (forward_tac [Ord_nat RS Ord_in_Ord RS well_ord_Memrel] 1);
  60.620  by (rewtac well_ord_def);
  60.621 -by (fast_tac (ZF_cs addSIs [tot_ord_converse, nat_wf_on_converse_Memrel]) 1);
  60.622 +by (fast_tac (!claset addSIs [tot_ord_converse, nat_wf_on_converse_Memrel]) 1);
  60.623  qed "nat_well_ord_converse_Memrel";
  60.624  
  60.625  goal Cardinal.thy
  60.626 @@ -768,7 +768,7 @@
  60.627  by (forward_tac [ordermap_bij RS bij_is_inj RS well_ord_rvimage] 1);
  60.628  by (assume_tac 1);
  60.629  by (asm_full_simp_tac
  60.630 -    (ZF_ss addsimps [rvimage_converse, converse_Int, converse_prod, 
  60.631 +    (!simpset addsimps [rvimage_converse, converse_Int, converse_prod, 
  60.632                       ordertype_ord_iso RS ord_iso_rvimage_eq]) 1);
  60.633  qed "well_ord_converse";
  60.634  
  60.635 @@ -778,12 +778,12 @@
  60.636      REPEAT (assume_tac 1));
  60.637  by (rtac eqpoll_trans 1 THEN assume_tac 2);
  60.638  by (rewtac eqpoll_def);
  60.639 -by (fast_tac (ZF_cs addSIs [ordermap_bij RS bij_converse_bij]) 1);
  60.640 +by (fast_tac (!claset addSIs [ordermap_bij RS bij_converse_bij]) 1);
  60.641  qed "ordertype_eq_n";
  60.642  
  60.643  goalw Cardinal.thy [Finite_def]
  60.644      "!!A. [| Finite(A);  well_ord(A,r) |] ==> well_ord(A,converse(r))";
  60.645  by (rtac well_ord_converse 1 THEN assume_tac 1);
  60.646 -by (fast_tac (ZF_cs addDs [ordertype_eq_n] 
  60.647 +by (fast_tac (!claset addDs [ordertype_eq_n] 
  60.648                      addSIs [nat_well_ord_converse_Memrel]) 1);
  60.649  qed "Finite_well_ord_converse";
    61.1 --- a/src/ZF/CardinalArith.ML	Fri Jan 03 10:48:28 1997 +0100
    61.2 +++ b/src/ZF/CardinalArith.ML	Fri Jan 03 15:01:55 1997 +0100
    61.3 @@ -21,8 +21,8 @@
    61.4  by (rtac exI 1);
    61.5  by (res_inst_tac [("c", "case(Inr, Inl)"), ("d", "case(Inr, Inl)")] 
    61.6      lam_bijective 1);
    61.7 -by (safe_tac (ZF_cs addSEs [sumE]));
    61.8 -by (ALLGOALS (asm_simp_tac case_ss));
    61.9 +by (safe_tac (!claset addSEs [sumE]));
   61.10 +by (ALLGOALS (Asm_simp_tac));
   61.11  qed "sum_commute_eqpoll";
   61.12  
   61.13  goalw CardinalArith.thy [cadd_def] "i |+| j = j |+| i";
   61.14 @@ -57,7 +57,7 @@
   61.15  qed "sum_0_eqpoll";
   61.16  
   61.17  goalw CardinalArith.thy [cadd_def] "!!K. Card(K) ==> 0 |+| K = K";
   61.18 -by (asm_simp_tac (ZF_ss addsimps [sum_0_eqpoll RS cardinal_cong, 
   61.19 +by (asm_simp_tac (!simpset addsimps [sum_0_eqpoll RS cardinal_cong, 
   61.20                                    Card_cardinal_eq]) 1);
   61.21  qed "cadd_0";
   61.22  
   61.23 @@ -65,7 +65,7 @@
   61.24  
   61.25  goalw CardinalArith.thy [lepoll_def, inj_def] "A lepoll A+B";
   61.26  by (res_inst_tac [("x", "lam x:A. Inl(x)")] exI 1);
   61.27 -by (asm_simp_tac (sum_ss addsimps [lam_type]) 1);
   61.28 +by (asm_simp_tac (!simpset addsimps [lam_type]) 1);
   61.29  qed "sum_lepoll_self";
   61.30  
   61.31  (*Could probably weaken the premises to well_ord(K,r), or removing using AC*)
   61.32 @@ -88,12 +88,12 @@
   61.33        lam_injective 1);
   61.34  by (typechk_tac ([inj_is_fun, case_type, InlI, InrI] @ ZF_typechecks));
   61.35  by (etac sumE 1);
   61.36 -by (ALLGOALS (asm_simp_tac (sum_ss addsimps [left_inverse])));
   61.37 +by (ALLGOALS (asm_simp_tac (!simpset addsimps [left_inverse])));
   61.38  qed "sum_lepoll_mono";
   61.39  
   61.40  goalw CardinalArith.thy [cadd_def]
   61.41      "!!K. [| K' le K;  L' le L |] ==> (K' |+| L') le (K |+| L)";
   61.42 -by (safe_tac (ZF_cs addSDs [le_subset_iff RS iffD1]));
   61.43 +by (safe_tac (!claset addSDs [le_subset_iff RS iffD1]));
   61.44  by (rtac well_ord_lepoll_imp_Card_le 1);
   61.45  by (REPEAT (ares_tac [sum_lepoll_mono, subset_imp_lepoll] 2));
   61.46  by (REPEAT (ares_tac [well_ord_radd, well_ord_Memrel] 1));
   61.47 @@ -107,7 +107,7 @@
   61.48                    ("d", "%z.if(z=A+B,Inl(A),z)")] 
   61.49      lam_bijective 1);
   61.50  by (ALLGOALS
   61.51 -    (asm_simp_tac (case_ss addsimps [succI2, mem_imp_not_eq]
   61.52 +    (asm_simp_tac (!simpset addsimps [succI2, mem_imp_not_eq]
   61.53                             setloop eresolve_tac [sumE,succE])));
   61.54  qed "sum_succ_eqpoll";
   61.55  
   61.56 @@ -125,8 +125,8 @@
   61.57      "[| m: nat;  n: nat |] ==> m |+| n = m#+n";
   61.58  by (cut_facts_tac [nnat] 1);
   61.59  by (nat_ind_tac "m" [mnat] 1);
   61.60 -by (asm_simp_tac (arith_ss addsimps [nat_into_Card RS cadd_0]) 1);
   61.61 -by (asm_simp_tac (arith_ss addsimps [nat_into_Ord, cadd_succ_lemma,
   61.62 +by (asm_simp_tac (!simpset addsimps [nat_into_Card RS cadd_0]) 1);
   61.63 +by (asm_simp_tac (!simpset addsimps [nat_into_Ord, cadd_succ_lemma,
   61.64                                       nat_into_Card RS Card_cardinal_eq]) 1);
   61.65  qed "nat_cadd_eq_add";
   61.66  
   61.67 @@ -140,8 +140,8 @@
   61.68  by (rtac exI 1);
   61.69  by (res_inst_tac [("c", "%<x,y>.<y,x>"), ("d", "%<x,y>.<y,x>")] 
   61.70      lam_bijective 1);
   61.71 -by (safe_tac ZF_cs);
   61.72 -by (ALLGOALS (asm_simp_tac ZF_ss));
   61.73 +by (safe_tac (!claset));
   61.74 +by (ALLGOALS (Asm_simp_tac));
   61.75  qed "prod_commute_eqpoll";
   61.76  
   61.77  goalw CardinalArith.thy [cmult_def] "i |*| j = j |*| i";
   61.78 @@ -192,11 +192,11 @@
   61.79  goalw CardinalArith.thy [eqpoll_def] "0*A eqpoll 0";
   61.80  by (rtac exI 1);
   61.81  by (rtac lam_bijective 1);
   61.82 -by (safe_tac ZF_cs);
   61.83 +by (safe_tac (!claset));
   61.84  qed "prod_0_eqpoll";
   61.85  
   61.86  goalw CardinalArith.thy [cmult_def] "0 |*| i = 0";
   61.87 -by (asm_simp_tac (ZF_ss addsimps [prod_0_eqpoll RS cardinal_cong, 
   61.88 +by (asm_simp_tac (!simpset addsimps [prod_0_eqpoll RS cardinal_cong, 
   61.89                                    Card_0 RS Card_cardinal_eq]) 1);
   61.90  qed "cmult_0";
   61.91  
   61.92 @@ -208,7 +208,7 @@
   61.93  qed "prod_singleton_eqpoll";
   61.94  
   61.95  goalw CardinalArith.thy [cmult_def, succ_def] "!!K. Card(K) ==> 1 |*| K = K";
   61.96 -by (asm_simp_tac (ZF_ss addsimps [prod_singleton_eqpoll RS cardinal_cong, 
   61.97 +by (asm_simp_tac (!simpset addsimps [prod_singleton_eqpoll RS cardinal_cong, 
   61.98                                    Card_cardinal_eq]) 1);
   61.99  qed "cmult_1";
  61.100  
  61.101 @@ -216,7 +216,7 @@
  61.102  
  61.103  goalw CardinalArith.thy [lepoll_def, inj_def] "A lepoll A*A";
  61.104  by (res_inst_tac [("x", "lam x:A. <x,x>")] exI 1);
  61.105 -by (simp_tac (ZF_ss addsimps [lam_type]) 1);
  61.106 +by (simp_tac (!simpset addsimps [lam_type]) 1);
  61.107  qed "prod_square_lepoll";
  61.108  
  61.109  (*Could probably weaken the premise to well_ord(K,r), or remove using AC*)
  61.110 @@ -225,14 +225,14 @@
  61.111  by (rtac well_ord_lepoll_imp_Card_le 2);
  61.112  by (rtac prod_square_lepoll 3);
  61.113  by (REPEAT (ares_tac [well_ord_rmult, well_ord_Memrel, Card_is_Ord] 2));
  61.114 -by (asm_simp_tac (ZF_ss addsimps [le_refl, Card_is_Ord, Card_cardinal_eq]) 1);
  61.115 +by (asm_simp_tac (!simpset addsimps [le_refl, Card_is_Ord, Card_cardinal_eq]) 1);
  61.116  qed "cmult_square_le";
  61.117  
  61.118  (** Multiplication by a non-zero cardinal **)
  61.119  
  61.120  goalw CardinalArith.thy [lepoll_def, inj_def] "!!b. b: B ==> A lepoll A*B";
  61.121  by (res_inst_tac [("x", "lam x:A. <x,b>")] exI 1);
  61.122 -by (asm_simp_tac (ZF_ss addsimps [lam_type]) 1);
  61.123 +by (asm_simp_tac (!simpset addsimps [lam_type]) 1);
  61.124  qed "prod_lepoll_self";
  61.125  
  61.126  (*Could probably weaken the premises to well_ord(K,r), or removing using AC*)
  61.127 @@ -253,12 +253,12 @@
  61.128                    lam_injective 1);
  61.129  by (typechk_tac (inj_is_fun::ZF_typechecks));
  61.130  by (etac SigmaE 1);
  61.131 -by (asm_simp_tac (ZF_ss addsimps [left_inverse]) 1);
  61.132 +by (asm_simp_tac (!simpset addsimps [left_inverse]) 1);
  61.133  qed "prod_lepoll_mono";
  61.134  
  61.135  goalw CardinalArith.thy [cmult_def]
  61.136      "!!K. [| K' le K;  L' le L |] ==> (K' |*| L') le (K |*| L)";
  61.137 -by (safe_tac (ZF_cs addSDs [le_subset_iff RS iffD1]));
  61.138 +by (safe_tac (!claset addSDs [le_subset_iff RS iffD1]));
  61.139  by (rtac well_ord_lepoll_imp_Card_le 1);
  61.140  by (REPEAT (ares_tac [prod_lepoll_mono, subset_imp_lepoll] 2));
  61.141  by (REPEAT (ares_tac [well_ord_rmult, well_ord_Memrel] 1));
  61.142 @@ -271,9 +271,9 @@
  61.143  by (res_inst_tac [("c", "%<x,y>. if(x=A, Inl(y), Inr(<x,y>))"), 
  61.144                    ("d", "case(%y. <A,y>, %z.z)")] 
  61.145      lam_bijective 1);
  61.146 -by (safe_tac (ZF_cs addSEs [sumE]));
  61.147 +by (safe_tac (!claset addSEs [sumE]));
  61.148  by (ALLGOALS
  61.149 -    (asm_simp_tac (case_ss addsimps [succI2, if_type, mem_imp_not_eq])));
  61.150 +    (asm_simp_tac (!simpset addsimps [succI2, if_type, mem_imp_not_eq])));
  61.151  qed "prod_succ_eqpoll";
  61.152  
  61.153  (*Unconditional version requires AC*)
  61.154 @@ -289,14 +289,14 @@
  61.155      "[| m: nat;  n: nat |] ==> m |*| n = m#*n";
  61.156  by (cut_facts_tac [nnat] 1);
  61.157  by (nat_ind_tac "m" [mnat] 1);
  61.158 -by (asm_simp_tac (arith_ss addsimps [cmult_0]) 1);
  61.159 -by (asm_simp_tac (arith_ss addsimps [nat_into_Ord, cmult_succ_lemma,
  61.160 +by (asm_simp_tac (!simpset addsimps [cmult_0]) 1);
  61.161 +by (asm_simp_tac (!simpset addsimps [nat_into_Ord, cmult_succ_lemma,
  61.162                                       nat_cadd_eq_add]) 1);
  61.163  qed "nat_cmult_eq_mult";
  61.164  
  61.165  goal CardinalArith.thy "!!m n. Card(n) ==> 2 |*| n = n |+| n";
  61.166  by (asm_simp_tac 
  61.167 -    (ZF_ss addsimps [Ord_0, Ord_succ, cmult_0, cmult_succ_lemma, Card_is_Ord,
  61.168 +    (!simpset addsimps [Ord_0, Ord_succ, cmult_0, cmult_succ_lemma, Card_is_Ord,
  61.169                       read_instantiate [("j","0")] cadd_commute, cadd_0]) 1);
  61.170  qed "cmult_2";
  61.171  
  61.172 @@ -316,10 +316,10 @@
  61.173  by (res_inst_tac [("d", "%y. if(y: range(f),    \
  61.174  \                               nat_case(u, %z.f`z, converse(f)`y), y)")] 
  61.175      lam_injective 1);
  61.176 -by (fast_tac (ZF_cs addSIs [if_type, nat_0I, nat_succI, apply_type]
  61.177 +by (fast_tac (!claset addSIs [if_type, nat_0I, nat_succI, apply_type]
  61.178                      addIs  [inj_is_fun, inj_converse_fun]) 1);
  61.179  by (asm_simp_tac 
  61.180 -    (ZF_ss addsimps [inj_is_fun RS apply_rangeI,
  61.181 +    (!simpset addsimps [inj_is_fun RS apply_rangeI,
  61.182                       inj_converse_fun RS apply_rangeI,
  61.183                       inj_converse_fun RS apply_funtype,
  61.184                       left_inverse, right_inverse, nat_0I, nat_succI, 
  61.185 @@ -338,7 +338,7 @@
  61.186  qed "nat_succ_eqpoll";
  61.187  
  61.188  goalw CardinalArith.thy [InfCard_def] "InfCard(nat)";
  61.189 -by (fast_tac (ZF_cs addIs [Card_nat, le_refl, Card_is_Ord]) 1);
  61.190 +by (fast_tac (!claset addIs [Card_nat, le_refl, Card_is_Ord]) 1);
  61.191  qed "InfCard_nat";
  61.192  
  61.193  goalw CardinalArith.thy [InfCard_def] "!!K. InfCard(K) ==> Card(K)";
  61.194 @@ -347,7 +347,7 @@
  61.195  
  61.196  goalw CardinalArith.thy [InfCard_def]
  61.197      "!!K L. [| InfCard(K);  Card(L) |] ==> InfCard(K Un L)";
  61.198 -by (asm_simp_tac (ZF_ss addsimps [Card_Un, Un_upper1_le RSN (2,le_trans), 
  61.199 +by (asm_simp_tac (!simpset addsimps [Card_Un, Un_upper1_le RSN (2,le_trans), 
  61.200                                    Card_is_Ord]) 1);
  61.201  qed "InfCard_Un";
  61.202  
  61.203 @@ -357,7 +357,7 @@
  61.204  by (forward_tac [Card_is_Ord] 1);
  61.205  by (rtac (ltI RS non_succ_LimitI) 1);
  61.206  by (etac ([asm_rl, nat_0I] MRS (le_imp_subset RS subsetD)) 1);
  61.207 -by (safe_tac (ZF_cs addSDs [Limit_nat RS Limit_le_succD]));
  61.208 +by (safe_tac (!claset addSDs [Limit_nat RS Limit_le_succD]));
  61.209  by (rewtac Card_def);
  61.210  by (dtac trans 1);
  61.211  by (etac (le_imp_subset RS nat_succ_eqpoll RS cardinal_cong) 1);
  61.212 @@ -372,7 +372,7 @@
  61.213  goalw Cardinal.thy [eqpoll_def]
  61.214      "!!A. [| well_ord(A,r);  x:A |] ==> ordermap(A,r)`x eqpoll pred(A,x,r)";
  61.215  by (rtac exI 1);
  61.216 -by (asm_simp_tac (ZF_ss addsimps [ordermap_eq_image, well_ord_is_wf]) 1);
  61.217 +by (asm_simp_tac (!simpset addsimps [ordermap_eq_image, well_ord_is_wf]) 1);
  61.218  by (etac (ordermap_bij RS bij_is_inj RS restrict_bij RS bij_converse_bij) 1);
  61.219  by (rtac pred_subset 1);
  61.220  qed "ordermap_eqpoll_pred";
  61.221 @@ -381,7 +381,7 @@
  61.222  
  61.223  goalw CardinalArith.thy [inj_def]
  61.224   "!!K. Ord(K) ==> (lam <x,y>:K*K. <x Un y, x, y>) : inj(K*K, K*K*K)";
  61.225 -by (fast_tac (ZF_cs addss ZF_ss
  61.226 +by (fast_tac (!claset addss (!simpset)
  61.227                      addIs [lam_type, Un_least_lt RS ltD, ltI]) 1);
  61.228  qed "csquare_lam_inj";
  61.229  
  61.230 @@ -397,22 +397,22 @@
  61.231   "!!K. [| x<K;  y<K;  z<K |] ==> \
  61.232  \      <<x,y>, <z,z>> : csquare_rel(K) --> x le z & y le z";
  61.233  by (REPEAT (etac ltE 1));
  61.234 -by (asm_simp_tac (ZF_ss addsimps [rvimage_iff, rmult_iff, Memrel_iff,
  61.235 +by (asm_simp_tac (!simpset addsimps [rvimage_iff, rmult_iff, Memrel_iff,
  61.236                                    Un_absorb, Un_least_mem_iff, ltD]) 1);
  61.237 -by (safe_tac (ZF_cs addSEs [mem_irrefl] 
  61.238 +by (safe_tac (!claset addSEs [mem_irrefl] 
  61.239                      addSIs [Un_upper1_le, Un_upper2_le]));
  61.240 -by (ALLGOALS (asm_simp_tac (ZF_ss addsimps [lt_def, succI2, Ord_succ])));
  61.241 +by (ALLGOALS (asm_simp_tac (!simpset addsimps [lt_def, succI2, Ord_succ])));
  61.242  val csquareD_lemma = result();
  61.243  
  61.244  bind_thm ("csquareD", csquareD_lemma RS mp);
  61.245  
  61.246  goalw CardinalArith.thy [pred_def]
  61.247   "!!K. z<K ==> pred(K*K, <z,z>, csquare_rel(K)) <= succ(z)*succ(z)";
  61.248 -by (safe_tac (lemmas_cs addSEs [SigmaE]));      (*avoids using succCI*)
  61.249 +by (safe_tac (claset_of"ZF" addSEs [SigmaE]));  (*avoids using succCI,...*)
  61.250  by (rtac (csquareD RS conjE) 1);
  61.251  by (rewtac lt_def);
  61.252  by (assume_tac 4);
  61.253 -by (ALLGOALS (fast_tac ZF_cs));
  61.254 +by (ALLGOALS Fast_tac);
  61.255  qed "pred_csquare_subset";
  61.256  
  61.257  goalw CardinalArith.thy [csquare_rel_def]
  61.258 @@ -420,8 +420,8 @@
  61.259  by (subgoals_tac ["x<K", "y<K"] 1);
  61.260  by (REPEAT (eresolve_tac [asm_rl, lt_trans] 2));
  61.261  by (REPEAT (etac ltE 1));
  61.262 -by (asm_simp_tac (ZF_ss addsimps [rvimage_iff, rmult_iff, Memrel_iff,
  61.263 -                                  Un_absorb, Un_least_mem_iff, ltD]) 1);
  61.264 +by (asm_simp_tac (!simpset addsimps [rvimage_iff, rmult_iff, Memrel_iff,
  61.265 +				     Un_absorb, Un_least_mem_iff, ltD]) 1);
  61.266  qed "csquare_ltI";
  61.267  
  61.268  (*Part of the traditional proof.  UNUSED since it's harder to prove & apply *)
  61.269 @@ -431,11 +431,11 @@
  61.270  by (subgoals_tac ["x<K", "y<K"] 1);
  61.271  by (REPEAT (eresolve_tac [asm_rl, lt_trans1] 2));
  61.272  by (REPEAT (etac ltE 1));
  61.273 -by (asm_simp_tac (ZF_ss addsimps [rvimage_iff, rmult_iff, Memrel_iff,
  61.274 +by (asm_simp_tac (!simpset addsimps [rvimage_iff, rmult_iff, Memrel_iff,
  61.275                                    Un_absorb, Un_least_mem_iff, ltD]) 1);
  61.276  by (REPEAT_FIRST (etac succE));
  61.277  by (ALLGOALS
  61.278 -    (asm_simp_tac (ZF_ss addsimps [subset_Un_iff RS iff_sym, 
  61.279 +    (asm_simp_tac (!simpset addsimps [subset_Un_iff RS iff_sym, 
  61.280                                     subset_Un_iff2 RS iff_sym, OrdmemD])));
  61.281  qed "csquare_or_eqI";
  61.282  
  61.283 @@ -447,11 +447,11 @@
  61.284  \         ordermap(K*K, csquare_rel(K)) ` <z,z>";
  61.285  by (subgoals_tac ["z<K", "well_ord(K*K, csquare_rel(K))"] 1);
  61.286  by (etac (Limit_is_Ord RS well_ord_csquare) 2);
  61.287 -by (fast_tac (ZF_cs addSIs [Un_least_lt, Limit_has_succ]) 2);
  61.288 +by (fast_tac (!claset addSIs [Un_least_lt, Limit_has_succ]) 2);
  61.289  by (rtac (csquare_ltI RS ordermap_mono RS ltI) 1);
  61.290  by (etac well_ord_is_wf 4);
  61.291  by (ALLGOALS 
  61.292 -    (fast_tac (ZF_cs addSIs [Un_upper1_le, Un_upper2_le, Ord_ordermap] 
  61.293 +    (fast_tac (!claset addSIs [Un_upper1_le, Un_upper2_le, Ord_ordermap] 
  61.294                       addSEs [ltE])));
  61.295  qed "ordermap_z_lt";
  61.296  
  61.297 @@ -462,12 +462,12 @@
  61.298  by (rtac (well_ord_rmult RS well_ord_lepoll_imp_Card_le) 1);
  61.299  by (REPEAT (ares_tac [Ord_cardinal, well_ord_Memrel] 1));
  61.300  by (subgoals_tac ["z<K"] 1);
  61.301 -by (fast_tac (ZF_cs addSIs [Un_least_lt, Limit_has_succ]) 2);
  61.302 +by (fast_tac (!claset addSIs [Un_least_lt, Limit_has_succ]) 2);
  61.303  by (rtac (ordermap_z_lt RS leI RS le_imp_lepoll RS lepoll_trans) 1);
  61.304  by (REPEAT_SOME assume_tac);
  61.305  by (rtac (ordermap_eqpoll_pred RS eqpoll_imp_lepoll RS lepoll_trans) 1);
  61.306  by (etac (Limit_is_Ord RS well_ord_csquare) 1);
  61.307 -by (fast_tac (ZF_cs addIs [ltD]) 1);
  61.308 +by (fast_tac (!claset addIs [ltD]) 1);
  61.309  by (rtac (pred_csquare_subset RS subset_imp_lepoll RS lepoll_trans) 1 THEN
  61.310      assume_tac 1);
  61.311  by (REPEAT_FIRST (etac ltE));
  61.312 @@ -486,8 +486,8 @@
  61.313  by (rtac Card_lt_imp_lt 1);
  61.314  by (etac InfCard_is_Card 3);
  61.315  by (etac ltE 2 THEN assume_tac 2);
  61.316 -by (asm_full_simp_tac (ZF_ss addsimps [ordertype_unfold]) 1);
  61.317 -by (safe_tac (ZF_cs addSEs [ltE]));
  61.318 +by (asm_full_simp_tac (!simpset addsimps [ordertype_unfold]) 1);
  61.319 +by (safe_tac (!claset addSEs [ltE]));
  61.320  by (subgoals_tac ["Ord(xb)", "Ord(y)"] 1);
  61.321  by (REPEAT (eresolve_tac [asm_rl, Ord_in_Ord] 2));
  61.322  by (rtac (InfCard_is_Limit RS ordermap_csquare_le RS lt_trans1) 1  THEN
  61.323 @@ -496,13 +496,13 @@
  61.324      REPEAT (ares_tac [Ord_Un, Ord_nat] 1));
  61.325  (*the finite case: xb Un y < nat *)
  61.326  by (res_inst_tac [("j", "nat")] lt_trans2 1);
  61.327 -by (asm_full_simp_tac (FOL_ss addsimps [InfCard_def]) 2);
  61.328 +by (asm_full_simp_tac (!simpset addsimps [InfCard_def]) 2);
  61.329  by (asm_full_simp_tac
  61.330 -    (ZF_ss addsimps [lt_def, nat_cmult_eq_mult, nat_succI, mult_type,
  61.331 +    (!simpset addsimps [lt_def, nat_cmult_eq_mult, nat_succI, mult_type,
  61.332                       nat_into_Card RS Card_cardinal_eq, Ord_nat]) 1);
  61.333  (*case nat le (xb Un y) *)
  61.334  by (asm_full_simp_tac
  61.335 -    (ZF_ss addsimps [le_imp_subset RS nat_succ_eqpoll RS cardinal_cong,
  61.336 +    (!simpset addsimps [le_imp_subset RS nat_succ_eqpoll RS cardinal_cong,
  61.337                       le_succ_iff, InfCard_def, Card_cardinal, Un_least_lt, 
  61.338                       Ord_Un, ltI, nat_le_cardinal,
  61.339                       Ord_cardinal_le RS lt_trans1 RS ltD]) 1);
  61.340 @@ -520,7 +520,7 @@
  61.341  by (assume_tac 2);
  61.342  by (assume_tac 2);
  61.343  by (asm_simp_tac 
  61.344 -    (ZF_ss addsimps [cmult_def, Ord_cardinal_le,
  61.345 +    (!simpset addsimps [cmult_def, Ord_cardinal_le,
  61.346                       well_ord_csquare RS ordermap_bij RS 
  61.347                            bij_imp_eqpoll RS cardinal_cong,
  61.348                       well_ord_csquare RS Ord_ordertype]) 1);
  61.349 @@ -533,7 +533,7 @@
  61.350  by (REPEAT (etac (well_ord_cardinal_eqpoll RS eqpoll_sym) 1));
  61.351  by (rtac well_ord_cardinal_eqE 1);
  61.352  by (REPEAT (ares_tac [Ord_cardinal, well_ord_rmult, well_ord_Memrel] 1));
  61.353 -by (asm_simp_tac (ZF_ss addsimps [symmetric cmult_def, InfCard_csquare_eq]) 1);
  61.354 +by (asm_simp_tac (!simpset addsimps [symmetric cmult_def, InfCard_csquare_eq]) 1);
  61.355  qed "well_ord_InfCard_square_eq";
  61.356  
  61.357  (** Toward's Kunen's Corollary 10.13 (1) **)
  61.358 @@ -544,7 +544,7 @@
  61.359      REPEAT (ares_tac [cmult_le_self, InfCard_is_Card] 2));
  61.360  by (forward_tac [InfCard_is_Card RS Card_is_Ord RS le_refl] 1);
  61.361  by (resolve_tac [cmult_le_mono RS le_trans] 1 THEN REPEAT (assume_tac 1));
  61.362 -by (asm_simp_tac (ZF_ss addsimps [InfCard_csquare_eq]) 1);
  61.363 +by (asm_simp_tac (!simpset addsimps [InfCard_csquare_eq]) 1);
  61.364  qed "InfCard_le_cmult_eq";
  61.365  
  61.366  (*Corollary 10.13 (1), for cardinal multiplication*)
  61.367 @@ -556,14 +556,14 @@
  61.368  by (resolve_tac [Un_commute RS ssubst] 1);
  61.369  by (ALLGOALS
  61.370      (asm_simp_tac 
  61.371 -     (ZF_ss addsimps [InfCard_is_Limit RS Limit_has_0, InfCard_le_cmult_eq,
  61.372 +     (!simpset addsimps [InfCard_is_Limit RS Limit_has_0, InfCard_le_cmult_eq,
  61.373                        subset_Un_iff2 RS iffD1, le_imp_subset])));
  61.374  qed "InfCard_cmult_eq";
  61.375  
  61.376  (*This proof appear to be the simplest!*)
  61.377  goal CardinalArith.thy "!!K. InfCard(K) ==> K |+| K = K";
  61.378  by (asm_simp_tac
  61.379 -    (ZF_ss addsimps [cmult_2 RS sym, InfCard_is_Card, cmult_commute]) 1);
  61.380 +    (!simpset addsimps [cmult_2 RS sym, InfCard_is_Card, cmult_commute]) 1);
  61.381  by (rtac InfCard_le_cmult_eq 1);
  61.382  by (typechk_tac [Ord_0, le_refl, leI]);
  61.383  by (typechk_tac [InfCard_is_Limit, Limit_has_0, Limit_has_succ]);
  61.384 @@ -576,7 +576,7 @@
  61.385      REPEAT (ares_tac [cadd_le_self, InfCard_is_Card] 2));
  61.386  by (forward_tac [InfCard_is_Card RS Card_is_Ord RS le_refl] 1);
  61.387  by (resolve_tac [cadd_le_mono RS le_trans] 1 THEN REPEAT (assume_tac 1));
  61.388 -by (asm_simp_tac (ZF_ss addsimps [InfCard_cdouble_eq]) 1);
  61.389 +by (asm_simp_tac (!simpset addsimps [InfCard_cdouble_eq]) 1);
  61.390  qed "InfCard_le_cadd_eq";
  61.391  
  61.392  goal CardinalArith.thy
  61.393 @@ -587,7 +587,7 @@
  61.394  by (resolve_tac [Un_commute RS ssubst] 1);
  61.395  by (ALLGOALS
  61.396      (asm_simp_tac 
  61.397 -     (ZF_ss addsimps [InfCard_le_cadd_eq,
  61.398 +     (!simpset addsimps [InfCard_le_cadd_eq,
  61.399                        subset_Un_iff2 RS iffD1, le_imp_subset])));
  61.400  qed "InfCard_cadd_eq";
  61.401  
  61.402 @@ -601,14 +601,14 @@
  61.403  
  61.404  goalw CardinalArith.thy [jump_cardinal_def] "Ord(jump_cardinal(K))";
  61.405  by (rtac (Ord_is_Transset RSN (2,OrdI)) 1);
  61.406 -by (fast_tac (ZF_cs addSIs [Ord_ordertype]) 2);
  61.407 +by (fast_tac (!claset addSIs [Ord_ordertype]) 2);
  61.408  by (rewtac Transset_def);
  61.409  by (safe_tac subset_cs);
  61.410 -by (asm_full_simp_tac (ZF_ss addsimps [ordertype_pred_unfold]) 1);
  61.411 -by (safe_tac ZF_cs);
  61.412 +by (asm_full_simp_tac (!simpset addsimps [ordertype_pred_unfold]) 1);
  61.413 +by (safe_tac (!claset));
  61.414  by (rtac UN_I 1);
  61.415  by (rtac ReplaceI 2);
  61.416 -by (ALLGOALS (fast_tac (ZF_cs addSEs [well_ord_subset, predE])));
  61.417 +by (ALLGOALS (fast_tac (!claset addSEs [well_ord_subset, predE])));
  61.418  qed "Ord_jump_cardinal";
  61.419  
  61.420  (*Allows selective unfolding.  Less work than deriving intro/elim rules*)
  61.421 @@ -624,8 +624,8 @@
  61.422  by (resolve_tac [jump_cardinal_iff RS iffD2] 1);
  61.423  by (REPEAT_FIRST (ares_tac [exI, conjI, well_ord_Memrel]));
  61.424  by (rtac subset_refl 2);
  61.425 -by (asm_simp_tac (ZF_ss addsimps [Memrel_def, subset_iff]) 1);
  61.426 -by (asm_simp_tac (ZF_ss addsimps [ordertype_Memrel]) 1);
  61.427 +by (asm_simp_tac (!simpset addsimps [Memrel_def, subset_iff]) 1);
  61.428 +by (asm_simp_tac (!simpset addsimps [ordertype_Memrel]) 1);
  61.429  qed "K_lt_jump_cardinal";
  61.430  
  61.431  (*The proof by contradiction: the bijection f yields a wellordering of X
  61.432 @@ -643,7 +643,7 @@
  61.433  by (etac (bij_is_inj RS well_ord_rvimage) 1);
  61.434  by (rtac (Ord_jump_cardinal RS well_ord_Memrel) 1);
  61.435  by (asm_simp_tac
  61.436 -    (ZF_ss addsimps [well_ord_Memrel RSN (2, bij_ordertype_vimage), 
  61.437 +    (!simpset addsimps [well_ord_Memrel RSN (2, bij_ordertype_vimage), 
  61.438                       ordertype_Memrel, Ord_jump_cardinal]) 1);
  61.439  qed "Card_jump_cardinal_lemma";
  61.440  
  61.441 @@ -651,7 +651,7 @@
  61.442  goal CardinalArith.thy "Card(jump_cardinal(K))";
  61.443  by (rtac (Ord_jump_cardinal RS CardI) 1);
  61.444  by (rewtac eqpoll_def);
  61.445 -by (safe_tac (ZF_cs addSDs [ltD, jump_cardinal_iff RS iffD1]));
  61.446 +by (safe_tac (!claset addSDs [ltD, jump_cardinal_iff RS iffD1]));
  61.447  by (REPEAT (ares_tac [Card_jump_cardinal_lemma RS mem_irrefl] 1));
  61.448  qed "Card_jump_cardinal";
  61.449  
  61.450 @@ -696,12 +696,12 @@
  61.451  goal CardinalArith.thy
  61.452      "!!K' K. [| Card(K'); Card(K) |] ==> K' < csucc(K) <-> K' le K";
  61.453  by (asm_simp_tac 
  61.454 -    (ZF_ss addsimps [lt_csucc_iff, Card_cardinal_eq, Card_is_Ord]) 1);
  61.455 +    (!simpset addsimps [lt_csucc_iff, Card_cardinal_eq, Card_is_Ord]) 1);
  61.456  qed "Card_lt_csucc_iff";
  61.457  
  61.458  goalw CardinalArith.thy [InfCard_def]
  61.459      "!!K. InfCard(K) ==> InfCard(csucc(K))";
  61.460 -by (asm_simp_tac (ZF_ss addsimps [Card_csucc, Card_is_Ord, 
  61.461 +by (asm_simp_tac (!simpset addsimps [Card_csucc, Card_is_Ord, 
  61.462                                    lt_csucc RS leI RSN (2,le_trans)]) 1);
  61.463  qed "InfCard_csucc";
  61.464  
  61.465 @@ -711,8 +711,8 @@
  61.466  goal CardinalArith.thy
  61.467      "!!n. n: nat ==> ALL A. A eqpoll n --> A : Fin(A)";
  61.468  by (etac nat_induct 1);
  61.469 -by (simp_tac (ZF_ss addsimps (eqpoll_0_iff::Fin.intrs)) 1);
  61.470 -by (step_tac ZF_cs 1);
  61.471 +by (simp_tac (!simpset addsimps (eqpoll_0_iff::Fin.intrs)) 1);
  61.472 +by (step_tac (!claset) 1);
  61.473  by (subgoal_tac "EX u. u:A" 1);
  61.474  by (etac exE 1);
  61.475  by (resolve_tac [Diff_sing_eqpoll RS revcut_rl] 1);
  61.476 @@ -721,28 +721,28 @@
  61.477  by (res_inst_tac [("b", "A")] (cons_Diff RS subst) 1);
  61.478  by (assume_tac 1);
  61.479  by (resolve_tac [Fin.consI] 1);
  61.480 -by (fast_tac ZF_cs 1);
  61.481 -by (deepen_tac (ZF_cs addIs [Fin_mono RS subsetD]) 0 1);  (*SLOW*)
  61.482 +by (Fast_tac 1);
  61.483 +by (fast_tac (!claset addIs [subset_consI  RS Fin_mono RS subsetD]) 1); 
  61.484  (*Now for the lemma assumed above*)
  61.485  by (rewtac eqpoll_def);
  61.486 -by (fast_tac (ZF_cs addSEs [bij_converse_bij RS bij_is_fun RS apply_type]) 1);
  61.487 +by (best_tac (!claset addSEs [bij_converse_bij RS bij_is_fun RS apply_type]) 1);
  61.488  val lemma = result();
  61.489  
  61.490  goalw CardinalArith.thy [Finite_def] "!!A. Finite(A) ==> A : Fin(A)";
  61.491 -by (fast_tac (ZF_cs addIs [lemma RS spec RS mp]) 1);
  61.492 +by (fast_tac (!claset addIs [lemma RS spec RS mp]) 1);
  61.493  qed "Finite_into_Fin";
  61.494  
  61.495  goal CardinalArith.thy "!!A. A : Fin(U) ==> Finite(A)";
  61.496 -by (fast_tac (ZF_cs addSIs [Finite_0, Finite_cons] addEs [Fin.induct]) 1);
  61.497 +by (fast_tac (!claset addSIs [Finite_0, Finite_cons] addEs [Fin.induct]) 1);
  61.498  qed "Fin_into_Finite";
  61.499  
  61.500  goal CardinalArith.thy "Finite(A) <-> A : Fin(A)";
  61.501 -by (fast_tac (ZF_cs addIs [Finite_into_Fin] addEs [Fin_into_Finite]) 1);
  61.502 +by (fast_tac (!claset addIs [Finite_into_Fin] addEs [Fin_into_Finite]) 1);
  61.503  qed "Finite_Fin_iff";
  61.504  
  61.505  goal CardinalArith.thy
  61.506      "!!A. [| Finite(A); Finite(B) |] ==> Finite(A Un B)";
  61.507 -by (fast_tac (ZF_cs addSIs [Fin_into_Finite, Fin_UnI] 
  61.508 +by (fast_tac (!claset addSIs [Fin_into_Finite, Fin_UnI] 
  61.509                      addSDs [Finite_into_Fin]
  61.510                      addSEs [Un_upper1 RS Fin_mono RS subsetD,
  61.511                              Un_upper2 RS Fin_mono RS subsetD]) 1);
  61.512 @@ -754,10 +754,10 @@
  61.513  goal CardinalArith.thy
  61.514      "!!A. A: Fin(U) ==> x~:A --> ~ cons(x,A) lepoll A";
  61.515  by (etac Fin_induct 1);
  61.516 -by (simp_tac (ZF_ss addsimps [lepoll_0_iff]) 1);
  61.517 +by (simp_tac (!simpset addsimps [lepoll_0_iff]) 1);
  61.518  by (subgoal_tac "cons(x,cons(xa,y)) = cons(xa,cons(x,y))" 1);
  61.519 -by (asm_simp_tac ZF_ss 1);
  61.520 -by (fast_tac (ZF_cs addSDs [cons_lepoll_consD]) 1);
  61.521 +by (Asm_simp_tac 1);
  61.522 +by (fast_tac (!claset addSDs [cons_lepoll_consD]) 1);
  61.523  by (fast_tac eq_cs 1);
  61.524  qed "Fin_imp_not_cons_lepoll";
  61.525  
  61.526 @@ -766,18 +766,18 @@
  61.527  by (rewtac cardinal_def);
  61.528  by (rtac Least_equality 1);
  61.529  by (fold_tac [cardinal_def]);
  61.530 -by (simp_tac (ZF_ss addsimps [succ_def]) 1);
  61.531 -by (fast_tac (ZF_cs addIs [cons_eqpoll_cong, well_ord_cardinal_eqpoll] 
  61.532 +by (simp_tac (!simpset addsimps [succ_def]) 1);
  61.533 +by (fast_tac (!claset addIs [cons_eqpoll_cong, well_ord_cardinal_eqpoll] 
  61.534                      addSEs [mem_irrefl]
  61.535                      addSDs [Finite_imp_well_ord]) 1);
  61.536 -by (fast_tac (ZF_cs addIs [Ord_succ, Card_cardinal, Card_is_Ord]) 1);
  61.537 +by (fast_tac (!claset addIs [Ord_succ, Card_cardinal, Card_is_Ord]) 1);
  61.538  by (rtac notI 1);
  61.539  by (resolve_tac [Finite_into_Fin RS Fin_imp_not_cons_lepoll RS mp RS notE] 1);
  61.540  by (assume_tac 1);
  61.541  by (assume_tac 1);
  61.542  by (eresolve_tac [eqpoll_sym RS eqpoll_imp_lepoll RS lepoll_trans] 1);
  61.543  by (eresolve_tac [le_imp_lepoll RS lepoll_trans] 1);
  61.544 -by (fast_tac (ZF_cs addIs [well_ord_cardinal_eqpoll RS eqpoll_imp_lepoll] 
  61.545 +by (fast_tac (!claset addIs [well_ord_cardinal_eqpoll RS eqpoll_imp_lepoll] 
  61.546                      addSDs [Finite_imp_well_ord]) 1);
  61.547  qed "Finite_imp_cardinal_cons";
  61.548  
  61.549 @@ -785,14 +785,14 @@
  61.550  goal CardinalArith.thy "!!a A. [| Finite(A);  a:A |] ==> succ(|A-{a}|) = |A|";
  61.551  by (res_inst_tac [("b", "A")] (cons_Diff RS subst) 1);
  61.552  by (assume_tac 1);
  61.553 -by (asm_simp_tac (ZF_ss addsimps [Finite_imp_cardinal_cons,
  61.554 +by (asm_simp_tac (!simpset addsimps [Finite_imp_cardinal_cons,
  61.555                                    Diff_subset RS subset_Finite]) 1);
  61.556 -by (asm_simp_tac (ZF_ss addsimps [cons_Diff]) 1);
  61.557 +by (asm_simp_tac (!simpset addsimps [cons_Diff]) 1);
  61.558  qed "Finite_imp_succ_cardinal_Diff";
  61.559  
  61.560  goal CardinalArith.thy "!!a A. [| Finite(A);  a:A |] ==> |A-{a}| < |A|";
  61.561  by (rtac succ_leE 1);
  61.562 -by (asm_simp_tac (ZF_ss addsimps [Finite_imp_succ_cardinal_Diff, 
  61.563 +by (asm_simp_tac (!simpset addsimps [Finite_imp_succ_cardinal_Diff, 
  61.564                                    Ord_cardinal RS le_refl]) 1);
  61.565  qed "Finite_imp_cardinal_Diff";
  61.566  
  61.567 @@ -808,11 +808,11 @@
  61.568                    well_ord_radd RS well_ord_cardinal_eqpoll)) RS eqpoll_sym] 1 
  61.569      THEN (assume_tac 1));
  61.570  by (eresolve_tac [nat_cadd_eq_add RS subst] 1 THEN (assume_tac 1));
  61.571 -by (asm_full_simp_tac (ZF_ss addsimps [cadd_def, eqpoll_refl]) 1);
  61.572 +by (asm_full_simp_tac (!simpset addsimps [cadd_def, eqpoll_refl]) 1);
  61.573  qed "nat_sum_eqpoll_sum";
  61.574  
  61.575  goal Nat.thy "!!m. [| m le n; n:nat |] ==> m:nat";
  61.576 -by (fast_tac (ZF_cs addSDs [nat_succI RS (Ord_nat RSN (2, OrdmemD))]
  61.577 +by (fast_tac (!claset addSDs [nat_succI RS (Ord_nat RSN (2, OrdmemD))]
  61.578          addSEs [ltE]) 1);
  61.579  qed "le_in_nat";
  61.580  
    62.1 --- a/src/ZF/Cardinal_AC.ML	Fri Jan 03 10:48:28 1997 +0100
    62.2 +++ b/src/ZF/Cardinal_AC.ML	Fri Jan 03 15:01:55 1997 +0100
    62.3 @@ -27,13 +27,13 @@
    62.4  qed "cardinal_eqE";
    62.5  
    62.6  goal Cardinal_AC.thy "|X| = |Y| <-> X eqpoll Y";
    62.7 -by (fast_tac (ZF_cs addSEs [cardinal_cong, cardinal_eqE]) 1);
    62.8 +by (fast_tac (!claset addSEs [cardinal_cong, cardinal_eqE]) 1);
    62.9  qed "cardinal_eqpoll_iff";
   62.10  
   62.11  goal Cardinal_AC.thy
   62.12      "!!A. [| |A|=|B|;  |C|=|D|;  A Int C = 0;  B Int D = 0 |] ==> \
   62.13  \         |A Un C| = |B Un D|";
   62.14 -by (asm_full_simp_tac (ZF_ss addsimps [cardinal_eqpoll_iff, 
   62.15 +by (asm_full_simp_tac (!simpset addsimps [cardinal_eqpoll_iff, 
   62.16                                         eqpoll_disjoint_Un]) 1);
   62.17  qed "cardinal_disjoint_Un";
   62.18  
   62.19 @@ -92,12 +92,12 @@
   62.20  goalw Cardinal_AC.thy [surj_def] "!!f. f: surj(X,Y) ==> EX g. g: inj(Y,X)";
   62.21  by (etac CollectE 1);
   62.22  by (res_inst_tac [("A1", "Y"), ("B1", "%y. f-``{y}")] (AC_Pi RS exE) 1);
   62.23 -by (fast_tac (ZF_cs addSEs [apply_Pair]) 1);
   62.24 +by (fast_tac (!claset addSEs [apply_Pair]) 1);
   62.25  by (rtac exI 1);
   62.26  by (rtac f_imp_injective 1);
   62.27  by (rtac Pi_type 1 THEN assume_tac 1);
   62.28 -by (fast_tac (ZF_cs addDs [apply_type] addDs [Pi_memberD]) 1);
   62.29 -by (fast_tac (ZF_cs addDs [apply_type] addEs [apply_equality]) 1);
   62.30 +by (fast_tac (!claset addDs [apply_type] addDs [Pi_memberD]) 1);
   62.31 +by (fast_tac (!claset addDs [apply_type] addEs [apply_equality]) 1);
   62.32  qed "surj_implies_inj";
   62.33  
   62.34  (*Kunen's Lemma 10.20*)
   62.35 @@ -111,10 +111,10 @@
   62.36  (*Kunen's Lemma 10.21*)
   62.37  goal Cardinal_AC.thy
   62.38      "!!K. [| InfCard(K);  ALL i:K. |X(i)| le K |] ==> |UN i:K. X(i)| le K";
   62.39 -by (asm_full_simp_tac (ZF_ss addsimps [InfCard_is_Card, le_Card_iff]) 1);
   62.40 +by (asm_full_simp_tac (!simpset addsimps [InfCard_is_Card, le_Card_iff]) 1);
   62.41  by (rtac lepoll_trans 1);
   62.42  by (resolve_tac [InfCard_square_eq RS eqpoll_imp_lepoll] 2);
   62.43 -by (asm_simp_tac (ZF_ss addsimps [InfCard_is_Card, Card_cardinal_eq]) 2);
   62.44 +by (asm_simp_tac (!simpset addsimps [InfCard_is_Card, Card_cardinal_eq]) 2);
   62.45  by (rewtac lepoll_def);
   62.46  by (forward_tac [InfCard_is_Card RS Card_is_Ord] 1);
   62.47  by (etac (AC_ball_Pi RS exE) 1);
   62.48 @@ -122,18 +122,18 @@
   62.49  (*Lemma needed in both subgoals, for a fixed z*)
   62.50  by (subgoal_tac
   62.51      "ALL z: (UN i:K. X(i)). z: X(LEAST i. z:X(i)) & (LEAST i. z:X(i)) : K" 1);
   62.52 -by (fast_tac (ZF_cs addSIs [Least_le RS lt_trans1 RS ltD, ltI]
   62.53 +by (fast_tac (!claset addSIs [Least_le RS lt_trans1 RS ltD, ltI]
   62.54                      addSEs [LeastI, Ord_in_Ord]) 2);
   62.55  by (res_inst_tac [("c", "%z. <LEAST i. z:X(i), f ` (LEAST i. z:X(i)) ` z>"),
   62.56                    ("d", "%<i,j>. converse(f`i) ` j")] 
   62.57          lam_injective 1);
   62.58  (*Instantiate the lemma proved above*)
   62.59  by (ALLGOALS ball_tac);
   62.60 -by (fast_tac (ZF_cs addEs [inj_is_fun RS apply_type]
   62.61 +by (fast_tac (!claset addEs [inj_is_fun RS apply_type]
   62.62                      addDs [apply_type]) 1);
   62.63  by (dtac apply_type 1);
   62.64  by (etac conjunct2 1);
   62.65 -by (asm_simp_tac (ZF_ss addsimps [left_inverse]) 1);
   62.66 +by (asm_simp_tac (!simpset addsimps [left_inverse]) 1);
   62.67  qed "cardinal_UN_le";
   62.68  
   62.69  (*The same again, using csucc*)
   62.70 @@ -141,7 +141,7 @@
   62.71      "!!K. [| InfCard(K);  ALL i:K. |X(i)| < csucc(K) |] ==> \
   62.72  \         |UN i:K. X(i)| < csucc(K)";
   62.73  by (asm_full_simp_tac 
   62.74 -    (ZF_ss addsimps [Card_lt_csucc_iff, cardinal_UN_le, 
   62.75 +    (!simpset addsimps [Card_lt_csucc_iff, cardinal_UN_le, 
   62.76                       InfCard_is_Card, Card_cardinal]) 1);
   62.77  qed "cardinal_UN_lt_csucc";
   62.78  
   62.79 @@ -152,8 +152,8 @@
   62.80  \         (UN i:K. j(i)) < csucc(K)";
   62.81  by (resolve_tac [cardinal_UN_lt_csucc RS Card_lt_imp_lt] 1);
   62.82  by (assume_tac 1);
   62.83 -by (fast_tac (ZF_cs addIs [Ord_cardinal_le RS lt_trans1] addEs [ltE]) 1);
   62.84 -by (fast_tac (ZF_cs addSIs [Ord_UN] addEs [ltE]) 1);
   62.85 +by (fast_tac (!claset addIs [Ord_cardinal_le RS lt_trans1] addEs [ltE]) 1);
   62.86 +by (fast_tac (!claset addSIs [Ord_UN] addEs [ltE]) 1);
   62.87  by (eresolve_tac [InfCard_is_Card RS Card_is_Ord RS Card_csucc] 1);
   62.88  qed "cardinal_UN_Ord_lt_csucc";
   62.89  
   62.90 @@ -176,7 +176,7 @@
   62.91  by (res_inst_tac [("x1", "f`x")] (UN_upper RSN (2,subset_trans)) 1);
   62.92  by (eresolve_tac [inj_is_fun RS apply_type] 2 THEN assume_tac 2);
   62.93  by (asm_simp_tac 
   62.94 -    (ZF_ss addsimps [inj_is_fun RS apply_rangeI, left_inverse]) 1);
   62.95 +    (!simpset addsimps [inj_is_fun RS apply_rangeI, left_inverse]) 1);
   62.96  val inj_UN_subset = result();
   62.97  
   62.98  (*Simpler to require |W|=K; we'd have a bijection; but the theorem would
   62.99 @@ -186,16 +186,16 @@
  62.100  \         (UN w:W. j(w)) < csucc(K)";
  62.101  by (excluded_middle_tac "W=0" 1);
  62.102  by (asm_simp_tac        (*solve the easy 0 case*)
  62.103 -    (ZF_ss addsimps [UN_0, InfCard_is_Card, Card_is_Ord RS Card_csucc, 
  62.104 +    (!simpset addsimps [UN_0, InfCard_is_Card, Card_is_Ord RS Card_csucc, 
  62.105                       Card_is_Ord, Ord_0_lt_csucc]) 2);
  62.106  by (asm_full_simp_tac
  62.107 -    (ZF_ss addsimps [InfCard_is_Card, le_Card_iff, lepoll_def]) 1);
  62.108 +    (!simpset addsimps [InfCard_is_Card, le_Card_iff, lepoll_def]) 1);
  62.109  by (safe_tac eq_cs);
  62.110  by (swap_res_tac [[inj_UN_subset, cardinal_UN_Ord_lt_csucc] 
  62.111                    MRS lt_subset_trans] 1);
  62.112  by (REPEAT (assume_tac 1));
  62.113 -by (fast_tac (ZF_cs addSIs [Ord_UN] addEs [ltE]) 2);
  62.114 -by (asm_simp_tac (ZF_ss addsimps [inj_converse_fun RS apply_type]
  62.115 +by (fast_tac (!claset addSIs [Ord_UN] addEs [ltE]) 2);
  62.116 +by (asm_simp_tac (!simpset addsimps [inj_converse_fun RS apply_type]
  62.117                          setloop split_tac [expand_if]) 1);
  62.118  qed "le_UN_Ord_lt_csucc";
  62.119  
    63.1 --- a/src/ZF/Coind/ECR.ML	Fri Jan 03 10:48:28 1997 +0100
    63.2 +++ b/src/ZF/Coind/ECR.ML	Fri Jan 03 15:01:55 1997 +0100
    63.3 @@ -16,7 +16,7 @@
    63.4  \ <v_clos(x, e, ve),t>:HasTyRel";
    63.5  by (rtac HasTyRel.coinduct 1);
    63.6  by (rtac singletonI 1);
    63.7 -by (fast_tac (ZF_cs addIs Val_ValEnv.intrs) 1);
    63.8 +by (fast_tac (!claset addIs Val_ValEnv.intrs) 1);
    63.9  by (rtac disjI2 1);
   63.10  by (etac singletonE 1); 
   63.11  by (REPEAT_FIRST (resolve_tac [conjI,exI]));
   63.12 @@ -42,19 +42,19 @@
   63.13        addEs [htr_closE])
   63.14    end;
   63.15  
   63.16 -val htr_cs = mk_htr_cs(static_cs);
   63.17 +claset := mk_htr_cs (!claset);
   63.18  
   63.19  (* Properties of the pointwise extension to environments *)
   63.20  
   63.21  goalw ECR.thy [hastyenv_def]
   63.22    "!!ve.[| ve:ValEnv; te:TyEnv; hastyenv(ve,te); <v,t>:HasTyRel |] ==> \
   63.23  \   hastyenv(ve_owr(ve,x,v),te_owr(te,x,t))";
   63.24 -by (safe_tac ZF_cs);
   63.25 +by (safe_tac (!claset));
   63.26  by (stac ve_dom_owr 1);
   63.27  by (assume_tac 1);
   63.28  by (etac (HasTyRel.dom_subset RS subsetD RS SigmaD1 RS ValNEE) 1);
<