src/ZF/Epsilon.ML
changeset 5505 b0856ff6fc69
parent 5268 59ef39008514
child 5809 bacf85370ce0
equal deleted inserted replaced
5504:739b777e4355 5505:b0856ff6fc69
   287 by (rtac equalityI 1);
   287 by (rtac equalityI 1);
   288 by (rtac ([Transset_eclose, subset_refl] MRS eclose_least) 1);
   288 by (rtac ([Transset_eclose, subset_refl] MRS eclose_least) 1);
   289 by (rtac arg_subset_eclose 1);
   289 by (rtac arg_subset_eclose 1);
   290 qed "eclose_idem";
   290 qed "eclose_idem";
   291 
   291 
   292 (*Transfinite recursion for definitions based on the three cases of ordinals.
   292 (*Transfinite recursion for definitions based on the three cases of ordinals*)
   293 *)
       
   294 
   293 
   295 Goal "transrec2(0,a,b) = a";
   294 Goal "transrec2(0,a,b) = a";
   296 by (rtac (transrec2_def RS def_transrec RS trans) 1);
   295 by (rtac (transrec2_def RS def_transrec RS trans) 1);
   297 by (Simp_tac 1);
   296 by (Simp_tac 1);
   298 qed "transrec2_0";
   297 qed "transrec2_0";
   299 
   298 
   300 Goal "(THE j. i=j) = i";
   299 Goal "(THE j. i=j) = i";
   301 by (blast_tac (claset() addSIs [the_equality]) 1);
   300 by (Blast_tac 1);
   302 qed "THE_eq";
   301 qed "THE_eq";
   303 
   302 
   304 Goal "transrec2(succ(i),a,b) = b(i, transrec2(i,a,b))";
   303 Goal "transrec2(succ(i),a,b) = b(i, transrec2(i,a,b))";
   305 by (rtac (transrec2_def RS def_transrec RS trans) 1);
   304 by (rtac (transrec2_def RS def_transrec RS trans) 1);
   306 by (simp_tac (simpset() addsimps [succ_not_0, THE_eq, if_P]) 1);
   305 by (simp_tac (simpset() addsimps [succ_not_0, THE_eq, if_P]) 1);