281 (\<exists>x[M]. \<exists>y[M]. \<exists>xa[M]. \<exists>sx[M]. \<exists>r_sx[M]. \<exists>f_r_sx[M]. |
281 (\<exists>x[M]. \<exists>y[M]. \<exists>xa[M]. \<exists>sx[M]. \<exists>r_sx[M]. \<exists>f_r_sx[M]. |
282 pair(M,x,y,z) & pair(M,x,a,xa) & upair(M,x,x,sx) & |
282 pair(M,x,y,z) & pair(M,x,a,xa) & upair(M,x,x,sx) & |
283 pre_image(M,r,sx,r_sx) & restriction(M,f,r_sx,f_r_sx) & |
283 pre_image(M,r,sx,r_sx) & restriction(M,f,r_sx,f_r_sx) & |
284 xa \<in> r & MH(x, f_r_sx, y))" |
284 xa \<in> r & MH(x, f_r_sx, y))" |
285 |
285 |
286 lemma (in M_axioms) is_recfun_iff_M: |
286 lemma (in M_axioms) is_recfun_abs: |
287 "[| M(r); M(a); M(f); \<forall>x[M]. \<forall>g[M]. function(g) --> M(H(x,g)); |
287 "[| \<forall>x[M]. \<forall>g[M]. function(g) --> M(H(x,g)); M(r); M(a); M(f); |
288 \<forall>x g y. M(x) --> M(g) --> M(y) --> MH(x,g,y) <-> y = H(x,g) |] ==> |
288 \<forall>x g y. M(x) --> M(g) --> M(y) --> MH(x,g,y) <-> y = H(x,g) |] |
289 is_recfun(r,a,H,f) <-> M_is_recfun(M,r,a,MH,f)" |
289 ==> M_is_recfun(M,r,a,MH,f) <-> is_recfun(r,a,H,f)" |
290 apply (simp add: M_is_recfun_def is_recfun_relativize) |
290 apply (simp add: M_is_recfun_def is_recfun_relativize) |
291 apply (rule rall_cong) |
291 apply (rule rall_cong) |
292 apply (blast dest: transM) |
292 apply (blast dest: transM) |
293 done |
293 done |
294 |
294 |
298 ==> M_is_recfun(M,r,a,MH,f) <-> M_is_recfun(M,r',a',MH',f')" |
298 ==> M_is_recfun(M,r,a,MH,f) <-> M_is_recfun(M,r',a',MH',f')" |
299 by (simp add: M_is_recfun_def) |
299 by (simp add: M_is_recfun_def) |
300 |
300 |
301 |
301 |
302 constdefs |
302 constdefs |
303 (*This expresses ordinal addition as a formula in the LAST. It also |
303 (*This expresses ordinal addition in the language of ZF. It also |
304 provides an abbreviation that can be used in the instance of strong |
304 provides an abbreviation that can be used in the instance of strong |
305 replacement below. Here j is used to define the relation, namely |
305 replacement below. Here j is used to define the relation, namely |
306 Memrel(succ(j)), while x determines the domain of f.*) |
306 Memrel(succ(j)), while x determines the domain of f.*) |
307 is_oadd_fun :: "[i=>o,i,i,i,i] => o" |
307 is_oadd_fun :: "[i=>o,i,i,i,i] => o" |
308 "is_oadd_fun(M,i,j,x,f) == |
308 "is_oadd_fun(M,i,j,x,f) == |
365 "[| a\<le>j; M(i); M(j); M(a); M(f) |] |
365 "[| a\<le>j; M(i); M(j); M(a); M(f) |] |
366 ==> is_oadd_fun(M,i,j,a,f) <-> |
366 ==> is_oadd_fun(M,i,j,a,f) <-> |
367 f \<in> a \<rightarrow> range(f) & (\<forall>x. M(x) --> x < a --> f`x = i Un f``x)" |
367 f \<in> a \<rightarrow> range(f) & (\<forall>x. M(x) --> x < a --> f`x = i Un f``x)" |
368 apply (frule lt_Ord) |
368 apply (frule lt_Ord) |
369 apply (simp add: is_oadd_fun_def Memrel_closed Un_closed |
369 apply (simp add: is_oadd_fun_def Memrel_closed Un_closed |
370 is_recfun_iff_M [of concl: _ _ "%x g. i Un g``x", THEN iff_sym] |
370 is_recfun_abs [of "%x g. i Un g``x"] |
371 image_closed is_recfun_iff_equation |
371 image_closed is_recfun_iff_equation |
372 Ball_def lt_trans [OF ltI, of _ a] lt_Memrel) |
372 Ball_def lt_trans [OF ltI, of _ a] lt_Memrel) |
373 apply (simp add: lt_def) |
373 apply (simp add: lt_def) |
374 apply (blast dest: transM) |
374 apply (blast dest: transM) |
375 done |
375 done |
380 strong_replacement(M, |
380 strong_replacement(M, |
381 \<lambda>x z. \<exists>y[M]. z = <x,y> & |
381 \<lambda>x z. \<exists>y[M]. z = <x,y> & |
382 (\<exists>g[M]. is_recfun(Memrel(succ(j)),x,%x g. i Un g``x,g) & |
382 (\<exists>g[M]. is_recfun(Memrel(succ(j)),x,%x g. i Un g``x,g) & |
383 y = i Un g``x))" |
383 y = i Un g``x))" |
384 apply (insert oadd_strong_replacement [of i j]) |
384 apply (insert oadd_strong_replacement [of i j]) |
385 apply (simp add: Memrel_closed Un_closed image_closed is_oadd_fun_def |
385 apply (simp add: is_oadd_fun_def is_recfun_abs [of "%x g. i Un g``x"]) |
386 is_recfun_iff_M) |
|
387 done |
386 done |
388 |
387 |
389 |
388 |
390 lemma (in M_ord_arith) exists_oadd: |
389 lemma (in M_ord_arith) exists_oadd: |
391 "[| Ord(j); M(i); M(j) |] |
390 "[| Ord(j); M(i); M(j) |] |