src/ZF/Constructible/Wellorderings.thy
changeset 13306 6eebcddee32b
parent 13299 3a932abf97e8
child 13339 0f89104dd377
--- a/src/ZF/Constructible/Wellorderings.thy	Fri Jul 05 17:48:05 2002 +0200
+++ b/src/ZF/Constructible/Wellorderings.thy	Fri Jul 05 18:33:50 2002 +0200
@@ -347,9 +347,9 @@
    "obase(M,A,r,z) == 
 	\<forall>a[M]. 
          a \<in> z <-> 
-          (a\<in>A & (\<exists>x g mx par. M(x) & M(g) & M(mx) & M(par) & ordinal(M,x) & 
-                               membership(M,x,mx) & pred_set(M,A,a,r,par) &  
-                               order_isomorphism(M,par,r,x,mx,g)))"
+          (a\<in>A & (\<exists>x[M]. \<exists>g[M]. \<exists>mx[M]. \<exists>par[M]. 
+                   ordinal(M,x) & membership(M,x,mx) & pred_set(M,A,a,r,par) &
+                   order_isomorphism(M,par,r,x,mx,g)))"
 
 
   omap :: "[i=>o,i,i,i] => o"  
@@ -358,10 +358,9 @@
 	\<forall>z[M].
          z \<in> f <-> 
           (\<exists>a[M]. a\<in>A & 
-           (\<exists>x g mx par. M(x) & M(g) & M(mx) & M(par) & ordinal(M,x) & 
-                         pair(M,a,x,z) & membership(M,x,mx) & 
-                         pred_set(M,A,a,r,par) &  
-                         order_isomorphism(M,par,r,x,mx,g)))"
+           (\<exists>x[M]. \<exists>g[M]. \<exists>mx[M]. \<exists>par[M]. 
+                ordinal(M,x) & pair(M,a,x,z) & membership(M,x,mx) & 
+                pred_set(M,A,a,r,par) & order_isomorphism(M,par,r,x,mx,g)))"
 
 
   otype :: "[i=>o,i,i,i] => o"  --{*the order types themselves*}
@@ -372,7 +371,7 @@
 lemma (in M_axioms) obase_iff:
      "[| M(A); M(r); M(z) |] 
       ==> obase(M,A,r,z) <-> 
-          z = {a\<in>A. \<exists>x g. M(x) & M(g) & Ord(x) & 
+          z = {a\<in>A. \<exists>x[M]. \<exists>g[M]. Ord(x) & 
                           g \<in> ord_iso(Order.pred(A,a,r),r,x,Memrel(x))}"
 apply (simp add: obase_def Memrel_closed pred_closed)
 apply (rule iffI) 
@@ -387,8 +386,8 @@
 lemma (in M_axioms) omap_iff:
      "[| omap(M,A,r,f); M(A); M(r); M(f) |] 
       ==> z \<in> f <->
-      (\<exists>a\<in>A. \<exists>x g. M(x) & M(g) & z = <a,x> & Ord(x) & 
-                   g \<in> ord_iso(Order.pred(A,a,r),r,x,Memrel(x)))"
+      (\<exists>a\<in>A. \<exists>x[M]. \<exists>g[M]. z = <a,x> & Ord(x) & 
+                        g \<in> ord_iso(Order.pred(A,a,r),r,x,Memrel(x)))"
 apply (rotate_tac 1) 
 apply (simp add: omap_def Memrel_closed pred_closed) 
 apply (rule iffI)
@@ -411,19 +410,18 @@
 lemma (in M_axioms) otype_iff:
      "[| otype(M,A,r,i); M(A); M(r); M(i) |] 
       ==> x \<in> i <-> 
-          (\<exists>a\<in>A. \<exists>g. M(x) & M(g) & Ord(x) & 
-                     g \<in> ord_iso(Order.pred(A,a,r),r,x,Memrel(x)))"
-apply (simp add: otype_def, auto)
-  apply (blast dest: transM)
- apply (blast dest!: omap_iff intro: transM)
-apply (rename_tac a g) 
-apply (rule_tac a=a in rangeI) 
+          (M(x) & Ord(x) & 
+           (\<exists>a\<in>A. \<exists>g[M]. g \<in> ord_iso(Order.pred(A,a,r),r,x,Memrel(x))))"
+apply (auto simp add: omap_iff otype_def)
+ apply (blast intro: transM) 
+apply (rule rangeI) 
 apply (frule transM, assumption)
 apply (simp add: omap_iff, blast)
 done
 
 lemma (in M_axioms) otype_eq_range:
-     "[| omap(M,A,r,f); otype(M,A,r,i); M(A); M(r); M(f); M(i) |] ==> i = range(f)"
+     "[| omap(M,A,r,f); otype(M,A,r,i); M(A); M(r); M(f); M(i) |] 
+      ==> i = range(f)"
 apply (auto simp add: otype_def omap_iff)
 apply (blast dest: omap_unique) 
 done
@@ -439,18 +437,15 @@
     apply (frule pair_components_in_M, assumption) 
     apply blast 
 apply (auto simp add: Transset_def otype_iff) 
- apply (blast intro: transM)
+  apply (blast intro: transM)
+ apply (blast intro: Ord_in_Ord) 
 apply (rename_tac y a g)
 apply (frule ord_iso_sym [THEN ord_iso_is_bij, THEN bij_is_fun, 
 			  THEN apply_funtype],  assumption)  
 apply (rule_tac x="converse(g)`y" in bexI)
  apply (frule_tac a="converse(g) ` y" in ord_iso_restrict_pred, assumption) 
 apply (safe elim!: predE) 
-apply (intro conjI exI) 
-prefer 3
-  apply (blast intro: restrict_ord_iso ord_iso_sym ltI)
- apply (blast intro: transM)
- apply (blast intro: Ord_in_Ord)
+apply (blast intro: restrict_ord_iso ord_iso_sym ltI dest: transM)
 done
 
 lemma (in M_axioms) domain_omap:
@@ -559,14 +554,12 @@
 apply (subst obase_iff [of A r B, THEN iffD1], assumption+, simp) 
 apply (frule wellordered_is_wellfounded_on, assumption)
 apply (erule wellfounded_on_induct, assumption+)
- apply (insert obase_equals_separation)
- apply (simp add: rex_def, clarify) 
+ apply (frule obase_equals_separation [of A r], assumption) 
+ apply (simp, clarify) 
 apply (rename_tac b) 
 apply (subgoal_tac "Order.pred(A,b,r) <= B") 
- prefer 2 apply (force simp add: pred_iff obase_iff)  
-apply (intro conjI exI) 
-    prefer 4 apply (blast intro: restrict_omap_ord_iso) 
-apply (blast intro: Ord_omap_image_pred)+
+ apply (blast intro!: restrict_omap_ord_iso Ord_omap_image_pred)
+apply (force simp add: pred_iff obase_iff)  
 done