src/ZF/Univ.ML
changeset 6053 8a1059aa01f0
parent 5479 5a5dfb0f0d7d
child 6071 1b2392ac5752
equal deleted inserted replaced
6052:4f093e55beeb 6053:8a1059aa01f0
   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);