equal
deleted
inserted
replaced
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"; |