61 by (fast_tac (claset() |
61 by (fast_tac (claset() |
62 addSIs [subset_imp_lepoll RS (prem RSN (2, lepoll_infinite))]) 1); |
62 addSIs [subset_imp_lepoll RS (prem RSN (2, lepoll_infinite))]) 1); |
63 qed "infinite_Un"; |
63 qed "infinite_Un"; |
64 |
64 |
65 (* ********************************************************************** *) |
65 (* ********************************************************************** *) |
66 (* There is a v : s_u such that k lepoll x Int y (in our case succ(k)) *) |
66 (* There is a v : s(u) such that k lepoll x Int y (in our case succ(k)) *) |
67 (* The idea of the proof is the following : *) |
67 (* The idea of the proof is the following : *) |
68 (* Suppose not, i.e. every element of s_u has exactly k-1 elements of y *) |
68 (* Suppose not, i.e. every element of s(u) has exactly k-1 elements of y *) |
69 (* Thence y is less than or equipollent to {v:Pow(x). v eqpoll n#-k} *) |
69 (* Thence y is less than or equipollent to {v:Pow(x). v eqpoll n#-k} *) |
70 (* We have obtained this result in two steps : *) |
70 (* We have obtained this result in two steps : *) |
71 (* 1. y is less than or equipollent to {v:s_u. a <= v} *) |
71 (* 1. y is less than or equipollent to {v:s(u). a <= v} *) |
72 (* where a is certain k-2 element subset of y *) |
72 (* where a is certain k-2 element subset of y *) |
73 (* 2. {v:s_u. a <= v} is less than or equipollent *) |
73 (* 2. {v:s(u). a <= v} is less than or equipollent *) |
74 (* to {v:Pow(x). v eqpoll n-k} *) |
74 (* to {v:Pow(x). v eqpoll n-k} *) |
75 (* ********************************************************************** *) |
75 (* ********************************************************************** *) |
76 |
76 |
77 (*Proof simplified by LCP*) |
77 (*Proof simplified by LCP*) |
78 Goal "[| ~(EX x:A. f`x=y); f : inj(A, B); y:B |] \ |
78 Goal "[| ~(EX x:A. f`x=y); f : inj(A, B); y:B |] \ |
79 \ ==> (lam a:succ(A). if(a=A, y, f`a)) : inj(succ(A), B)"; |
79 \ ==> (lam a:succ(A). if(a=A, y, f`a)) : inj(succ(A), B)"; |
80 by (res_inst_tac [("d","%z. if(z=y, A, converse(f)`z)")] lam_injective 1); |
80 by (res_inst_tac [("d","%z. if(z=y, A, converse(f)`z)")] lam_injective 1); |
81 by (ALLGOALS |
81 by (ALLGOALS |
82 (asm_simp_tac |
82 (asm_simp_tac |
83 (simpset() addsimps [inj_is_fun RS apply_type, left_inverse] |
83 (simpset() addsimps [inj_is_fun RS apply_type, left_inverse] |
84 setloop (split_tac [split_if] ORELSE' Step_tac)))); |
84 setloop (split_tac [split_if] ORELSE' Step_tac)))); |
87 Goalw [lepoll_def, eqpoll_def, bij_def, surj_def] |
87 Goalw [lepoll_def, eqpoll_def, bij_def, surj_def] |
88 "[| ~A eqpoll B; A lepoll B |] ==> succ(A) lepoll B"; |
88 "[| ~A eqpoll B; A lepoll B |] ==> succ(A) lepoll B"; |
89 by (fast_tac (claset() addSEs [succ_not_lepoll_lemma, inj_is_fun]) 1); |
89 by (fast_tac (claset() addSEs [succ_not_lepoll_lemma, inj_is_fun]) 1); |
90 qed "succ_not_lepoll_imp_eqpoll"; |
90 qed "succ_not_lepoll_imp_eqpoll"; |
91 |
91 |
92 val [prem] = Goalw [s_u_def] |
|
93 "(ALL v:s_u(u, t_n, k, y). k eqpoll v Int y ==> False) \ |
|
94 \ ==> EX v : s_u(u, t_n, k, y). succ(k) lepoll v Int y"; |
|
95 by (rtac ccontr 1); |
|
96 by (resolve_tac [prem RS FalseE] 1); |
|
97 by (fast_tac (claset() addSEs [succ_not_lepoll_imp_eqpoll]) 1); |
|
98 qed "suppose_not"; |
|
99 |
|
100 |
92 |
101 (* ********************************************************************** *) |
93 (* ********************************************************************** *) |
102 (* There is a k-2 element subset of y *) |
94 (* There is a k-2 element subset of y *) |
103 (* ********************************************************************** *) |
95 (* ********************************************************************** *) |
104 |
96 |
124 |
116 |
125 Goal "[| a eqpoll k; a<=y; b:y-a; u:x; x Int y = 0 \ |
117 Goal "[| a eqpoll k; a<=y; b:y-a; u:x; x Int y = 0 \ |
126 \ |] ==> cons(b, cons(u, a)) eqpoll succ(succ(k))"; |
118 \ |] ==> cons(b, cons(u, a)) eqpoll succ(succ(k))"; |
127 by (fast_tac (claset() addSIs [cons_eqpoll_succ]) 1); |
119 by (fast_tac (claset() addSIs [cons_eqpoll_succ]) 1); |
128 qed "cons_cons_eqpoll"; |
120 qed "cons_cons_eqpoll"; |
129 |
|
130 Goalw [s_u_def] "s_u(u, t_n, k, y) <= t_n"; |
|
131 by (Fast_tac 1); |
|
132 qed "s_u_subset"; |
|
133 |
|
134 Goalw [s_u_def, succ_def] |
|
135 "[| w:t_n; cons(b,cons(u,a)) <= w; a <= y; b : y-a; k eqpoll a \ |
|
136 \ |] ==> w: s_u(u, t_n, succ(k), y)"; |
|
137 by (fast_tac (claset() addDs [eqpoll_imp_lepoll RS cons_lepoll_cong] |
|
138 addSEs [subset_imp_lepoll RSN (2, lepoll_trans)]) 1); |
|
139 qed "s_uI"; |
|
140 |
|
141 Goalw [s_u_def] "v : s_u(u, t_n, k, y) ==> u : v"; |
|
142 by (Fast_tac 1); |
|
143 qed "in_s_u_imp_u_in"; |
|
144 |
121 |
145 Goal "[| succ(k) eqpoll A; k eqpoll B; B <= A; a : A-B; k:nat \ |
122 Goal "[| succ(k) eqpoll A; k eqpoll B; B <= A; a : A-B; k:nat \ |
146 \ |] ==> A = cons(a, B)"; |
123 \ |] ==> A = cons(a, B)"; |
147 by (rtac equalityI 1); |
124 by (rtac equalityI 1); |
148 by (Fast_tac 2); |
125 by (Fast_tac 2); |
254 |
231 |
255 val all_ex = thm "all_ex"; |
232 val all_ex = thm "all_ex"; |
256 val disjoint = thm "disjoint"; |
233 val disjoint = thm "disjoint"; |
257 val includes = thm "includes"; |
234 val includes = thm "includes"; |
258 val WO_R = thm "WO_R"; |
235 val WO_R = thm "WO_R"; |
259 val knat = thm "knat"; |
236 val k_def = thm "k_def"; |
260 val kpos = thm "kpos"; |
|
261 val lnat = thm "lnat"; |
237 val lnat = thm "lnat"; |
262 val mnat = thm "mnat"; |
238 val mnat = thm "mnat"; |
263 val mpos = thm "mpos"; |
239 val mpos = thm "mpos"; |
264 val Infinite = thm "Infinite"; |
240 val Infinite = thm "Infinite"; |
265 val noLepoll = thm "noLepoll"; |
241 val noLepoll = thm "noLepoll"; |
266 |
242 |
267 val LL_def = thm "LL_def"; |
243 val LL_def = thm "LL_def"; |
268 val MM_def = thm "MM_def"; |
244 val MM_def = thm "MM_def"; |
269 val GG_def = thm "GG_def"; |
245 val GG_def = thm "GG_def"; |
270 |
246 val s_def = thm "s_def"; |
271 Addsimps [disjoint, WO_R, knat, lnat, mnat, mpos, Infinite]; |
247 |
272 |
248 Addsimps [disjoint, WO_R, lnat, mnat, mpos, Infinite]; |
273 AddSIs [disjoint, WO_R, knat, lnat, mnat, mpos]; |
249 AddSIs [disjoint, WO_R, lnat, mnat, mpos]; |
|
250 |
|
251 Goalw [k_def] "k: nat"; |
|
252 by Auto_tac; |
|
253 qed "knat"; |
|
254 Addsimps [knat]; AddSIs [knat]; |
274 |
255 |
275 AddSIs [Infinite]; (*if notI is removed!*) |
256 AddSIs [Infinite]; (*if notI is removed!*) |
276 AddSEs [Infinite RS notE]; |
257 AddSEs [Infinite RS notE]; |
277 |
258 |
278 AddEs [IntI RS (disjoint RS equals0E)]; |
259 AddEs [IntI RS (disjoint RS equals0E)]; |
279 |
260 |
280 (*use k = succ(l) *) |
261 (*use k = succ(l) *) |
281 val includes_l = simplify (FOL_ss addsimps [kpos]) includes; |
262 val includes_l = simplify (FOL_ss addsimps [k_def]) includes; |
282 val all_ex_l = simplify (FOL_ss addsimps [kpos]) all_ex; |
263 val all_ex_l = simplify (FOL_ss addsimps [k_def]) all_ex; |
283 |
264 |
284 (* ********************************************************************** *) |
265 (* ********************************************************************** *) |
285 (* 1. y is less than or equipollent to {v:s_u. a <= v} *) |
266 (* 1. y is less than or equipollent to {v:s(u). a <= v} *) |
286 (* where a is certain k-2 element subset of y *) |
267 (* where a is certain k-2 element subset of y *) |
287 (* ********************************************************************** *) |
268 (* ********************************************************************** *) |
288 |
269 |
289 Goal "[| l eqpoll a; a <= y |] ==> y - a eqpoll y"; |
270 Goal "[| l eqpoll a; a <= y |] ==> y - a eqpoll y"; |
290 by (cut_facts_tac [WO_R, Infinite, lnat] 1); |
271 by (cut_facts_tac [WO_R, Infinite, lnat] 1); |
298 n_lesspoll_nat RS lesspoll_lepoll_lesspoll, |
279 n_lesspoll_nat RS lesspoll_lepoll_lesspoll, |
299 well_ord_cardinal_eqpoll RS eqpoll_sym RS eqpoll_imp_lepoll |
280 well_ord_cardinal_eqpoll RS eqpoll_sym RS eqpoll_imp_lepoll |
300 RS lepoll_infinite]) 1); |
281 RS lepoll_infinite]) 1); |
301 qed "Diff_Finite_eqpoll"; |
282 qed "Diff_Finite_eqpoll"; |
302 |
283 |
|
284 Goalw [s_def] "s(u) <= t_n"; |
|
285 by (Fast_tac 1); |
|
286 qed "s_subset"; |
|
287 |
|
288 Goalw [s_def, succ_def, k_def] |
|
289 "[| w:t_n; cons(b,cons(u,a)) <= w; a <= y; b : y-a; l eqpoll a \ |
|
290 \ |] ==> w: s(u)"; |
|
291 by (fast_tac (claset() addDs [eqpoll_imp_lepoll RS cons_lepoll_cong] |
|
292 addSEs [subset_imp_lepoll RSN (2, lepoll_trans)]) 1); |
|
293 qed "sI"; |
|
294 |
|
295 Goalw [s_def] "v : s(u) ==> u : v"; |
|
296 by (Fast_tac 1); |
|
297 qed "in_s_imp_u_in"; |
|
298 |
|
299 |
303 Goal "[| l eqpoll a; a <= y; b : y - a; u : x |] \ |
300 Goal "[| l eqpoll a; a <= y; b : y - a; u : x |] \ |
304 \ ==> EX! c. c: s_u(u, t_n, succ(l), y) & a <= c & b:c"; |
301 \ ==> EX! c. c: s(u) & a <= c & b:c"; |
305 by (rtac (all_ex_l RS ballE) 1); |
302 by (rtac (all_ex_l RS ballE) 1); |
306 by (blast_tac (claset() delrules [PowI] |
303 by (blast_tac (claset() delrules [PowI] |
307 addSIs [cons_cons_subset, |
304 addSIs [cons_cons_subset, |
308 eqpoll_sym RS cons_cons_eqpoll]) 2); |
305 eqpoll_sym RS cons_cons_eqpoll]) 2); |
309 by (etac ex1E 1); |
306 by (etac ex1E 1); |
310 by (res_inst_tac [("a","w")] ex1I 1); |
307 by (res_inst_tac [("a","w")] ex1I 1); |
311 by (blast_tac (claset() addIs [s_uI]) 1); |
308 by (blast_tac (claset() addIs [sI]) 1); |
312 by (etac allE 1); |
309 by (etac allE 1); |
313 by (etac impE 1); |
310 by (etac impE 1); |
314 by (assume_tac 2); |
311 by (assume_tac 2); |
315 by (fast_tac (claset() addSEs [s_u_subset RS subsetD, in_s_u_imp_u_in]) 1); |
312 by (fast_tac (claset() addSEs [s_subset RS subsetD, in_s_imp_u_in]) 1); |
316 qed "ex1_superset_a"; |
313 qed "ex1_superset_a"; |
317 |
314 |
318 Goal "[| ALL v:s_u(u, t_n, succ(l), y). succ(l) eqpoll v Int y; \ |
315 Goal "[| ALL v:s(u). succ(l) eqpoll v Int y; \ |
319 \ l eqpoll a; a <= y; b : y - a; u : x |] \ |
316 \ l eqpoll a; a <= y; b : y - a; u : x |] \ |
320 \ ==> (THE c. c: s_u(u, t_n, succ(l), y) & a <= c & b:c) \ |
317 \ ==> (THE c. c: s(u) & a <= c & b:c) \ |
321 \ Int y = cons(b, a)"; |
318 \ Int y = cons(b, a)"; |
322 by (forward_tac [ex1_superset_a RS theI] 1 THEN REPEAT (assume_tac 1)); |
319 by (forward_tac [ex1_superset_a RS theI] 1 THEN REPEAT (assume_tac 1)); |
323 by (rtac set_eq_cons 1); |
320 by (rtac set_eq_cons 1); |
324 by (REPEAT (Fast_tac 1)); |
321 by (REPEAT (Fast_tac 1)); |
325 qed "the_eq_cons"; |
322 qed "the_eq_cons"; |
326 |
323 |
327 Goal "[| ALL v:s_u(u, t_n, succ(l), y). succ(l) eqpoll v Int y; \ |
324 Goal "[| ALL v:s(u). succ(l) eqpoll v Int y; \ |
328 \ l eqpoll a; a <= y; u:x |] \ |
325 \ l eqpoll a; a <= y; u:x |] \ |
329 \ ==> y lepoll {v:s_u(u, t_n, succ(l), y). a <= v}"; |
326 \ ==> y lepoll {v:s(u). a <= v}"; |
330 by (resolve_tac [Diff_Finite_eqpoll RS eqpoll_sym RS |
327 by (resolve_tac [Diff_Finite_eqpoll RS eqpoll_sym RS |
331 eqpoll_imp_lepoll RS lepoll_trans] 1 |
328 eqpoll_imp_lepoll RS lepoll_trans] 1 |
332 THEN REPEAT (Fast_tac 1)); |
329 THEN REPEAT (Fast_tac 1)); |
333 by (res_inst_tac |
330 by (res_inst_tac |
334 [("f3", "lam b:y-a. THE c. c: s_u(u, t_n, succ(l), y) & a <= c & b:c")] |
331 [("f3", "lam b:y-a. THE c. c: s(u) & a <= c & b:c")] |
335 (exI RS (lepoll_def RS def_imp_iff RS iffD2)) 1); |
332 (exI RS (lepoll_def RS def_imp_iff RS iffD2)) 1); |
336 by (resolve_tac [inj_def RS def_imp_eq RS ssubst] 1); |
333 by (resolve_tac [inj_def RS def_imp_eq RS ssubst] 1); |
337 by (rtac CollectI 1); |
334 by (rtac CollectI 1); |
338 by (rtac lam_type 1); |
335 by (rtac lam_type 1); |
339 by (forward_tac [ex1_superset_a RS theI] 1 |
336 by (forward_tac [ex1_superset_a RS theI] 1 |
342 by (Clarify_tac 1); |
339 by (Clarify_tac 1); |
343 by (rtac cons_eqE 1); |
340 by (rtac cons_eqE 1); |
344 by (Fast_tac 2); |
341 by (Fast_tac 2); |
345 by (dres_inst_tac [("A","THE c. ?P(c)"), ("C","y")] eq_imp_Int_eq 1); |
342 by (dres_inst_tac [("A","THE c. ?P(c)"), ("C","y")] eq_imp_Int_eq 1); |
346 by (asm_full_simp_tac (simpset() addsimps [the_eq_cons]) 1); |
343 by (asm_full_simp_tac (simpset() addsimps [the_eq_cons]) 1); |
347 qed "y_lepoll_subset_s_u"; |
344 qed "y_lepoll_subset_s"; |
348 |
345 |
349 |
346 |
350 (* ********************************************************************** *) |
347 (* ********************************************************************** *) |
351 (* back to the second part *) |
348 (* back to the second part *) |
352 (* ********************************************************************** *) |
349 (* ********************************************************************** *) |
353 |
350 |
354 Goal "w <= x Un y ==> w Int (x - {u}) = w - cons(u, w Int y)"; |
351 Goal "w <= x Un y ==> w Int (x - {u}) = w - cons(u, w Int y)"; |
355 by (Fast_tac 1); |
352 by (Fast_tac 1); |
356 qed "w_Int_eq_w_Diff"; |
353 qed "w_Int_eq_w_Diff"; |
357 |
354 |
358 Goal "[| w:{v:s_u(u, t_n, succ(l), y). a <= v}; \ |
355 Goal "[| w:{v:s(u). a <= v}; \ |
359 \ l eqpoll a; u : x; \ |
356 \ l eqpoll a; u : x; \ |
360 \ ALL v:s_u(u, t_n, succ(l), y). succ(l) eqpoll v Int y \ |
357 \ ALL v:s(u). succ(l) eqpoll v Int y \ |
361 \ |] ==> w Int (x - {u}) eqpoll m"; |
358 \ |] ==> w Int (x - {u}) eqpoll m"; |
362 by (etac CollectE 1); |
359 by (etac CollectE 1); |
363 by (stac w_Int_eq_w_Diff 1); |
360 by (stac w_Int_eq_w_Diff 1); |
364 by (fast_tac (claset() addSDs [s_u_subset RS subsetD, |
361 by (fast_tac (claset() addSDs [s_subset RS subsetD, |
365 includes_l RS subsetD]) 1); |
362 includes_l RS subsetD]) 1); |
366 by (fast_tac (claset() addSDs [bspec] |
363 by (fast_tac (claset() addSDs [bspec] |
367 addDs [s_u_subset RS subsetD, |
364 addDs [s_subset RS subsetD, includes_l RS subsetD] |
368 includes_l RS subsetD] |
365 addSEs [eqpoll_sym RS cons_eqpoll_succ RS eqpoll_sym, in_s_imp_u_in] |
369 addSEs [eqpoll_sym RS cons_eqpoll_succ RS eqpoll_sym, in_s_u_imp_u_in] |
|
370 addSIs [eqpoll_sum_imp_Diff_eqpoll]) 1); |
366 addSIs [eqpoll_sum_imp_Diff_eqpoll]) 1); |
371 qed "w_Int_eqpoll_m"; |
367 qed "w_Int_eqpoll_m"; |
372 |
368 |
373 (* ********************************************************************** *) |
369 (* ********************************************************************** *) |
374 (* 2. {v:s_u. a <= v} is less than or equipollent *) |
370 (* 2. {v:s(u). a <= v} is less than or equipollent *) |
375 (* to {v:Pow(x). v eqpoll n-k} *) |
371 (* to {v:Pow(x). v eqpoll n-k} *) |
376 (* ********************************************************************** *) |
372 (* ********************************************************************** *) |
377 |
373 |
378 Goal "x eqpoll m ==> x ~= 0"; |
374 Goal "x eqpoll m ==> x ~= 0"; |
379 by (cut_facts_tac [mpos] 1); |
375 by (cut_facts_tac [mpos] 1); |
381 addSDs [eqpoll_succ_imp_not_empty]) 1); |
377 addSDs [eqpoll_succ_imp_not_empty]) 1); |
382 qed "eqpoll_m_not_empty"; |
378 qed "eqpoll_m_not_empty"; |
383 |
379 |
384 Goal "[| z : xa Int (x - {u}); l eqpoll a; a <= y; u:x |] \ |
380 Goal "[| z : xa Int (x - {u}); l eqpoll a; a <= y; u:x |] \ |
385 \ ==> EX! w. w : t_n & cons(z, cons(u, a)) <= w"; |
381 \ ==> EX! w. w : t_n & cons(z, cons(u, a)) <= w"; |
386 by (cut_facts_tac [kpos] 1); |
382 by (rtac (all_ex RS bspec) 1); |
387 br (all_ex RS bspec) 1; |
383 by (rewtac k_def); |
388 by (fast_tac (claset() addSIs [cons_eqpoll_succ] addEs [eqpoll_sym]) 1); |
384 by (fast_tac (claset() addSIs [cons_eqpoll_succ] addEs [eqpoll_sym]) 1); |
389 qed "cons_cons_in"; |
385 qed "cons_cons_in"; |
390 |
386 |
391 Goal "[| ALL v:s_u(u, t_n, succ(l), y). succ(l) eqpoll v Int y; \ |
387 Goal "[| ALL v:s(u). succ(l) eqpoll v Int y; \ |
392 \ a <= y; l eqpoll a; u : x |] \ |
388 \ a <= y; l eqpoll a; u : x |] \ |
393 \ ==> {v:s_u(u, t_n, succ(l), y). a <= v} lepoll {v:Pow(x). v eqpoll m}"; |
389 \ ==> {v:s(u). a <= v} lepoll {v:Pow(x). v eqpoll m}"; |
394 by (res_inst_tac [("f3","lam w:{v:s_u(u, t_n, succ(l), y). a <= v}. \ |
390 by (res_inst_tac [("f3","lam w:{v:s(u). a <= v}. w Int (x - {u})")] |
395 \ w Int (x - {u})")] |
|
396 (exI RS (lepoll_def RS def_imp_iff RS iffD2)) 1); |
391 (exI RS (lepoll_def RS def_imp_iff RS iffD2)) 1); |
397 by (resolve_tac [inj_def RS def_imp_eq RS ssubst] 1); |
392 by (resolve_tac [inj_def RS def_imp_eq RS ssubst] 1); |
398 by (rtac CollectI 1); |
393 by (rtac CollectI 1); |
399 by (rtac lam_type 1); |
394 by (rtac lam_type 1); |
400 by (rtac CollectI 1); |
395 by (rtac CollectI 1); |
407 THEN REPEAT (assume_tac 1)); |
402 THEN REPEAT (assume_tac 1)); |
408 by (dresolve_tac [equalityD1 RS subsetD] 1 THEN (assume_tac 1)); |
403 by (dresolve_tac [equalityD1 RS subsetD] 1 THEN (assume_tac 1)); |
409 by (forward_tac [cons_cons_in] 1 THEN REPEAT (assume_tac 1)); |
404 by (forward_tac [cons_cons_in] 1 THEN REPEAT (assume_tac 1)); |
410 by (etac ex1_two_eq 1); |
405 by (etac ex1_two_eq 1); |
411 by (REPEAT (blast_tac |
406 by (REPEAT (blast_tac |
412 (claset() addDs [s_u_subset RS subsetD, in_s_u_imp_u_in]) 1)); |
407 (claset() addDs [s_subset RS subsetD, in_s_imp_u_in]) 1)); |
413 qed "subset_s_u_lepoll_w"; |
408 qed "subset_s_lepoll_w"; |
414 |
409 |
415 |
410 |
416 (* ********************************************************************** *) |
411 (* ********************************************************************** *) |
417 (* well_ord_subsets_lepoll_n *) |
412 (* well_ord_subsets_lepoll_n *) |
418 (* ********************************************************************** *) |
413 (* ********************************************************************** *) |
485 by (stac unique_superset2 1); |
480 by (stac unique_superset2 1); |
486 by (auto_tac (claset(), simpset() addsimps [Int_in_LL])); |
481 by (auto_tac (claset(), simpset() addsimps [Int_in_LL])); |
487 qed "in_LL_eq_Int"; |
482 qed "in_LL_eq_Int"; |
488 |
483 |
489 Goal "v : LL ==> (THE x. x : MM & v <= x) <= x Un y"; |
484 Goal "v : LL ==> (THE x. x : MM & v <= x) <= x Un y"; |
490 bd unique_superset1 1; |
485 by (dtac unique_superset1 1); |
491 bw MM_def; |
486 by (rewtac MM_def); |
492 by (fast_tac (claset() addSDs [unique_superset1, includes RS subsetD]) 1); |
487 by (fast_tac (claset() addSDs [unique_superset1, includes RS subsetD]) 1); |
493 qed "the_in_MM_subset"; |
488 qed "the_in_MM_subset"; |
494 |
489 |
495 Goalw [GG_def] "v : LL ==> GG ` v <= x"; |
490 Goalw [GG_def] "v : LL ==> GG ` v <= x"; |
496 by (forward_tac [the_in_MM_subset] 1); |
491 by (forward_tac [the_in_MM_subset] 1); |
501 |
496 |
502 Goal "n:nat ==> EX z. z<=y & n eqpoll z"; |
497 Goal "n:nat ==> EX z. z<=y & n eqpoll z"; |
503 by (etac nat_lepoll_imp_ex_eqpoll_n 1); |
498 by (etac nat_lepoll_imp_ex_eqpoll_n 1); |
504 by (resolve_tac [ordertype_eqpoll RS eqpoll_sym RS eqpoll_imp_lepoll |
499 by (resolve_tac [ordertype_eqpoll RS eqpoll_sym RS eqpoll_imp_lepoll |
505 RSN (2, lepoll_trans)] 1); |
500 RSN (2, lepoll_trans)] 1); |
506 br WO_R 2; |
501 by (rtac WO_R 2); |
507 by (fast_tac |
502 by (fast_tac |
508 (claset() delrules [notI] |
503 (claset() delrules [notI] |
509 addSIs [nat_le_infinite_Ord RS le_imp_lepoll] |
504 addSIs [nat_le_infinite_Ord RS le_imp_lepoll] |
510 addIs [Ord_ordertype, |
505 addIs [Ord_ordertype, |
511 ordertype_eqpoll RS eqpoll_imp_lepoll |
506 ordertype_eqpoll RS eqpoll_imp_lepoll |
512 RS lepoll_infinite]) 1); |
507 RS lepoll_infinite]) 1); |
513 qed "ex_subset_eqpoll_n"; |
508 qed "ex_subset_eqpoll_n"; |
514 |
509 |
515 |
510 |
516 Goal "u:x ==> EX v : s_u(u, t_n, k, y). succ(k) lepoll v Int y"; |
511 Goal "u:x ==> EX v : s(u). succ(k) lepoll v Int y"; |
517 by (rtac suppose_not 1); |
512 by (rtac ccontr 1); |
518 by (cut_facts_tac [all_ex, includes, kpos, lnat] 1); |
513 by (subgoal_tac "ALL v:s(u). k eqpoll v Int y" 1); |
519 by (hyp_subst_tac 1); |
514 by (full_simp_tac (simpset() addsimps [s_def]) 2); |
|
515 by (blast_tac (claset() addIs [succ_not_lepoll_imp_eqpoll]) 2); |
|
516 by (rewtac k_def); |
|
517 by (cut_facts_tac [all_ex, includes, lnat] 1); |
520 by (rtac (ex_subset_eqpoll_n RS exE) 1 THEN assume_tac 1); |
518 by (rtac (ex_subset_eqpoll_n RS exE) 1 THEN assume_tac 1); |
521 br (noLepoll RS notE) 1; |
519 by (rtac (noLepoll RS notE) 1); |
522 by (blast_tac (claset() addIs |
520 by (blast_tac (claset() addIs |
523 [[y_lepoll_subset_s_u, subset_s_u_lepoll_w] MRS lepoll_trans]) 1); |
521 [[y_lepoll_subset_s, subset_s_lepoll_w] MRS lepoll_trans]) 1); |
524 qed "exists_proper_in_s_u"; |
522 qed "exists_proper_in_s"; |
525 |
523 |
526 Goal "u:x ==> EX w:MM. u:w"; |
524 Goal "u:x ==> EX w:MM. u:w"; |
527 by (eresolve_tac [exists_proper_in_s_u RS bexE] 1); |
525 by (eresolve_tac [exists_proper_in_s RS bexE] 1); |
528 by (rewrite_goals_tac [MM_def, s_u_def]); |
526 by (rewrite_goals_tac [MM_def, s_def]); |
529 by (Fast_tac 1); |
527 by (Fast_tac 1); |
530 qed "exists_in_MM"; |
528 qed "exists_in_MM"; |
531 |
529 |
532 Goal "u:x ==> EX w:LL. u:GG`w"; |
530 Goal "u:x ==> EX w:LL. u:GG`w"; |
533 by (rtac (exists_in_MM RS bexE) 1); |
531 by (rtac (exists_in_MM RS bexE) 1); |
534 ba 1; |
532 by (assume_tac 1); |
535 by (rtac bexI 1); |
533 by (rtac bexI 1); |
536 by (etac Int_in_LL 2); |
534 by (etac Int_in_LL 2); |
537 by (rewtac GG_def); |
535 by (rewtac GG_def); |
538 by (asm_simp_tac (simpset() addsimps [Int_in_LL]) 1); |
536 by (asm_simp_tac (simpset() addsimps [Int_in_LL]) 1); |
539 by (stac unique_superset2 1); |
537 by (stac unique_superset2 1); |
545 \ (UN b<ordertype(LL,S). GG ` (converse(ordermap(LL,S)) ` b)) = x"; |
543 \ (UN b<ordertype(LL,S). GG ` (converse(ordermap(LL,S)) ` b)) = x"; |
546 by (rtac equalityI 1); |
544 by (rtac equalityI 1); |
547 by (rtac subsetI 1); |
545 by (rtac subsetI 1); |
548 by (etac OUN_E 1); |
546 by (etac OUN_E 1); |
549 by (resolve_tac [GG_subset RS subsetD] 1); |
547 by (resolve_tac [GG_subset RS subsetD] 1); |
550 ba 2; |
548 by (assume_tac 2); |
551 by (blast_tac (claset() addIs [ordermap_bij RS bij_converse_bij RS |
549 by (blast_tac (claset() addIs [ordermap_bij RS bij_converse_bij RS |
552 bij_is_fun RS apply_type, ltD]) 1); |
550 bij_is_fun RS apply_type, ltD]) 1); |
553 by (rtac subsetI 1); |
551 by (rtac subsetI 1); |
554 by (eresolve_tac [exists_in_LL RS bexE] 1); |
552 by (eresolve_tac [exists_in_LL RS bexE] 1); |
555 by (force_tac (claset() addIs [Ord_ordertype RSN (2, ltI), |
553 by (force_tac (claset() addIs [Ord_ordertype RSN (2, ltI), |