equal
deleted
inserted
replaced
511 \ h(a) = H(a, lam x: Vset(rank(a)). h(x))"; |
511 \ h(a) = H(a, lam x: Vset(rank(a)). h(x))"; |
512 by (rewtac rew); |
512 by (rewtac rew); |
513 by (rtac Vrec 1); |
513 by (rtac Vrec 1); |
514 qed "def_Vrec"; |
514 qed "def_Vrec"; |
515 |
515 |
|
516 (*NOT SUITABLE FOR REWRITING: recursive!*) |
|
517 Goalw [Vrecursor_def] |
|
518 "Vrecursor(H,a) = H(lam x:Vset(rank(a)). Vrecursor(H,x), a)"; |
|
519 by (stac transrec 1); |
|
520 by (simp_tac (simpset() addsimps [Ord_rank, Ord_succ, VsetD RS ltD RS beta, |
|
521 VsetI RS beta, le_refl]) 1); |
|
522 qed "Vrecursor"; |
|
523 |
|
524 (*This form avoids giant explosions in proofs. NOTE USE OF == *) |
|
525 Goal "h == Vrecursor(H) ==> h(a) = H(lam x: Vset(rank(a)). h(x), a)"; |
|
526 by (Asm_simp_tac 1); |
|
527 by (rtac Vrecursor 1); |
|
528 qed "def_Vrecursor"; |
|
529 |
516 |
530 |
517 (*** univ(A) ***) |
531 (*** univ(A) ***) |
518 |
532 |
519 Goalw [univ_def] "A<=B ==> univ(A) <= univ(B)"; |
533 Goalw [univ_def] "A<=B ==> univ(A) <= univ(B)"; |
520 by (etac Vfrom_mono 1); |
534 by (etac Vfrom_mono 1); |