src/ZF/WF.ML
changeset 9883 c1c8647af477
parent 9180 3bda56c0d70d
child 9907 473a6604da94
equal deleted inserted replaced
9882:b96a26593532 9883:c1c8647af477
   329 \        wfrec[A](r,a,H) = H(a, lam x: (r-``{a}) Int A. wfrec[A](r,x,H))";
   329 \        wfrec[A](r,a,H) = H(a, lam x: (r-``{a}) Int A. wfrec[A](r,x,H))";
   330 by (etac (wfrec RS trans) 1);
   330 by (etac (wfrec RS trans) 1);
   331 by (asm_simp_tac (simpset() addsimps [vimage_Int_square, cons_subset_iff]) 1);
   331 by (asm_simp_tac (simpset() addsimps [vimage_Int_square, cons_subset_iff]) 1);
   332 qed "wfrec_on";
   332 qed "wfrec_on";
   333 
   333 
       
   334 (*----------------------------------------------------------------------------
       
   335  * Minimal-element characterization of well-foundedness
       
   336  *---------------------------------------------------------------------------*)
       
   337 
       
   338 Goalw [wf_def] "wf(r) ==> x:Q --> (EX z:Q. ALL y. <y,z>:r --> y~:Q)";
       
   339 by (dtac spec 1);
       
   340 by (Blast_tac 1);
       
   341 val lemma1 = result();
       
   342 
       
   343 Goalw [wf_def]
       
   344      "(ALL Q x. x:Q --> (EX z:Q. ALL y. <y,z>:r --> y~:Q)) ==> wf(r)";
       
   345 by (Clarify_tac 1);
       
   346 by (Blast_tac 1);
       
   347 val lemma2 = result();
       
   348 
       
   349 Goal "wf(r) <-> (ALL Q x. x:Q --> (EX z:Q. ALL y. <y,z>:r --> y~:Q))";
       
   350 by (blast_tac (claset() addSIs [lemma1, lemma2]) 1);
       
   351 qed "wf_eq_minimal";
       
   352