197 by (rtac beta 1); |
197 by (rtac beta 1); |
198 by (assume_tac 1); |
198 by (assume_tac 1); |
199 by (rewtac increasing_def); |
199 by (rewtac increasing_def); |
200 by (rtac CollectI 1); |
200 by (rtac CollectI 1); |
201 by (rtac lam_type 1); |
201 by (rtac lam_type 1); |
202 by (asm_simp_tac (simpset() setloop split_tac [expand_if]) 1); |
202 by (asm_simp_tac (simpset() addsplits [split_if]) 1); |
203 by (fast_tac (claset() addSIs [super_subset_chain RS subsetD, |
203 by (fast_tac (claset() addSIs [super_subset_chain RS subsetD, |
204 chain_subset_Pow RS subsetD, |
204 chain_subset_Pow RS subsetD, |
205 choice_super]) 1); |
205 choice_super]) 1); |
206 (*Now, verify that it increases*) |
206 (*Now, verify that it increases*) |
207 by (asm_simp_tac (simpset() addsimps [Pow_iff, subset_refl] |
207 by (asm_simp_tac (simpset() addsimps [Pow_iff, subset_refl] |
208 setloop split_tac [expand_if]) 1); |
208 addsplits [split_if]) 1); |
209 by Safe_tac; |
209 by Safe_tac; |
210 by (dtac choice_super 1); |
210 by (dtac choice_super 1); |
211 by (REPEAT (assume_tac 1)); |
211 by (REPEAT (assume_tac 1)); |
212 by (rewtac super_def); |
212 by (rewtac super_def); |
213 by (Blast_tac 1); |
213 by (Blast_tac 1); |
223 \ |] ==> c: chain(S)"; |
223 \ |] ==> c: chain(S)"; |
224 by (etac TFin_induct 1); |
224 by (etac TFin_induct 1); |
225 by (asm_simp_tac |
225 by (asm_simp_tac |
226 (simpset() addsimps [chain_subset_Pow RS subsetD, |
226 (simpset() addsimps [chain_subset_Pow RS subsetD, |
227 choice_super RS (super_subset_chain RS subsetD)] |
227 choice_super RS (super_subset_chain RS subsetD)] |
228 setloop split_tac [expand_if]) 1); |
228 addsplits [split_if]) 1); |
229 by (rewtac chain_def); |
229 by (rewtac chain_def); |
230 by (rtac CollectI 1 THEN Blast_tac 1); |
230 by (rtac CollectI 1 THEN Blast_tac 1); |
231 by Safe_tac; |
231 by Safe_tac; |
232 by (res_inst_tac [("m1","B"), ("n1","Ba")] (TFin_subset_linear RS disjE) 1); |
232 by (res_inst_tac [("m1","B"), ("n1","Ba")] (TFin_subset_linear RS disjE) 1); |
233 by (ALLGOALS Fast_tac); |
233 by (ALLGOALS Fast_tac); |
248 by (assume_tac 2); |
248 by (assume_tac 2); |
249 by (rtac refl 2); |
249 by (rtac refl 2); |
250 by (asm_full_simp_tac |
250 by (asm_full_simp_tac |
251 (simpset() addsimps [subset_refl RS TFin_UnionI RS |
251 (simpset() addsimps [subset_refl RS TFin_UnionI RS |
252 (TFin.dom_subset RS subsetD)] |
252 (TFin.dom_subset RS subsetD)] |
253 setloop split_tac [expand_if]) 1); |
253 addsplits [split_if]) 1); |
254 by (eresolve_tac [choice_not_equals RS notE] 1); |
254 by (eresolve_tac [choice_not_equals RS notE] 1); |
255 by (REPEAT (assume_tac 1)); |
255 by (REPEAT (assume_tac 1)); |
256 qed "Hausdorff"; |
256 qed "Hausdorff"; |
257 |
257 |
258 |
258 |
357 by (rtac lam_type 1); |
357 by (rtac lam_type 1); |
358 (*Verify that it increases*) |
358 (*Verify that it increases*) |
359 by (rtac allI 2); |
359 by (rtac allI 2); |
360 by (rtac impI 2); |
360 by (rtac impI 2); |
361 by (asm_simp_tac (simpset() addsimps [Pow_iff, subset_consI, subset_refl] |
361 by (asm_simp_tac (simpset() addsimps [Pow_iff, subset_consI, subset_refl] |
362 setloop split_tac [expand_if]) 2); |
362 addsplits [split_if]) 2); |
363 (*Type checking is surprisingly hard!*) |
363 (*Type checking is surprisingly hard!*) |
364 by (asm_simp_tac (simpset() addsimps [Pow_iff, cons_subset_iff, subset_refl] |
364 by (asm_simp_tac (simpset() addsimps [Pow_iff, cons_subset_iff, subset_refl] |
365 setloop split_tac [expand_if]) 1); |
365 addsplits [split_if]) 1); |
366 by (blast_tac (claset() addSIs [choice_Diff RS DiffD1]) 1); |
366 by (blast_tac (claset() addSIs [choice_Diff RS DiffD1]) 1); |
367 qed "Zermelo_next_exists"; |
367 qed "Zermelo_next_exists"; |
368 |
368 |
369 |
369 |
370 (*The construction of the injection*) |
370 (*The construction of the injection*) |
390 by (asm_simp_tac |
390 by (asm_simp_tac |
391 (simpset() delsimps [Union_iff] |
391 (simpset() delsimps [Union_iff] |
392 addsimps [Collect_subset RS TFin_UnionI RS TFin_is_subset, |
392 addsimps [Collect_subset RS TFin_UnionI RS TFin_is_subset, |
393 Pow_iff, cons_subset_iff, subset_refl, |
393 Pow_iff, cons_subset_iff, subset_refl, |
394 choice_Diff RS DiffD2] |
394 choice_Diff RS DiffD2] |
395 setloop split_tac [expand_if]) 2); |
395 addsplits [split_if]) 2); |
396 by (subgoal_tac "x : next ` Union({y: TFin(S,next). x~: y})" 1); |
396 by (subgoal_tac "x : next ` Union({y: TFin(S,next). x~: y})" 1); |
397 by (blast_tac (subset_cs addSIs [Collect_subset RS TFin_UnionI, TFin_nextI]) 2); |
397 by (blast_tac (subset_cs addSIs [Collect_subset RS TFin_UnionI, TFin_nextI]) 2); |
398 (*End of the lemmas!*) |
398 (*End of the lemmas!*) |
399 by (asm_full_simp_tac |
399 by (asm_full_simp_tac |
400 (simpset() addsimps [Collect_subset RS TFin_UnionI RS TFin_is_subset, |
400 (simpset() addsimps [Collect_subset RS TFin_UnionI RS TFin_is_subset, |
401 Pow_iff, cons_subset_iff, subset_refl] |
401 Pow_iff, cons_subset_iff, subset_refl] |
402 setloop split_tac [expand_if]) 1); |
402 addsplits [split_if]) 1); |
403 by (REPEAT (eresolve_tac [asm_rl, consE, sym, notE] 1)); |
403 by (REPEAT (eresolve_tac [asm_rl, consE, sym, notE] 1)); |
404 qed "choice_imp_injection"; |
404 qed "choice_imp_injection"; |
405 |
405 |
406 (*The wellordering theorem*) |
406 (*The wellordering theorem*) |
407 Goal "EX r. well_ord(S,r)"; |
407 Goal "EX r. well_ord(S,r)"; |