src/ZF/Ordinal.ML
changeset 5147 825877190618
parent 5143 b94cd208f073
child 5321 f8848433d240
equal deleted inserted replaced
5146:1ea751ae62b2 5147:825877190618
    21 qed "Transset_iff_Union_succ";
    21 qed "Transset_iff_Union_succ";
    22 
    22 
    23 (** Consequences of downwards closure **)
    23 (** Consequences of downwards closure **)
    24 
    24 
    25 Goalw [Transset_def]
    25 Goalw [Transset_def]
    26     "!!C a b. [| Transset(C); {a,b}: C |] ==> a:C & b: C";
    26     "[| Transset(C); {a,b}: C |] ==> a:C & b: C";
    27 by (Blast_tac 1);
    27 by (Blast_tac 1);
    28 qed "Transset_doubleton_D";
    28 qed "Transset_doubleton_D";
    29 
    29 
    30 val [prem1,prem2] = goalw Ordinal.thy [Pair_def]
    30 val [prem1,prem2] = goalw Ordinal.thy [Pair_def]
    31     "[| Transset(C); <a,b>: C |] ==> a:C & b: C";
    31     "[| Transset(C); <a,b>: C |] ==> a:C & b: C";
    50 Goalw [Transset_def] "Transset(0)";
    50 Goalw [Transset_def] "Transset(0)";
    51 by (Blast_tac 1);
    51 by (Blast_tac 1);
    52 qed "Transset_0";
    52 qed "Transset_0";
    53 
    53 
    54 Goalw [Transset_def]
    54 Goalw [Transset_def]
    55     "!!i j. [| Transset(i);  Transset(j) |] ==> Transset(i Un j)";
    55     "[| Transset(i);  Transset(j) |] ==> Transset(i Un j)";
    56 by (Blast_tac 1);
    56 by (Blast_tac 1);
    57 qed "Transset_Un";
    57 qed "Transset_Un";
    58 
    58 
    59 Goalw [Transset_def]
    59 Goalw [Transset_def]
    60     "!!i j. [| Transset(i);  Transset(j) |] ==> Transset(i Int j)";
    60     "[| Transset(i);  Transset(j) |] ==> Transset(i Int j)";
    61 by (Blast_tac 1);
    61 by (Blast_tac 1);
    62 qed "Transset_Int";
    62 qed "Transset_Int";
    63 
    63 
    64 Goalw [Transset_def] "Transset(i) ==> Transset(succ(i))";
    64 Goalw [Transset_def] "Transset(i) ==> Transset(succ(i))";
    65 by (Blast_tac 1);
    65 by (Blast_tac 1);
   341             REPEAT o assume_tac]);
   341             REPEAT o assume_tac]);
   342 qed "wf_Memrel";
   342 qed "wf_Memrel";
   343 
   343 
   344 (*Transset(i) does not suffice, though ALL j:i.Transset(j) does*)
   344 (*Transset(i) does not suffice, though ALL j:i.Transset(j) does*)
   345 Goalw [Ord_def, Transset_def, trans_def]
   345 Goalw [Ord_def, Transset_def, trans_def]
   346     "!!i. Ord(i) ==> trans(Memrel(i))";
   346     "Ord(i) ==> trans(Memrel(i))";
   347 by (Blast_tac 1);
   347 by (Blast_tac 1);
   348 qed "trans_Memrel";
   348 qed "trans_Memrel";
   349 
   349 
   350 (*If Transset(A) then Memrel(A) internalizes the membership relation below A*)
   350 (*If Transset(A) then Memrel(A) internalizes the membership relation below A*)
   351 Goalw [Transset_def]
   351 Goalw [Transset_def]
   352     "!!A. Transset(A) ==> <a,b> : Memrel(A) <-> a:b & b:A";
   352     "Transset(A) ==> <a,b> : Memrel(A) <-> a:b & b:A";
   353 by (Blast_tac 1);
   353 by (Blast_tac 1);
   354 qed "Transset_Memrel_iff";
   354 qed "Transset_Memrel_iff";
   355 
   355 
   356 
   356 
   357 (*** Transfinite induction ***)
   357 (*** Transfinite induction ***)
   652 Goalw [Limit_def] "[| Limit(i);  j<i |] ==> succ(j) < i";
   652 Goalw [Limit_def] "[| Limit(i);  j<i |] ==> succ(j) < i";
   653 by (Blast_tac 1);
   653 by (Blast_tac 1);
   654 qed "Limit_has_succ";
   654 qed "Limit_has_succ";
   655 
   655 
   656 Goalw [Limit_def]
   656 Goalw [Limit_def]
   657     "!!i. [| 0<i;  ALL y. succ(y) ~= i |] ==> Limit(i)";
   657     "[| 0<i;  ALL y. succ(y) ~= i |] ==> Limit(i)";
   658 by (safe_tac subset_cs);
   658 by (safe_tac subset_cs);
   659 by (rtac (not_le_iff_lt RS iffD1) 2);
   659 by (rtac (not_le_iff_lt RS iffD1) 2);
   660 by (blast_tac le_cs 4);
   660 by (blast_tac le_cs 4);
   661 by (REPEAT (eresolve_tac [asm_rl, ltE, Ord_succ] 1));
   661 by (REPEAT (eresolve_tac [asm_rl, ltE, Ord_succ] 1));
   662 qed "non_succ_LimitI";
   662 qed "non_succ_LimitI";