90 |
90 |
91 lemma sats_satisfies_fm [simp]: |
91 lemma sats_satisfies_fm [simp]: |
92 "[| x \<in> nat; y \<in> nat; z \<in> nat; env \<in> list(A)|] |
92 "[| x \<in> nat; y \<in> nat; z \<in> nat; env \<in> list(A)|] |
93 ==> sats(A, satisfies_fm(x,y,z), env) \<longleftrightarrow> |
93 ==> sats(A, satisfies_fm(x,y,z), env) \<longleftrightarrow> |
94 is_satisfies(##A, nth(x,env), nth(y,env), nth(z,env))" |
94 is_satisfies(##A, nth(x,env), nth(y,env), nth(z,env))" |
95 by (simp add: satisfies_fm_def is_satisfies_def sats_satisfies_MH_fm |
95 by (simp add: satisfies_fm_def is_satisfies_def sats_formula_rec_fm) |
96 sats_formula_rec_fm) |
|
97 |
96 |
98 lemma satisfies_iff_sats: |
97 lemma satisfies_iff_sats: |
99 "[| nth(i,env) = x; nth(j,env) = y; nth(k,env) = z; |
98 "[| nth(i,env) = x; nth(j,env) = y; nth(k,env) = z; |
100 i \<in> nat; j \<in> nat; k \<in> nat; env \<in> list(A)|] |
99 i \<in> nat; j \<in> nat; k \<in> nat; env \<in> list(A)|] |
101 ==> is_satisfies(##A, x, y, z) \<longleftrightarrow> sats(A, satisfies_fm(i,j,k), env)" |
100 ==> is_satisfies(##A, x, y, z) \<longleftrightarrow> sats(A, satisfies_fm(i,j,k), env)" |
102 by (simp add: sats_satisfies_fm) |
101 by (simp) |
103 |
102 |
104 theorem satisfies_reflection: |
103 theorem satisfies_reflection: |
105 "REFLECTS[\<lambda>x. is_satisfies(L,f(x),g(x),h(x)), |
104 "REFLECTS[\<lambda>x. is_satisfies(L,f(x),g(x),h(x)), |
106 \<lambda>i x. is_satisfies(##Lset(i),f(x),g(x),h(x))]" |
105 \<lambda>i x. is_satisfies(##Lset(i),f(x),g(x),h(x))]" |
107 apply (simp only: is_satisfies_def) |
106 apply (simp only: is_satisfies_def) |
292 lemma M_DPow_axioms_L: "M_DPow_axioms(L)" |
291 lemma M_DPow_axioms_L: "M_DPow_axioms(L)" |
293 apply (rule M_DPow_axioms.intro) |
292 apply (rule M_DPow_axioms.intro) |
294 apply (assumption | rule DPow_separation DPow_replacement)+ |
293 apply (assumption | rule DPow_separation DPow_replacement)+ |
295 done |
294 done |
296 |
295 |
297 theorem M_DPow_L: "PROP M_DPow(L)" |
296 theorem M_DPow_L: "M_DPow(L)" |
298 apply (rule M_DPow.intro) |
297 apply (rule M_DPow.intro) |
299 apply (rule M_satisfies_L) |
298 apply (rule M_satisfies_L) |
300 apply (rule M_DPow_axioms_L) |
299 apply (rule M_DPow_axioms_L) |
301 done |
300 done |
302 |
301 |
441 |
440 |
442 lemma DPow'_iff_sats: |
441 lemma DPow'_iff_sats: |
443 "[| nth(i,env) = x; nth(j,env) = y; |
442 "[| nth(i,env) = x; nth(j,env) = y; |
444 i \<in> nat; j \<in> nat; env \<in> list(A)|] |
443 i \<in> nat; j \<in> nat; env \<in> list(A)|] |
445 ==> is_DPow'(##A, x, y) \<longleftrightarrow> sats(A, DPow'_fm(i,j), env)" |
444 ==> is_DPow'(##A, x, y) \<longleftrightarrow> sats(A, DPow'_fm(i,j), env)" |
446 by (simp add: sats_DPow'_fm) |
445 by (simp) |
447 |
446 |
448 theorem DPow'_reflection: |
447 theorem DPow'_reflection: |
449 "REFLECTS[\<lambda>x. is_DPow'(L,f(x),g(x)), |
448 "REFLECTS[\<lambda>x. is_DPow'(L,f(x),g(x)), |
450 \<lambda>i x. is_DPow'(##Lset(i),f(x),g(x))]" |
449 \<lambda>i x. is_DPow'(##Lset(i),f(x),g(x))]" |
451 apply (simp only: is_DPow'_def) |
450 apply (simp only: is_DPow'_def) |
598 lemma M_Lset_axioms_L: "M_Lset_axioms(L)" |
597 lemma M_Lset_axioms_L: "M_Lset_axioms(L)" |
599 apply (rule M_Lset_axioms.intro) |
598 apply (rule M_Lset_axioms.intro) |
600 apply (assumption | rule strong_rep transrec_rep)+ |
599 apply (assumption | rule strong_rep transrec_rep)+ |
601 done |
600 done |
602 |
601 |
603 theorem M_Lset_L: "PROP M_Lset(L)" |
602 theorem M_Lset_L: "M_Lset(L)" |
604 apply (rule M_Lset.intro) |
603 apply (rule M_Lset.intro) |
605 apply (rule M_DPow_L) |
604 apply (rule M_DPow_L) |
606 apply (rule M_Lset_axioms_L) |
605 apply (rule M_Lset_axioms_L) |
607 done |
606 done |
608 |
607 |