97 Goalw [lepoll_def, eqpoll_def, bij_def, surj_def] |
97 Goalw [lepoll_def, eqpoll_def, bij_def, surj_def] |
98 "[| ~A eqpoll B; A lepoll B |] ==> succ(A) lepoll B"; |
98 "[| ~A eqpoll B; A lepoll B |] ==> succ(A) lepoll B"; |
99 by (fast_tac (claset() addSEs [succ_not_lepoll_lemma, inj_is_fun]) 1); |
99 by (fast_tac (claset() addSEs [succ_not_lepoll_lemma, inj_is_fun]) 1); |
100 qed "succ_not_lepoll_imp_eqpoll"; |
100 qed "succ_not_lepoll_imp_eqpoll"; |
101 |
101 |
102 val [prem] = goalw thy [s_u_def] |
102 val [prem] = Goalw [s_u_def] |
103 "(ALL v:s_u(u, t_n, k, y). k eqpoll v Int y ==> False) \ |
103 "(ALL v:s_u(u, t_n, k, y). k eqpoll v Int y ==> False) \ |
104 \ ==> EX v : s_u(u, t_n, k, y). succ(k) lepoll v Int y"; |
104 \ ==> EX v : s_u(u, t_n, k, y). succ(k) lepoll v Int y"; |
105 by (excluded_middle_tac "?P" 1 THEN (assume_tac 2)); |
105 by (excluded_middle_tac "?P" 1 THEN (assume_tac 2)); |
106 by (resolve_tac [prem RS FalseE] 1); |
106 by (resolve_tac [prem RS FalseE] 1); |
107 by (rtac ballI 1); |
|
108 by (etac CollectE 1); |
|
109 by (etac conjE 1); |
|
110 by (etac swap 1); |
|
111 by (fast_tac (claset() addSEs [succ_not_lepoll_imp_eqpoll]) 1); |
107 by (fast_tac (claset() addSEs [succ_not_lepoll_imp_eqpoll]) 1); |
112 qed "suppose_not"; |
108 qed "suppose_not"; |
113 |
109 |
114 (* ********************************************************************** *) |
110 (* ********************************************************************** *) |
115 (* There is a k-2 element subset of y *) |
111 (* There is a k-2 element subset of y *) |
116 (* ********************************************************************** *) |
112 (* ********************************************************************** *) |
117 |
113 |
118 Goalw [lepoll_def, eqpoll_def] |
114 Goalw [lepoll_def, eqpoll_def] |
119 "[| n:nat; nat lepoll X |] ==> EX Y. Y<=X & n eqpoll Y"; |
115 "[| n:nat; nat lepoll X |] ==> EX Y. Y<=X & n eqpoll Y"; |
120 by (fast_tac (FOL_cs addSDs [Ord_nat RSN (2, OrdmemD) RSN (2, restrict_inj)] |
116 by (fast_tac (subset_cs addSDs [Ord_nat RSN (2, OrdmemD) RSN (2, restrict_inj)] |
121 addSIs [subset_refl] |
|
122 addSEs [restrict_bij, inj_is_fun RS fun_is_rel RS image_subset]) 1); |
117 addSEs [restrict_bij, inj_is_fun RS fun_is_rel RS image_subset]) 1); |
123 qed "nat_lepoll_imp_ex_eqpoll_n"; |
118 qed "nat_lepoll_imp_ex_eqpoll_n"; |
124 |
119 |
125 val ordertype_eqpoll = |
120 val ordertype_eqpoll = |
126 ordermap_bij RS (exI RS (eqpoll_def RS def_imp_iff RS iffD2)); |
121 ordermap_bij RS (exI RS (eqpoll_def RS def_imp_iff RS iffD2)); |
135 RS lepoll_infinite]) 1); |
130 RS lepoll_infinite]) 1); |
136 qed "ex_subset_eqpoll_n"; |
131 qed "ex_subset_eqpoll_n"; |
137 |
132 |
138 Goalw [lesspoll_def] "n: nat ==> n lesspoll nat"; |
133 Goalw [lesspoll_def] "n: nat ==> n lesspoll nat"; |
139 by (fast_tac (claset() addSEs [Ord_nat RSN (2, ltI) RS leI RS le_imp_lepoll, |
134 by (fast_tac (claset() addSEs [Ord_nat RSN (2, ltI) RS leI RS le_imp_lepoll, |
140 eqpoll_sym RS eqpoll_imp_lepoll] |
135 eqpoll_sym RS eqpoll_imp_lepoll] |
141 addIs [Ord_nat RSN (2, nat_succI RS ltI) RS leI |
136 addIs [Ord_nat RSN (2, nat_succI RS ltI) RS leI |
142 RS le_imp_lepoll RS lepoll_trans RS succ_lepoll_natE]) 1); |
137 RS le_imp_lepoll RS lepoll_trans RS succ_lepoll_natE]) 1); |
143 qed "n_lesspoll_nat"; |
138 qed "n_lesspoll_nat"; |
144 |
139 |
145 Goal "[| well_ord(y,R); ~Finite(y); k eqpoll a; a <= y; k: nat |] \ |
140 Goal "[| well_ord(y,R); ~Finite(y); k eqpoll a; a <= y; k: nat |] \ |
146 \ ==> y - a eqpoll y"; |
141 \ ==> y - a eqpoll y"; |
147 by (fast_tac (empty_cs addIs [lepoll_lesspoll_lesspoll] |
142 by (fast_tac (empty_cs addIs [lepoll_lesspoll_lesspoll] |
178 |
173 |
179 Goalw [s_u_def] "v : s_u(u, t_n, k, y) ==> u : v"; |
174 Goalw [s_u_def] "v : s_u(u, t_n, k, y) ==> u : v"; |
180 by (Fast_tac 1); |
175 by (Fast_tac 1); |
181 qed "in_s_u_imp_u_in"; |
176 qed "in_s_u_imp_u_in"; |
182 |
177 |
183 Goal |
178 Goal "[| ALL z:{z: Pow(x Un y) . z eqpoll succ(succ(k))}. \ |
184 "[| ALL z:{z: Pow(x Un y) . z eqpoll succ(succ(k))}. \ |
|
185 \ EX! w. w:t_n & z <= w; \ |
179 \ EX! w. w:t_n & z <= w; \ |
186 \ k eqpoll a; a <= y; b : y - a; u : x; x Int y = 0 |] \ |
180 \ k eqpoll a; a <= y; b : y - a; u : x; x Int y = 0 |] \ |
187 \ ==> EX! c. c:{v:s_u(u, t_n, succ(k), y). a <= v} & b:c"; |
181 \ ==> EX! c. c:{v:s_u(u, t_n, succ(k), y). a <= v} & b:c"; |
188 by (etac ballE 1); |
182 by (etac ballE 1); |
189 by (fast_tac (FOL_cs addSIs [CollectI, cons_cons_subset, |
183 by (fast_tac (FOL_cs addSIs [CollectI, cons_cons_subset, |
191 by (etac ex1E 1); |
185 by (etac ex1E 1); |
192 by (res_inst_tac [("a","w")] ex1I 1); |
186 by (res_inst_tac [("a","w")] ex1I 1); |
193 by (rtac conjI 1); |
187 by (rtac conjI 1); |
194 by (rtac CollectI 1); |
188 by (rtac CollectI 1); |
195 by (fast_tac (FOL_cs addSEs [s_uI]) 1); |
189 by (fast_tac (FOL_cs addSEs [s_uI]) 1); |
196 by (Fast_tac 1); |
190 by (Blast_tac 1); |
197 by (Fast_tac 1); |
191 by (Blast_tac 1); |
198 by (etac allE 1); |
192 by (etac allE 1); |
199 by (etac impE 1); |
193 by (etac impE 1); |
200 by (assume_tac 2); |
194 by (assume_tac 2); |
201 by (fast_tac (claset() addSEs [s_u_subset RS subsetD, in_s_u_imp_u_in]) 1); |
195 by (fast_tac (claset() addSEs [s_u_subset RS subsetD, in_s_u_imp_u_in]) 1); |
202 qed "ex1_superset_a"; |
196 qed "ex1_superset_a"; |
203 |
197 |
204 Goal |
198 Goal "[| succ(k) eqpoll A; k eqpoll B; B <= A; a : A-B; k:nat \ |
205 "[| succ(k) eqpoll A; k eqpoll B; B <= A; a : A-B; k:nat \ |
|
206 \ |] ==> A = cons(a, B)"; |
199 \ |] ==> A = cons(a, B)"; |
207 by (rtac equalityI 1); |
200 by (rtac equalityI 1); |
208 by (Fast_tac 2); |
201 by (Fast_tac 2); |
209 by (resolve_tac [Diff_eq_0_iff RS iffD1] 1); |
202 by (resolve_tac [Diff_eq_0_iff RS iffD1] 1); |
210 by (rtac equals0I 1); |
203 by (rtac equals0I 1); |
217 (claset() |
210 (claset() |
218 addSEs [[eqpoll_sym RS eqpoll_imp_lepoll, subset_imp_lepoll] MRS |
211 addSEs [[eqpoll_sym RS eqpoll_imp_lepoll, subset_imp_lepoll] MRS |
219 (lepoll_trans RS lepoll_trans) RS succ_lepoll_natE]) 1); |
212 (lepoll_trans RS lepoll_trans) RS succ_lepoll_natE]) 1); |
220 qed "set_eq_cons"; |
213 qed "set_eq_cons"; |
221 |
214 |
222 Goal |
215 Goal "[| ALL z:{z: Pow(x Un y) . z eqpoll succ(succ(k))}. \ |
223 "[| ALL z:{z: Pow(x Un y) . z eqpoll succ(succ(k))}. \ |
216 \ EX! w. w:t_n & z <= w; \ |
224 \ EX! w. w:t_n & z <= w; \ |
217 \ ALL v:s_u(u, t_n, succ(k), y). succ(k) eqpoll v Int y; \ |
225 \ ALL v:s_u(u, t_n, succ(k), y). succ(k) eqpoll v Int y; \ |
218 \ k eqpoll a; a <= y; b : y - a; u : x; x Int y = 0; k:nat |] \ |
226 \ k eqpoll a; a <= y; b : y - a; u : x; x Int y = 0; k:nat \ |
219 \ ==> (THE c. c:{v:s_u(u, t_n, succ(k), y). a <= v} & b:c) \ |
227 \ |] ==> (THE c. c:{v:s_u(u, t_n, succ(k), y). a <= v} & b:c) \ |
220 \ Int y = cons(b, a)"; |
228 \ Int y = cons(b, a)"; |
|
229 by (dresolve_tac [ex1_superset_a RS theI] 1 THEN REPEAT (assume_tac 1)); |
221 by (dresolve_tac [ex1_superset_a RS theI] 1 THEN REPEAT (assume_tac 1)); |
230 by (rtac set_eq_cons 1); |
222 by (rtac set_eq_cons 1); |
231 by (REPEAT (Fast_tac 1)); |
223 by (REPEAT (Fast_tac 1)); |
232 qed "the_eq_cons"; |
224 qed "the_eq_cons"; |
233 |
225 |
246 (* ********************************************************************** *) |
238 (* ********************************************************************** *) |
247 (* 1. y is less than or equipollent to {v:s_u. a <= v} *) |
239 (* 1. y is less than or equipollent to {v:s_u. a <= v} *) |
248 (* where a is certain k-2 element subset of y *) |
240 (* where a is certain k-2 element subset of y *) |
249 (* ********************************************************************** *) |
241 (* ********************************************************************** *) |
250 |
242 |
251 Goal |
243 Goal "[| ALL z:{z: Pow(x Un y) . z eqpoll succ(succ(k))}. \ |
252 "[| ALL z:{z: Pow(x Un y) . z eqpoll succ(succ(k))}. \ |
|
253 \ EX! w. w:t_n & z <= w; \ |
244 \ EX! w. w:t_n & z <= w; \ |
254 \ ALL v:s_u(u, t_n, succ(k), y). succ(k) eqpoll v Int y; \ |
245 \ ALL v:s_u(u, t_n, succ(k), y). succ(k) eqpoll v Int y; \ |
255 \ well_ord(y,R); ~Finite(y); k eqpoll a; a <= y; \ |
246 \ well_ord(y,R); ~Finite(y); k eqpoll a; a <= y; \ |
256 \ k:nat; u:x; x Int y = 0 |] \ |
247 \ k:nat; u:x; x Int y = 0 |] \ |
257 \ ==> y lepoll {v:s_u(u, t_n, succ(k), y). a <= v}"; |
248 \ ==> y lepoll {v:s_u(u, t_n, succ(k), y). a <= v}"; |
280 |
271 |
281 (* ********************************************************************** *) |
272 (* ********************************************************************** *) |
282 (* some arithmetic *) |
273 (* some arithmetic *) |
283 (* ********************************************************************** *) |
274 (* ********************************************************************** *) |
284 |
275 |
285 Goal |
276 Goal "[| k:nat; m:nat |] ==> \ |
286 "[| k:nat; m:nat |] ==> \ |
|
287 \ ALL A B. A eqpoll k #+ m & k lepoll B & B<=A --> A-B lepoll m"; |
277 \ ALL A B. A eqpoll k #+ m & k lepoll B & B<=A --> A-B lepoll m"; |
288 by (eres_inst_tac [("n","k")] nat_induct 1); |
278 by (eres_inst_tac [("n","k")] nat_induct 1); |
289 by (simp_tac (simpset() addsimps [add_0]) 1); |
279 by (simp_tac (simpset() addsimps [add_0]) 1); |
290 by (fast_tac (claset() addIs [eqpoll_imp_lepoll RS |
280 by (fast_tac (claset() addIs [eqpoll_imp_lepoll RS |
291 (Diff_subset RS subset_imp_lepoll RS lepoll_trans)]) 1); |
281 (Diff_subset RS subset_imp_lepoll RS lepoll_trans)]) 1); |
312 |
302 |
313 (* ********************************************************************** *) |
303 (* ********************************************************************** *) |
314 (* similar properties for eqpoll *) |
304 (* similar properties for eqpoll *) |
315 (* ********************************************************************** *) |
305 (* ********************************************************************** *) |
316 |
306 |
317 Goal |
307 Goal "[| k:nat; m:nat |] ==> \ |
318 "[| k:nat; m:nat |] ==> \ |
|
319 \ ALL A B. A eqpoll k #+ m & k eqpoll B & B<=A --> A-B eqpoll m"; |
308 \ ALL A B. A eqpoll k #+ m & k eqpoll B & B<=A --> A-B eqpoll m"; |
320 by (eres_inst_tac [("n","k")] nat_induct 1); |
309 by (eres_inst_tac [("n","k")] nat_induct 1); |
321 by (fast_tac (claset() addSDs [eqpoll_sym RS eqpoll_imp_lepoll RS lepoll_0_is_0] |
310 by (fast_tac (claset() addSDs [eqpoll_sym RS eqpoll_imp_lepoll RS lepoll_0_is_0] |
322 addss (simpset() addsimps [add_0])) 1); |
311 addss (simpset() addsimps [add_0])) 1); |
323 by (REPEAT (resolve_tac [allI,impI] 1)); |
312 by (REPEAT (resolve_tac [allI,impI] 1)); |
346 (* back to the second part *) |
335 (* back to the second part *) |
347 (* ********************************************************************** *) |
336 (* ********************************************************************** *) |
348 |
337 |
349 Goal "[| x Int y = 0; w <= x Un y |] \ |
338 Goal "[| x Int y = 0; w <= x Un y |] \ |
350 \ ==> w Int (x - {u}) = w - cons(u, w Int y)"; |
339 \ ==> w Int (x - {u}) = w - cons(u, w Int y)"; |
351 by (fast_tac (claset() addEs [equals0E]) 1); |
340 by (Fast_tac 1); |
352 qed "w_Int_eq_w_Diff"; |
341 qed "w_Int_eq_w_Diff"; |
353 |
342 |
354 Goal "[| w:{v:s_u(u, t_n, succ(l), y). a <= v}; \ |
343 Goal "[| w:{v:s_u(u, t_n, succ(l), y). a <= v}; \ |
355 \ l eqpoll a; t_n <= {v:Pow(x Un y). v eqpoll succ(succ(l) #+ m)}; \ |
344 \ l eqpoll a; t_n <= {v:Pow(x Un y). v eqpoll succ(succ(l) #+ m)}; \ |
356 \ m:nat; l:nat; x Int y = 0; u : x; \ |
345 \ m:nat; l:nat; x Int y = 0; u : x; \ |
357 \ ALL v:s_u(u, t_n, succ(l), y). succ(l) eqpoll v Int y \ |
346 \ ALL v:s_u(u, t_n, succ(l), y). succ(l) eqpoll v Int y \ |
358 \ |] ==> w Int (x - {u}) eqpoll m"; |
347 \ |] ==> w Int (x - {u}) eqpoll m"; |
359 by (etac CollectE 1); |
348 by (etac CollectE 1); |
360 by (resolve_tac [w_Int_eq_w_Diff RS ssubst] 1 THEN (assume_tac 1)); |
349 by (resolve_tac [w_Int_eq_w_Diff RS ssubst] 1 THEN (assume_tac 1)); |
361 by (fast_tac (claset() addSDs [s_u_subset RS subsetD]) 1); |
350 by (fast_tac (claset() addSDs [s_u_subset RS subsetD]) 1); |
362 by (fast_tac (claset() addEs [equals0E] addSDs [bspec] |
351 by (fast_tac (claset() addSDs [bspec] |
363 addDs [s_u_subset RS subsetD] |
352 addDs [s_u_subset RS subsetD] |
364 addSEs [eqpoll_sym RS cons_eqpoll_succ RS eqpoll_sym, in_s_u_imp_u_in] |
353 addSEs [eqpoll_sym RS cons_eqpoll_succ RS eqpoll_sym, in_s_u_imp_u_in] |
365 addSIs [eqpoll_sum_imp_Diff_eqpoll]) 1); |
354 addSIs [eqpoll_sum_imp_Diff_eqpoll]) 1); |
366 qed "w_Int_eqpoll_m"; |
355 qed "w_Int_eqpoll_m"; |
367 |
356 |
368 Goal "[| 0<m; x eqpoll m; m:nat |] ==> x ~= 0"; |
357 Goal "[| 0<m; x eqpoll m; m:nat |] ==> x ~= 0"; |
369 by (fast_tac (empty_cs |
358 by (fast_tac (empty_cs |
370 addSEs [mem_irrefl, ltE, eqpoll_succ_imp_not_empty, natE]) 1); |
359 addSEs [mem_irrefl, ltE, eqpoll_succ_imp_not_empty, natE]) 1); |
371 qed "eqpoll_m_not_empty"; |
360 qed "eqpoll_m_not_empty"; |
372 |
361 |
373 Goal |
362 Goal "[| z : xa Int (x - {u}); l eqpoll a; a <= y; x Int y = 0; u:x |] \ |
374 "[| z : xa Int (x - {u}); l eqpoll a; a <= y; x Int y = 0; u:x \ |
363 \ ==> cons(z, cons(u, a)) : {v: Pow(x Un y). v eqpoll succ(succ(l))}"; |
375 \ |] ==> cons(z, cons(u, a)) : {v: Pow(x Un y). v eqpoll succ(succ(l))}"; |
364 by (fast_tac (claset() addSIs [cons_eqpoll_succ] addEs [eqpoll_sym]) 1); |
376 by (fast_tac (claset() addSIs [cons_eqpoll_succ] addEs [equals0E, eqpoll_sym]) 1); |
|
377 qed "cons_cons_in"; |
365 qed "cons_cons_in"; |
378 |
366 |
379 (* ********************************************************************** *) |
367 (* ********************************************************************** *) |
380 (* 2. {v:s_u. a <= v} is less than or equipollent *) |
368 (* 2. {v:s_u. a <= v} is less than or equipollent *) |
381 (* to {v:Pow(x). v eqpoll n-k} *) |
369 (* to {v:Pow(x). v eqpoll n-k} *) |
382 (* ********************************************************************** *) |
370 (* ********************************************************************** *) |
383 |
371 |
384 Goal |
372 Goal "[| ALL z:{z: Pow(x Un y) . z eqpoll succ(succ(l))}. \ |
385 "[| ALL z:{z: Pow(x Un y) . z eqpoll succ(succ(l))}. \ |
|
386 \ EX! w. w:t_n & z <= w; \ |
373 \ EX! w. w:t_n & z <= w; \ |
387 \ t_n <= {v:Pow(x Un y). v eqpoll succ(succ(l) #+ m)}; \ |
374 \ t_n <= {v:Pow(x Un y). v eqpoll succ(succ(l) #+ m)}; \ |
388 \ 0<m; m:nat; l:nat; \ |
375 \ 0<m; m:nat; l:nat; \ |
389 \ ALL v:s_u(u, t_n, succ(l), y). succ(l) eqpoll v Int y; \ |
376 \ ALL v:s_u(u, t_n, succ(l), y). succ(l) eqpoll v Int y; \ |
390 \ a <= y; l eqpoll a; x Int y = 0; u : x \ |
377 \ a <= y; l eqpoll a; x Int y = 0; u : x \ |
405 by (eresolve_tac [w_Int_eqpoll_m RSN (2, eqpoll_m_not_empty) RS not_emptyE] 1 |
392 by (eresolve_tac [w_Int_eqpoll_m RSN (2, eqpoll_m_not_empty) RS not_emptyE] 1 |
406 THEN REPEAT (assume_tac 1)); |
393 THEN REPEAT (assume_tac 1)); |
407 by (dresolve_tac [equalityD1 RS subsetD] 1 THEN (assume_tac 1)); |
394 by (dresolve_tac [equalityD1 RS subsetD] 1 THEN (assume_tac 1)); |
408 by (dresolve_tac [cons_cons_in RSN (2, bspec)] 1 THEN REPEAT (assume_tac 1)); |
395 by (dresolve_tac [cons_cons_in RSN (2, bspec)] 1 THEN REPEAT (assume_tac 1)); |
409 by (etac ex1_two_eq 1); |
396 by (etac ex1_two_eq 1); |
410 by (fast_tac (claset() addSEs [s_u_subset RS subsetD, in_s_u_imp_u_in]) 1); |
397 by (REPEAT (blast_tac |
411 by (fast_tac (claset() addSEs [s_u_subset RS subsetD, in_s_u_imp_u_in]) 1); |
398 (claset() addDs [s_u_subset RS subsetD, in_s_u_imp_u_in]) 1)); |
412 qed "subset_s_u_lepoll_w"; |
399 qed "subset_s_u_lepoll_w"; |
413 |
400 |
414 Goal "[| 0<k; k:nat |] ==> EX l:nat. k = succ(l)"; |
401 Goal "[| 0<k; k:nat |] ==> EX l:nat. k = succ(l)"; |
415 by (etac natE 1); |
402 by (etac natE 1); |
416 by (fast_tac (empty_cs addSEs [ltE, mem_irrefl]) 1); |
403 by Auto_tac; |
417 by (fast_tac (empty_cs addSIs [refl, bexI]) 1); |
|
418 qed "ex_eq_succ"; |
404 qed "ex_eq_succ"; |
419 |
405 |
420 Goal |
406 Goal "[| ALL z:{z: Pow(x Un y) . z eqpoll succ(k)}. \ |
421 "[| ALL z:{z: Pow(x Un y) . z eqpoll succ(k)}. \ |
|
422 \ EX! w. w:t_n & z <= w; \ |
407 \ EX! w. w:t_n & z <= w; \ |
423 \ well_ord(y,R); ~Finite(y); u:x; x Int y = 0; \ |
408 \ well_ord(y,R); ~Finite(y); u:x; x Int y = 0; \ |
424 \ t_n <= {v:Pow(x Un y). v eqpoll succ(k #+ m)}; \ |
409 \ t_n <= {v:Pow(x Un y). v eqpoll succ(k #+ m)}; \ |
425 \ ~ y lepoll {v:Pow(x). v eqpoll m}; 0<k; 0<m; k:nat; m:nat \ |
410 \ ~ y lepoll {v:Pow(x). v eqpoll m}; 0<k; 0<m; k:nat; m:nat \ |
426 \ |] ==> EX v : s_u(u, t_n, k, y). succ(k) lepoll v Int y"; |
411 \ |] ==> EX v : s_u(u, t_n, k, y). succ(k) lepoll v Int y"; |
465 RS lepoll_trans RS succ_lepoll_natE] |
450 RS lepoll_trans RS succ_lepoll_natE] |
466 addSIs [equals0I]) 1); |
451 addSIs [equals0I]) 1); |
467 qed "Int_empty"; |
452 qed "Int_empty"; |
468 |
453 |
469 (* ********************************************************************** *) |
454 (* ********************************************************************** *) |
470 (* unit set is well-ordered by the empty relation *) |
|
471 (* ********************************************************************** *) |
|
472 |
|
473 Goalw [irrefl_def, trans_on_def, part_ord_def, linear_def, tot_ord_def] |
|
474 "tot_ord({a},0)"; |
|
475 by (Simp_tac 1); |
|
476 qed "tot_ord_unit"; |
|
477 |
|
478 Goalw [wf_on_def, wf_def] "wf[{a}](0)"; |
|
479 by (Fast_tac 1); |
|
480 qed "wf_on_unit"; |
|
481 |
|
482 Goalw [well_ord_def] "well_ord({a},0)"; |
|
483 by (simp_tac (simpset() addsimps [tot_ord_unit, wf_on_unit]) 1); |
|
484 qed "well_ord_unit"; |
|
485 |
|
486 (* ********************************************************************** *) |
|
487 (* well_ord_subsets_lepoll_n *) |
455 (* well_ord_subsets_lepoll_n *) |
488 (* ********************************************************************** *) |
456 (* ********************************************************************** *) |
489 |
457 |
490 Goal "[| well_ord(y,r); ~Finite(y); n:nat |] ==> \ |
458 Goal "[| well_ord(y,r); ~Finite(y); n:nat |] ==> \ |
491 \ EX R. well_ord({z:Pow(y). z lepoll n}, R)"; |
459 \ EX R. well_ord({z:Pow(y). z lepoll n}, R)"; |
545 |
513 |
546 (* ********************************************************************** *) |
514 (* ********************************************************************** *) |
547 (* The union of appropriate values is the whole x *) |
515 (* The union of appropriate values is the whole x *) |
548 (* ********************************************************************** *) |
516 (* ********************************************************************** *) |
549 |
517 |
550 Goal |
518 Goal "[| ALL z:{z: Pow(x Un y) . z eqpoll succ(k)}. \ |
551 "[| ALL z:{z: Pow(x Un y) . z eqpoll succ(k)}. \ |
|
552 \ EX! w. w:t_n & z <= w; \ |
519 \ EX! w. w:t_n & z <= w; \ |
553 \ well_ord(y,R); ~Finite(y); u:x; x Int y = 0; \ |
520 \ well_ord(y,R); ~Finite(y); u:x; x Int y = 0; \ |
554 \ t_n <= {v:Pow(x Un y). v eqpoll succ(k #+ m)}; \ |
521 \ t_n <= {v:Pow(x Un y). v eqpoll succ(k #+ m)}; \ |
555 \ ~ y lepoll {v:Pow(x). v eqpoll m}; 0<k; 0<m; k:nat; m:nat \ |
522 \ ~ y lepoll {v:Pow(x). v eqpoll m}; 0<k; 0<m; k:nat; m:nat \ |
556 \ |] ==> EX w:MM(t_n, succ(k), y). u:w"; |
523 \ |] ==> EX w:MM(t_n, succ(k), y). u:w"; |
566 |
533 |
567 Goalw [MM_def] "MM(t_n, k, y) <= t_n"; |
534 Goalw [MM_def] "MM(t_n, k, y) <= t_n"; |
568 by (Fast_tac 1); |
535 by (Fast_tac 1); |
569 qed "MM_subset"; |
536 qed "MM_subset"; |
570 |
537 |
571 Goal |
538 Goal "[| ALL z:{z: Pow(x Un y) . z eqpoll succ(k)}. \ |
572 "[| ALL z:{z: Pow(x Un y) . z eqpoll succ(k)}. \ |
|
573 \ EX! w. w:t_n & z <= w; \ |
539 \ EX! w. w:t_n & z <= w; \ |
574 \ well_ord(y,R); ~Finite(y); u:x; x Int y = 0; \ |
540 \ well_ord(y,R); ~Finite(y); u:x; x Int y = 0; \ |
575 \ t_n <= {v:Pow(x Un y). v eqpoll succ(k #+ m)}; \ |
541 \ t_n <= {v:Pow(x Un y). v eqpoll succ(k #+ m)}; \ |
576 \ ~ y lepoll {v:Pow(x). v eqpoll m}; 0<k; 0<m; k:nat; m:nat \ |
542 \ ~ y lepoll {v:Pow(x). v eqpoll m}; 0<k; 0<m; k:nat; m:nat \ |
577 \ |] ==> EX w:LL(t_n, succ(k), y). u:GG(t_n, succ(k), y)`w"; |
543 \ |] ==> EX w:LL(t_n, succ(k), y). u:GG(t_n, succ(k), y)`w"; |
593 \ ==> v = (THE x. x : MM(t_n, k, y) & v <= x) Int y"; |
559 \ ==> v = (THE x. x : MM(t_n, k, y) & v <= x) Int y"; |
594 by (fast_tac (claset() addSEs [Int_in_LL, |
560 by (fast_tac (claset() addSEs [Int_in_LL, |
595 unique_superset_in_MM RS the_equality2 RS ssubst]) 1); |
561 unique_superset_in_MM RS the_equality2 RS ssubst]) 1); |
596 qed "in_LL_eq_Int"; |
562 qed "in_LL_eq_Int"; |
597 |
563 |
598 Goal |
564 Goal "[| ALL z:{z: Pow(x Un y) . z eqpoll k}. EX! w. w:t_n & z <= w; \ |
599 "[| ALL z:{z: Pow(x Un y) . z eqpoll k}. EX! w. w:t_n & z <= w; \ |
|
600 \ t_n <= {v:Pow(x Un y). v eqpoll n}; \ |
565 \ t_n <= {v:Pow(x Un y). v eqpoll n}; \ |
601 \ v : LL(t_n, k, y) |] \ |
566 \ v : LL(t_n, k, y) |] \ |
602 \ ==> (THE x. x : MM(t_n, k, y) & v <= x) <= x Un y"; |
567 \ ==> (THE x. x : MM(t_n, k, y) & v <= x) <= x Un y"; |
603 by (fast_tac (claset() addSDs [unique_superset_in_MM RS theI RS conjunct1 RS |
568 by (fast_tac (claset() addSDs [unique_superset_in_MM RS theI RS conjunct1 RS |
604 (MM_subset RS subsetD)]) 1); |
569 (MM_subset RS subsetD)]) 1); |
616 by (etac DiffE 1); |
581 by (etac DiffE 1); |
617 by (etac swap 1); |
582 by (etac swap 1); |
618 by (fast_tac (claset() addEs [ssubst]) 1); |
583 by (fast_tac (claset() addEs [ssubst]) 1); |
619 qed "GG_subset"; |
584 qed "GG_subset"; |
620 |
585 |
621 Goal |
586 Goal "[| well_ord(LL(t_n, succ(k), y), S); \ |
622 "[| well_ord(LL(t_n, succ(k), y), S); \ |
|
623 \ ALL z:{z: Pow(x Un y) . z eqpoll succ(k)}. EX! w. w:t_n & z <= w; \ |
587 \ ALL z:{z: Pow(x Un y) . z eqpoll succ(k)}. EX! w. w:t_n & z <= w; \ |
624 \ well_ord(y,R); ~Finite(y); x Int y = 0; \ |
588 \ well_ord(y,R); ~Finite(y); x Int y = 0; \ |
625 \ t_n <= {v:Pow(x Un y). v eqpoll succ(k #+ m)}; \ |
589 \ t_n <= {v:Pow(x Un y). v eqpoll succ(k #+ m)}; \ |
626 \ ~ y lepoll {v:Pow(x). v eqpoll m}; 0<k; 0<m; k:nat; m:nat \ |
590 \ ~ y lepoll {v:Pow(x). v eqpoll m}; 0<k; 0<m; k:nat; m:nat \ |
627 \ |] ==> (UN b<ordertype(LL(t_n, succ(k), y), S). \ |
591 \ |] ==> (UN b<ordertype(LL(t_n, succ(k), y), S). \ |