src/ZF/Constructible/Relative.thy
changeset 13418 7c0ba9dba978
parent 13397 6e5f4d911435
child 13423 7ec771711c09
equal deleted inserted replaced
13417:12cc77f90811 13418:7c0ba9dba978
   410   membership :: "[i=>o,i,i] => o" --{*membership relation*}
   410   membership :: "[i=>o,i,i] => o" --{*membership relation*}
   411     "membership(M,A,r) == 
   411     "membership(M,A,r) == 
   412 	\<forall>p[M]. p \<in> r <-> (\<exists>x[M]. x\<in>A & (\<exists>y[M]. y\<in>A & x\<in>y & pair(M,x,y,p)))"
   412 	\<forall>p[M]. p \<in> r <-> (\<exists>x[M]. x\<in>A & (\<exists>y[M]. y\<in>A & x\<in>y & pair(M,x,y,p)))"
   413 
   413 
   414 
   414 
   415 subsection{*Absoluteness for a transitive class model*}
   415 subsection{*Introducing a Transitive Class Model*}
   416 
   416 
   417 text{*The class M is assumed to be transitive and to satisfy some
   417 text{*The class M is assumed to be transitive and to satisfy some
   418       relativized ZF axioms*}
   418       relativized ZF axioms*}
   419 locale (open) M_triv_axioms =
   419 locale (open) M_triv_axioms =
   420   fixes M
   420   fixes M
   424       and Union_ax:	    "Union_ax(M)"
   424       and Union_ax:	    "Union_ax(M)"
   425       and power_ax:         "power_ax(M)"
   425       and power_ax:         "power_ax(M)"
   426       and replacement:      "replacement(M,P)"
   426       and replacement:      "replacement(M,P)"
   427       and M_nat [iff]:      "M(nat)"           (*i.e. the axiom of infinity*)
   427       and M_nat [iff]:      "M(nat)"           (*i.e. the axiom of infinity*)
   428 
   428 
   429 lemma (in M_triv_axioms) ball_abs [simp]: 
       
   430      "M(A) ==> (\<forall>x\<in>A. M(x) --> P(x)) <-> (\<forall>x\<in>A. P(x))" 
       
   431 by (blast intro: transM) 
       
   432 
       
   433 lemma (in M_triv_axioms) rall_abs [simp]: 
   429 lemma (in M_triv_axioms) rall_abs [simp]: 
   434      "M(A) ==> (\<forall>x[M]. x\<in>A --> P(x)) <-> (\<forall>x\<in>A. P(x))" 
   430      "M(A) ==> (\<forall>x[M]. x\<in>A --> P(x)) <-> (\<forall>x\<in>A. P(x))" 
   435 by (blast intro: transM) 
       
   436 
       
   437 lemma (in M_triv_axioms) bex_abs [simp]: 
       
   438      "M(A) ==> (\<exists>x\<in>A. M(x) & P(x)) <-> (\<exists>x\<in>A. P(x))" 
       
   439 by (blast intro: transM) 
   431 by (blast intro: transM) 
   440 
   432 
   441 lemma (in M_triv_axioms) rex_abs [simp]: 
   433 lemma (in M_triv_axioms) rex_abs [simp]: 
   442      "M(A) ==> (\<exists>x[M]. x\<in>A & P(x)) <-> (\<exists>x\<in>A. P(x))" 
   434      "M(A) ==> (\<exists>x[M]. x\<in>A & P(x)) <-> (\<exists>x\<in>A. P(x))" 
   443 by (blast intro: transM) 
   435 by (blast intro: transM) 
   450 text{*Simplifies proofs of equalities when there's an iff-equality
   442 text{*Simplifies proofs of equalities when there's an iff-equality
   451       available for rewriting, universally quantified over M. *}
   443       available for rewriting, universally quantified over M. *}
   452 lemma (in M_triv_axioms) M_equalityI: 
   444 lemma (in M_triv_axioms) M_equalityI: 
   453      "[| !!x. M(x) ==> x\<in>A <-> x\<in>B; M(A); M(B) |] ==> A=B"
   445      "[| !!x. M(x) ==> x\<in>A <-> x\<in>B; M(A); M(B) |] ==> A=B"
   454 by (blast intro!: equalityI dest: transM) 
   446 by (blast intro!: equalityI dest: transM) 
       
   447 
       
   448 
       
   449 subsubsection{*Trivial Absoluteness Proofs: Empty Set, Pairs, etc.*}
   455 
   450 
   456 lemma (in M_triv_axioms) empty_abs [simp]: 
   451 lemma (in M_triv_axioms) empty_abs [simp]: 
   457      "M(z) ==> empty(M,z) <-> z=0"
   452      "M(z) ==> empty(M,z) <-> z=0"
   458 apply (simp add: empty_def)
   453 apply (simp add: empty_def)
   459 apply (blast intro: transM) 
   454 apply (blast intro: transM) 
   503 apply (rule iffI) 
   498 apply (rule iffI) 
   504  apply (blast intro!: equalityI intro: transM dest!: rspec) 
   499  apply (blast intro!: equalityI intro: transM dest!: rspec) 
   505 apply (blast dest: transM) 
   500 apply (blast dest: transM) 
   506 done
   501 done
   507 
   502 
       
   503 subsubsection{*Absoluteness for Unions and Intersections*}
       
   504 
   508 lemma (in M_triv_axioms) union_abs [simp]: 
   505 lemma (in M_triv_axioms) union_abs [simp]: 
   509      "[| M(a); M(b); M(z) |] ==> union(M,a,b,z) <-> z = a Un b"
   506      "[| M(a); M(b); M(z) |] ==> union(M,a,b,z) <-> z = a Un b"
   510 apply (simp add: union_def) 
   507 apply (simp add: union_def) 
   511 apply (blast intro: transM) 
   508 apply (blast intro: transM) 
   512 done
   509 done
   552 lemma (in M_triv_axioms) succ_in_M_iff [iff]:
   549 lemma (in M_triv_axioms) succ_in_M_iff [iff]:
   553      "M(succ(a)) <-> M(a)"
   550      "M(succ(a)) <-> M(a)"
   554 apply (simp add: succ_def) 
   551 apply (simp add: succ_def) 
   555 apply (blast intro: transM) 
   552 apply (blast intro: transM) 
   556 done
   553 done
       
   554 
       
   555 subsubsection{*Absoluteness for Separation and Replacement*}
   557 
   556 
   558 lemma (in M_triv_axioms) separation_closed [intro,simp]:
   557 lemma (in M_triv_axioms) separation_closed [intro,simp]:
   559      "[| separation(M,P); M(A) |] ==> M(Collect(A,P))"
   558      "[| separation(M,P); M(A) |] ==> M(Collect(A,P))"
   560 apply (insert separation, simp add: separation_def) 
   559 apply (insert separation, simp add: separation_def) 
   561 apply (drule rspec, assumption, clarify) 
   560 apply (drule rspec, assumption, clarify) 
   619 apply (simp add: RepFun_def)
   618 apply (simp add: RepFun_def)
   620 apply (frule strong_replacement_closed, assumption)
   619 apply (frule strong_replacement_closed, assumption)
   621 apply (auto dest: transM  simp add: Replace_conj_eq univalent_def) 
   620 apply (auto dest: transM  simp add: Replace_conj_eq univalent_def) 
   622 done
   621 done
   623 
   622 
   624 lemma (in M_triv_axioms) lam_closed [intro,simp]:
   623 subsubsection {*Absoluteness for @{term Lambda}*}
       
   624 
       
   625 constdefs
       
   626  is_lambda :: "[i=>o, i, [i,i]=>o, i] => o"
       
   627     "is_lambda(M, A, is_b, z) == 
       
   628        \<forall>p[M]. p \<in> z <->
       
   629         (\<exists>u[M]. \<exists>v[M]. u\<in>A & pair(M,u,v,p) & is_b(u,v))"
       
   630 
       
   631 lemma (in M_triv_axioms) lam_closed:
   625      "[| strong_replacement(M, \<lambda>x y. y = <x,b(x)>); M(A); \<forall>x\<in>A. M(b(x)) |]
   632      "[| strong_replacement(M, \<lambda>x y. y = <x,b(x)>); M(A); \<forall>x\<in>A. M(b(x)) |]
   626       ==> M(\<lambda>x\<in>A. b(x))"
   633       ==> M(\<lambda>x\<in>A. b(x))"
   627 by (simp add: lam_def, blast intro: RepFun_closed dest: transM) 
   634 by (simp add: lam_def, blast intro: RepFun_closed dest: transM) 
       
   635 
       
   636 text{*Better than @{text lam_closed}: has the formula @{term "x\<in>A"}*}
       
   637 lemma (in M_triv_axioms) lam_closed2:
       
   638   "[|strong_replacement(M, \<lambda>x y. x\<in>A & y = \<langle>x, b(x)\<rangle>);
       
   639      M(A); \<forall>m[M]. m\<in>A --> M(b(m))|] ==> M(Lambda(A,b))"
       
   640 apply (simp add: lam_def)
       
   641 apply (blast intro: RepFun_closed2 dest: transM)  
       
   642 done
       
   643 
       
   644 lemma (in M_triv_axioms) lambda_abs2 [simp]: 
       
   645      "[| strong_replacement(M, \<lambda>x y. x\<in>A & y = \<langle>x, b(x)\<rangle>);
       
   646          relativize1(M,is_b,b); M(A); \<forall>m[M]. m\<in>A --> M(b(m)); M(z) |] 
       
   647       ==> is_lambda(M,A,is_b,z) <-> z = Lambda(A,b)"
       
   648 apply (simp add: relativize1_def is_lambda_def)
       
   649 apply (rule iffI)
       
   650  prefer 2 apply (simp add: lam_def) 
       
   651 apply (rule M_equalityI)
       
   652   apply (simp add: lam_def) 
       
   653  apply (simp add: lam_closed2)+
       
   654 done
   628 
   655 
   629 lemma (in M_triv_axioms) image_abs [simp]: 
   656 lemma (in M_triv_axioms) image_abs [simp]: 
   630      "[| M(r); M(A); M(z) |] ==> image(M,r,A,z) <-> z = r``A"
   657      "[| M(r); M(A); M(z) |] ==> image(M,r,A,z) <-> z = r``A"
   631 apply (simp add: image_def)
   658 apply (simp add: image_def)
   632 apply (rule iffI) 
   659 apply (rule iffI) 
   645 lemma (in M_triv_axioms) powerset_imp_subset_Pow: 
   672 lemma (in M_triv_axioms) powerset_imp_subset_Pow: 
   646      "[| powerset(M,x,y); M(y) |] ==> y <= Pow(x)"
   673      "[| powerset(M,x,y); M(y) |] ==> y <= Pow(x)"
   647 apply (simp add: powerset_def) 
   674 apply (simp add: powerset_def) 
   648 apply (blast dest: transM) 
   675 apply (blast dest: transM) 
   649 done
   676 done
       
   677 
       
   678 subsubsection{*Absoluteness for the Natural Numbers*}
   650 
   679 
   651 lemma (in M_triv_axioms) nat_into_M [intro]:
   680 lemma (in M_triv_axioms) nat_into_M [intro]:
   652      "n \<in> nat ==> M(n)"
   681      "n \<in> nat ==> M(n)"
   653 by (induct n rule: nat_induct, simp_all)
   682 by (induct n rule: nat_induct, simp_all)
   654 
   683 
   691 lemma (in M_triv_axioms) Inr_in_M_iff [iff]:
   720 lemma (in M_triv_axioms) Inr_in_M_iff [iff]:
   692      "M(Inr(a)) <-> M(a)"
   721      "M(Inr(a)) <-> M(a)"
   693 by (simp add: Inr_def)
   722 by (simp add: Inr_def)
   694 
   723 
   695 
   724 
   696 subsection{*Absoluteness for ordinals*}
   725 subsection {*Absoluteness for Booleans*}
       
   726 
       
   727 lemma (in M_triv_axioms) bool_of_o_closed:
       
   728      "M(bool_of_o(P))"
       
   729 by (simp add: bool_of_o_def) 
       
   730 
       
   731 lemma (in M_triv_axioms) and_closed:
       
   732      "[| M(p); M(q) |] ==> M(p and q)"
       
   733 by (simp add: and_def cond_def) 
       
   734 
       
   735 lemma (in M_triv_axioms) or_closed:
       
   736      "[| M(p); M(q) |] ==> M(p or q)"
       
   737 by (simp add: or_def cond_def) 
       
   738 
       
   739 lemma (in M_triv_axioms) not_closed:
       
   740      "M(p) ==> M(not(p))"
       
   741 by (simp add: Bool.not_def cond_def) 
       
   742 
       
   743 
       
   744 subsection{*Absoluteness for Ordinals*}
   697 text{*These results constitute Theorem IV 5.1 of Kunen (page 126).*}
   745 text{*These results constitute Theorem IV 5.1 of Kunen (page 126).*}
   698 
   746 
   699 lemma (in M_triv_axioms) lt_closed:
   747 lemma (in M_triv_axioms) lt_closed:
   700      "[| j<i; M(i) |] ==> M(j)" 
   748      "[| j<i; M(i) |] ==> M(j)" 
   701 by (blast dest: ltD intro: transM) 
   749 by (blast dest: ltD intro: transM)