36 Goal "[| ALL y<x. ALL z<a. z<y | (EX Y: F(y). f(z)<=Y) \ |
36 Goal "[| ALL y<x. ALL z<a. z<y | (EX Y: F(y). f(z)<=Y) \ |
37 \ --> (EX! Y. Y:F(y) & f(z)<=Y); \ |
37 \ --> (EX! Y. Y:F(y) & f(z)<=Y); \ |
38 \ ALL i j. i le j --> F(i) <= F(j); i<x; j<x; z<a; \ |
38 \ ALL i j. i le j --> F(i) <= F(j); i<x; j<x; z<a; \ |
39 \ V: F(i); f(z)<=V; W:F(j); f(z)<=W |] \ |
39 \ V: F(i); f(z)<=V; W:F(j); f(z)<=W |] \ |
40 \ ==> V = W"; |
40 \ ==> V = W"; |
41 by (res_inst_tac [("j","j")] (lt_Ord RS (lt_Ord RSN (2, Ord_linear_le))) 1 |
41 by (res_inst_tac [("j","j")] ([lt_Ord, lt_Ord] MRS Ord_linear_le) 1 |
42 THEN (REPEAT (assume_tac 1))); |
42 THEN (REPEAT (assume_tac 1))); |
43 by (eresolve_tac [lemma3_1 RS sym] 1 THEN (REPEAT (assume_tac 1))); |
43 by (eresolve_tac [lemma3_1 RS sym] 1 THEN (REPEAT (assume_tac 1))); |
44 by (etac lemma3_1 1 THEN (REPEAT (assume_tac 1))); |
44 by (etac lemma3_1 1 THEN (REPEAT (assume_tac 1))); |
45 val lemma3 = result(); |
45 val lemma3 = result(); |
46 |
46 |
47 |
47 |
116 (* Case of finite ordinals *) |
116 (* Case of finite ordinals *) |
117 (* ********************************************************************** *) |
117 (* ********************************************************************** *) |
118 |
118 |
119 |
119 |
120 Goalw [lesspoll_def] |
120 Goalw [lesspoll_def] |
121 "!!X. [| Finite(X); ~Finite(a); Ord(a) |] ==> X lesspoll a"; |
121 "[| Finite(X); ~Finite(a); Ord(a) |] ==> X lesspoll a"; |
122 by (rtac conjI 1); |
122 by (rtac conjI 1); |
123 by (dresolve_tac [nat_le_infinite_Ord RS le_imp_lepoll] 1 |
123 by (dresolve_tac [nat_le_infinite_Ord RS le_imp_lepoll] 1 |
124 THEN (assume_tac 1)); |
124 THEN (assume_tac 1)); |
125 by (rewtac Finite_def); |
125 by (rewtac Finite_def); |
126 by (fast_tac (claset() addSEs [eqpoll_sym RS eqpoll_trans]) 2); |
126 by (fast_tac (claset() addSEs [eqpoll_sym RS eqpoll_trans]) 2); |
127 by (rtac lepoll_trans 1 THEN (assume_tac 2)); |
127 by (rtac lepoll_trans 1 THEN (assume_tac 2)); |
128 by (fast_tac (claset() addSEs [Ord_nat RSN (2, ltI) RS leI RS le_imp_subset RS |
128 by (fast_tac (claset() addSEs [Ord_nat RSN (2, ltI) RS leI RS le_imp_subset RS |
129 subset_imp_lepoll RSN (2, eqpoll_imp_lepoll RS lepoll_trans)]) 1); |
129 subset_imp_lepoll RSN (2, eqpoll_imp_lepoll RS lepoll_trans)]) 1); |
130 qed "Finite_lesspoll_infinite_Ord"; |
130 qed "Finite_lesspoll_infinite_Ord"; |
131 |
131 |
132 |
|
133 Goal "x:X ==> Union(X) = Union(X-{x}) Un x"; |
|
134 by (Fast_tac 1); |
|
135 qed "Union_eq_Un_Diff"; |
|
136 |
|
137 |
|
138 Goal "n:nat ==> ALL X. X eqpoll n --> (ALL x:X. Finite(x)) \ |
|
139 \ --> Finite(Union(X))"; |
|
140 by (induct_tac "n" 1); |
|
141 by (fast_tac (claset() addSDs [eqpoll_imp_lepoll RS lepoll_0_is_0] |
|
142 addSIs [nat_0I RS nat_into_Finite] addss (simpset())) 1); |
|
143 by (REPEAT (resolve_tac [allI, impI] 1)); |
|
144 by (resolve_tac [eqpoll_succ_imp_not_empty RS not_emptyE] 1 THEN (assume_tac 1)); |
|
145 by (res_inst_tac [("P","%z. Finite(z)")] (Union_eq_Un_Diff RS ssubst) 1 |
|
146 THEN (assume_tac 1)); |
|
147 by (rtac Finite_Un 1); |
|
148 by (Fast_tac 2); |
|
149 by (fast_tac (claset() addSIs [Diff_sing_eqpoll]) 1); |
|
150 qed "Finite_Union_lemma"; |
|
151 |
|
152 |
|
153 Goal "[| ALL x:X. Finite(x); Finite(X) |] ==> Finite(Union(X))"; |
|
154 by (eresolve_tac [Finite_def RS def_imp_iff RS iffD1 RS bexE] 1); |
|
155 by (dtac Finite_Union_lemma 1); |
|
156 by (Fast_tac 1); |
|
157 qed "Finite_Union"; |
|
158 |
|
159 |
|
160 Goalw [Finite_def] "[| x lepoll n; n:nat |] ==> Finite(x)"; |
|
161 by (fast_tac (claset() |
|
162 addEs [nat_into_Ord RSN (2, lepoll_imp_ex_le_eqpoll) RS exE, |
|
163 Ord_nat RSN (2, ltI) RSN (2, lt_trans1) RS ltD]) 1); |
|
164 qed "lepoll_nat_num_imp_Finite"; |
|
165 |
|
166 |
|
167 Goal "[| ALL x:X. x lepoll n & x <= T; well_ord(T, R); X lepoll b; \ |
132 Goal "[| ALL x:X. x lepoll n & x <= T; well_ord(T, R); X lepoll b; \ |
168 \ b<a; ~Finite(a); Card(a); n:nat |] \ |
133 \ b<a; ~Finite(a); Card(a); n:nat |] \ |
169 \ ==> Union(X) lesspoll a"; |
134 \ ==> Union(X) lesspoll a"; |
170 by (excluded_middle_tac "Finite(X)" 1); |
135 by (excluded_middle_tac "Finite(X)" 1); |
171 by (resolve_tac [Card_is_Ord RSN (3, Finite_lesspoll_infinite_Ord)] 2 |
136 by (resolve_tac [Card_is_Ord RSN (3, Finite_lesspoll_infinite_Ord)] 2 |
172 THEN (REPEAT (assume_tac 3))); |
137 THEN (REPEAT (assume_tac 3))); |
173 by (fast_tac (claset() addSEs [lepoll_nat_num_imp_Finite] |
138 by (fast_tac (claset() addSEs [lepoll_nat_imp_Finite] |
174 addSIs [Finite_Union]) 2); |
139 addSIs [Finite_Union]) 2); |
175 by (dresolve_tac [lt_Ord RSN (2, lepoll_imp_ex_le_eqpoll)] 1 THEN (assume_tac 1)); |
140 by (dresolve_tac [lt_Ord RSN (2, lepoll_imp_ex_le_eqpoll)] 1 THEN (assume_tac 1)); |
176 by (REPEAT (eresolve_tac [exE, conjE] 1)); |
141 by (REPEAT (eresolve_tac [exE, conjE] 1)); |
177 by (forward_tac [eqpoll_imp_lepoll RS lepoll_infinite] 1 THEN (assume_tac 1)); |
142 by (forward_tac [eqpoll_imp_lepoll RS lepoll_infinite] 1 THEN (assume_tac 1)); |
178 by (eresolve_tac [eqpoll_sym RS (eqpoll_def RS def_imp_iff RS iffD1) RS |
143 by (eresolve_tac [eqpoll_sym RS (eqpoll_def RS def_imp_iff RS iffD1) RS |
309 \ fa : bij(a, {Y: Pow(A). Y eqpoll succ(k)}) |] \ |
274 \ fa : bij(a, {Y: Pow(A). Y eqpoll succ(k)}) |] \ |
310 \ ==> A - Union(recfunAC16(f, fa, y, a)) - fa`y eqpoll a"; |
275 \ ==> A - Union(recfunAC16(f, fa, y, a)) - fa`y eqpoll a"; |
311 by (rtac dbl_Diff_eqpoll_Card 1 THEN (TRYALL assume_tac)); |
276 by (rtac dbl_Diff_eqpoll_Card 1 THEN (TRYALL assume_tac)); |
312 by (rtac Union_recfunAC16_lesspoll 1 THEN (REPEAT (assume_tac 1))); |
277 by (rtac Union_recfunAC16_lesspoll 1 THEN (REPEAT (assume_tac 1))); |
313 by (eresolve_tac [add_type RS nat_succI] 1 THEN (assume_tac 1)); |
278 by (eresolve_tac [add_type RS nat_succI] 1 THEN (assume_tac 1)); |
314 by (resolve_tac [nat_succI RSN (2, bexI RS (Finite_def RS def_imp_iff RS |
279 by (resolve_tac [nat_succI RSN |
315 iffD2)) RS (Card_is_Ord RSN (3, Finite_lesspoll_infinite_Ord))] 1 |
280 (2, bexI RS (Finite_def RS def_imp_iff RS iffD2)) RS |
|
281 (Card_is_Ord RSN (3, Finite_lesspoll_infinite_Ord))] 1 |
316 THEN (TRYALL assume_tac)); |
282 THEN (TRYALL assume_tac)); |
317 by (eresolve_tac [ltD RSN (2, bij_is_fun RS apply_type) RS CollectE] 1 |
283 by (eresolve_tac [ltD RSN (2, bij_is_fun RS apply_type) RS CollectE] 1 |
318 THEN (TRYALL assume_tac)); |
284 THEN (TRYALL assume_tac)); |
319 qed "dbl_Diff_eqpoll"; |
285 qed "dbl_Diff_eqpoll"; |
320 |
286 |
321 (* back to the proof *) |
287 (* back to the proof *) |
322 |
288 |
323 val disj_Un_eqpoll_nat_sum = disj_Un_eqpoll_sum RS ( |
289 val disj_Un_eqpoll_nat_sum = |
324 sum_eqpoll_cong RSN (2, |
290 [disj_Un_eqpoll_sum, sum_eqpoll_cong, nat_sum_eqpoll_sum] MRS |
325 nat_sum_eqpoll_sum RSN (3, |
291 (eqpoll_trans RS eqpoll_trans) |> standard; |
326 eqpoll_trans RS eqpoll_trans))) |> standard; |
|
327 |
292 |
328 |
293 |
329 Goal "[| x : Pow(A - B - fa`i); x eqpoll m; \ |
294 Goal "[| x : Pow(A - B - fa`i); x eqpoll m; \ |
330 \ fa : bij(a, {x: Pow(A) . x eqpoll k}); i<a; k:nat; m:nat |] \ |
295 \ fa : bij(a, {x: Pow(A) . x eqpoll k}); i<a; k:nat; m:nat |] \ |
331 \ ==> fa ` i Un x : {x: Pow(A) . x eqpoll k #+ m}"; |
296 \ ==> fa ` i Un x : {x: Pow(A) . x eqpoll k #+ m}"; |
332 by (rtac CollectI 1); |
297 by (rtac CollectI 1); |
333 by (fast_tac (claset() addSIs [PowD RS (PowD RSN (2, Un_least RS PowI))] |
298 by (fast_tac (claset() |
334 addSEs [ltD RSN (2, bij_is_fun RS apply_type RS CollectE)]) 1); |
299 addSEs [ltD RSN (2, bij_is_fun RS apply_type RS CollectE)]) 1); |
335 by (rtac disj_Un_eqpoll_nat_sum 1 |
300 by (rtac disj_Un_eqpoll_nat_sum 1 |
336 THEN (TRYALL assume_tac)); |
301 THEN (TRYALL assume_tac)); |
337 by (fast_tac (claset() addSIs [equals0I]) 1); |
302 by (fast_tac (claset() addSIs [equals0I]) 1); |
338 by (eresolve_tac [ltD RSN (2, bij_is_fun RS apply_type RS CollectE)] 1 |
303 by (eresolve_tac [ltD RSN (2, bij_is_fun RS apply_type RS CollectE)] 1 |