# HG changeset patch # User huffman # Date 1177176752 -7200 # Node ID 116c1d6b4026a8ae3c9696919b82c170426c3c73 # Parent 2a3840aa2ffdaf835bdea482ec0a3fc03be00436 faster proof of wf_eq_minimal diff -r 2a3840aa2ffd -r 116c1d6b4026 src/HOL/Wellfounded_Recursion.thy --- a/src/HOL/Wellfounded_Recursion.thy Sat Apr 21 11:07:45 2007 +0200 +++ b/src/HOL/Wellfounded_Recursion.thy Sat Apr 21 19:32:32 2007 +0200 @@ -122,8 +122,18 @@ by (unfold wf_def, blast dest: spec [of _ "%x. x\Q \ (\z\Q. \y. (y,z) \ r \ y\Q)"]) next - assume "\Q x. x \ Q \ (\z\Q. \y. (y, z) \ r \ y \ Q)" - thus "wf r" by (unfold wf_def, force) + assume 1: "\Q x. x \ Q \ (\z\Q. \y. (y, z) \ r \ y \ Q)" + show "wf r" + proof (rule wfUNIVI) + fix P :: "'a \ bool" and x + assume 2: "\x. (\y. (y, x) \ r \ P y) \ P x" + let ?Q = "{x. \ P x}" + have "x \ ?Q \ (\z\?Q. \y. (y, z) \ r \ y \ ?Q)" + by (rule 1 [THEN spec, THEN spec]) + hence "\ P x \ (\z. \ P z \ (\y. (y, z) \ r \ P y))" by simp + with 2 have "\ P x \ (\z. \ P z \ P z)" by fast + thus "P x" by simp + qed qed lemmas wfP_eq_minimal = wf_eq_minimal [to_pred]