src/ZF/Univ.ML
changeset 828 03d7bfa70289
parent 803 4c8333ab3eae
child 853 a4b286dfdd6f
equal deleted inserted replaced
827:aa332949ce1a 828:03d7bfa70289
   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);