323 \ |] ==> EX k. h(x,y): Vfrom(A,k) & k<i |] ==> \ |
323 \ |] ==> EX k. h(x,y): Vfrom(A,k) & k<i |] ==> \ |
324 \ h(a,b) : Vfrom(A,i)"; |
324 \ h(a,b) : Vfrom(A,i)"; |
325 (*Infer that a, b occur at ordinals x,xa < i.*) |
325 (*Infer that a, b occur at ordinals x,xa < i.*) |
326 by (rtac ([aprem,limiti] MRS Limit_VfromE) 1); |
326 by (rtac ([aprem,limiti] MRS Limit_VfromE) 1); |
327 by (rtac ([bprem,limiti] MRS Limit_VfromE) 1); |
327 by (rtac ([bprem,limiti] MRS Limit_VfromE) 1); |
328 by (res_inst_tac [("j1", "x Un xa Un succ(1)")] (step RS exE) 1); |
328 by (res_inst_tac [("j1", "x Un xa Un 2")] (step RS exE) 1); |
329 by (DO_GOAL [etac conjE, etac Limit_VfromI, rtac limiti, atac] 5); |
329 by (DO_GOAL [etac conjE, etac Limit_VfromI, rtac limiti, atac] 5); |
330 by (etac (Vfrom_UnI2 RS Vfrom_UnI1) 4); |
330 by (etac (Vfrom_UnI2 RS Vfrom_UnI1) 4); |
331 by (etac (Vfrom_UnI1 RS Vfrom_UnI1) 3); |
331 by (etac (Vfrom_UnI1 RS Vfrom_UnI1) 3); |
332 by (rtac (succI1 RS UnI2) 2); |
332 by (rtac (succI1 RS UnI2) 2); |
333 by (REPEAT (ares_tac [limiti, Limit_has_0, Limit_has_succ, Un_least_lt] 1)); |
333 by (REPEAT (ares_tac [limiti, Limit_has_0, Limit_has_succ, Un_least_lt] 1)); |
449 |
449 |
450 goal Univ.thy "!!i. Ord(i) ==> rank(Vset(i)) = i"; |
450 goal Univ.thy "!!i. Ord(i) ==> rank(Vset(i)) = i"; |
451 by (rtac (rank RS ssubst) 1); |
451 by (rtac (rank RS ssubst) 1); |
452 by (rtac equalityI 1); |
452 by (rtac equalityI 1); |
453 by (safe_tac ZF_cs); |
453 by (safe_tac ZF_cs); |
454 by (EVERY' [wtac UN_I, |
454 by (EVERY' [rtac UN_I, |
455 etac (i_subset_Vfrom RS subsetD), |
455 etac (i_subset_Vfrom RS subsetD), |
456 etac (Ord_in_Ord RS rank_of_Ord RS ssubst), |
456 etac (Ord_in_Ord RS rank_of_Ord RS ssubst), |
457 assume_tac, |
457 assume_tac, |
458 rtac succI1] 3); |
458 rtac succI1] 3); |
459 by (REPEAT (eresolve_tac [asm_rl, VsetD RS ltD, Ord_trans] 1)); |
459 by (REPEAT (eresolve_tac [asm_rl, VsetD RS ltD, Ord_trans] 1)); |
589 goalw Univ.thy [univ_def] "1 : univ(A)"; |
589 goalw Univ.thy [univ_def] "1 : univ(A)"; |
590 by (rtac (Limit_nat RS one_in_VLimit) 1); |
590 by (rtac (Limit_nat RS one_in_VLimit) 1); |
591 qed "one_in_univ"; |
591 qed "one_in_univ"; |
592 |
592 |
593 (*unused!*) |
593 (*unused!*) |
594 goal Univ.thy "succ(1) : univ(A)"; |
594 goal Univ.thy "2 : univ(A)"; |
595 by (REPEAT (ares_tac [nat_into_univ, nat_0I, nat_succI] 1)); |
595 by (REPEAT (ares_tac [nat_into_univ, nat_0I, nat_succI] 1)); |
596 qed "two_in_univ"; |
596 qed "two_in_univ"; |
597 |
597 |
598 goalw Univ.thy [bool_def] "bool <= univ(A)"; |
598 goalw Univ.thy [bool_def] "bool <= univ(A)"; |
599 by (fast_tac (ZF_cs addSIs [zero_in_univ,one_in_univ]) 1); |
599 by (fast_tac (ZF_cs addSIs [zero_in_univ,one_in_univ]) 1); |