42 |
42 |
43 (*** Atleast ***) |
43 (*** Atleast ***) |
44 |
44 |
45 goalw Ramsey.thy [Atleast_def, inj_def, Pi_def, function_def] "Atleast(0,A)"; |
45 goalw Ramsey.thy [Atleast_def, inj_def, Pi_def, function_def] "Atleast(0,A)"; |
46 by (fast_tac ZF_cs 1); |
46 by (fast_tac ZF_cs 1); |
47 val Atleast0 = result(); |
47 qed "Atleast0"; |
48 |
48 |
49 val [major] = goalw Ramsey.thy [Atleast_def] |
49 val [major] = goalw Ramsey.thy [Atleast_def] |
50 "Atleast(succ(m),A) ==> EX x:A. Atleast(m, A-{x})"; |
50 "Atleast(succ(m),A) ==> EX x:A. Atleast(m, A-{x})"; |
51 by (rtac (major RS exE) 1); |
51 by (rtac (major RS exE) 1); |
52 by (rtac bexI 1); |
52 by (rtac bexI 1); |
53 by (etac (inj_is_fun RS apply_type) 2); |
53 by (etac (inj_is_fun RS apply_type) 2); |
54 by (rtac succI1 2); |
54 by (rtac succI1 2); |
55 by (rtac exI 1); |
55 by (rtac exI 1); |
56 by (etac inj_succ_restrict 1); |
56 by (etac inj_succ_restrict 1); |
57 val Atleast_succD = result(); |
57 qed "Atleast_succD"; |
58 |
58 |
59 val major::prems = goalw Ramsey.thy [Atleast_def] |
59 val major::prems = goalw Ramsey.thy [Atleast_def] |
60 "[| Atleast(n,A); A<=B |] ==> Atleast(n,B)"; |
60 "[| Atleast(n,A); A<=B |] ==> Atleast(n,B)"; |
61 by (rtac (major RS exE) 1); |
61 by (rtac (major RS exE) 1); |
62 by (rtac exI 1); |
62 by (rtac exI 1); |
63 by (etac inj_weaken_type 1); |
63 by (etac inj_weaken_type 1); |
64 by (resolve_tac prems 1); |
64 by (resolve_tac prems 1); |
65 val Atleast_superset = result(); |
65 qed "Atleast_superset"; |
66 |
66 |
67 val prems = goalw Ramsey.thy [Atleast_def,succ_def] |
67 val prems = goalw Ramsey.thy [Atleast_def,succ_def] |
68 "[| Atleast(m,B); b~: B |] ==> Atleast(succ(m), cons(b,B))"; |
68 "[| Atleast(m,B); b~: B |] ==> Atleast(succ(m), cons(b,B))"; |
69 by (cut_facts_tac prems 1); |
69 by (cut_facts_tac prems 1); |
70 by (etac exE 1); |
70 by (etac exE 1); |
71 by (rtac exI 1); |
71 by (rtac exI 1); |
72 by (etac inj_extend 1); |
72 by (etac inj_extend 1); |
73 by (rtac mem_not_refl 1); |
73 by (rtac mem_not_refl 1); |
74 by (assume_tac 1); |
74 by (assume_tac 1); |
75 val Atleast_succI = result(); |
75 qed "Atleast_succI"; |
76 |
76 |
77 val prems = goal Ramsey.thy |
77 val prems = goal Ramsey.thy |
78 "[| Atleast(m, B-{x}); x: B |] ==> Atleast(succ(m), B)"; |
78 "[| Atleast(m, B-{x}); x: B |] ==> Atleast(succ(m), B)"; |
79 by (cut_facts_tac prems 1); |
79 by (cut_facts_tac prems 1); |
80 by (etac (Atleast_succI RS Atleast_superset) 1); |
80 by (etac (Atleast_succI RS Atleast_superset) 1); |
81 by (fast_tac ZF_cs 1); |
81 by (fast_tac ZF_cs 1); |
82 by (fast_tac ZF_cs 1); |
82 by (fast_tac ZF_cs 1); |
83 val Atleast_Diff_succI = result(); |
83 qed "Atleast_Diff_succI"; |
84 |
84 |
85 (*** Main Cardinality Lemma ***) |
85 (*** Main Cardinality Lemma ***) |
86 |
86 |
87 (*The #-succ(0) strengthens the original theorem statement, but precisely |
87 (*The #-succ(0) strengthens the original theorem statement, but precisely |
88 the same proof could be used!!*) |
88 the same proof could be used!!*) |