42 |
42 |
43 |
43 |
44 subsubsection{*Separation for Intersection*} |
44 subsubsection{*Separation for Intersection*} |
45 |
45 |
46 lemma Inter_Reflects: |
46 lemma Inter_Reflects: |
47 "L_Reflects(?Cl, \<lambda>x. \<forall>y[L]. y\<in>A --> x \<in> y, |
47 "REFLECTS[\<lambda>x. \<forall>y[L]. y\<in>A --> x \<in> y, |
48 \<lambda>i x. \<forall>y\<in>Lset(i). y\<in>A --> x \<in> y)" |
48 \<lambda>i x. \<forall>y\<in>Lset(i). y\<in>A --> x \<in> y]" |
49 by fast |
49 by (intro FOL_reflection) |
50 |
50 |
51 lemma Inter_separation: |
51 lemma Inter_separation: |
52 "L(A) ==> separation(L, \<lambda>x. \<forall>y[L]. y\<in>A --> x\<in>y)" |
52 "L(A) ==> separation(L, \<lambda>x. \<forall>y[L]. y\<in>A --> x\<in>y)" |
53 apply (rule separation_CollectI) |
53 apply (rule separation_CollectI) |
54 apply (rule_tac A="{A,z}" in subset_LsetE, blast ) |
54 apply (rule_tac A="{A,z}" in subset_LsetE, blast ) |
65 done |
65 done |
66 |
66 |
67 subsubsection{*Separation for Cartesian Product*} |
67 subsubsection{*Separation for Cartesian Product*} |
68 |
68 |
69 lemma cartprod_Reflects [simplified]: |
69 lemma cartprod_Reflects [simplified]: |
70 "L_Reflects(?Cl, \<lambda>z. \<exists>x[L]. x\<in>A & (\<exists>y[L]. y\<in>B & pair(L,x,y,z)), |
70 "REFLECTS[\<lambda>z. \<exists>x[L]. x\<in>A & (\<exists>y[L]. y\<in>B & pair(L,x,y,z)), |
71 \<lambda>i z. \<exists>x\<in>Lset(i). x\<in>A & (\<exists>y\<in>Lset(i). y\<in>B & |
71 \<lambda>i z. \<exists>x\<in>Lset(i). x\<in>A & (\<exists>y\<in>Lset(i). y\<in>B & |
72 pair(**Lset(i),x,y,z)))" |
72 pair(**Lset(i),x,y,z))]" |
73 by fast |
73 by (intro FOL_reflection function_reflection) |
74 |
74 |
75 lemma cartprod_separation: |
75 lemma cartprod_separation: |
76 "[| L(A); L(B) |] |
76 "[| L(A); L(B) |] |
77 ==> separation(L, \<lambda>z. \<exists>x[L]. x\<in>A & (\<exists>y[L]. y\<in>B & pair(L,x,y,z)))" |
77 ==> separation(L, \<lambda>z. \<exists>x[L]. x\<in>A & (\<exists>y[L]. y\<in>B & pair(L,x,y,z)))" |
78 apply (rule separation_CollectI) |
78 apply (rule separation_CollectI) |
98 subsubsection{*Separation for Image*} |
98 subsubsection{*Separation for Image*} |
99 |
99 |
100 text{*No @{text simplified} here: it simplifies the occurrence of |
100 text{*No @{text simplified} here: it simplifies the occurrence of |
101 the predicate @{term pair}!*} |
101 the predicate @{term pair}!*} |
102 lemma image_Reflects: |
102 lemma image_Reflects: |
103 "L_Reflects(?Cl, \<lambda>y. \<exists>p[L]. p\<in>r & (\<exists>x[L]. x\<in>A & pair(L,x,y,p)), |
103 "REFLECTS[\<lambda>y. \<exists>p[L]. p\<in>r & (\<exists>x[L]. x\<in>A & pair(L,x,y,p)), |
104 \<lambda>i y. \<exists>p\<in>Lset(i). p\<in>r & (\<exists>x\<in>Lset(i). x\<in>A & pair(**Lset(i),x,y,p)))" |
104 \<lambda>i y. \<exists>p\<in>Lset(i). p\<in>r & (\<exists>x\<in>Lset(i). x\<in>A & pair(**Lset(i),x,y,p))]" |
105 by fast |
105 by (intro FOL_reflection function_reflection) |
106 |
106 |
107 |
107 |
108 lemma image_separation: |
108 lemma image_separation: |
109 "[| L(A); L(r) |] |
109 "[| L(A); L(r) |] |
110 ==> separation(L, \<lambda>y. \<exists>p[L]. p\<in>r & (\<exists>x[L]. x\<in>A & pair(L,x,y,p)))" |
110 ==> separation(L, \<lambda>y. \<exists>p[L]. p\<in>r & (\<exists>x[L]. x\<in>A & pair(L,x,y,p)))" |
134 |
134 |
135 |
135 |
136 subsubsection{*Separation for Converse*} |
136 subsubsection{*Separation for Converse*} |
137 |
137 |
138 lemma converse_Reflects: |
138 lemma converse_Reflects: |
139 "L_Reflects(?Cl, |
139 "REFLECTS[\<lambda>z. \<exists>p[L]. p\<in>r & (\<exists>x[L]. \<exists>y[L]. pair(L,x,y,p) & pair(L,y,x,z)), |
140 \<lambda>z. \<exists>p[L]. p\<in>r & (\<exists>x[L]. \<exists>y[L]. pair(L,x,y,p) & pair(L,y,x,z)), |
|
141 \<lambda>i z. \<exists>p\<in>Lset(i). p\<in>r & (\<exists>x\<in>Lset(i). \<exists>y\<in>Lset(i). |
140 \<lambda>i z. \<exists>p\<in>Lset(i). p\<in>r & (\<exists>x\<in>Lset(i). \<exists>y\<in>Lset(i). |
142 pair(**Lset(i),x,y,p) & pair(**Lset(i),y,x,z)))" |
141 pair(**Lset(i),x,y,p) & pair(**Lset(i),y,x,z))]" |
143 by fast |
142 by (intro FOL_reflection function_reflection) |
144 |
143 |
145 lemma converse_separation: |
144 lemma converse_separation: |
146 "L(r) ==> separation(L, |
145 "L(r) ==> separation(L, |
147 \<lambda>z. \<exists>p[L]. p\<in>r & (\<exists>x[L]. \<exists>y[L]. pair(L,x,y,p) & pair(L,y,x,z)))" |
146 \<lambda>z. \<exists>p[L]. p\<in>r & (\<exists>x[L]. \<exists>y[L]. pair(L,x,y,p) & pair(L,y,x,z)))" |
148 apply (rule separation_CollectI) |
147 apply (rule separation_CollectI) |
169 |
168 |
170 |
169 |
171 subsubsection{*Separation for Restriction*} |
170 subsubsection{*Separation for Restriction*} |
172 |
171 |
173 lemma restrict_Reflects: |
172 lemma restrict_Reflects: |
174 "L_Reflects(?Cl, \<lambda>z. \<exists>x[L]. x\<in>A & (\<exists>y[L]. pair(L,x,y,z)), |
173 "REFLECTS[\<lambda>z. \<exists>x[L]. x\<in>A & (\<exists>y[L]. pair(L,x,y,z)), |
175 \<lambda>i z. \<exists>x\<in>Lset(i). x\<in>A & (\<exists>y\<in>Lset(i). pair(**Lset(i),x,y,z)))" |
174 \<lambda>i z. \<exists>x\<in>Lset(i). x\<in>A & (\<exists>y\<in>Lset(i). pair(**Lset(i),x,y,z))]" |
176 by fast |
175 by (intro FOL_reflection function_reflection) |
177 |
176 |
178 lemma restrict_separation: |
177 lemma restrict_separation: |
179 "L(A) ==> separation(L, \<lambda>z. \<exists>x[L]. x\<in>A & (\<exists>y[L]. pair(L,x,y,z)))" |
178 "L(A) ==> separation(L, \<lambda>z. \<exists>x[L]. x\<in>A & (\<exists>y[L]. pair(L,x,y,z)))" |
180 apply (rule separation_CollectI) |
179 apply (rule separation_CollectI) |
181 apply (rule_tac A="{A,z}" in subset_LsetE, blast ) |
180 apply (rule_tac A="{A,z}" in subset_LsetE, blast ) |
195 |
194 |
196 |
195 |
197 subsubsection{*Separation for Composition*} |
196 subsubsection{*Separation for Composition*} |
198 |
197 |
199 lemma comp_Reflects: |
198 lemma comp_Reflects: |
200 "L_Reflects(?Cl, \<lambda>xz. \<exists>x[L]. \<exists>y[L]. \<exists>z[L]. \<exists>xy[L]. \<exists>yz[L]. |
199 "REFLECTS[\<lambda>xz. \<exists>x[L]. \<exists>y[L]. \<exists>z[L]. \<exists>xy[L]. \<exists>yz[L]. |
201 pair(L,x,z,xz) & pair(L,x,y,xy) & pair(L,y,z,yz) & |
200 pair(L,x,z,xz) & pair(L,x,y,xy) & pair(L,y,z,yz) & |
202 xy\<in>s & yz\<in>r, |
201 xy\<in>s & yz\<in>r, |
203 \<lambda>i xz. \<exists>x\<in>Lset(i). \<exists>y\<in>Lset(i). \<exists>z\<in>Lset(i). \<exists>xy\<in>Lset(i). \<exists>yz\<in>Lset(i). |
202 \<lambda>i xz. \<exists>x\<in>Lset(i). \<exists>y\<in>Lset(i). \<exists>z\<in>Lset(i). \<exists>xy\<in>Lset(i). \<exists>yz\<in>Lset(i). |
204 pair(**Lset(i),x,z,xz) & pair(**Lset(i),x,y,xy) & |
203 pair(**Lset(i),x,z,xz) & pair(**Lset(i),x,y,xy) & |
205 pair(**Lset(i),y,z,yz) & xy\<in>s & yz\<in>r)" |
204 pair(**Lset(i),y,z,yz) & xy\<in>s & yz\<in>r]" |
206 by fast |
205 by (intro FOL_reflection function_reflection) |
207 |
206 |
208 lemma comp_separation: |
207 lemma comp_separation: |
209 "[| L(r); L(s) |] |
208 "[| L(r); L(s) |] |
210 ==> separation(L, \<lambda>xz. \<exists>x[L]. \<exists>y[L]. \<exists>z[L]. \<exists>xy[L]. \<exists>yz[L]. |
209 ==> separation(L, \<lambda>xz. \<exists>x[L]. \<exists>y[L]. \<exists>z[L]. \<exists>xy[L]. \<exists>yz[L]. |
211 pair(L,x,z,xz) & pair(L,x,y,xy) & pair(L,y,z,yz) & |
210 pair(L,x,z,xz) & pair(L,x,y,xy) & pair(L,y,z,yz) & |
248 done |
247 done |
249 |
248 |
250 subsubsection{*Separation for Predecessors in an Order*} |
249 subsubsection{*Separation for Predecessors in an Order*} |
251 |
250 |
252 lemma pred_Reflects: |
251 lemma pred_Reflects: |
253 "L_Reflects(?Cl, \<lambda>y. \<exists>p[L]. p\<in>r & pair(L,y,x,p), |
252 "REFLECTS[\<lambda>y. \<exists>p[L]. p\<in>r & pair(L,y,x,p), |
254 \<lambda>i y. \<exists>p \<in> Lset(i). p\<in>r & pair(**Lset(i),y,x,p))" |
253 \<lambda>i y. \<exists>p \<in> Lset(i). p\<in>r & pair(**Lset(i),y,x,p)]" |
255 by fast |
254 by (intro FOL_reflection function_reflection) |
256 |
255 |
257 lemma pred_separation: |
256 lemma pred_separation: |
258 "[| L(r); L(x) |] ==> separation(L, \<lambda>y. \<exists>p[L]. p\<in>r & pair(L,y,x,p))" |
257 "[| L(r); L(x) |] ==> separation(L, \<lambda>y. \<exists>p[L]. p\<in>r & pair(L,y,x,p))" |
259 apply (rule separation_CollectI) |
258 apply (rule separation_CollectI) |
260 apply (rule_tac A="{r,x,z}" in subset_LsetE, blast ) |
259 apply (rule_tac A="{r,x,z}" in subset_LsetE, blast ) |
278 |
277 |
279 |
278 |
280 subsubsection{*Separation for the Membership Relation*} |
279 subsubsection{*Separation for the Membership Relation*} |
281 |
280 |
282 lemma Memrel_Reflects: |
281 lemma Memrel_Reflects: |
283 "L_Reflects(?Cl, \<lambda>z. \<exists>x[L]. \<exists>y[L]. pair(L,x,y,z) & x \<in> y, |
282 "REFLECTS[\<lambda>z. \<exists>x[L]. \<exists>y[L]. pair(L,x,y,z) & x \<in> y, |
284 \<lambda>i z. \<exists>x \<in> Lset(i). \<exists>y \<in> Lset(i). pair(**Lset(i),x,y,z) & x \<in> y)" |
283 \<lambda>i z. \<exists>x \<in> Lset(i). \<exists>y \<in> Lset(i). pair(**Lset(i),x,y,z) & x \<in> y]" |
285 by fast |
284 by (intro FOL_reflection function_reflection) |
286 |
285 |
287 lemma Memrel_separation: |
286 lemma Memrel_separation: |
288 "separation(L, \<lambda>z. \<exists>x[L]. \<exists>y[L]. pair(L,x,y,z) & x \<in> y)" |
287 "separation(L, \<lambda>z. \<exists>x[L]. \<exists>y[L]. pair(L,x,y,z) & x \<in> y)" |
289 apply (rule separation_CollectI) |
288 apply (rule separation_CollectI) |
290 apply (rule_tac A="{z}" in subset_LsetE, blast ) |
289 apply (rule_tac A="{z}" in subset_LsetE, blast ) |
308 |
307 |
309 |
308 |
310 subsubsection{*Replacement for FunSpace*} |
309 subsubsection{*Replacement for FunSpace*} |
311 |
310 |
312 lemma funspace_succ_Reflects: |
311 lemma funspace_succ_Reflects: |
313 "L_Reflects(?Cl, \<lambda>z. \<exists>p[L]. p\<in>A & (\<exists>f[L]. \<exists>b[L]. \<exists>nb[L]. \<exists>cnbf[L]. |
312 "REFLECTS[\<lambda>z. \<exists>p[L]. p\<in>A & (\<exists>f[L]. \<exists>b[L]. \<exists>nb[L]. \<exists>cnbf[L]. |
314 pair(L,f,b,p) & pair(L,n,b,nb) & is_cons(L,nb,f,cnbf) & |
313 pair(L,f,b,p) & pair(L,n,b,nb) & is_cons(L,nb,f,cnbf) & |
315 upair(L,cnbf,cnbf,z)), |
314 upair(L,cnbf,cnbf,z)), |
316 \<lambda>i z. \<exists>p \<in> Lset(i). p\<in>A & (\<exists>f \<in> Lset(i). \<exists>b \<in> Lset(i). |
315 \<lambda>i z. \<exists>p \<in> Lset(i). p\<in>A & (\<exists>f \<in> Lset(i). \<exists>b \<in> Lset(i). |
317 \<exists>nb \<in> Lset(i). \<exists>cnbf \<in> Lset(i). |
316 \<exists>nb \<in> Lset(i). \<exists>cnbf \<in> Lset(i). |
318 pair(**Lset(i),f,b,p) & pair(**Lset(i),n,b,nb) & |
317 pair(**Lset(i),f,b,p) & pair(**Lset(i),n,b,nb) & |
319 is_cons(**Lset(i),nb,f,cnbf) & upair(**Lset(i),cnbf,cnbf,z)))" |
318 is_cons(**Lset(i),nb,f,cnbf) & upair(**Lset(i),cnbf,cnbf,z))]" |
320 by fast |
319 by (intro FOL_reflection function_reflection) |
321 |
320 |
322 lemma funspace_succ_replacement: |
321 lemma funspace_succ_replacement: |
323 "L(n) ==> |
322 "L(n) ==> |
324 strong_replacement(L, \<lambda>p z. \<exists>f[L]. \<exists>b[L]. \<exists>nb[L]. \<exists>cnbf[L]. |
323 strong_replacement(L, \<lambda>p z. \<exists>f[L]. \<exists>b[L]. \<exists>nb[L]. \<exists>cnbf[L]. |
325 pair(L,f,b,p) & pair(L,n,b,nb) & is_cons(L,nb,f,cnbf) & |
324 pair(L,f,b,p) & pair(L,n,b,nb) & is_cons(L,nb,f,cnbf) & |
365 |
364 |
366 |
365 |
367 subsubsection{*Separation for Order-Isomorphisms*} |
366 subsubsection{*Separation for Order-Isomorphisms*} |
368 |
367 |
369 lemma well_ord_iso_Reflects: |
368 lemma well_ord_iso_Reflects: |
370 "L_Reflects(?Cl, \<lambda>x. x\<in>A --> (\<exists>y[L]. \<exists>p[L]. |
369 "REFLECTS[\<lambda>x. x\<in>A --> |
371 fun_apply(L,f,x,y) & pair(L,y,x,p) & p \<in> r), |
370 (\<exists>y[L]. \<exists>p[L]. fun_apply(L,f,x,y) & pair(L,y,x,p) & p \<in> r), |
372 \<lambda>i x. x\<in>A --> (\<exists>y \<in> Lset(i). \<exists>p \<in> Lset(i). |
371 \<lambda>i x. x\<in>A --> (\<exists>y \<in> Lset(i). \<exists>p \<in> Lset(i). |
373 fun_apply(**Lset(i),f,x,y) & pair(**Lset(i),y,x,p) & p \<in> r))" |
372 fun_apply(**Lset(i),f,x,y) & pair(**Lset(i),y,x,p) & p \<in> r)]" |
374 by fast |
373 by (intro FOL_reflection function_reflection) |
375 |
374 |
376 lemma well_ord_iso_separation: |
375 lemma well_ord_iso_separation: |
377 "[| L(A); L(f); L(r) |] |
376 "[| L(A); L(f); L(r) |] |
378 ==> separation (L, \<lambda>x. x\<in>A --> (\<exists>y[L]. (\<exists>p[L]. |
377 ==> separation (L, \<lambda>x. x\<in>A --> (\<exists>y[L]. (\<exists>p[L]. |
379 fun_apply(L,f,x,y) & pair(L,y,x,p) & p \<in> r)))" |
378 fun_apply(L,f,x,y) & pair(L,y,x,p) & p \<in> r)))" |