renamed M_triv_axioms to M_trivial and M_axioms to M_basic
authorpaulson
Tue, 10 Sep 2002 16:51:31 +0200
changeset 135641500a2e48d44
parent 13563 7d6c9817c432
child 13565 40e4755e57f7
renamed M_triv_axioms to M_trivial and M_axioms to M_basic
src/ZF/Constructible/Datatype_absolute.thy
src/ZF/Constructible/L_axioms.thy
src/ZF/Constructible/Rec_Separation.thy
src/ZF/Constructible/Relative.thy
src/ZF/Constructible/Separation.thy
src/ZF/Constructible/WF_absolute.thy
src/ZF/Constructible/WFrec.thy
src/ZF/Constructible/Wellorderings.thy
     1.1 --- a/src/ZF/Constructible/Datatype_absolute.thy	Tue Sep 10 16:47:17 2002 +0200
     1.2 +++ b/src/ZF/Constructible/Datatype_absolute.thy	Tue Sep 10 16:51:31 2002 +0200
     1.3 @@ -126,13 +126,13 @@
     1.4        \<forall>n[M]. n\<in>nat --> 
     1.5           wfrec_replacement(M, iterates_MH(M,isF,v), Memrel(succ(n)))"
     1.6  
     1.7 -lemma (in M_axioms) iterates_MH_abs:
     1.8 +lemma (in M_basic) iterates_MH_abs:
     1.9    "[| relativize1(M,isF,F); M(n); M(g); M(z) |] 
    1.10     ==> iterates_MH(M,isF,v,n,g,z) <-> z = nat_case(v, \<lambda>m. F(g`m), n)"
    1.11  by (simp add: nat_case_abs [of _ "\<lambda>m. F(g ` m)"]
    1.12                relativize1_def iterates_MH_def)  
    1.13  
    1.14 -lemma (in M_axioms) iterates_imp_wfrec_replacement:
    1.15 +lemma (in M_basic) iterates_imp_wfrec_replacement:
    1.16    "[|relativize1(M,isF,F); n \<in> nat; iterates_replacement(M,isF,v)|] 
    1.17     ==> wfrec_replacement(M, \<lambda>n f z. z = nat_case(v, \<lambda>m. F(f`m), n), 
    1.18                         Memrel(succ(n)))" 
    1.19 @@ -210,7 +210,7 @@
    1.20          \<exists>n1[M]. \<exists>AX[M]. 
    1.21           number1(M,n1) & cartprod(M,A,X,AX) & is_sum(M,n1,AX,Z)"
    1.22  
    1.23 -lemma (in M_axioms) list_functor_abs [simp]: 
    1.24 +lemma (in M_basic) list_functor_abs [simp]: 
    1.25       "[| M(A); M(X); M(Z) |] ==> is_list_functor(M,A,X,Z) <-> (Z = {0} + A*X)"
    1.26  by (simp add: is_list_functor_def singleton_0 nat_into_M)
    1.27  
    1.28 @@ -266,7 +266,7 @@
    1.29            cartprod(M,X,X,XX) & is_sum(M,XX,X,X3) & 
    1.30            is_sum(M,natnatsum,X3,Z)"
    1.31  
    1.32 -lemma (in M_axioms) formula_functor_abs [simp]: 
    1.33 +lemma (in M_basic) formula_functor_abs [simp]: 
    1.34       "[| M(X); M(Z) |] 
    1.35        ==> is_formula_functor(M,X,Z) <-> 
    1.36            Z = ((nat*nat) + (nat*nat)) + (X*X + X)"
    1.37 @@ -323,7 +323,7 @@
    1.38    
    1.39  text{*Express @{term list_rec} without using @{term rank} or @{term Vset},
    1.40  neither of which is absolute.*}
    1.41 -lemma (in M_triv_axioms) list_rec_eq:
    1.42 +lemma (in M_trivial) list_rec_eq:
    1.43    "l \<in> list(A) ==>
    1.44     list_rec(a,g,l) = 
    1.45     transrec (succ(length(l)),
    1.46 @@ -728,7 +728,7 @@
    1.47  done
    1.48  
    1.49  text{*Proof is trivial since @{term length} returns natural numbers.*}
    1.50 -lemma (in M_triv_axioms) length_closed [intro,simp]:
    1.51 +lemma (in M_trivial) length_closed [intro,simp]:
    1.52       "l \<in> list(A) ==> M(length(l))"
    1.53  by (simp add: nat_into_M) 
    1.54  
    1.55 @@ -744,7 +744,7 @@
    1.56  apply (simp add: tl'_Cons iterates_commute) 
    1.57  done
    1.58  
    1.59 -lemma (in M_axioms) iterates_tl'_closed:
    1.60 +lemma (in M_basic) iterates_tl'_closed:
    1.61       "[|n \<in> nat; M(x)|] ==> M(tl'^n (x))"
    1.62  apply (induct_tac n, simp) 
    1.63  apply (simp add: tl'_Cons tl'_closed) 
    1.64 @@ -785,11 +785,11 @@
    1.65      "is_Member(M,x,y,Z) ==
    1.66  	\<exists>p[M]. \<exists>u[M]. pair(M,x,y,p) & is_Inl(M,p,u) & is_Inl(M,u,Z)"
    1.67  
    1.68 -lemma (in M_triv_axioms) Member_abs [simp]:
    1.69 +lemma (in M_trivial) Member_abs [simp]:
    1.70       "[|M(x); M(y); M(Z)|] ==> is_Member(M,x,y,Z) <-> (Z = Member(x,y))"
    1.71  by (simp add: is_Member_def Member_def)
    1.72  
    1.73 -lemma (in M_triv_axioms) Member_in_M_iff [iff]:
    1.74 +lemma (in M_trivial) Member_in_M_iff [iff]:
    1.75       "M(Member(x,y)) <-> M(x) & M(y)"
    1.76  by (simp add: Member_def) 
    1.77  
    1.78 @@ -799,11 +799,11 @@
    1.79      "is_Equal(M,x,y,Z) ==
    1.80  	\<exists>p[M]. \<exists>u[M]. pair(M,x,y,p) & is_Inr(M,p,u) & is_Inl(M,u,Z)"
    1.81  
    1.82 -lemma (in M_triv_axioms) Equal_abs [simp]:
    1.83 +lemma (in M_trivial) Equal_abs [simp]:
    1.84       "[|M(x); M(y); M(Z)|] ==> is_Equal(M,x,y,Z) <-> (Z = Equal(x,y))"
    1.85  by (simp add: is_Equal_def Equal_def)
    1.86  
    1.87 -lemma (in M_triv_axioms) Equal_in_M_iff [iff]: "M(Equal(x,y)) <-> M(x) & M(y)"
    1.88 +lemma (in M_trivial) Equal_in_M_iff [iff]: "M(Equal(x,y)) <-> M(x) & M(y)"
    1.89  by (simp add: Equal_def) 
    1.90  
    1.91  constdefs
    1.92 @@ -812,11 +812,11 @@
    1.93      "is_Nand(M,x,y,Z) ==
    1.94  	\<exists>p[M]. \<exists>u[M]. pair(M,x,y,p) & is_Inl(M,p,u) & is_Inr(M,u,Z)"
    1.95  
    1.96 -lemma (in M_triv_axioms) Nand_abs [simp]:
    1.97 +lemma (in M_trivial) Nand_abs [simp]:
    1.98       "[|M(x); M(y); M(Z)|] ==> is_Nand(M,x,y,Z) <-> (Z = Nand(x,y))"
    1.99  by (simp add: is_Nand_def Nand_def)
   1.100  
   1.101 -lemma (in M_triv_axioms) Nand_in_M_iff [iff]: "M(Nand(x,y)) <-> M(x) & M(y)"
   1.102 +lemma (in M_trivial) Nand_in_M_iff [iff]: "M(Nand(x,y)) <-> M(x) & M(y)"
   1.103  by (simp add: Nand_def) 
   1.104  
   1.105  constdefs
   1.106 @@ -824,11 +824,11 @@
   1.107       --{* because @{term "Forall(x) \<equiv> Inr(Inr(p))"}*}
   1.108      "is_Forall(M,p,Z) == \<exists>u[M]. is_Inr(M,p,u) & is_Inr(M,u,Z)"
   1.109  
   1.110 -lemma (in M_triv_axioms) Forall_abs [simp]:
   1.111 +lemma (in M_trivial) Forall_abs [simp]:
   1.112       "[|M(x); M(Z)|] ==> is_Forall(M,x,Z) <-> (Z = Forall(x))"
   1.113  by (simp add: is_Forall_def Forall_def)
   1.114  
   1.115 -lemma (in M_triv_axioms) Forall_in_M_iff [iff]: "M(Forall(x)) <-> M(x)"
   1.116 +lemma (in M_trivial) Forall_in_M_iff [iff]: "M(Forall(x)) <-> M(x)"
   1.117  by (simp add: Forall_def)
   1.118  
   1.119  
   1.120 @@ -890,7 +890,7 @@
   1.121  done
   1.122  
   1.123  text{*Proof is trivial since @{term depth} returns natural numbers.*}
   1.124 -lemma (in M_triv_axioms) depth_closed [intro,simp]:
   1.125 +lemma (in M_trivial) depth_closed [intro,simp]:
   1.126       "p \<in> formula ==> M(depth(p))"
   1.127  by (simp add: nat_into_M) 
   1.128  
   1.129 @@ -916,7 +916,7 @@
   1.130  text{*Unfold @{term formula_rec} to @{term formula_rec_case}.
   1.131       Express @{term formula_rec} without using @{term rank} or @{term Vset},
   1.132  neither of which is absolute.*}
   1.133 -lemma (in M_triv_axioms) formula_rec_eq:
   1.134 +lemma (in M_trivial) formula_rec_eq:
   1.135    "p \<in> formula ==>
   1.136     formula_rec(a,b,c,d,p) = 
   1.137     transrec (succ(depth(p)),
     2.1 --- a/src/ZF/Constructible/L_axioms.thy	Tue Sep 10 16:47:17 2002 +0200
     2.2 +++ b/src/ZF/Constructible/L_axioms.thy	Tue Sep 10 16:51:31 2002 +0200
     2.3 @@ -8,7 +8,7 @@
     2.4  
     2.5  theory L_axioms = Formula + Relative + Reflection + MetaExists:
     2.6  
     2.7 -text {* The class L satisfies the premises of locale @{text M_triv_axioms} *}
     2.8 +text {* The class L satisfies the premises of locale @{text M_trivial} *}
     2.9  
    2.10  lemma transL: "[| y\<in>x; L(x) |] ==> L(y)"
    2.11  apply (insert Transset_Lset)
    2.12 @@ -80,7 +80,7 @@
    2.13  apply (simp_all add: Replace_iff univalent_def, blast)
    2.14  done
    2.15  
    2.16 -subsection{*Instantiating the locale @{text M_triv_axioms}*}
    2.17 +subsection{*Instantiating the locale @{text M_trivial}*}
    2.18  text{*No instances of Separation yet.*}
    2.19  
    2.20  lemma Lset_mono_le: "mono_le_subset(Lset)"
    2.21 @@ -93,8 +93,8 @@
    2.22  
    2.23  lemmas L_nat = Ord_in_L [OF Ord_nat]
    2.24  
    2.25 -theorem M_triv_axioms_L: "PROP M_triv_axioms(L)"
    2.26 -  apply (rule M_triv_axioms.intro)
    2.27 +theorem M_trivial_L: "PROP M_trivial(L)"
    2.28 +  apply (rule M_trivial.intro)
    2.29          apply (erule (1) transL)
    2.30         apply (rule nonempty)
    2.31        apply (rule upair_ax)
    2.32 @@ -104,50 +104,50 @@
    2.33    apply (rule L_nat)
    2.34    done
    2.35  
    2.36 -lemmas rall_abs = M_triv_axioms.rall_abs [OF M_triv_axioms_L]
    2.37 -  and rex_abs = M_triv_axioms.rex_abs [OF M_triv_axioms_L]
    2.38 -  and ball_iff_equiv = M_triv_axioms.ball_iff_equiv [OF M_triv_axioms_L]
    2.39 -  and M_equalityI = M_triv_axioms.M_equalityI [OF M_triv_axioms_L]
    2.40 -  and empty_abs = M_triv_axioms.empty_abs [OF M_triv_axioms_L]
    2.41 -  and subset_abs = M_triv_axioms.subset_abs [OF M_triv_axioms_L]
    2.42 -  and upair_abs = M_triv_axioms.upair_abs [OF M_triv_axioms_L]
    2.43 -  and upair_in_M_iff = M_triv_axioms.upair_in_M_iff [OF M_triv_axioms_L]
    2.44 -  and singleton_in_M_iff = M_triv_axioms.singleton_in_M_iff [OF M_triv_axioms_L]
    2.45 -  and pair_abs = M_triv_axioms.pair_abs [OF M_triv_axioms_L]
    2.46 -  and pair_in_M_iff = M_triv_axioms.pair_in_M_iff [OF M_triv_axioms_L]
    2.47 -  and pair_components_in_M = M_triv_axioms.pair_components_in_M [OF M_triv_axioms_L]
    2.48 -  and cartprod_abs = M_triv_axioms.cartprod_abs [OF M_triv_axioms_L]
    2.49 -  and union_abs = M_triv_axioms.union_abs [OF M_triv_axioms_L]
    2.50 -  and inter_abs = M_triv_axioms.inter_abs [OF M_triv_axioms_L]
    2.51 -  and setdiff_abs = M_triv_axioms.setdiff_abs [OF M_triv_axioms_L]
    2.52 -  and Union_abs = M_triv_axioms.Union_abs [OF M_triv_axioms_L]
    2.53 -  and Union_closed = M_triv_axioms.Union_closed [OF M_triv_axioms_L]
    2.54 -  and Un_closed = M_triv_axioms.Un_closed [OF M_triv_axioms_L]
    2.55 -  and cons_closed = M_triv_axioms.cons_closed [OF M_triv_axioms_L]
    2.56 -  and successor_abs = M_triv_axioms.successor_abs [OF M_triv_axioms_L]
    2.57 -  and succ_in_M_iff = M_triv_axioms.succ_in_M_iff [OF M_triv_axioms_L]
    2.58 -  and separation_closed = M_triv_axioms.separation_closed [OF M_triv_axioms_L]
    2.59 -  and strong_replacementI = M_triv_axioms.strong_replacementI [OF M_triv_axioms_L]
    2.60 -  and strong_replacement_closed = M_triv_axioms.strong_replacement_closed [OF M_triv_axioms_L]
    2.61 -  and RepFun_closed = M_triv_axioms.RepFun_closed [OF M_triv_axioms_L]
    2.62 -  and lam_closed = M_triv_axioms.lam_closed [OF M_triv_axioms_L]
    2.63 -  and image_abs = M_triv_axioms.image_abs [OF M_triv_axioms_L]
    2.64 -  and powerset_Pow = M_triv_axioms.powerset_Pow [OF M_triv_axioms_L]
    2.65 -  and powerset_imp_subset_Pow = M_triv_axioms.powerset_imp_subset_Pow [OF M_triv_axioms_L]
    2.66 -  and nat_into_M = M_triv_axioms.nat_into_M [OF M_triv_axioms_L]
    2.67 -  and nat_case_closed = M_triv_axioms.nat_case_closed [OF M_triv_axioms_L]
    2.68 -  and Inl_in_M_iff = M_triv_axioms.Inl_in_M_iff [OF M_triv_axioms_L]
    2.69 -  and Inr_in_M_iff = M_triv_axioms.Inr_in_M_iff [OF M_triv_axioms_L]
    2.70 -  and lt_closed = M_triv_axioms.lt_closed [OF M_triv_axioms_L]
    2.71 -  and transitive_set_abs = M_triv_axioms.transitive_set_abs [OF M_triv_axioms_L]
    2.72 -  and ordinal_abs = M_triv_axioms.ordinal_abs [OF M_triv_axioms_L]
    2.73 -  and limit_ordinal_abs = M_triv_axioms.limit_ordinal_abs [OF M_triv_axioms_L]
    2.74 -  and successor_ordinal_abs = M_triv_axioms.successor_ordinal_abs [OF M_triv_axioms_L]
    2.75 -  and finite_ordinal_abs = M_triv_axioms.finite_ordinal_abs [OF M_triv_axioms_L]
    2.76 -  and omega_abs = M_triv_axioms.omega_abs [OF M_triv_axioms_L]
    2.77 -  and number1_abs = M_triv_axioms.number1_abs [OF M_triv_axioms_L]
    2.78 -  and number2_abs = M_triv_axioms.number2_abs [OF M_triv_axioms_L]
    2.79 -  and number3_abs = M_triv_axioms.number3_abs [OF M_triv_axioms_L]
    2.80 +lemmas rall_abs = M_trivial.rall_abs [OF M_trivial_L]
    2.81 +  and rex_abs = M_trivial.rex_abs [OF M_trivial_L]
    2.82 +  and ball_iff_equiv = M_trivial.ball_iff_equiv [OF M_trivial_L]
    2.83 +  and M_equalityI = M_trivial.M_equalityI [OF M_trivial_L]
    2.84 +  and empty_abs = M_trivial.empty_abs [OF M_trivial_L]
    2.85 +  and subset_abs = M_trivial.subset_abs [OF M_trivial_L]
    2.86 +  and upair_abs = M_trivial.upair_abs [OF M_trivial_L]
    2.87 +  and upair_in_M_iff = M_trivial.upair_in_M_iff [OF M_trivial_L]
    2.88 +  and singleton_in_M_iff = M_trivial.singleton_in_M_iff [OF M_trivial_L]
    2.89 +  and pair_abs = M_trivial.pair_abs [OF M_trivial_L]
    2.90 +  and pair_in_M_iff = M_trivial.pair_in_M_iff [OF M_trivial_L]
    2.91 +  and pair_components_in_M = M_trivial.pair_components_in_M [OF M_trivial_L]
    2.92 +  and cartprod_abs = M_trivial.cartprod_abs [OF M_trivial_L]
    2.93 +  and union_abs = M_trivial.union_abs [OF M_trivial_L]
    2.94 +  and inter_abs = M_trivial.inter_abs [OF M_trivial_L]
    2.95 +  and setdiff_abs = M_trivial.setdiff_abs [OF M_trivial_L]
    2.96 +  and Union_abs = M_trivial.Union_abs [OF M_trivial_L]
    2.97 +  and Union_closed = M_trivial.Union_closed [OF M_trivial_L]
    2.98 +  and Un_closed = M_trivial.Un_closed [OF M_trivial_L]
    2.99 +  and cons_closed = M_trivial.cons_closed [OF M_trivial_L]
   2.100 +  and successor_abs = M_trivial.successor_abs [OF M_trivial_L]
   2.101 +  and succ_in_M_iff = M_trivial.succ_in_M_iff [OF M_trivial_L]
   2.102 +  and separation_closed = M_trivial.separation_closed [OF M_trivial_L]
   2.103 +  and strong_replacementI = M_trivial.strong_replacementI [OF M_trivial_L]
   2.104 +  and strong_replacement_closed = M_trivial.strong_replacement_closed [OF M_trivial_L]
   2.105 +  and RepFun_closed = M_trivial.RepFun_closed [OF M_trivial_L]
   2.106 +  and lam_closed = M_trivial.lam_closed [OF M_trivial_L]
   2.107 +  and image_abs = M_trivial.image_abs [OF M_trivial_L]
   2.108 +  and powerset_Pow = M_trivial.powerset_Pow [OF M_trivial_L]
   2.109 +  and powerset_imp_subset_Pow = M_trivial.powerset_imp_subset_Pow [OF M_trivial_L]
   2.110 +  and nat_into_M = M_trivial.nat_into_M [OF M_trivial_L]
   2.111 +  and nat_case_closed = M_trivial.nat_case_closed [OF M_trivial_L]
   2.112 +  and Inl_in_M_iff = M_trivial.Inl_in_M_iff [OF M_trivial_L]
   2.113 +  and Inr_in_M_iff = M_trivial.Inr_in_M_iff [OF M_trivial_L]
   2.114 +  and lt_closed = M_trivial.lt_closed [OF M_trivial_L]
   2.115 +  and transitive_set_abs = M_trivial.transitive_set_abs [OF M_trivial_L]
   2.116 +  and ordinal_abs = M_trivial.ordinal_abs [OF M_trivial_L]
   2.117 +  and limit_ordinal_abs = M_trivial.limit_ordinal_abs [OF M_trivial_L]
   2.118 +  and successor_ordinal_abs = M_trivial.successor_ordinal_abs [OF M_trivial_L]
   2.119 +  and finite_ordinal_abs = M_trivial.finite_ordinal_abs [OF M_trivial_L]
   2.120 +  and omega_abs = M_trivial.omega_abs [OF M_trivial_L]
   2.121 +  and number1_abs = M_trivial.number1_abs [OF M_trivial_L]
   2.122 +  and number2_abs = M_trivial.number2_abs [OF M_trivial_L]
   2.123 +  and number3_abs = M_trivial.number3_abs [OF M_trivial_L]
   2.124  
   2.125  declare rall_abs [simp]
   2.126  declare rex_abs [simp]
     3.1 --- a/src/ZF/Constructible/Rec_Separation.thy	Tue Sep 10 16:47:17 2002 +0200
     3.2 +++ b/src/ZF/Constructible/Rec_Separation.thy	Tue Sep 10 16:51:31 2002 +0200
     3.3 @@ -212,7 +212,7 @@
     3.4  
     3.5  theorem M_trancl_L: "PROP M_trancl(L)"
     3.6  by (rule M_trancl.intro
     3.7 -         [OF M_triv_axioms_L M_axioms_axioms_L M_trancl_axioms_L])
     3.8 +         [OF M_trivial_L M_basic_axioms_L M_trancl_axioms_L])
     3.9  
    3.10  lemmas iterates_abs = M_trancl.iterates_abs [OF M_trancl_L]
    3.11    and rtran_closure_rtrancl = M_trancl.rtran_closure_rtrancl [OF M_trancl_L]
     4.1 --- a/src/ZF/Constructible/Relative.thy	Tue Sep 10 16:47:17 2002 +0200
     4.2 +++ b/src/ZF/Constructible/Relative.thy	Tue Sep 10 16:51:31 2002 +0200
     4.3 @@ -465,7 +465,7 @@
     4.4  
     4.5  text{*The class M is assumed to be transitive and to satisfy some
     4.6        relativized ZF axioms*}
     4.7 -locale M_triv_axioms =
     4.8 +locale M_trivial =
     4.9    fixes M
    4.10    assumes transM:           "[| y\<in>x; M(x) |] ==> M(y)"
    4.11        and nonempty [simp]:  "M(0)"
    4.12 @@ -475,73 +475,73 @@
    4.13        and replacement:      "replacement(M,P)"
    4.14        and M_nat [iff]:      "M(nat)"           (*i.e. the axiom of infinity*)
    4.15  
    4.16 -lemma (in M_triv_axioms) rall_abs [simp]: 
    4.17 +lemma (in M_trivial) rall_abs [simp]: 
    4.18       "M(A) ==> (\<forall>x[M]. x\<in>A --> P(x)) <-> (\<forall>x\<in>A. P(x))" 
    4.19  by (blast intro: transM) 
    4.20  
    4.21 -lemma (in M_triv_axioms) rex_abs [simp]: 
    4.22 +lemma (in M_trivial) rex_abs [simp]: 
    4.23       "M(A) ==> (\<exists>x[M]. x\<in>A & P(x)) <-> (\<exists>x\<in>A. P(x))" 
    4.24  by (blast intro: transM) 
    4.25  
    4.26 -lemma (in M_triv_axioms) ball_iff_equiv: 
    4.27 +lemma (in M_trivial) ball_iff_equiv: 
    4.28       "M(A) ==> (\<forall>x[M]. (x\<in>A <-> P(x))) <-> 
    4.29                 (\<forall>x\<in>A. P(x)) & (\<forall>x. P(x) --> M(x) --> x\<in>A)" 
    4.30  by (blast intro: transM)
    4.31  
    4.32  text{*Simplifies proofs of equalities when there's an iff-equality
    4.33        available for rewriting, universally quantified over M. *}
    4.34 -lemma (in M_triv_axioms) M_equalityI: 
    4.35 +lemma (in M_trivial) M_equalityI: 
    4.36       "[| !!x. M(x) ==> x\<in>A <-> x\<in>B; M(A); M(B) |] ==> A=B"
    4.37  by (blast intro!: equalityI dest: transM) 
    4.38  
    4.39  
    4.40  subsubsection{*Trivial Absoluteness Proofs: Empty Set, Pairs, etc.*}
    4.41  
    4.42 -lemma (in M_triv_axioms) empty_abs [simp]: 
    4.43 +lemma (in M_trivial) empty_abs [simp]: 
    4.44       "M(z) ==> empty(M,z) <-> z=0"
    4.45  apply (simp add: empty_def)
    4.46  apply (blast intro: transM) 
    4.47  done
    4.48  
    4.49 -lemma (in M_triv_axioms) subset_abs [simp]: 
    4.50 +lemma (in M_trivial) subset_abs [simp]: 
    4.51       "M(A) ==> subset(M,A,B) <-> A \<subseteq> B"
    4.52  apply (simp add: subset_def) 
    4.53  apply (blast intro: transM) 
    4.54  done
    4.55  
    4.56 -lemma (in M_triv_axioms) upair_abs [simp]: 
    4.57 +lemma (in M_trivial) upair_abs [simp]: 
    4.58       "M(z) ==> upair(M,a,b,z) <-> z={a,b}"
    4.59  apply (simp add: upair_def) 
    4.60  apply (blast intro: transM) 
    4.61  done
    4.62  
    4.63 -lemma (in M_triv_axioms) upair_in_M_iff [iff]:
    4.64 +lemma (in M_trivial) upair_in_M_iff [iff]:
    4.65       "M({a,b}) <-> M(a) & M(b)"
    4.66  apply (insert upair_ax, simp add: upair_ax_def) 
    4.67  apply (blast intro: transM) 
    4.68  done
    4.69  
    4.70 -lemma (in M_triv_axioms) singleton_in_M_iff [iff]:
    4.71 +lemma (in M_trivial) singleton_in_M_iff [iff]:
    4.72       "M({a}) <-> M(a)"
    4.73  by (insert upair_in_M_iff [of a a], simp) 
    4.74  
    4.75 -lemma (in M_triv_axioms) pair_abs [simp]: 
    4.76 +lemma (in M_trivial) pair_abs [simp]: 
    4.77       "M(z) ==> pair(M,a,b,z) <-> z=<a,b>"
    4.78  apply (simp add: pair_def ZF.Pair_def)
    4.79  apply (blast intro: transM) 
    4.80  done
    4.81  
    4.82 -lemma (in M_triv_axioms) pair_in_M_iff [iff]:
    4.83 +lemma (in M_trivial) pair_in_M_iff [iff]:
    4.84       "M(<a,b>) <-> M(a) & M(b)"
    4.85  by (simp add: ZF.Pair_def)
    4.86  
    4.87 -lemma (in M_triv_axioms) pair_components_in_M:
    4.88 +lemma (in M_trivial) pair_components_in_M:
    4.89       "[| <x,y> \<in> A; M(A) |] ==> M(x) & M(y)"
    4.90  apply (simp add: Pair_def)
    4.91  apply (blast dest: transM) 
    4.92  done
    4.93  
    4.94 -lemma (in M_triv_axioms) cartprod_abs [simp]: 
    4.95 +lemma (in M_trivial) cartprod_abs [simp]: 
    4.96       "[| M(A); M(B); M(z) |] ==> cartprod(M,A,B,z) <-> z = A*B"
    4.97  apply (simp add: cartprod_def)
    4.98  apply (rule iffI) 
    4.99 @@ -551,51 +551,51 @@
   4.100  
   4.101  subsubsection{*Absoluteness for Unions and Intersections*}
   4.102  
   4.103 -lemma (in M_triv_axioms) union_abs [simp]: 
   4.104 +lemma (in M_trivial) union_abs [simp]: 
   4.105       "[| M(a); M(b); M(z) |] ==> union(M,a,b,z) <-> z = a Un b"
   4.106  apply (simp add: union_def) 
   4.107  apply (blast intro: transM) 
   4.108  done
   4.109  
   4.110 -lemma (in M_triv_axioms) inter_abs [simp]: 
   4.111 +lemma (in M_trivial) inter_abs [simp]: 
   4.112       "[| M(a); M(b); M(z) |] ==> inter(M,a,b,z) <-> z = a Int b"
   4.113  apply (simp add: inter_def) 
   4.114  apply (blast intro: transM) 
   4.115  done
   4.116  
   4.117 -lemma (in M_triv_axioms) setdiff_abs [simp]: 
   4.118 +lemma (in M_trivial) setdiff_abs [simp]: 
   4.119       "[| M(a); M(b); M(z) |] ==> setdiff(M,a,b,z) <-> z = a-b"
   4.120  apply (simp add: setdiff_def) 
   4.121  apply (blast intro: transM) 
   4.122  done
   4.123  
   4.124 -lemma (in M_triv_axioms) Union_abs [simp]: 
   4.125 +lemma (in M_trivial) Union_abs [simp]: 
   4.126       "[| M(A); M(z) |] ==> big_union(M,A,z) <-> z = Union(A)"
   4.127  apply (simp add: big_union_def) 
   4.128  apply (blast intro!: equalityI dest: transM) 
   4.129  done
   4.130  
   4.131 -lemma (in M_triv_axioms) Union_closed [intro,simp]:
   4.132 +lemma (in M_trivial) Union_closed [intro,simp]:
   4.133       "M(A) ==> M(Union(A))"
   4.134  by (insert Union_ax, simp add: Union_ax_def) 
   4.135  
   4.136 -lemma (in M_triv_axioms) Un_closed [intro,simp]:
   4.137 +lemma (in M_trivial) Un_closed [intro,simp]:
   4.138       "[| M(A); M(B) |] ==> M(A Un B)"
   4.139  by (simp only: Un_eq_Union, blast) 
   4.140  
   4.141 -lemma (in M_triv_axioms) cons_closed [intro,simp]:
   4.142 +lemma (in M_trivial) cons_closed [intro,simp]:
   4.143       "[| M(a); M(A) |] ==> M(cons(a,A))"
   4.144  by (subst cons_eq [symmetric], blast) 
   4.145  
   4.146 -lemma (in M_triv_axioms) cons_abs [simp]: 
   4.147 +lemma (in M_trivial) cons_abs [simp]: 
   4.148       "[| M(b); M(z) |] ==> is_cons(M,a,b,z) <-> z = cons(a,b)"
   4.149  by (simp add: is_cons_def, blast intro: transM)  
   4.150  
   4.151 -lemma (in M_triv_axioms) successor_abs [simp]: 
   4.152 +lemma (in M_trivial) successor_abs [simp]: 
   4.153       "[| M(a); M(z) |] ==> successor(M,a,z) <-> z = succ(a)"
   4.154  by (simp add: successor_def, blast)  
   4.155  
   4.156 -lemma (in M_triv_axioms) succ_in_M_iff [iff]:
   4.157 +lemma (in M_trivial) succ_in_M_iff [iff]:
   4.158       "M(succ(a)) <-> M(a)"
   4.159  apply (simp add: succ_def) 
   4.160  apply (blast intro: transM) 
   4.161 @@ -603,7 +603,7 @@
   4.162  
   4.163  subsubsection{*Absoluteness for Separation and Replacement*}
   4.164  
   4.165 -lemma (in M_triv_axioms) separation_closed [intro,simp]:
   4.166 +lemma (in M_trivial) separation_closed [intro,simp]:
   4.167       "[| separation(M,P); M(A) |] ==> M(Collect(A,P))"
   4.168  apply (insert separation, simp add: separation_def) 
   4.169  apply (drule rspec, assumption, clarify) 
   4.170 @@ -615,14 +615,14 @@
   4.171       "separation(M,P) <-> (\<forall>z[M]. \<exists>y[M]. is_Collect(M,z,P,y))"
   4.172  by (simp add: separation_def is_Collect_def) 
   4.173  
   4.174 -lemma (in M_triv_axioms) Collect_abs [simp]: 
   4.175 +lemma (in M_trivial) Collect_abs [simp]: 
   4.176       "[| M(A); M(z) |] ==> is_Collect(M,A,P,z) <-> z = Collect(A,P)"
   4.177  apply (simp add: is_Collect_def)
   4.178  apply (blast intro!: equalityI dest: transM)
   4.179  done
   4.180  
   4.181  text{*Probably the premise and conclusion are equivalent*}
   4.182 -lemma (in M_triv_axioms) strong_replacementI [rule_format]:
   4.183 +lemma (in M_trivial) strong_replacementI [rule_format]:
   4.184      "[| \<forall>A[M]. separation(M, %u. \<exists>x[M]. x\<in>A & P(x,u)) |]
   4.185       ==> strong_replacement(M,P)"
   4.186  apply (simp add: strong_replacement_def, clarify) 
   4.187 @@ -645,7 +645,7 @@
   4.188            is_Replace(M, A', %x y. P'(x,y), z')" 
   4.189  by (simp add: is_Replace_def) 
   4.190  
   4.191 -lemma (in M_triv_axioms) univalent_Replace_iff: 
   4.192 +lemma (in M_trivial) univalent_Replace_iff: 
   4.193       "[| M(A); univalent(M,A,P);
   4.194           !!x y. [| x\<in>A; P(x,y) |] ==> M(y) |] 
   4.195        ==> u \<in> Replace(A,P) <-> (\<exists>x. x\<in>A & P(x,u))"
   4.196 @@ -654,7 +654,7 @@
   4.197  done
   4.198  
   4.199  (*The last premise expresses that P takes M to M*)
   4.200 -lemma (in M_triv_axioms) strong_replacement_closed [intro,simp]:
   4.201 +lemma (in M_trivial) strong_replacement_closed [intro,simp]:
   4.202       "[| strong_replacement(M,P); M(A); univalent(M,A,P); 
   4.203           !!x y. [| x\<in>A; P(x,y) |] ==> M(y) |] ==> M(Replace(A,P))"
   4.204  apply (simp add: strong_replacement_def) 
   4.205 @@ -666,7 +666,7 @@
   4.206  apply (blast dest: transM) 
   4.207  done
   4.208  
   4.209 -lemma (in M_triv_axioms) Replace_abs: 
   4.210 +lemma (in M_trivial) Replace_abs: 
   4.211       "[| M(A); M(z); univalent(M,A,P); strong_replacement(M, P);
   4.212           !!x y. [| x\<in>A; P(x,y) |] ==> M(y)  |] 
   4.213        ==> is_Replace(M,A,P,z) <-> z = Replace(A,P)"
   4.214 @@ -683,7 +683,7 @@
   4.215    nonconstructible set.  So we cannot assume that M(X) implies M(RepFun(X,f))
   4.216    even for f : M -> M.
   4.217  *)
   4.218 -lemma (in M_triv_axioms) RepFun_closed:
   4.219 +lemma (in M_trivial) RepFun_closed:
   4.220       "[| strong_replacement(M, \<lambda>x y. y = f(x)); M(A); \<forall>x\<in>A. M(f(x)) |]
   4.221        ==> M(RepFun(A,f))"
   4.222  apply (simp add: RepFun_def) 
   4.223 @@ -696,7 +696,7 @@
   4.224  
   4.225  text{*Better than @{text RepFun_closed} when having the formula @{term "x\<in>A"}
   4.226        makes relativization easier.*}
   4.227 -lemma (in M_triv_axioms) RepFun_closed2:
   4.228 +lemma (in M_trivial) RepFun_closed2:
   4.229       "[| strong_replacement(M, \<lambda>x y. x\<in>A & y = f(x)); M(A); \<forall>x\<in>A. M(f(x)) |]
   4.230        ==> M(RepFun(A, %x. f(x)))"
   4.231  apply (simp add: RepFun_def)
   4.232 @@ -712,20 +712,20 @@
   4.233         \<forall>p[M]. p \<in> z <->
   4.234          (\<exists>u[M]. \<exists>v[M]. u\<in>A & pair(M,u,v,p) & is_b(u,v))"
   4.235  
   4.236 -lemma (in M_triv_axioms) lam_closed:
   4.237 +lemma (in M_trivial) lam_closed:
   4.238       "[| strong_replacement(M, \<lambda>x y. y = <x,b(x)>); M(A); \<forall>x\<in>A. M(b(x)) |]
   4.239        ==> M(\<lambda>x\<in>A. b(x))"
   4.240  by (simp add: lam_def, blast intro: RepFun_closed dest: transM) 
   4.241  
   4.242  text{*Better than @{text lam_closed}: has the formula @{term "x\<in>A"}*}
   4.243 -lemma (in M_triv_axioms) lam_closed2:
   4.244 +lemma (in M_trivial) lam_closed2:
   4.245    "[|strong_replacement(M, \<lambda>x y. x\<in>A & y = \<langle>x, b(x)\<rangle>);
   4.246       M(A); \<forall>m[M]. m\<in>A --> M(b(m))|] ==> M(Lambda(A,b))"
   4.247  apply (simp add: lam_def)
   4.248  apply (blast intro: RepFun_closed2 dest: transM)  
   4.249  done
   4.250  
   4.251 -lemma (in M_triv_axioms) lambda_abs2 [simp]: 
   4.252 +lemma (in M_trivial) lambda_abs2 [simp]: 
   4.253       "[| strong_replacement(M, \<lambda>x y. x\<in>A & y = \<langle>x, b(x)\<rangle>);
   4.254           Relativize1(M,A,is_b,b); M(A); \<forall>m[M]. m\<in>A --> M(b(m)); M(z) |] 
   4.255        ==> is_lambda(M,A,is_b,z) <-> z = Lambda(A,b)"
   4.256 @@ -744,7 +744,7 @@
   4.257            is_lambda(M, A', %x y. is_b'(x,y), z')" 
   4.258  by (simp add: is_lambda_def) 
   4.259  
   4.260 -lemma (in M_triv_axioms) image_abs [simp]: 
   4.261 +lemma (in M_trivial) image_abs [simp]: 
   4.262       "[| M(r); M(A); M(z) |] ==> image(M,r,A,z) <-> z = r``A"
   4.263  apply (simp add: image_def)
   4.264  apply (rule iffI) 
   4.265 @@ -754,13 +754,13 @@
   4.266  text{*What about @{text Pow_abs}?  Powerset is NOT absolute!
   4.267        This result is one direction of absoluteness.*}
   4.268  
   4.269 -lemma (in M_triv_axioms) powerset_Pow: 
   4.270 +lemma (in M_trivial) powerset_Pow: 
   4.271       "powerset(M, x, Pow(x))"
   4.272  by (simp add: powerset_def)
   4.273  
   4.274  text{*But we can't prove that the powerset in @{text M} includes the
   4.275        real powerset.*}
   4.276 -lemma (in M_triv_axioms) powerset_imp_subset_Pow: 
   4.277 +lemma (in M_trivial) powerset_imp_subset_Pow: 
   4.278       "[| powerset(M,x,y); M(y) |] ==> y <= Pow(x)"
   4.279  apply (simp add: powerset_def) 
   4.280  apply (blast dest: transM) 
   4.281 @@ -768,22 +768,22 @@
   4.282  
   4.283  subsubsection{*Absoluteness for the Natural Numbers*}
   4.284  
   4.285 -lemma (in M_triv_axioms) nat_into_M [intro]:
   4.286 +lemma (in M_trivial) nat_into_M [intro]:
   4.287       "n \<in> nat ==> M(n)"
   4.288  by (induct n rule: nat_induct, simp_all)
   4.289  
   4.290 -lemma (in M_triv_axioms) nat_case_closed [intro,simp]:
   4.291 +lemma (in M_trivial) nat_case_closed [intro,simp]:
   4.292    "[|M(k); M(a); \<forall>m[M]. M(b(m))|] ==> M(nat_case(a,b,k))"
   4.293  apply (case_tac "k=0", simp) 
   4.294  apply (case_tac "\<exists>m. k = succ(m)", force)
   4.295  apply (simp add: nat_case_def) 
   4.296  done
   4.297  
   4.298 -lemma (in M_triv_axioms) quasinat_abs [simp]: 
   4.299 +lemma (in M_trivial) quasinat_abs [simp]: 
   4.300       "M(z) ==> is_quasinat(M,z) <-> quasinat(z)"
   4.301  by (auto simp add: is_quasinat_def quasinat_def)
   4.302  
   4.303 -lemma (in M_triv_axioms) nat_case_abs [simp]: 
   4.304 +lemma (in M_trivial) nat_case_abs [simp]: 
   4.305       "[| relativize1(M,is_b,b); M(k); M(z) |] 
   4.306        ==> is_nat_case(M,a,is_b,k,z) <-> z = nat_case(a,b,k)"
   4.307  apply (case_tac "quasinat(k)") 
   4.308 @@ -808,26 +808,26 @@
   4.309  subsection{*Absoluteness for Ordinals*}
   4.310  text{*These results constitute Theorem IV 5.1 of Kunen (page 126).*}
   4.311  
   4.312 -lemma (in M_triv_axioms) lt_closed:
   4.313 +lemma (in M_trivial) lt_closed:
   4.314       "[| j<i; M(i) |] ==> M(j)" 
   4.315  by (blast dest: ltD intro: transM) 
   4.316  
   4.317 -lemma (in M_triv_axioms) transitive_set_abs [simp]: 
   4.318 +lemma (in M_trivial) transitive_set_abs [simp]: 
   4.319       "M(a) ==> transitive_set(M,a) <-> Transset(a)"
   4.320  by (simp add: transitive_set_def Transset_def)
   4.321  
   4.322 -lemma (in M_triv_axioms) ordinal_abs [simp]: 
   4.323 +lemma (in M_trivial) ordinal_abs [simp]: 
   4.324       "M(a) ==> ordinal(M,a) <-> Ord(a)"
   4.325  by (simp add: ordinal_def Ord_def)
   4.326  
   4.327 -lemma (in M_triv_axioms) limit_ordinal_abs [simp]: 
   4.328 +lemma (in M_trivial) limit_ordinal_abs [simp]: 
   4.329       "M(a) ==> limit_ordinal(M,a) <-> Limit(a)" 
   4.330  apply (unfold Limit_def limit_ordinal_def) 
   4.331  apply (simp add: Ord_0_lt_iff) 
   4.332  apply (simp add: lt_def, blast) 
   4.333  done
   4.334  
   4.335 -lemma (in M_triv_axioms) successor_ordinal_abs [simp]: 
   4.336 +lemma (in M_trivial) successor_ordinal_abs [simp]: 
   4.337       "M(a) ==> successor_ordinal(M,a) <-> Ord(a) & (\<exists>b[M]. a = succ(b))"
   4.338  apply (simp add: successor_ordinal_def, safe)
   4.339  apply (drule Ord_cases_disj, auto) 
   4.340 @@ -840,7 +840,7 @@
   4.341  lemma naturals_not_limit: "a \<in> nat ==> ~ Limit(a)"
   4.342  by (induct a rule: nat_induct, auto)
   4.343  
   4.344 -lemma (in M_triv_axioms) finite_ordinal_abs [simp]: 
   4.345 +lemma (in M_trivial) finite_ordinal_abs [simp]: 
   4.346       "M(a) ==> finite_ordinal(M,a) <-> a \<in> nat"
   4.347  apply (simp add: finite_ordinal_def)
   4.348  apply (blast intro: finite_Ord_is_nat intro: nat_into_Ord 
   4.349 @@ -856,21 +856,21 @@
   4.350  apply (erule nat_le_Limit)
   4.351  done
   4.352  
   4.353 -lemma (in M_triv_axioms) omega_abs [simp]: 
   4.354 +lemma (in M_trivial) omega_abs [simp]: 
   4.355       "M(a) ==> omega(M,a) <-> a = nat"
   4.356  apply (simp add: omega_def) 
   4.357  apply (blast intro: Limit_non_Limit_implies_nat dest: naturals_not_limit)
   4.358  done
   4.359  
   4.360 -lemma (in M_triv_axioms) number1_abs [simp]: 
   4.361 +lemma (in M_trivial) number1_abs [simp]: 
   4.362       "M(a) ==> number1(M,a) <-> a = 1"
   4.363  by (simp add: number1_def) 
   4.364  
   4.365 -lemma (in M_triv_axioms) number2_abs [simp]: 
   4.366 +lemma (in M_trivial) number2_abs [simp]: 
   4.367       "M(a) ==> number2(M,a) <-> a = succ(1)"
   4.368  by (simp add: number2_def) 
   4.369  
   4.370 -lemma (in M_triv_axioms) number3_abs [simp]: 
   4.371 +lemma (in M_trivial) number3_abs [simp]: 
   4.372       "M(a) ==> number3(M,a) <-> a = succ(succ(1))"
   4.373  by (simp add: number3_def) 
   4.374  
   4.375 @@ -893,13 +893,13 @@
   4.376      natnumber :: "[i=>o,i,i] => o"
   4.377        "natnumber(M,n,x) == natnumber_aux(M,n)`x = 1"
   4.378  
   4.379 -  lemma (in M_triv_axioms) [simp]: 
   4.380 +  lemma (in M_trivial) [simp]: 
   4.381         "natnumber(M,0,x) == x=0"
   4.382  *)
   4.383  
   4.384  subsection{*Some instances of separation and strong replacement*}
   4.385  
   4.386 -locale M_axioms = M_triv_axioms +
   4.387 +locale M_basic = M_trivial +
   4.388  assumes Inter_separation:
   4.389       "M(A) ==> separation(M, \<lambda>x. \<forall>y[M]. y\<in>A --> x\<in>y)"
   4.390    and Diff_separation:
   4.391 @@ -960,7 +960,7 @@
   4.392                  (\<exists>fx[M]. \<exists>gx[M]. fun_apply(M,f,x,fx) & fun_apply(M,g,x,gx) & 
   4.393                                     fx \<noteq> gx))"
   4.394  
   4.395 -lemma (in M_axioms) cartprod_iff_lemma:
   4.396 +lemma (in M_basic) cartprod_iff_lemma:
   4.397       "[| M(C);  \<forall>u[M]. u \<in> C <-> (\<exists>x\<in>A. \<exists>y\<in>B. u = {{x}, {x,y}}); 
   4.398           powerset(M, A \<union> B, p1); powerset(M, p1, p2);  M(p2) |]
   4.399         ==> C = {u \<in> p2 . \<exists>x\<in>A. \<exists>y\<in>B. u = {{x}, {x,y}}}"
   4.400 @@ -973,7 +973,7 @@
   4.401  apply (frule transM, assumption, force) 
   4.402  done
   4.403  
   4.404 -lemma (in M_axioms) cartprod_iff:
   4.405 +lemma (in M_basic) cartprod_iff:
   4.406       "[| M(A); M(B); M(C) |] 
   4.407        ==> cartprod(M,A,B,C) <-> 
   4.408            (\<exists>p1 p2. M(p1) & M(p2) & powerset(M,A Un B,p1) & powerset(M,p1,p2) &
   4.409 @@ -991,7 +991,7 @@
   4.410  apply (blast intro: cartprod_iff_lemma) 
   4.411  done
   4.412  
   4.413 -lemma (in M_axioms) cartprod_closed_lemma:
   4.414 +lemma (in M_basic) cartprod_closed_lemma:
   4.415       "[| M(A); M(B) |] ==> \<exists>C[M]. cartprod(M,A,B,C)"
   4.416  apply (simp del: cartprod_abs add: cartprod_iff)
   4.417  apply (insert power_ax, simp add: power_ax_def) 
   4.418 @@ -1008,38 +1008,38 @@
   4.419  
   4.420  text{*All the lemmas above are necessary because Powerset is not absolute.
   4.421        I should have used Replacement instead!*}
   4.422 -lemma (in M_axioms) cartprod_closed [intro,simp]: 
   4.423 +lemma (in M_basic) cartprod_closed [intro,simp]: 
   4.424       "[| M(A); M(B) |] ==> M(A*B)"
   4.425  by (frule cartprod_closed_lemma, assumption, force)
   4.426  
   4.427 -lemma (in M_axioms) sum_closed [intro,simp]: 
   4.428 +lemma (in M_basic) sum_closed [intro,simp]: 
   4.429       "[| M(A); M(B) |] ==> M(A+B)"
   4.430  by (simp add: sum_def)
   4.431  
   4.432 -lemma (in M_axioms) sum_abs [simp]:
   4.433 +lemma (in M_basic) sum_abs [simp]:
   4.434       "[| M(A); M(B); M(Z) |] ==> is_sum(M,A,B,Z) <-> (Z = A+B)"
   4.435  by (simp add: is_sum_def sum_def singleton_0 nat_into_M)
   4.436  
   4.437 -lemma (in M_triv_axioms) Inl_in_M_iff [iff]:
   4.438 +lemma (in M_trivial) Inl_in_M_iff [iff]:
   4.439       "M(Inl(a)) <-> M(a)"
   4.440  by (simp add: Inl_def) 
   4.441  
   4.442 -lemma (in M_triv_axioms) Inl_abs [simp]:
   4.443 +lemma (in M_trivial) Inl_abs [simp]:
   4.444       "M(Z) ==> is_Inl(M,a,Z) <-> (Z = Inl(a))"
   4.445  by (simp add: is_Inl_def Inl_def)
   4.446  
   4.447 -lemma (in M_triv_axioms) Inr_in_M_iff [iff]:
   4.448 +lemma (in M_trivial) Inr_in_M_iff [iff]:
   4.449       "M(Inr(a)) <-> M(a)"
   4.450  by (simp add: Inr_def) 
   4.451  
   4.452 -lemma (in M_triv_axioms) Inr_abs [simp]:
   4.453 +lemma (in M_trivial) Inr_abs [simp]:
   4.454       "M(Z) ==> is_Inr(M,a,Z) <-> (Z = Inr(a))"
   4.455  by (simp add: is_Inr_def Inr_def)
   4.456  
   4.457  
   4.458  subsubsection {*converse of a relation*}
   4.459  
   4.460 -lemma (in M_axioms) M_converse_iff:
   4.461 +lemma (in M_basic) M_converse_iff:
   4.462       "M(r) ==> 
   4.463        converse(r) = 
   4.464        {z \<in> Union(Union(r)) * Union(Union(r)). 
   4.465 @@ -1050,13 +1050,13 @@
   4.466  apply (blast dest: transM) 
   4.467  done
   4.468  
   4.469 -lemma (in M_axioms) converse_closed [intro,simp]: 
   4.470 +lemma (in M_basic) converse_closed [intro,simp]: 
   4.471       "M(r) ==> M(converse(r))"
   4.472  apply (simp add: M_converse_iff)
   4.473  apply (insert converse_separation [of r], simp)
   4.474  done
   4.475  
   4.476 -lemma (in M_axioms) converse_abs [simp]: 
   4.477 +lemma (in M_basic) converse_abs [simp]: 
   4.478       "[| M(r); M(z) |] ==> is_converse(M,r,z) <-> z = converse(r)"
   4.479  apply (simp add: is_converse_def)
   4.480  apply (rule iffI)
   4.481 @@ -1069,105 +1069,105 @@
   4.482  
   4.483  subsubsection {*image, preimage, domain, range*}
   4.484  
   4.485 -lemma (in M_axioms) image_closed [intro,simp]: 
   4.486 +lemma (in M_basic) image_closed [intro,simp]: 
   4.487       "[| M(A); M(r) |] ==> M(r``A)"
   4.488  apply (simp add: image_iff_Collect)
   4.489  apply (insert image_separation [of A r], simp) 
   4.490  done
   4.491  
   4.492 -lemma (in M_axioms) vimage_abs [simp]: 
   4.493 +lemma (in M_basic) vimage_abs [simp]: 
   4.494       "[| M(r); M(A); M(z) |] ==> pre_image(M,r,A,z) <-> z = r-``A"
   4.495  apply (simp add: pre_image_def)
   4.496  apply (rule iffI) 
   4.497   apply (blast intro!: equalityI dest: transM, blast) 
   4.498  done
   4.499  
   4.500 -lemma (in M_axioms) vimage_closed [intro,simp]: 
   4.501 +lemma (in M_basic) vimage_closed [intro,simp]: 
   4.502       "[| M(A); M(r) |] ==> M(r-``A)"
   4.503  by (simp add: vimage_def)
   4.504  
   4.505  
   4.506  subsubsection{*Domain, range and field*}
   4.507  
   4.508 -lemma (in M_axioms) domain_abs [simp]: 
   4.509 +lemma (in M_basic) domain_abs [simp]: 
   4.510       "[| M(r); M(z) |] ==> is_domain(M,r,z) <-> z = domain(r)"
   4.511  apply (simp add: is_domain_def) 
   4.512  apply (blast intro!: equalityI dest: transM) 
   4.513  done
   4.514  
   4.515 -lemma (in M_axioms) domain_closed [intro,simp]: 
   4.516 +lemma (in M_basic) domain_closed [intro,simp]: 
   4.517       "M(r) ==> M(domain(r))"
   4.518  apply (simp add: domain_eq_vimage)
   4.519  done
   4.520  
   4.521 -lemma (in M_axioms) range_abs [simp]: 
   4.522 +lemma (in M_basic) range_abs [simp]: 
   4.523       "[| M(r); M(z) |] ==> is_range(M,r,z) <-> z = range(r)"
   4.524  apply (simp add: is_range_def)
   4.525  apply (blast intro!: equalityI dest: transM)
   4.526  done
   4.527  
   4.528 -lemma (in M_axioms) range_closed [intro,simp]: 
   4.529 +lemma (in M_basic) range_closed [intro,simp]: 
   4.530       "M(r) ==> M(range(r))"
   4.531  apply (simp add: range_eq_image)
   4.532  done
   4.533  
   4.534 -lemma (in M_axioms) field_abs [simp]: 
   4.535 +lemma (in M_basic) field_abs [simp]: 
   4.536       "[| M(r); M(z) |] ==> is_field(M,r,z) <-> z = field(r)"
   4.537  by (simp add: domain_closed range_closed is_field_def field_def)
   4.538  
   4.539 -lemma (in M_axioms) field_closed [intro,simp]: 
   4.540 +lemma (in M_basic) field_closed [intro,simp]: 
   4.541       "M(r) ==> M(field(r))"
   4.542  by (simp add: domain_closed range_closed Un_closed field_def) 
   4.543  
   4.544  
   4.545  subsubsection{*Relations, functions and application*}
   4.546  
   4.547 -lemma (in M_axioms) relation_abs [simp]: 
   4.548 +lemma (in M_basic) relation_abs [simp]: 
   4.549       "M(r) ==> is_relation(M,r) <-> relation(r)"
   4.550  apply (simp add: is_relation_def relation_def) 
   4.551  apply (blast dest!: bspec dest: pair_components_in_M)+
   4.552  done
   4.553  
   4.554 -lemma (in M_axioms) function_abs [simp]: 
   4.555 +lemma (in M_basic) function_abs [simp]: 
   4.556       "M(r) ==> is_function(M,r) <-> function(r)"
   4.557  apply (simp add: is_function_def function_def, safe) 
   4.558     apply (frule transM, assumption) 
   4.559    apply (blast dest: pair_components_in_M)+
   4.560  done
   4.561  
   4.562 -lemma (in M_axioms) apply_closed [intro,simp]: 
   4.563 +lemma (in M_basic) apply_closed [intro,simp]: 
   4.564       "[|M(f); M(a)|] ==> M(f`a)"
   4.565  by (simp add: apply_def)
   4.566  
   4.567 -lemma (in M_axioms) apply_abs [simp]: 
   4.568 +lemma (in M_basic) apply_abs [simp]: 
   4.569       "[| M(f); M(x); M(y) |] ==> fun_apply(M,f,x,y) <-> f`x = y"
   4.570  apply (simp add: fun_apply_def apply_def, blast) 
   4.571  done
   4.572  
   4.573 -lemma (in M_axioms) typed_function_abs [simp]: 
   4.574 +lemma (in M_basic) typed_function_abs [simp]: 
   4.575       "[| M(A); M(f) |] ==> typed_function(M,A,B,f) <-> f \<in> A -> B"
   4.576  apply (auto simp add: typed_function_def relation_def Pi_iff) 
   4.577  apply (blast dest: pair_components_in_M)+
   4.578  done
   4.579  
   4.580 -lemma (in M_axioms) injection_abs [simp]: 
   4.581 +lemma (in M_basic) injection_abs [simp]: 
   4.582       "[| M(A); M(f) |] ==> injection(M,A,B,f) <-> f \<in> inj(A,B)"
   4.583  apply (simp add: injection_def apply_iff inj_def apply_closed)
   4.584  apply (blast dest: transM [of _ A]) 
   4.585  done
   4.586  
   4.587 -lemma (in M_axioms) surjection_abs [simp]: 
   4.588 +lemma (in M_basic) surjection_abs [simp]: 
   4.589       "[| M(A); M(B); M(f) |] ==> surjection(M,A,B,f) <-> f \<in> surj(A,B)"
   4.590  by (simp add: surjection_def surj_def)
   4.591  
   4.592 -lemma (in M_axioms) bijection_abs [simp]: 
   4.593 +lemma (in M_basic) bijection_abs [simp]: 
   4.594       "[| M(A); M(B); M(f) |] ==> bijection(M,A,B,f) <-> f \<in> bij(A,B)"
   4.595  by (simp add: bijection_def bij_def)
   4.596  
   4.597  
   4.598  subsubsection{*Composition of relations*}
   4.599  
   4.600 -lemma (in M_axioms) M_comp_iff:
   4.601 +lemma (in M_basic) M_comp_iff:
   4.602       "[| M(r); M(s) |] 
   4.603        ==> r O s = 
   4.604            {xz \<in> domain(s) * range(r).  
   4.605 @@ -1179,13 +1179,13 @@
   4.606   apply  (blast dest:  transM)+
   4.607  done
   4.608  
   4.609 -lemma (in M_axioms) comp_closed [intro,simp]: 
   4.610 +lemma (in M_basic) comp_closed [intro,simp]: 
   4.611       "[| M(r); M(s) |] ==> M(r O s)"
   4.612  apply (simp add: M_comp_iff)
   4.613  apply (insert comp_separation [of r s], simp) 
   4.614  done
   4.615  
   4.616 -lemma (in M_axioms) composition_abs [simp]: 
   4.617 +lemma (in M_basic) composition_abs [simp]: 
   4.618       "[| M(r); M(s); M(t) |] 
   4.619        ==> composition(M,r,s,t) <-> t = r O s"
   4.620  apply safe
   4.621 @@ -1200,7 +1200,7 @@
   4.622  done
   4.623  
   4.624  text{*no longer needed*}
   4.625 -lemma (in M_axioms) restriction_is_function: 
   4.626 +lemma (in M_basic) restriction_is_function: 
   4.627       "[| restriction(M,f,A,z); function(f); M(f); M(A); M(z) |] 
   4.628        ==> function(z)"
   4.629  apply (rotate_tac 1)
   4.630 @@ -1208,7 +1208,7 @@
   4.631  apply (unfold function_def, blast) 
   4.632  done
   4.633  
   4.634 -lemma (in M_axioms) restriction_abs [simp]: 
   4.635 +lemma (in M_basic) restriction_abs [simp]: 
   4.636       "[| M(f); M(A); M(z) |] 
   4.637        ==> restriction(M,f,A,z) <-> z = restrict(f,A)"
   4.638  apply (simp add: ball_iff_equiv restriction_def restrict_def)
   4.639 @@ -1216,39 +1216,39 @@
   4.640  done
   4.641  
   4.642  
   4.643 -lemma (in M_axioms) M_restrict_iff:
   4.644 +lemma (in M_basic) M_restrict_iff:
   4.645       "M(r) ==> restrict(r,A) = {z \<in> r . \<exists>x\<in>A. \<exists>y[M]. z = \<langle>x, y\<rangle>}"
   4.646  by (simp add: restrict_def, blast dest: transM)
   4.647  
   4.648 -lemma (in M_axioms) restrict_closed [intro,simp]: 
   4.649 +lemma (in M_basic) restrict_closed [intro,simp]: 
   4.650       "[| M(A); M(r) |] ==> M(restrict(r,A))"
   4.651  apply (simp add: M_restrict_iff)
   4.652  apply (insert restrict_separation [of A], simp) 
   4.653  done
   4.654  
   4.655 -lemma (in M_axioms) Inter_abs [simp]: 
   4.656 +lemma (in M_basic) Inter_abs [simp]: 
   4.657       "[| M(A); M(z) |] ==> big_inter(M,A,z) <-> z = Inter(A)"
   4.658  apply (simp add: big_inter_def Inter_def) 
   4.659  apply (blast intro!: equalityI dest: transM) 
   4.660  done
   4.661  
   4.662 -lemma (in M_axioms) Inter_closed [intro,simp]:
   4.663 +lemma (in M_basic) Inter_closed [intro,simp]:
   4.664       "M(A) ==> M(Inter(A))"
   4.665  by (insert Inter_separation, simp add: Inter_def)
   4.666  
   4.667 -lemma (in M_axioms) Int_closed [intro,simp]:
   4.668 +lemma (in M_basic) Int_closed [intro,simp]:
   4.669       "[| M(A); M(B) |] ==> M(A Int B)"
   4.670  apply (subgoal_tac "M({A,B})")
   4.671  apply (frule Inter_closed, force+) 
   4.672  done
   4.673  
   4.674 -lemma (in M_axioms) Diff_closed [intro,simp]:
   4.675 +lemma (in M_basic) Diff_closed [intro,simp]:
   4.676       "[|M(A); M(B)|] ==> M(A-B)"
   4.677  by (insert Diff_separation, simp add: Diff_def)
   4.678  
   4.679  subsubsection{*Some Facts About Separation Axioms*}
   4.680  
   4.681 -lemma (in M_axioms) separation_conj:
   4.682 +lemma (in M_basic) separation_conj:
   4.683       "[|separation(M,P); separation(M,Q)|] ==> separation(M, \<lambda>z. P(z) & Q(z))"
   4.684  by (simp del: separation_closed
   4.685           add: separation_iff Collect_Int_Collect_eq [symmetric]) 
   4.686 @@ -1262,24 +1262,24 @@
   4.687       "A - Collect(A,P) = Collect(A, %x. ~ P(x))"
   4.688  by blast
   4.689  
   4.690 -lemma (in M_triv_axioms) Collect_rall_eq:
   4.691 +lemma (in M_trivial) Collect_rall_eq:
   4.692       "M(Y) ==> Collect(A, %x. \<forall>y[M]. y\<in>Y --> P(x,y)) = 
   4.693                 (if Y=0 then A else (\<Inter>y \<in> Y. {x \<in> A. P(x,y)}))"
   4.694  apply simp 
   4.695  apply (blast intro!: equalityI dest: transM) 
   4.696  done
   4.697  
   4.698 -lemma (in M_axioms) separation_disj:
   4.699 +lemma (in M_basic) separation_disj:
   4.700       "[|separation(M,P); separation(M,Q)|] ==> separation(M, \<lambda>z. P(z) | Q(z))"
   4.701  by (simp del: separation_closed
   4.702           add: separation_iff Collect_Un_Collect_eq [symmetric]) 
   4.703  
   4.704 -lemma (in M_axioms) separation_neg:
   4.705 +lemma (in M_basic) separation_neg:
   4.706       "separation(M,P) ==> separation(M, \<lambda>z. ~P(z))"
   4.707  by (simp del: separation_closed
   4.708           add: separation_iff Diff_Collect_eq [symmetric]) 
   4.709  
   4.710 -lemma (in M_axioms) separation_imp:
   4.711 +lemma (in M_basic) separation_imp:
   4.712       "[|separation(M,P); separation(M,Q)|] 
   4.713        ==> separation(M, \<lambda>z. P(z) --> Q(z))"
   4.714  by (simp add: separation_neg separation_disj not_disj_iff_imp [symmetric]) 
   4.715 @@ -1287,7 +1287,7 @@
   4.716  text{*This result is a hint of how little can be done without the Reflection 
   4.717    Theorem.  The quantifier has to be bounded by a set.  We also need another
   4.718    instance of Separation!*}
   4.719 -lemma (in M_axioms) separation_rall:
   4.720 +lemma (in M_basic) separation_rall:
   4.721       "[|M(Y); \<forall>y[M]. separation(M, \<lambda>x. P(x,y)); 
   4.722          \<forall>z[M]. strong_replacement(M, \<lambda>x y. y = {u \<in> z . P(u,x)})|]
   4.723        ==> separation(M, \<lambda>x. \<forall>y[M]. y\<in>Y --> P(x,y))" 
   4.724 @@ -1300,7 +1300,7 @@
   4.725  subsubsection{*Functions and function space*}
   4.726  
   4.727  text{*M contains all finite functions*}
   4.728 -lemma (in M_axioms) finite_fun_closed_lemma [rule_format]: 
   4.729 +lemma (in M_basic) finite_fun_closed_lemma [rule_format]: 
   4.730       "[| n \<in> nat; M(A) |] ==> \<forall>f \<in> n -> A. M(f)"
   4.731  apply (induct_tac n, simp)
   4.732  apply (rule ballI)  
   4.733 @@ -1312,13 +1312,13 @@
   4.734  apply (blast intro: apply_funtype transM restrict_type2) 
   4.735  done
   4.736  
   4.737 -lemma (in M_axioms) finite_fun_closed [rule_format]: 
   4.738 +lemma (in M_basic) finite_fun_closed [rule_format]: 
   4.739       "[| f \<in> n -> A; n \<in> nat; M(A) |] ==> M(f)"
   4.740  by (blast intro: finite_fun_closed_lemma) 
   4.741  
   4.742  text{*The assumption @{term "M(A->B)"} is unusual, but essential: in 
   4.743  all but trivial cases, A->B cannot be expected to belong to @{term M}.*}
   4.744 -lemma (in M_axioms) is_funspace_abs [simp]:
   4.745 +lemma (in M_basic) is_funspace_abs [simp]:
   4.746       "[|M(A); M(B); M(F); M(A->B)|] ==> is_funspace(M,A,B,F) <-> F = A->B";
   4.747  apply (simp add: is_funspace_def)
   4.748  apply (rule iffI)
   4.749 @@ -1327,7 +1327,7 @@
   4.750    apply simp_all
   4.751  done
   4.752  
   4.753 -lemma (in M_axioms) succ_fun_eq2:
   4.754 +lemma (in M_basic) succ_fun_eq2:
   4.755       "[|M(B); M(n->B)|] ==>
   4.756        succ(n) -> B = 
   4.757        \<Union>{z. p \<in> (n->B)*B, \<exists>f[M]. \<exists>b[M]. p = <f,b> & z = {cons(<n,b>, f)}}"
   4.758 @@ -1335,7 +1335,7 @@
   4.759  apply (blast dest: transM)  
   4.760  done
   4.761  
   4.762 -lemma (in M_axioms) funspace_succ:
   4.763 +lemma (in M_basic) funspace_succ:
   4.764       "[|M(n); M(B); M(n->B) |] ==> M(succ(n) -> B)"
   4.765  apply (insert funspace_succ_replacement [of n], simp) 
   4.766  apply (force simp add: succ_fun_eq2 univalent_def) 
   4.767 @@ -1343,7 +1343,7 @@
   4.768  
   4.769  text{*@{term M} contains all finite function spaces.  Needed to prove the
   4.770  absoluteness of transitive closure.*}
   4.771 -lemma (in M_axioms) finite_funspace_closed [intro,simp]:
   4.772 +lemma (in M_basic) finite_funspace_closed [intro,simp]:
   4.773       "[|n\<in>nat; M(B)|] ==> M(n->B)"
   4.774  apply (induct_tac n, simp)
   4.775  apply (simp add: funspace_succ nat_into_M) 
   4.776 @@ -1368,37 +1368,37 @@
   4.777     "is_or(M,a,b,z) == (number1(M,a)  & number1(M,z)) | 
   4.778                        (~number1(M,a) & z=b)"
   4.779  
   4.780 -lemma (in M_triv_axioms) bool_of_o_abs [simp]: 
   4.781 +lemma (in M_trivial) bool_of_o_abs [simp]: 
   4.782       "M(z) ==> is_bool_of_o(M,P,z) <-> z = bool_of_o(P)" 
   4.783  by (simp add: is_bool_of_o_def bool_of_o_def) 
   4.784  
   4.785  
   4.786 -lemma (in M_triv_axioms) not_abs [simp]: 
   4.787 +lemma (in M_trivial) not_abs [simp]: 
   4.788       "[| M(a); M(z)|] ==> is_not(M,a,z) <-> z = not(a)"
   4.789  by (simp add: Bool.not_def cond_def is_not_def) 
   4.790  
   4.791 -lemma (in M_triv_axioms) and_abs [simp]: 
   4.792 +lemma (in M_trivial) and_abs [simp]: 
   4.793       "[| M(a); M(b); M(z)|] ==> is_and(M,a,b,z) <-> z = a and b"
   4.794  by (simp add: Bool.and_def cond_def is_and_def) 
   4.795  
   4.796 -lemma (in M_triv_axioms) or_abs [simp]: 
   4.797 +lemma (in M_trivial) or_abs [simp]: 
   4.798       "[| M(a); M(b); M(z)|] ==> is_or(M,a,b,z) <-> z = a or b"
   4.799  by (simp add: Bool.or_def cond_def is_or_def)
   4.800  
   4.801  
   4.802 -lemma (in M_triv_axioms) bool_of_o_closed [intro,simp]:
   4.803 +lemma (in M_trivial) bool_of_o_closed [intro,simp]:
   4.804       "M(bool_of_o(P))"
   4.805  by (simp add: bool_of_o_def) 
   4.806  
   4.807 -lemma (in M_triv_axioms) and_closed [intro,simp]:
   4.808 +lemma (in M_trivial) and_closed [intro,simp]:
   4.809       "[| M(p); M(q) |] ==> M(p and q)"
   4.810  by (simp add: and_def cond_def) 
   4.811  
   4.812 -lemma (in M_triv_axioms) or_closed [intro,simp]:
   4.813 +lemma (in M_trivial) or_closed [intro,simp]:
   4.814       "[| M(p); M(q) |] ==> M(p or q)"
   4.815  by (simp add: or_def cond_def) 
   4.816  
   4.817 -lemma (in M_triv_axioms) not_closed [intro,simp]:
   4.818 +lemma (in M_trivial) not_closed [intro,simp]:
   4.819       "M(p) ==> M(not(p))"
   4.820  by (simp add: Bool.not_def cond_def) 
   4.821  
   4.822 @@ -1416,16 +1416,16 @@
   4.823      "is_Cons(M,a,l,Z) == \<exists>p[M]. pair(M,a,l,p) & is_Inr(M,p,Z)"
   4.824  
   4.825  
   4.826 -lemma (in M_triv_axioms) Nil_in_M [intro,simp]: "M(Nil)"
   4.827 +lemma (in M_trivial) Nil_in_M [intro,simp]: "M(Nil)"
   4.828  by (simp add: Nil_def)
   4.829  
   4.830 -lemma (in M_triv_axioms) Nil_abs [simp]: "M(Z) ==> is_Nil(M,Z) <-> (Z = Nil)"
   4.831 +lemma (in M_trivial) Nil_abs [simp]: "M(Z) ==> is_Nil(M,Z) <-> (Z = Nil)"
   4.832  by (simp add: is_Nil_def Nil_def)
   4.833  
   4.834 -lemma (in M_triv_axioms) Cons_in_M_iff [iff]: "M(Cons(a,l)) <-> M(a) & M(l)"
   4.835 +lemma (in M_trivial) Cons_in_M_iff [iff]: "M(Cons(a,l)) <-> M(a) & M(l)"
   4.836  by (simp add: Cons_def) 
   4.837  
   4.838 -lemma (in M_triv_axioms) Cons_abs [simp]:
   4.839 +lemma (in M_trivial) Cons_abs [simp]:
   4.840       "[|M(a); M(l); M(Z)|] ==> is_Cons(M,a,l,Z) <-> (Z = Cons(a,l))"
   4.841  by (simp add: is_Cons_def Cons_def)
   4.842  
   4.843 @@ -1499,18 +1499,18 @@
   4.844       "xs \<in> list(A) ==>list_case'(a,b,xs) = list_case(a,b,xs)"
   4.845  by (erule list.cases, simp_all)
   4.846  
   4.847 -lemma (in M_axioms) list_case'_closed [intro,simp]:
   4.848 +lemma (in M_basic) list_case'_closed [intro,simp]:
   4.849    "[|M(k); M(a); \<forall>x[M]. \<forall>y[M]. M(b(x,y))|] ==> M(list_case'(a,b,k))"
   4.850  apply (case_tac "quasilist(k)") 
   4.851   apply (simp add: quasilist_def, force) 
   4.852  apply (simp add: non_list_case) 
   4.853  done
   4.854  
   4.855 -lemma (in M_triv_axioms) quasilist_abs [simp]: 
   4.856 +lemma (in M_trivial) quasilist_abs [simp]: 
   4.857       "M(z) ==> is_quasilist(M,z) <-> quasilist(z)"
   4.858  by (auto simp add: is_quasilist_def quasilist_def)
   4.859  
   4.860 -lemma (in M_triv_axioms) list_case_abs [simp]: 
   4.861 +lemma (in M_trivial) list_case_abs [simp]: 
   4.862       "[| relativize2(M,is_b,b); M(k); M(z) |] 
   4.863        ==> is_list_case(M,a,is_b,k,z) <-> z = list_case'(a,b,k)"
   4.864  apply (case_tac "quasilist(k)") 
   4.865 @@ -1525,14 +1525,14 @@
   4.866  
   4.867  subsubsection{*The Modified Operators @{term hd'} and @{term tl'}*}
   4.868  
   4.869 -lemma (in M_triv_axioms) is_hd_Nil: "is_hd(M,[],Z) <-> empty(M,Z)"
   4.870 +lemma (in M_trivial) is_hd_Nil: "is_hd(M,[],Z) <-> empty(M,Z)"
   4.871  by (simp add: is_hd_def)
   4.872  
   4.873 -lemma (in M_triv_axioms) is_hd_Cons:
   4.874 +lemma (in M_trivial) is_hd_Cons:
   4.875       "[|M(a); M(l)|] ==> is_hd(M,Cons(a,l),Z) <-> Z = a"
   4.876  by (force simp add: is_hd_def) 
   4.877  
   4.878 -lemma (in M_triv_axioms) hd_abs [simp]:
   4.879 +lemma (in M_trivial) hd_abs [simp]:
   4.880       "[|M(x); M(y)|] ==> is_hd(M,x,y) <-> y = hd'(x)"
   4.881  apply (simp add: hd'_def)
   4.882  apply (intro impI conjI)
   4.883 @@ -1541,14 +1541,14 @@
   4.884  apply (elim disjE exE, auto)
   4.885  done 
   4.886  
   4.887 -lemma (in M_triv_axioms) is_tl_Nil: "is_tl(M,[],Z) <-> Z = []"
   4.888 +lemma (in M_trivial) is_tl_Nil: "is_tl(M,[],Z) <-> Z = []"
   4.889  by (simp add: is_tl_def)
   4.890  
   4.891 -lemma (in M_triv_axioms) is_tl_Cons:
   4.892 +lemma (in M_trivial) is_tl_Cons:
   4.893       "[|M(a); M(l)|] ==> is_tl(M,Cons(a,l),Z) <-> Z = l"
   4.894  by (force simp add: is_tl_def) 
   4.895  
   4.896 -lemma (in M_triv_axioms) tl_abs [simp]:
   4.897 +lemma (in M_trivial) tl_abs [simp]:
   4.898       "[|M(x); M(y)|] ==> is_tl(M,x,y) <-> y = tl'(x)"
   4.899  apply (simp add: tl'_def)
   4.900  apply (intro impI conjI)
   4.901 @@ -1557,7 +1557,7 @@
   4.902  apply (elim disjE exE, auto)
   4.903  done 
   4.904  
   4.905 -lemma (in M_triv_axioms) relativize1_tl: "relativize1(M, is_tl(M), tl')"  
   4.906 +lemma (in M_trivial) relativize1_tl: "relativize1(M, is_tl(M), tl')"  
   4.907  by (simp add: relativize1_def)
   4.908  
   4.909  lemma hd'_Nil: "hd'([]) = 0"
   4.910 @@ -1577,7 +1577,7 @@
   4.911  apply (simp_all add: tl'_Nil) 
   4.912  done
   4.913  
   4.914 -lemma (in M_axioms) tl'_closed: "M(x) ==> M(tl'(x))"
   4.915 +lemma (in M_basic) tl'_closed: "M(x) ==> M(tl'(x))"
   4.916  apply (simp add: tl'_def)
   4.917  apply (force simp add: quasilist_def)
   4.918  done
     5.1 --- a/src/ZF/Constructible/Separation.thy	Tue Sep 10 16:47:17 2002 +0200
     5.2 +++ b/src/ZF/Constructible/Separation.thy	Tue Sep 10 16:51:31 2002 +0200
     5.3 @@ -8,7 +8,7 @@
     5.4  
     5.5  theory Separation = L_axioms + WF_absolute:
     5.6  
     5.7 -text{*This theory proves all instances needed for locale @{text "M_axioms"}*}
     5.8 +text{*This theory proves all instances needed for locale @{text "M_basic"}*}
     5.9  
    5.10  text{*Helps us solve for de Bruijn indices!*}
    5.11  lemma nth_ConsI: "[|nth(n,l) = x; n \<in> nat|] ==> nth(succ(n), Cons(a,l)) = x"
    5.12 @@ -470,12 +470,12 @@
    5.13  done
    5.14  
    5.15  
    5.16 -subsection{*Instantiating the locale @{text M_axioms}*}
    5.17 +subsection{*Instantiating the locale @{text M_basic}*}
    5.18  text{*Separation (and Strong Replacement) for basic set-theoretic constructions
    5.19  such as intersection, Cartesian Product and image.*}
    5.20  
    5.21 -lemma M_axioms_axioms_L: "M_axioms_axioms(L)"
    5.22 -  apply (rule M_axioms_axioms.intro)
    5.23 +lemma M_basic_axioms_L: "M_basic_axioms(L)"
    5.24 +  apply (rule M_basic_axioms.intro)
    5.25         apply (assumption | rule
    5.26  	 Inter_separation Diff_separation cartprod_separation image_separation
    5.27  	 converse_separation restrict_separation
    5.28 @@ -485,114 +485,114 @@
    5.29  	 omap_replacement is_recfun_separation)+
    5.30    done
    5.31  
    5.32 -theorem M_axioms_L: "PROP M_axioms(L)"
    5.33 -by (rule M_axioms.intro [OF M_triv_axioms_L M_axioms_axioms_L])
    5.34 +theorem M_basic_L: "PROP M_basic(L)"
    5.35 +by (rule M_basic.intro [OF M_trivial_L M_basic_axioms_L])
    5.36  
    5.37  
    5.38 -lemmas cartprod_iff = M_axioms.cartprod_iff [OF M_axioms_L]
    5.39 -  and cartprod_closed = M_axioms.cartprod_closed [OF M_axioms_L]
    5.40 -  and sum_closed = M_axioms.sum_closed [OF M_axioms_L]
    5.41 -  and M_converse_iff = M_axioms.M_converse_iff [OF M_axioms_L]
    5.42 -  and converse_closed = M_axioms.converse_closed [OF M_axioms_L]
    5.43 -  and converse_abs = M_axioms.converse_abs [OF M_axioms_L]
    5.44 -  and image_closed = M_axioms.image_closed [OF M_axioms_L]
    5.45 -  and vimage_abs = M_axioms.vimage_abs [OF M_axioms_L]
    5.46 -  and vimage_closed = M_axioms.vimage_closed [OF M_axioms_L]
    5.47 -  and domain_abs = M_axioms.domain_abs [OF M_axioms_L]
    5.48 -  and domain_closed = M_axioms.domain_closed [OF M_axioms_L]
    5.49 -  and range_abs = M_axioms.range_abs [OF M_axioms_L]
    5.50 -  and range_closed = M_axioms.range_closed [OF M_axioms_L]
    5.51 -  and field_abs = M_axioms.field_abs [OF M_axioms_L]
    5.52 -  and field_closed = M_axioms.field_closed [OF M_axioms_L]
    5.53 -  and relation_abs = M_axioms.relation_abs [OF M_axioms_L]
    5.54 -  and function_abs = M_axioms.function_abs [OF M_axioms_L]
    5.55 -  and apply_closed = M_axioms.apply_closed [OF M_axioms_L]
    5.56 -  and apply_abs = M_axioms.apply_abs [OF M_axioms_L]
    5.57 -  and typed_function_abs = M_axioms.typed_function_abs [OF M_axioms_L]
    5.58 -  and injection_abs = M_axioms.injection_abs [OF M_axioms_L]
    5.59 -  and surjection_abs = M_axioms.surjection_abs [OF M_axioms_L]
    5.60 -  and bijection_abs = M_axioms.bijection_abs [OF M_axioms_L]
    5.61 -  and M_comp_iff = M_axioms.M_comp_iff [OF M_axioms_L]
    5.62 -  and comp_closed = M_axioms.comp_closed [OF M_axioms_L]
    5.63 -  and composition_abs = M_axioms.composition_abs [OF M_axioms_L]
    5.64 -  and restriction_is_function = M_axioms.restriction_is_function [OF M_axioms_L]
    5.65 -  and restriction_abs = M_axioms.restriction_abs [OF M_axioms_L]
    5.66 -  and M_restrict_iff = M_axioms.M_restrict_iff [OF M_axioms_L]
    5.67 -  and restrict_closed = M_axioms.restrict_closed [OF M_axioms_L]
    5.68 -  and Inter_abs = M_axioms.Inter_abs [OF M_axioms_L]
    5.69 -  and Inter_closed = M_axioms.Inter_closed [OF M_axioms_L]
    5.70 -  and Int_closed = M_axioms.Int_closed [OF M_axioms_L]
    5.71 -  and finite_fun_closed = M_axioms.finite_fun_closed [OF M_axioms_L]
    5.72 -  and is_funspace_abs = M_axioms.is_funspace_abs [OF M_axioms_L]
    5.73 -  and succ_fun_eq2 = M_axioms.succ_fun_eq2 [OF M_axioms_L]
    5.74 -  and funspace_succ = M_axioms.funspace_succ [OF M_axioms_L]
    5.75 -  and finite_funspace_closed = M_axioms.finite_funspace_closed [OF M_axioms_L]
    5.76 +lemmas cartprod_iff = M_basic.cartprod_iff [OF M_basic_L]
    5.77 +  and cartprod_closed = M_basic.cartprod_closed [OF M_basic_L]
    5.78 +  and sum_closed = M_basic.sum_closed [OF M_basic_L]
    5.79 +  and M_converse_iff = M_basic.M_converse_iff [OF M_basic_L]
    5.80 +  and converse_closed = M_basic.converse_closed [OF M_basic_L]
    5.81 +  and converse_abs = M_basic.converse_abs [OF M_basic_L]
    5.82 +  and image_closed = M_basic.image_closed [OF M_basic_L]
    5.83 +  and vimage_abs = M_basic.vimage_abs [OF M_basic_L]
    5.84 +  and vimage_closed = M_basic.vimage_closed [OF M_basic_L]
    5.85 +  and domain_abs = M_basic.domain_abs [OF M_basic_L]
    5.86 +  and domain_closed = M_basic.domain_closed [OF M_basic_L]
    5.87 +  and range_abs = M_basic.range_abs [OF M_basic_L]
    5.88 +  and range_closed = M_basic.range_closed [OF M_basic_L]
    5.89 +  and field_abs = M_basic.field_abs [OF M_basic_L]
    5.90 +  and field_closed = M_basic.field_closed [OF M_basic_L]
    5.91 +  and relation_abs = M_basic.relation_abs [OF M_basic_L]
    5.92 +  and function_abs = M_basic.function_abs [OF M_basic_L]
    5.93 +  and apply_closed = M_basic.apply_closed [OF M_basic_L]
    5.94 +  and apply_abs = M_basic.apply_abs [OF M_basic_L]
    5.95 +  and typed_function_abs = M_basic.typed_function_abs [OF M_basic_L]
    5.96 +  and injection_abs = M_basic.injection_abs [OF M_basic_L]
    5.97 +  and surjection_abs = M_basic.surjection_abs [OF M_basic_L]
    5.98 +  and bijection_abs = M_basic.bijection_abs [OF M_basic_L]
    5.99 +  and M_comp_iff = M_basic.M_comp_iff [OF M_basic_L]
   5.100 +  and comp_closed = M_basic.comp_closed [OF M_basic_L]
   5.101 +  and composition_abs = M_basic.composition_abs [OF M_basic_L]
   5.102 +  and restriction_is_function = M_basic.restriction_is_function [OF M_basic_L]
   5.103 +  and restriction_abs = M_basic.restriction_abs [OF M_basic_L]
   5.104 +  and M_restrict_iff = M_basic.M_restrict_iff [OF M_basic_L]
   5.105 +  and restrict_closed = M_basic.restrict_closed [OF M_basic_L]
   5.106 +  and Inter_abs = M_basic.Inter_abs [OF M_basic_L]
   5.107 +  and Inter_closed = M_basic.Inter_closed [OF M_basic_L]
   5.108 +  and Int_closed = M_basic.Int_closed [OF M_basic_L]
   5.109 +  and finite_fun_closed = M_basic.finite_fun_closed [OF M_basic_L]
   5.110 +  and is_funspace_abs = M_basic.is_funspace_abs [OF M_basic_L]
   5.111 +  and succ_fun_eq2 = M_basic.succ_fun_eq2 [OF M_basic_L]
   5.112 +  and funspace_succ = M_basic.funspace_succ [OF M_basic_L]
   5.113 +  and finite_funspace_closed = M_basic.finite_funspace_closed [OF M_basic_L]
   5.114  
   5.115 -lemmas is_recfun_equal = M_axioms.is_recfun_equal [OF M_axioms_L]
   5.116 -  and is_recfun_cut = M_axioms.is_recfun_cut [OF M_axioms_L]
   5.117 -  and is_recfun_functional = M_axioms.is_recfun_functional [OF M_axioms_L]
   5.118 -  and is_recfun_relativize = M_axioms.is_recfun_relativize [OF M_axioms_L]
   5.119 -  and is_recfun_restrict = M_axioms.is_recfun_restrict [OF M_axioms_L]
   5.120 -  and univalent_is_recfun = M_axioms.univalent_is_recfun [OF M_axioms_L]
   5.121 -  and exists_is_recfun_indstep = M_axioms.exists_is_recfun_indstep [OF M_axioms_L]
   5.122 -  and wellfounded_exists_is_recfun = M_axioms.wellfounded_exists_is_recfun [OF M_axioms_L]
   5.123 -  and wf_exists_is_recfun = M_axioms.wf_exists_is_recfun [OF M_axioms_L]
   5.124 -  and is_recfun_abs = M_axioms.is_recfun_abs [OF M_axioms_L]
   5.125 -  and irreflexive_abs = M_axioms.irreflexive_abs [OF M_axioms_L]
   5.126 -  and transitive_rel_abs = M_axioms.transitive_rel_abs [OF M_axioms_L]
   5.127 -  and linear_rel_abs = M_axioms.linear_rel_abs [OF M_axioms_L]
   5.128 -  and wellordered_is_trans_on = M_axioms.wellordered_is_trans_on [OF M_axioms_L]
   5.129 -  and wellordered_is_linear = M_axioms.wellordered_is_linear [OF M_axioms_L]
   5.130 -  and wellordered_is_wellfounded_on = M_axioms.wellordered_is_wellfounded_on [OF M_axioms_L]
   5.131 -  and wellfounded_imp_wellfounded_on = M_axioms.wellfounded_imp_wellfounded_on [OF M_axioms_L]
   5.132 -  and wellfounded_on_subset_A = M_axioms.wellfounded_on_subset_A [OF M_axioms_L]
   5.133 -  and wellfounded_on_iff_wellfounded = M_axioms.wellfounded_on_iff_wellfounded [OF M_axioms_L]
   5.134 -  and wellfounded_on_imp_wellfounded = M_axioms.wellfounded_on_imp_wellfounded [OF M_axioms_L]
   5.135 -  and wellfounded_on_field_imp_wellfounded = M_axioms.wellfounded_on_field_imp_wellfounded [OF M_axioms_L]
   5.136 -  and wellfounded_iff_wellfounded_on_field = M_axioms.wellfounded_iff_wellfounded_on_field [OF M_axioms_L]
   5.137 -  and wellfounded_induct = M_axioms.wellfounded_induct [OF M_axioms_L]
   5.138 -  and wellfounded_on_induct = M_axioms.wellfounded_on_induct [OF M_axioms_L]
   5.139 -  and wellfounded_on_induct2 = M_axioms.wellfounded_on_induct2 [OF M_axioms_L]
   5.140 -  and linear_imp_relativized = M_axioms.linear_imp_relativized [OF M_axioms_L]
   5.141 -  and trans_on_imp_relativized = M_axioms.trans_on_imp_relativized [OF M_axioms_L]
   5.142 -  and wf_on_imp_relativized = M_axioms.wf_on_imp_relativized [OF M_axioms_L]
   5.143 -  and wf_imp_relativized = M_axioms.wf_imp_relativized [OF M_axioms_L]
   5.144 -  and well_ord_imp_relativized = M_axioms.well_ord_imp_relativized [OF M_axioms_L]
   5.145 -  and order_isomorphism_abs = M_axioms.order_isomorphism_abs [OF M_axioms_L]
   5.146 -  and pred_set_abs = M_axioms.pred_set_abs [OF M_axioms_L]
   5.147 +lemmas is_recfun_equal = M_basic.is_recfun_equal [OF M_basic_L]
   5.148 +  and is_recfun_cut = M_basic.is_recfun_cut [OF M_basic_L]
   5.149 +  and is_recfun_functional = M_basic.is_recfun_functional [OF M_basic_L]
   5.150 +  and is_recfun_relativize = M_basic.is_recfun_relativize [OF M_basic_L]
   5.151 +  and is_recfun_restrict = M_basic.is_recfun_restrict [OF M_basic_L]
   5.152 +  and univalent_is_recfun = M_basic.univalent_is_recfun [OF M_basic_L]
   5.153 +  and exists_is_recfun_indstep = M_basic.exists_is_recfun_indstep [OF M_basic_L]
   5.154 +  and wellfounded_exists_is_recfun = M_basic.wellfounded_exists_is_recfun [OF M_basic_L]
   5.155 +  and wf_exists_is_recfun = M_basic.wf_exists_is_recfun [OF M_basic_L]
   5.156 +  and is_recfun_abs = M_basic.is_recfun_abs [OF M_basic_L]
   5.157 +  and irreflexive_abs = M_basic.irreflexive_abs [OF M_basic_L]
   5.158 +  and transitive_rel_abs = M_basic.transitive_rel_abs [OF M_basic_L]
   5.159 +  and linear_rel_abs = M_basic.linear_rel_abs [OF M_basic_L]
   5.160 +  and wellordered_is_trans_on = M_basic.wellordered_is_trans_on [OF M_basic_L]
   5.161 +  and wellordered_is_linear = M_basic.wellordered_is_linear [OF M_basic_L]
   5.162 +  and wellordered_is_wellfounded_on = M_basic.wellordered_is_wellfounded_on [OF M_basic_L]
   5.163 +  and wellfounded_imp_wellfounded_on = M_basic.wellfounded_imp_wellfounded_on [OF M_basic_L]
   5.164 +  and wellfounded_on_subset_A = M_basic.wellfounded_on_subset_A [OF M_basic_L]
   5.165 +  and wellfounded_on_iff_wellfounded = M_basic.wellfounded_on_iff_wellfounded [OF M_basic_L]
   5.166 +  and wellfounded_on_imp_wellfounded = M_basic.wellfounded_on_imp_wellfounded [OF M_basic_L]
   5.167 +  and wellfounded_on_field_imp_wellfounded = M_basic.wellfounded_on_field_imp_wellfounded [OF M_basic_L]
   5.168 +  and wellfounded_iff_wellfounded_on_field = M_basic.wellfounded_iff_wellfounded_on_field [OF M_basic_L]
   5.169 +  and wellfounded_induct = M_basic.wellfounded_induct [OF M_basic_L]
   5.170 +  and wellfounded_on_induct = M_basic.wellfounded_on_induct [OF M_basic_L]
   5.171 +  and wellfounded_on_induct2 = M_basic.wellfounded_on_induct2 [OF M_basic_L]
   5.172 +  and linear_imp_relativized = M_basic.linear_imp_relativized [OF M_basic_L]
   5.173 +  and trans_on_imp_relativized = M_basic.trans_on_imp_relativized [OF M_basic_L]
   5.174 +  and wf_on_imp_relativized = M_basic.wf_on_imp_relativized [OF M_basic_L]
   5.175 +  and wf_imp_relativized = M_basic.wf_imp_relativized [OF M_basic_L]
   5.176 +  and well_ord_imp_relativized = M_basic.well_ord_imp_relativized [OF M_basic_L]
   5.177 +  and order_isomorphism_abs = M_basic.order_isomorphism_abs [OF M_basic_L]
   5.178 +  and pred_set_abs = M_basic.pred_set_abs [OF M_basic_L]
   5.179  
   5.180 -lemmas pred_closed = M_axioms.pred_closed [OF M_axioms_L]
   5.181 -  and membership_abs = M_axioms.membership_abs [OF M_axioms_L]
   5.182 -  and M_Memrel_iff = M_axioms.M_Memrel_iff [OF M_axioms_L]
   5.183 -  and Memrel_closed = M_axioms.Memrel_closed [OF M_axioms_L]
   5.184 -  and wellordered_iso_predD = M_axioms.wellordered_iso_predD [OF M_axioms_L]
   5.185 -  and wellordered_iso_pred_eq = M_axioms.wellordered_iso_pred_eq [OF M_axioms_L]
   5.186 -  and wellfounded_on_asym = M_axioms.wellfounded_on_asym [OF M_axioms_L]
   5.187 -  and wellordered_asym = M_axioms.wellordered_asym [OF M_axioms_L]
   5.188 -  and ord_iso_pred_imp_lt = M_axioms.ord_iso_pred_imp_lt [OF M_axioms_L]
   5.189 -  and obase_iff = M_axioms.obase_iff [OF M_axioms_L]
   5.190 -  and omap_iff = M_axioms.omap_iff [OF M_axioms_L]
   5.191 -  and omap_unique = M_axioms.omap_unique [OF M_axioms_L]
   5.192 -  and omap_yields_Ord = M_axioms.omap_yields_Ord [OF M_axioms_L]
   5.193 -  and otype_iff = M_axioms.otype_iff [OF M_axioms_L]
   5.194 -  and otype_eq_range = M_axioms.otype_eq_range [OF M_axioms_L]
   5.195 -  and Ord_otype = M_axioms.Ord_otype [OF M_axioms_L]
   5.196 -  and domain_omap = M_axioms.domain_omap [OF M_axioms_L]
   5.197 -  and omap_subset = M_axioms.omap_subset [OF M_axioms_L]
   5.198 -  and omap_funtype = M_axioms.omap_funtype [OF M_axioms_L]
   5.199 -  and wellordered_omap_bij = M_axioms.wellordered_omap_bij [OF M_axioms_L]
   5.200 -  and omap_ord_iso = M_axioms.omap_ord_iso [OF M_axioms_L]
   5.201 -  and Ord_omap_image_pred = M_axioms.Ord_omap_image_pred [OF M_axioms_L]
   5.202 -  and restrict_omap_ord_iso = M_axioms.restrict_omap_ord_iso [OF M_axioms_L]
   5.203 -  and obase_equals = M_axioms.obase_equals [OF M_axioms_L]
   5.204 -  and omap_ord_iso_otype = M_axioms.omap_ord_iso_otype [OF M_axioms_L]
   5.205 -  and obase_exists = M_axioms.obase_exists [OF M_axioms_L]
   5.206 -  and omap_exists = M_axioms.omap_exists [OF M_axioms_L]
   5.207 -  and otype_exists = M_axioms.otype_exists [OF M_axioms_L]
   5.208 -  and omap_ord_iso_otype' = M_axioms.omap_ord_iso_otype' [OF M_axioms_L]
   5.209 -  and ordertype_exists = M_axioms.ordertype_exists [OF M_axioms_L]
   5.210 -  and relativized_imp_well_ord = M_axioms.relativized_imp_well_ord [OF M_axioms_L]
   5.211 -  and well_ord_abs = M_axioms.well_ord_abs [OF M_axioms_L]
   5.212 +lemmas pred_closed = M_basic.pred_closed [OF M_basic_L]
   5.213 +  and membership_abs = M_basic.membership_abs [OF M_basic_L]
   5.214 +  and M_Memrel_iff = M_basic.M_Memrel_iff [OF M_basic_L]
   5.215 +  and Memrel_closed = M_basic.Memrel_closed [OF M_basic_L]
   5.216 +  and wellordered_iso_predD = M_basic.wellordered_iso_predD [OF M_basic_L]
   5.217 +  and wellordered_iso_pred_eq = M_basic.wellordered_iso_pred_eq [OF M_basic_L]
   5.218 +  and wellfounded_on_asym = M_basic.wellfounded_on_asym [OF M_basic_L]
   5.219 +  and wellordered_asym = M_basic.wellordered_asym [OF M_basic_L]
   5.220 +  and ord_iso_pred_imp_lt = M_basic.ord_iso_pred_imp_lt [OF M_basic_L]
   5.221 +  and obase_iff = M_basic.obase_iff [OF M_basic_L]
   5.222 +  and omap_iff = M_basic.omap_iff [OF M_basic_L]
   5.223 +  and omap_unique = M_basic.omap_unique [OF M_basic_L]
   5.224 +  and omap_yields_Ord = M_basic.omap_yields_Ord [OF M_basic_L]
   5.225 +  and otype_iff = M_basic.otype_iff [OF M_basic_L]
   5.226 +  and otype_eq_range = M_basic.otype_eq_range [OF M_basic_L]
   5.227 +  and Ord_otype = M_basic.Ord_otype [OF M_basic_L]
   5.228 +  and domain_omap = M_basic.domain_omap [OF M_basic_L]
   5.229 +  and omap_subset = M_basic.omap_subset [OF M_basic_L]
   5.230 +  and omap_funtype = M_basic.omap_funtype [OF M_basic_L]
   5.231 +  and wellordered_omap_bij = M_basic.wellordered_omap_bij [OF M_basic_L]
   5.232 +  and omap_ord_iso = M_basic.omap_ord_iso [OF M_basic_L]
   5.233 +  and Ord_omap_image_pred = M_basic.Ord_omap_image_pred [OF M_basic_L]
   5.234 +  and restrict_omap_ord_iso = M_basic.restrict_omap_ord_iso [OF M_basic_L]
   5.235 +  and obase_equals = M_basic.obase_equals [OF M_basic_L]
   5.236 +  and omap_ord_iso_otype = M_basic.omap_ord_iso_otype [OF M_basic_L]
   5.237 +  and obase_exists = M_basic.obase_exists [OF M_basic_L]
   5.238 +  and omap_exists = M_basic.omap_exists [OF M_basic_L]
   5.239 +  and otype_exists = M_basic.otype_exists [OF M_basic_L]
   5.240 +  and omap_ord_iso_otype' = M_basic.omap_ord_iso_otype' [OF M_basic_L]
   5.241 +  and ordertype_exists = M_basic.ordertype_exists [OF M_basic_L]
   5.242 +  and relativized_imp_well_ord = M_basic.relativized_imp_well_ord [OF M_basic_L]
   5.243 +  and well_ord_abs = M_basic.well_ord_abs [OF M_basic_L]
   5.244  
   5.245  declare cartprod_closed [intro, simp]
   5.246  declare sum_closed [intro, simp]
     6.1 --- a/src/ZF/Constructible/WF_absolute.thy	Tue Sep 10 16:47:17 2002 +0200
     6.2 +++ b/src/ZF/Constructible/WF_absolute.thy	Tue Sep 10 16:51:31 2002 +0200
     6.3 @@ -139,7 +139,7 @@
     6.4      "tran_closure(M,r,t) ==
     6.5           \<exists>s[M]. rtran_closure(M,r,s) & composition(M,r,s,t)"
     6.6  
     6.7 -lemma (in M_axioms) rtran_closure_mem_iff:
     6.8 +lemma (in M_basic) rtran_closure_mem_iff:
     6.9       "[|M(A); M(r); M(p)|]
    6.10        ==> rtran_closure_mem(M,A,r,p) <->
    6.11            (\<exists>n[M]. n\<in>nat & 
    6.12 @@ -149,7 +149,7 @@
    6.13  by (simp add: rtran_closure_mem_def Ord_succ_mem_iff nat_0_le [THEN ltD]) 
    6.14  
    6.15  
    6.16 -locale M_trancl = M_axioms +
    6.17 +locale M_trancl = M_basic +
    6.18    assumes rtrancl_separation:
    6.19  	 "[| M(r); M(A) |] ==> separation (M, rtran_closure_mem(M,A,r))"
    6.20        and wellfounded_trancl_separation:
     7.1 --- a/src/ZF/Constructible/WFrec.thy	Tue Sep 10 16:47:17 2002 +0200
     7.2 +++ b/src/ZF/Constructible/WFrec.thy	Tue Sep 10 16:51:31 2002 +0200
     7.3 @@ -74,7 +74,7 @@
     7.4  
     7.5  subsection{*Reworking of the Recursion Theory Within @{term M}*}
     7.6  
     7.7 -lemma (in M_axioms) is_recfun_separation':
     7.8 +lemma (in M_basic) is_recfun_separation':
     7.9      "[| f \<in> r -`` {a} \<rightarrow> range(f); g \<in> r -`` {b} \<rightarrow> range(g);
    7.10          M(r); M(f); M(g); M(a); M(b) |] 
    7.11       ==> separation(M, \<lambda>x. \<not> (\<langle>x, a\<rangle> \<in> r \<longrightarrow> \<langle>x, b\<rangle> \<in> r \<longrightarrow> f ` x = g ` x))"
    7.12 @@ -89,7 +89,7 @@
    7.13        The last three M-premises are redundant because of @{term "M(r)"}, 
    7.14        but without them we'd have to undertake
    7.15        more work to set up the induction formula.*}
    7.16 -lemma (in M_axioms) is_recfun_equal [rule_format]: 
    7.17 +lemma (in M_basic) is_recfun_equal [rule_format]: 
    7.18      "[|is_recfun(r,a,H,f);  is_recfun(r,b,H,g);  
    7.19         wellfounded(M,r);  trans(r);
    7.20         M(f); M(g); M(r); M(x); M(a); M(b) |] 
    7.21 @@ -112,7 +112,7 @@
    7.22  apply (blast intro: transD sym) 
    7.23  done
    7.24  
    7.25 -lemma (in M_axioms) is_recfun_cut: 
    7.26 +lemma (in M_basic) is_recfun_cut: 
    7.27      "[|is_recfun(r,a,H,f);  is_recfun(r,b,H,g);  
    7.28         wellfounded(M,r); trans(r); 
    7.29         M(f); M(g); M(r); <b,a> \<in> r |]   
    7.30 @@ -124,7 +124,7 @@
    7.31  apply (blast intro: is_recfun_equal transD dest: transM) 
    7.32  done
    7.33  
    7.34 -lemma (in M_axioms) is_recfun_functional:
    7.35 +lemma (in M_basic) is_recfun_functional:
    7.36       "[|is_recfun(r,a,H,f);  is_recfun(r,a,H,g);  
    7.37         wellfounded(M,r); trans(r); M(f); M(g); M(r) |] ==> f=g"
    7.38  apply (rule fun_extension)
    7.39 @@ -133,7 +133,7 @@
    7.40  done 
    7.41  
    7.42  text{*Tells us that @{text is_recfun} can (in principle) be relativized.*}
    7.43 -lemma (in M_axioms) is_recfun_relativize:
    7.44 +lemma (in M_basic) is_recfun_relativize:
    7.45    "[| M(r); M(f); \<forall>x[M]. \<forall>g[M]. function(g) --> M(H(x,g)) |] 
    7.46     ==> is_recfun(r,a,H,f) <->
    7.47         (\<forall>z[M]. z \<in> f <-> 
    7.48 @@ -154,7 +154,7 @@
    7.49  apply (simp add: is_recfun_imp_function function_restrictI) 
    7.50  done
    7.51  
    7.52 -lemma (in M_axioms) is_recfun_restrict:
    7.53 +lemma (in M_basic) is_recfun_restrict:
    7.54       "[| wellfounded(M,r); trans(r); is_recfun(r,x,H,f); \<langle>y,x\<rangle> \<in> r; 
    7.55         M(r); M(f); 
    7.56         \<forall>x[M]. \<forall>g[M]. function(g) --> M(H(x,g)) |]
    7.57 @@ -171,7 +171,7 @@
    7.58  apply (blast intro: apply_recfun dest: transD)
    7.59  done
    7.60   
    7.61 -lemma (in M_axioms) restrict_Y_lemma:
    7.62 +lemma (in M_basic) restrict_Y_lemma:
    7.63     "[| wellfounded(M,r); trans(r); M(r);
    7.64         \<forall>x[M]. \<forall>g[M]. function(g) --> M(H(x,g));  M(Y);
    7.65         \<forall>b[M]. 
    7.66 @@ -201,7 +201,7 @@
    7.67  done
    7.68  
    7.69  text{*For typical applications of Replacement for recursive definitions*}
    7.70 -lemma (in M_axioms) univalent_is_recfun:
    7.71 +lemma (in M_basic) univalent_is_recfun:
    7.72       "[|wellfounded(M,r); trans(r); M(r)|]
    7.73        ==> univalent (M, A, \<lambda>x p. 
    7.74                \<exists>y[M]. p = \<langle>x,y\<rangle> & (\<exists>f[M]. is_recfun(r,x,H,f) & y = H(x,f)))"
    7.75 @@ -212,7 +212,7 @@
    7.76  
    7.77  text{*Proof of the inductive step for @{text exists_is_recfun}, since
    7.78        we must prove two versions.*}
    7.79 -lemma (in M_axioms) exists_is_recfun_indstep:
    7.80 +lemma (in M_basic) exists_is_recfun_indstep:
    7.81      "[|\<forall>y. \<langle>y, a1\<rangle> \<in> r --> (\<exists>f[M]. is_recfun(r, y, H, f)); 
    7.82         wellfounded(M,r); trans(r); M(r); M(a1);
    7.83         strong_replacement(M, \<lambda>x z. 
    7.84 @@ -245,7 +245,7 @@
    7.85  
    7.86  text{*Relativized version, when we have the (currently weaker) premise
    7.87        @{term "wellfounded(M,r)"}*}
    7.88 -lemma (in M_axioms) wellfounded_exists_is_recfun:
    7.89 +lemma (in M_basic) wellfounded_exists_is_recfun:
    7.90      "[|wellfounded(M,r);  trans(r);  
    7.91         separation(M, \<lambda>x. ~ (\<exists>f[M]. is_recfun(r, x, H, f)));
    7.92         strong_replacement(M, \<lambda>x z. 
    7.93 @@ -257,7 +257,7 @@
    7.94  apply (rule exists_is_recfun_indstep, assumption+)
    7.95  done
    7.96  
    7.97 -lemma (in M_axioms) wf_exists_is_recfun [rule_format]:
    7.98 +lemma (in M_basic) wf_exists_is_recfun [rule_format]:
    7.99      "[|wf(r);  trans(r);  M(r);  
   7.100         strong_replacement(M, \<lambda>x z. 
   7.101           \<exists>y[M]. \<exists>g[M]. pair(M,x,y,z) & is_recfun(r,x,H,g) & y = H(x,g)); 
   7.102 @@ -291,7 +291,7 @@
   7.103          strong_replacement(M, 
   7.104               \<lambda>x z. \<exists>y[M]. pair(M,x,y,z) & is_wfrec(M,MH,r,x,y))"
   7.105  
   7.106 -lemma (in M_axioms) is_recfun_abs:
   7.107 +lemma (in M_basic) is_recfun_abs:
   7.108       "[| \<forall>x[M]. \<forall>g[M]. function(g) --> M(H(x,g));  M(r); M(a); M(f); 
   7.109           relativize2(M,MH,H) |] 
   7.110        ==> M_is_recfun(M,MH,r,a,f) <-> is_recfun(r,a,H,f)"
   7.111 @@ -306,7 +306,7 @@
   7.112        ==> M_is_recfun(M,MH,r,a,f) <-> M_is_recfun(M,MH',r',a',f')"
   7.113  by (simp add: M_is_recfun_def) 
   7.114  
   7.115 -lemma (in M_axioms) is_wfrec_abs:
   7.116 +lemma (in M_basic) is_wfrec_abs:
   7.117       "[| \<forall>x[M]. \<forall>g[M]. function(g) --> M(H(x,g)); 
   7.118           relativize2(M,MH,H);  M(r); M(a); M(z) |]
   7.119        ==> is_wfrec(M,MH,r,a,z) <-> 
   7.120 @@ -314,7 +314,7 @@
   7.121  by (simp add: is_wfrec_def relativize2_def is_recfun_abs)
   7.122  
   7.123  text{*Relating @{term wfrec_replacement} to native constructs*}
   7.124 -lemma (in M_axioms) wfrec_replacement':
   7.125 +lemma (in M_basic) wfrec_replacement':
   7.126    "[|wfrec_replacement(M,MH,r);
   7.127       \<forall>x[M]. \<forall>g[M]. function(g) --> M(H(x,g)); 
   7.128       relativize2(M,MH,H);  M(r)|] 
   7.129 @@ -381,7 +381,7 @@
   7.130                    fun_apply(M,f,j,fj) & fj = k"
   7.131  
   7.132  
   7.133 -locale M_ord_arith = M_axioms +
   7.134 +locale M_ord_arith = M_basic +
   7.135    assumes oadd_strong_replacement:
   7.136     "[| M(i); M(j) |] ==>
   7.137      strong_replacement(M, 
     8.1 --- a/src/ZF/Constructible/Wellorderings.thy	Tue Sep 10 16:47:17 2002 +0200
     8.2 +++ b/src/ZF/Constructible/Wellorderings.thy	Tue Sep 10 16:51:31 2002 +0200
     8.3 @@ -49,63 +49,63 @@
     8.4  
     8.5  subsubsection {*Trivial absoluteness proofs*}
     8.6  
     8.7 -lemma (in M_axioms) irreflexive_abs [simp]: 
     8.8 +lemma (in M_basic) irreflexive_abs [simp]: 
     8.9       "M(A) ==> irreflexive(M,A,r) <-> irrefl(A,r)"
    8.10  by (simp add: irreflexive_def irrefl_def)
    8.11  
    8.12 -lemma (in M_axioms) transitive_rel_abs [simp]: 
    8.13 +lemma (in M_basic) transitive_rel_abs [simp]: 
    8.14       "M(A) ==> transitive_rel(M,A,r) <-> trans[A](r)"
    8.15  by (simp add: transitive_rel_def trans_on_def)
    8.16  
    8.17 -lemma (in M_axioms) linear_rel_abs [simp]: 
    8.18 +lemma (in M_basic) linear_rel_abs [simp]: 
    8.19       "M(A) ==> linear_rel(M,A,r) <-> linear(A,r)"
    8.20  by (simp add: linear_rel_def linear_def)
    8.21  
    8.22 -lemma (in M_axioms) wellordered_is_trans_on: 
    8.23 +lemma (in M_basic) wellordered_is_trans_on: 
    8.24      "[| wellordered(M,A,r); M(A) |] ==> trans[A](r)"
    8.25  by (auto simp add: wellordered_def)
    8.26  
    8.27 -lemma (in M_axioms) wellordered_is_linear: 
    8.28 +lemma (in M_basic) wellordered_is_linear: 
    8.29      "[| wellordered(M,A,r); M(A) |] ==> linear(A,r)"
    8.30  by (auto simp add: wellordered_def)
    8.31  
    8.32 -lemma (in M_axioms) wellordered_is_wellfounded_on: 
    8.33 +lemma (in M_basic) wellordered_is_wellfounded_on: 
    8.34      "[| wellordered(M,A,r); M(A) |] ==> wellfounded_on(M,A,r)"
    8.35  by (auto simp add: wellordered_def)
    8.36  
    8.37 -lemma (in M_axioms) wellfounded_imp_wellfounded_on: 
    8.38 +lemma (in M_basic) wellfounded_imp_wellfounded_on: 
    8.39      "[| wellfounded(M,r); M(A) |] ==> wellfounded_on(M,A,r)"
    8.40  by (auto simp add: wellfounded_def wellfounded_on_def)
    8.41  
    8.42 -lemma (in M_axioms) wellfounded_on_subset_A:
    8.43 +lemma (in M_basic) wellfounded_on_subset_A:
    8.44       "[| wellfounded_on(M,A,r);  B<=A |] ==> wellfounded_on(M,B,r)"
    8.45  by (simp add: wellfounded_on_def, blast)
    8.46  
    8.47  
    8.48  subsubsection {*Well-founded relations*}
    8.49  
    8.50 -lemma  (in M_axioms) wellfounded_on_iff_wellfounded:
    8.51 +lemma  (in M_basic) wellfounded_on_iff_wellfounded:
    8.52       "wellfounded_on(M,A,r) <-> wellfounded(M, r \<inter> A*A)"
    8.53  apply (simp add: wellfounded_on_def wellfounded_def, safe)
    8.54   apply blast 
    8.55  apply (drule_tac x=x in rspec, assumption, blast) 
    8.56  done
    8.57  
    8.58 -lemma (in M_axioms) wellfounded_on_imp_wellfounded:
    8.59 +lemma (in M_basic) wellfounded_on_imp_wellfounded:
    8.60       "[|wellfounded_on(M,A,r); r \<subseteq> A*A|] ==> wellfounded(M,r)"
    8.61  by (simp add: wellfounded_on_iff_wellfounded subset_Int_iff)
    8.62  
    8.63 -lemma (in M_axioms) wellfounded_on_field_imp_wellfounded:
    8.64 +lemma (in M_basic) wellfounded_on_field_imp_wellfounded:
    8.65       "wellfounded_on(M, field(r), r) ==> wellfounded(M,r)"
    8.66  by (simp add: wellfounded_def wellfounded_on_iff_wellfounded, fast)
    8.67  
    8.68 -lemma (in M_axioms) wellfounded_iff_wellfounded_on_field:
    8.69 +lemma (in M_basic) wellfounded_iff_wellfounded_on_field:
    8.70       "M(r) ==> wellfounded(M,r) <-> wellfounded_on(M, field(r), r)"
    8.71  by (blast intro: wellfounded_imp_wellfounded_on
    8.72                   wellfounded_on_field_imp_wellfounded)
    8.73  
    8.74  (*Consider the least z in domain(r) such that P(z) does not hold...*)
    8.75 -lemma (in M_axioms) wellfounded_induct: 
    8.76 +lemma (in M_basic) wellfounded_induct: 
    8.77       "[| wellfounded(M,r); M(a); M(r); separation(M, \<lambda>x. ~P(x));  
    8.78           \<forall>x. M(x) & (\<forall>y. <y,x> \<in> r --> P(y)) --> P(x) |]
    8.79        ==> P(a)";
    8.80 @@ -114,7 +114,7 @@
    8.81  apply (blast dest: transM)+
    8.82  done
    8.83  
    8.84 -lemma (in M_axioms) wellfounded_on_induct: 
    8.85 +lemma (in M_basic) wellfounded_on_induct: 
    8.86       "[| a\<in>A;  wellfounded_on(M,A,r);  M(A);  
    8.87         separation(M, \<lambda>x. x\<in>A --> ~P(x));  
    8.88         \<forall>x\<in>A. M(x) & (\<forall>y\<in>A. <y,x> \<in> r --> P(y)) --> P(x) |]
    8.89 @@ -126,7 +126,7 @@
    8.90  
    8.91  text{*The assumption @{term "r \<subseteq> A*A"} justifies strengthening the induction
    8.92        hypothesis by removing the restriction to @{term A}.*}
    8.93 -lemma (in M_axioms) wellfounded_on_induct2: 
    8.94 +lemma (in M_basic) wellfounded_on_induct2: 
    8.95       "[| a\<in>A;  wellfounded_on(M,A,r);  M(A);  r \<subseteq> A*A;  
    8.96         separation(M, \<lambda>x. x\<in>A --> ~P(x));  
    8.97         \<forall>x\<in>A. M(x) & (\<forall>y. <y,x> \<in> r --> P(y)) --> P(x) |]
    8.98 @@ -136,27 +136,27 @@
    8.99  
   8.100  subsubsection {*Kunen's lemma IV 3.14, page 123*}
   8.101  
   8.102 -lemma (in M_axioms) linear_imp_relativized: 
   8.103 +lemma (in M_basic) linear_imp_relativized: 
   8.104       "linear(A,r) ==> linear_rel(M,A,r)" 
   8.105  by (simp add: linear_def linear_rel_def) 
   8.106  
   8.107 -lemma (in M_axioms) trans_on_imp_relativized: 
   8.108 +lemma (in M_basic) trans_on_imp_relativized: 
   8.109       "trans[A](r) ==> transitive_rel(M,A,r)" 
   8.110  by (unfold transitive_rel_def trans_on_def, blast) 
   8.111  
   8.112 -lemma (in M_axioms) wf_on_imp_relativized: 
   8.113 +lemma (in M_basic) wf_on_imp_relativized: 
   8.114       "wf[A](r) ==> wellfounded_on(M,A,r)" 
   8.115  apply (simp add: wellfounded_on_def wf_def wf_on_def, clarify) 
   8.116  apply (drule_tac x=x in spec, blast) 
   8.117  done
   8.118  
   8.119 -lemma (in M_axioms) wf_imp_relativized: 
   8.120 +lemma (in M_basic) wf_imp_relativized: 
   8.121       "wf(r) ==> wellfounded(M,r)" 
   8.122  apply (simp add: wellfounded_def wf_def, clarify) 
   8.123  apply (drule_tac x=x in spec, blast) 
   8.124  done
   8.125  
   8.126 -lemma (in M_axioms) well_ord_imp_relativized: 
   8.127 +lemma (in M_basic) well_ord_imp_relativized: 
   8.128       "well_ord(A,r) ==> wellordered(M,A,r)" 
   8.129  by (simp add: wellordered_def well_ord_def tot_ord_def part_ord_def
   8.130         linear_imp_relativized trans_on_imp_relativized wf_on_imp_relativized)
   8.131 @@ -164,24 +164,24 @@
   8.132  
   8.133  subsection{* Relativized versions of order-isomorphisms and order types *}
   8.134  
   8.135 -lemma (in M_axioms) order_isomorphism_abs [simp]: 
   8.136 +lemma (in M_basic) order_isomorphism_abs [simp]: 
   8.137       "[| M(A); M(B); M(f) |] 
   8.138        ==> order_isomorphism(M,A,r,B,s,f) <-> f \<in> ord_iso(A,r,B,s)"
   8.139  by (simp add: apply_closed order_isomorphism_def ord_iso_def)
   8.140  
   8.141 -lemma (in M_axioms) pred_set_abs [simp]: 
   8.142 +lemma (in M_basic) pred_set_abs [simp]: 
   8.143       "[| M(r); M(B) |] ==> pred_set(M,A,x,r,B) <-> B = Order.pred(A,x,r)"
   8.144  apply (simp add: pred_set_def Order.pred_def)
   8.145  apply (blast dest: transM) 
   8.146  done
   8.147  
   8.148 -lemma (in M_axioms) pred_closed [intro,simp]: 
   8.149 +lemma (in M_basic) pred_closed [intro,simp]: 
   8.150       "[| M(A); M(r); M(x) |] ==> M(Order.pred(A,x,r))"
   8.151  apply (simp add: Order.pred_def) 
   8.152  apply (insert pred_separation [of r x], simp) 
   8.153  done
   8.154  
   8.155 -lemma (in M_axioms) membership_abs [simp]: 
   8.156 +lemma (in M_basic) membership_abs [simp]: 
   8.157       "[| M(r); M(A) |] ==> membership(M,A,r) <-> r = Memrel(A)"
   8.158  apply (simp add: membership_def Memrel_def, safe)
   8.159    apply (rule equalityI) 
   8.160 @@ -194,14 +194,14 @@
   8.161   apply auto 
   8.162  done
   8.163  
   8.164 -lemma (in M_axioms) M_Memrel_iff:
   8.165 +lemma (in M_basic) M_Memrel_iff:
   8.166       "M(A) ==> 
   8.167        Memrel(A) = {z \<in> A*A. \<exists>x[M]. \<exists>y[M]. z = \<langle>x,y\<rangle> & x \<in> y}"
   8.168  apply (simp add: Memrel_def) 
   8.169  apply (blast dest: transM)
   8.170  done 
   8.171  
   8.172 -lemma (in M_axioms) Memrel_closed [intro,simp]: 
   8.173 +lemma (in M_basic) Memrel_closed [intro,simp]: 
   8.174       "M(A) ==> M(Memrel(A))"
   8.175  apply (simp add: M_Memrel_iff) 
   8.176  apply (insert Memrel_separation, simp)
   8.177 @@ -233,7 +233,7 @@
   8.178  
   8.179  text{*Inductive argument for Kunen's Lemma 6.1, etc.
   8.180        Simple proof from Halmos, page 72*}
   8.181 -lemma  (in M_axioms) wellordered_iso_subset_lemma: 
   8.182 +lemma  (in M_basic) wellordered_iso_subset_lemma: 
   8.183       "[| wellordered(M,A,r);  f \<in> ord_iso(A,r, A',r);  A'<= A;  y \<in> A;  
   8.184         M(A);  M(f);  M(r) |] ==> ~ <f`y, y> \<in> r"
   8.185  apply (unfold wellordered_def ord_iso_def)
   8.186 @@ -247,7 +247,7 @@
   8.187  
   8.188  text{*Kunen's Lemma 6.1: there's no order-isomorphism to an initial segment
   8.189        of a well-ordering*}
   8.190 -lemma (in M_axioms) wellordered_iso_predD:
   8.191 +lemma (in M_basic) wellordered_iso_predD:
   8.192       "[| wellordered(M,A,r);  f \<in> ord_iso(A, r, Order.pred(A,x,r), r);  
   8.193         M(A);  M(f);  M(r) |] ==> x \<notin> A"
   8.194  apply (rule notI) 
   8.195 @@ -260,7 +260,7 @@
   8.196  done
   8.197  
   8.198  
   8.199 -lemma (in M_axioms) wellordered_iso_pred_eq_lemma:
   8.200 +lemma (in M_basic) wellordered_iso_pred_eq_lemma:
   8.201       "[| f \<in> \<langle>Order.pred(A,y,r), r\<rangle> \<cong> \<langle>Order.pred(A,x,r), r\<rangle>;
   8.202         wellordered(M,A,r); x\<in>A; y\<in>A; M(A); M(f); M(r) |] ==> <x,y> \<notin> r"
   8.203  apply (frule wellordered_is_trans_on, assumption)
   8.204 @@ -273,7 +273,7 @@
   8.205  
   8.206  
   8.207  text{*Simple consequence of Lemma 6.1*}
   8.208 -lemma (in M_axioms) wellordered_iso_pred_eq:
   8.209 +lemma (in M_basic) wellordered_iso_pred_eq:
   8.210       "[| wellordered(M,A,r);
   8.211         f \<in> ord_iso(Order.pred(A,a,r), r, Order.pred(A,c,r), r);   
   8.212         M(A);  M(f);  M(r);  a\<in>A;  c\<in>A |] ==> a=c"
   8.213 @@ -285,21 +285,21 @@
   8.214  apply (blast dest: wellordered_iso_pred_eq_lemma)+ 
   8.215  done
   8.216  
   8.217 -lemma (in M_axioms) wellfounded_on_asym:
   8.218 +lemma (in M_basic) wellfounded_on_asym:
   8.219       "[| wellfounded_on(M,A,r);  <a,x>\<in>r;  a\<in>A; x\<in>A;  M(A) |] ==> <x,a>\<notin>r"
   8.220  apply (simp add: wellfounded_on_def) 
   8.221  apply (drule_tac x="{x,a}" in rspec) 
   8.222  apply (blast dest: transM)+
   8.223  done
   8.224  
   8.225 -lemma (in M_axioms) wellordered_asym:
   8.226 +lemma (in M_basic) wellordered_asym:
   8.227       "[| wellordered(M,A,r);  <a,x>\<in>r;  a\<in>A; x\<in>A;  M(A) |] ==> <x,a>\<notin>r"
   8.228  by (simp add: wellordered_def, blast dest: wellfounded_on_asym)
   8.229  
   8.230  
   8.231  text{*Surely a shorter proof using lemmas in @{text Order}?
   8.232       Like @{text well_ord_iso_preserving}?*}
   8.233 -lemma (in M_axioms) ord_iso_pred_imp_lt:
   8.234 +lemma (in M_basic) ord_iso_pred_imp_lt:
   8.235       "[| f \<in> ord_iso(Order.pred(A,x,r), r, i, Memrel(i));
   8.236         g \<in> ord_iso(Order.pred(A,y,r), r, j, Memrel(j));
   8.237         wellordered(M,A,r);  x \<in> A;  y \<in> A; M(A); M(r); M(f); M(g); M(j);
   8.238 @@ -372,7 +372,7 @@
   8.239  
   8.240  
   8.241  
   8.242 -lemma (in M_axioms) obase_iff:
   8.243 +lemma (in M_basic) obase_iff:
   8.244       "[| M(A); M(r); M(z) |] 
   8.245        ==> obase(M,A,r,z) <-> 
   8.246            z = {a\<in>A. \<exists>x[M]. \<exists>g[M]. Ord(x) & 
   8.247 @@ -387,7 +387,7 @@
   8.248  
   8.249  text{*Can also be proved with the premise @{term "M(z)"} instead of
   8.250        @{term "M(f)"}, but that version is less useful.*}
   8.251 -lemma (in M_axioms) omap_iff:
   8.252 +lemma (in M_basic) omap_iff:
   8.253       "[| omap(M,A,r,f); M(A); M(r); M(f) |] 
   8.254        ==> z \<in> f <->
   8.255        (\<exists>a\<in>A. \<exists>x[M]. \<exists>g[M]. z = <a,x> & Ord(x) & 
   8.256 @@ -400,18 +400,18 @@
   8.257   apply (blast dest: transM)+
   8.258  done
   8.259  
   8.260 -lemma (in M_axioms) omap_unique:
   8.261 +lemma (in M_basic) omap_unique:
   8.262       "[| omap(M,A,r,f); omap(M,A,r,f'); M(A); M(r); M(f); M(f') |] ==> f' = f" 
   8.263  apply (rule equality_iffI) 
   8.264  apply (simp add: omap_iff) 
   8.265  done
   8.266  
   8.267 -lemma (in M_axioms) omap_yields_Ord:
   8.268 +lemma (in M_basic) omap_yields_Ord:
   8.269       "[| omap(M,A,r,f); \<langle>a,x\<rangle> \<in> f; M(a); M(x) |]  ==> Ord(x)"
   8.270  apply (simp add: omap_def, blast) 
   8.271  done
   8.272  
   8.273 -lemma (in M_axioms) otype_iff:
   8.274 +lemma (in M_basic) otype_iff:
   8.275       "[| otype(M,A,r,i); M(A); M(r); M(i) |] 
   8.276        ==> x \<in> i <-> 
   8.277            (M(x) & Ord(x) & 
   8.278 @@ -423,7 +423,7 @@
   8.279  apply (simp add: omap_iff, blast)
   8.280  done
   8.281  
   8.282 -lemma (in M_axioms) otype_eq_range:
   8.283 +lemma (in M_basic) otype_eq_range:
   8.284       "[| omap(M,A,r,f); otype(M,A,r,i); M(A); M(r); M(f); M(i) |] 
   8.285        ==> i = range(f)"
   8.286  apply (auto simp add: otype_def omap_iff)
   8.287 @@ -431,7 +431,7 @@
   8.288  done
   8.289  
   8.290  
   8.291 -lemma (in M_axioms) Ord_otype:
   8.292 +lemma (in M_basic) Ord_otype:
   8.293       "[| otype(M,A,r,i); trans[A](r); M(A); M(r); M(i) |] ==> Ord(i)"
   8.294  apply (rotate_tac 1) 
   8.295  apply (rule OrdI) 
   8.296 @@ -452,7 +452,7 @@
   8.297  apply (blast intro: restrict_ord_iso ord_iso_sym ltI dest: transM)
   8.298  done
   8.299  
   8.300 -lemma (in M_axioms) domain_omap:
   8.301 +lemma (in M_basic) domain_omap:
   8.302       "[| omap(M,A,r,f);  obase(M,A,r,B); M(A); M(r); M(B); M(f) |] 
   8.303        ==> domain(f) = B"
   8.304  apply (rotate_tac 2) 
   8.305 @@ -461,7 +461,7 @@
   8.306  apply (simp add: domain_iff omap_iff, blast) 
   8.307  done
   8.308  
   8.309 -lemma (in M_axioms) omap_subset: 
   8.310 +lemma (in M_basic) omap_subset: 
   8.311       "[| omap(M,A,r,f); obase(M,A,r,B); otype(M,A,r,i); 
   8.312         M(A); M(r); M(f); M(B); M(i) |] ==> f \<subseteq> B * i"
   8.313  apply (rotate_tac 3, clarify) 
   8.314 @@ -469,7 +469,7 @@
   8.315  apply (force simp add: otype_iff) 
   8.316  done
   8.317  
   8.318 -lemma (in M_axioms) omap_funtype: 
   8.319 +lemma (in M_basic) omap_funtype: 
   8.320       "[| omap(M,A,r,f); obase(M,A,r,B); otype(M,A,r,i); 
   8.321         M(A); M(r); M(f); M(B); M(i) |] ==> f \<in> B -> i"
   8.322  apply (rotate_tac 3) 
   8.323 @@ -478,7 +478,7 @@
   8.324  done
   8.325  
   8.326  
   8.327 -lemma (in M_axioms) wellordered_omap_bij:
   8.328 +lemma (in M_basic) wellordered_omap_bij:
   8.329       "[| wellordered(M,A,r); omap(M,A,r,f); obase(M,A,r,B); otype(M,A,r,i); 
   8.330         M(A); M(r); M(f); M(B); M(i) |] ==> f \<in> bij(B,i)"
   8.331  apply (insert omap_funtype [of A r f B i]) 
   8.332 @@ -492,7 +492,7 @@
   8.333  
   8.334  
   8.335  text{*This is not the final result: we must show @{term "oB(A,r) = A"}*}
   8.336 -lemma (in M_axioms) omap_ord_iso:
   8.337 +lemma (in M_basic) omap_ord_iso:
   8.338       "[| wellordered(M,A,r); omap(M,A,r,f); obase(M,A,r,B); otype(M,A,r,i); 
   8.339         M(A); M(r); M(f); M(B); M(i) |] ==> f \<in> ord_iso(B,r,i,Memrel(i))"
   8.340  apply (rule ord_isoI)
   8.341 @@ -513,7 +513,7 @@
   8.342  apply (blast dest: ord_iso_pred_imp_lt ltD elim: mem_asym) 
   8.343  done
   8.344  
   8.345 -lemma (in M_axioms) Ord_omap_image_pred:
   8.346 +lemma (in M_basic) Ord_omap_image_pred:
   8.347       "[| wellordered(M,A,r); omap(M,A,r,f); obase(M,A,r,B); otype(M,A,r,i); 
   8.348         M(A); M(r); M(f); M(B); M(i); b \<in> A |] ==> Ord(f `` Order.pred(A,b,r))"
   8.349  apply (frule wellordered_is_trans_on, assumption)
   8.350 @@ -539,7 +539,7 @@
   8.351  apply (auto simp add: obase_iff)
   8.352  done
   8.353  
   8.354 -lemma (in M_axioms) restrict_omap_ord_iso:
   8.355 +lemma (in M_basic) restrict_omap_ord_iso:
   8.356       "[| wellordered(M,A,r); omap(M,A,r,f); obase(M,A,r,B); otype(M,A,r,i); 
   8.357         D \<subseteq> B; M(A); M(r); M(f); M(B); M(i) |] 
   8.358        ==> restrict(f,D) \<in> (\<langle>D,r\<rangle> \<cong> \<langle>f``D, Memrel(f``D)\<rangle>)"
   8.359 @@ -550,7 +550,7 @@
   8.360  apply (drule ord_iso_sym, simp) 
   8.361  done
   8.362  
   8.363 -lemma (in M_axioms) obase_equals: 
   8.364 +lemma (in M_basic) obase_equals: 
   8.365       "[| wellordered(M,A,r); omap(M,A,r,f); obase(M,A,r,B); otype(M,A,r,i);
   8.366         M(A); M(r); M(f); M(B); M(i) |] ==> B = A"
   8.367  apply (rotate_tac 4)
   8.368 @@ -570,21 +570,21 @@
   8.369  
   8.370  text{*Main result: @{term om} gives the order-isomorphism 
   8.371        @{term "\<langle>A,r\<rangle> \<cong> \<langle>i, Memrel(i)\<rangle>"} *}
   8.372 -theorem (in M_axioms) omap_ord_iso_otype:
   8.373 +theorem (in M_basic) omap_ord_iso_otype:
   8.374       "[| wellordered(M,A,r); omap(M,A,r,f); obase(M,A,r,B); otype(M,A,r,i);
   8.375         M(A); M(r); M(f); M(B); M(i) |] ==> f \<in> ord_iso(A, r, i, Memrel(i))"
   8.376  apply (frule omap_ord_iso, assumption+) 
   8.377  apply (frule obase_equals, assumption+, blast) 
   8.378  done 
   8.379  
   8.380 -lemma (in M_axioms) obase_exists:
   8.381 +lemma (in M_basic) obase_exists:
   8.382       "[| M(A); M(r) |] ==> \<exists>z[M]. obase(M,A,r,z)"
   8.383  apply (simp add: obase_def) 
   8.384  apply (insert obase_separation [of A r])
   8.385  apply (simp add: separation_def)  
   8.386  done
   8.387  
   8.388 -lemma (in M_axioms) omap_exists:
   8.389 +lemma (in M_basic) omap_exists:
   8.390       "[| M(A); M(r) |] ==> \<exists>z[M]. omap(M,A,r,z)"
   8.391  apply (insert obase_exists [of A r]) 
   8.392  apply (simp add: omap_def) 
   8.393 @@ -601,7 +601,7 @@
   8.394  
   8.395  declare rall_simps [simp] rex_simps [simp]
   8.396  
   8.397 -lemma (in M_axioms) otype_exists:
   8.398 +lemma (in M_basic) otype_exists:
   8.399       "[| wellordered(M,A,r); M(A); M(r) |] ==> \<exists>i[M]. otype(M,A,r,i)"
   8.400  apply (insert omap_exists [of A r])  
   8.401  apply (simp add: otype_def, safe)
   8.402 @@ -609,7 +609,7 @@
   8.403  apply blast+
   8.404  done
   8.405  
   8.406 -theorem (in M_axioms) omap_ord_iso_otype':
   8.407 +theorem (in M_basic) omap_ord_iso_otype':
   8.408       "[| wellordered(M,A,r); M(A); M(r) |]
   8.409        ==> \<exists>f[M]. (\<exists>i[M]. Ord(i) & f \<in> ord_iso(A, r, i, Memrel(i)))"
   8.410  apply (insert obase_exists [of A r] omap_exists [of A r] otype_exists [of A r], simp, clarify)
   8.411 @@ -620,7 +620,7 @@
   8.412     apply (simp_all add: wellordered_is_trans_on) 
   8.413  done
   8.414  
   8.415 -lemma (in M_axioms) ordertype_exists:
   8.416 +lemma (in M_basic) ordertype_exists:
   8.417       "[| wellordered(M,A,r); M(A); M(r) |]
   8.418        ==> \<exists>f[M]. (\<exists>i[M]. Ord(i) & f \<in> ord_iso(A, r, i, Memrel(i)))"
   8.419  apply (insert obase_exists [of A r] omap_exists [of A r] otype_exists [of A r], simp, clarify)
   8.420 @@ -632,7 +632,7 @@
   8.421  done
   8.422  
   8.423  
   8.424 -lemma (in M_axioms) relativized_imp_well_ord: 
   8.425 +lemma (in M_basic) relativized_imp_well_ord: 
   8.426       "[| wellordered(M,A,r); M(A); M(r) |] ==> well_ord(A,r)" 
   8.427  apply (insert ordertype_exists [of A r], simp)
   8.428  apply (blast intro: well_ord_ord_iso well_ord_Memrel)  
   8.429 @@ -641,13 +641,13 @@
   8.430  subsection {*Kunen's theorem 5.4, poage 127*}
   8.431  
   8.432  text{*(a) The notion of Wellordering is absolute*}
   8.433 -theorem (in M_axioms) well_ord_abs [simp]: 
   8.434 +theorem (in M_basic) well_ord_abs [simp]: 
   8.435       "[| M(A); M(r) |] ==> wellordered(M,A,r) <-> well_ord(A,r)" 
   8.436  by (blast intro: well_ord_imp_relativized relativized_imp_well_ord)  
   8.437  
   8.438  
   8.439  text{*(b) Order types are absolute*}
   8.440 -lemma (in M_axioms) 
   8.441 +lemma (in M_basic) 
   8.442       "[| wellordered(M,A,r); f \<in> ord_iso(A, r, i, Memrel(i));
   8.443         M(A); M(r); M(f); M(i); Ord(i) |] ==> i = ordertype(A,r)"
   8.444  by (blast intro: Ord_ordertype relativized_imp_well_ord ordertype_ord_iso