src/ZF/Constructible/WF_absolute.thy
changeset 13323 2c287f50c9f3
parent 13306 6eebcddee32b
child 13324 39d1b3a4c6f4
--- a/src/ZF/Constructible/WF_absolute.thy	Tue Jul 09 13:41:38 2002 +0200
+++ b/src/ZF/Constructible/WF_absolute.thy	Tue Jul 09 15:39:44 2002 +0200
@@ -133,18 +133,24 @@
 
 
 locale M_trancl = M_axioms +
-(*THEY NEED RELATIVIZATION*)
   assumes rtrancl_separation:
-     "[| M(r); M(A) |] ==>
-	separation
-	   (M, \<lambda>p. \<exists>n[M]. n\<in>nat & 
-                    (\<exists>f[M]. 
-                     f \<in> succ(n) -> A &
-                     (\<exists>x[M]. \<exists>y[M]. pair(M,x,y,p) &  
-                           f`0 = x & f`n = y) &
-                           (\<forall>i\<in>n. <f`i, f`succ(i)> \<in> r)))"
+	 "[| M(r); M(A) |] ==>
+	  separation (M, \<lambda>p. 
+	      \<exists>nnat[M]. \<exists>n[M]. \<exists>n'[M]. 
+               omega(M,nnat) & n\<in>nnat & successor(M,n,n') &
+	       (\<exists>f[M]. 
+		typed_function(M,n',A,f) &
+		(\<exists>x[M]. \<exists>y[M]. \<exists>zero[M]. pair(M,x,y,p) & empty(M,zero) &
+		  fun_apply(M,f,zero,x) & fun_apply(M,f,n,y)) &
+		  (\<forall>j[M]. j\<in>n --> 
+		    (\<exists>fj[M]. \<exists>sj[M]. \<exists>fsj[M]. \<exists>ffp[M]. 
+		      fun_apply(M,f,j,fj) & successor(M,j,sj) &
+		      fun_apply(M,f,sj,fsj) & pair(M,fj,fsj,ffp) & ffp \<in> r))))"
       and wellfounded_trancl_separation:
-     "[| M(r); M(Z) |] ==> separation (M, \<lambda>x. \<exists>w[M]. w \<in> Z & \<langle>w,x\<rangle> \<in> r^+)"
+	 "[| M(r); M(Z) |] ==> 
+	  separation (M, \<lambda>x. 
+	      \<exists>w[M]. \<exists>wx[M]. \<exists>rp[M]. 
+	       w \<in> Z & pair(M,w,x,wx) & tran_closure(M,r,rp) & wx \<in> rp)"
 
 
 lemma (in M_trancl) rtran_closure_rtrancl:
@@ -203,6 +209,9 @@
      "[| M(r); M(z) |] ==> tran_closure(M,r,z) <-> z = trancl(r)"
 by (simp add: tran_closure_def trancl_def)
 
+lemma (in M_trancl) wellfounded_trancl_separation':
+     "[| M(r); M(Z) |] ==> separation (M, \<lambda>x. \<exists>w[M]. w \<in> Z & <w,x> \<in> r^+)"
+by (insert wellfounded_trancl_separation [of r Z], simp) 
 
 text{*Alternative proof of @{text wf_on_trancl}; inspiration for the
       relativized version.  Original version is on theory WF.*}
@@ -213,7 +222,6 @@
 apply (blast elim: tranclE)
 done
 
-
 lemma (in M_trancl) wellfounded_on_trancl:
      "[| wellfounded_on(M,A,r);  r-``A <= A; M(r); M(A) |]
       ==> wellfounded_on(M,A,r^+)"
@@ -222,7 +230,7 @@
 apply (rename_tac Z x)
 apply (subgoal_tac "M({x\<in>A. \<exists>w[M]. w \<in> Z & \<langle>w,x\<rangle> \<in> r^+})")
  prefer 2
- apply (blast intro: wellfounded_trancl_separation) 
+ apply (blast intro: wellfounded_trancl_separation') 
 apply (drule_tac x = "{x\<in>A. \<exists>w[M]. w \<in> Z & \<langle>w,x\<rangle> \<in> r^+}" in rspec, safe)
 apply (blast dest: transM, simp)
 apply (rename_tac y w)