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); |