equal
deleted
inserted
replaced
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 |