src/ZF/ex/Ramsey.ML
changeset 760 f0200e91b272
parent 694 c7d592f6312a
child 782 200a16083201
equal deleted inserted replaced
759:e0b172d01c37 760:f0200e91b272
    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!!*)