# HG changeset patch # User wenzelm # Date 1147821820 -7200 # Node ID 95ac857276e1e45b6b882fa2e225c7be652c988b # Parent 6afaf300cb785fbe6a4df9c0cc4bd0548a39670d tuned source/document; diff -r 6afaf300cb78 -r 95ac857276e1 src/HOL/Accessible_Part.thy --- a/src/HOL/Accessible_Part.thy Tue May 16 21:34:06 2006 +0200 +++ b/src/HOL/Accessible_Part.thy Wed May 17 01:23:40 2006 +0200 @@ -76,48 +76,42 @@ done -(* Smaller relations have bigger accessible parts: *) +text {* Smaller relations have bigger accessible parts: *} + lemma acc_subset: - assumes sub:"R1 \ R2" + assumes sub: "R1 \ R2" shows "acc R2 \ acc R1" proof fix x assume "x \ acc R2" - thus "x \ acc R1" - proof (induct x) -- "acc-induction" + then show "x \ acc R1" + proof (induct x) fix x assume ih: "\y. (y, x) \ R2 \ y \ acc R1" - with sub show "x \ acc R1" by (blast intro:accI) qed qed +text {* This is a generalized induction theorem that works on + subsets of the accessible part. *} -(* This is a generalized induction theorem that works on - subsets of the accessible part. *) lemma acc_subset_induct: assumes subset: "D \ acc R" - assumes dcl: "\x z. \x \ D; (z, x)\R\ \ z \ D" - - assumes "x \ D" - assumes istep: "\x. \x \ D; (\z. (z, x)\R \ P z)\ \ P x" -shows "P x" + and dcl: "\x z. \x \ D; (z, x)\R\ \ z \ D" + and "x \ D" + and istep: "\x. \x \ D; (\z. (z, x)\R \ P z)\ \ P x" + shows "P x" proof - from `x \ D` and subset have "x \ acc R" .. - - thus "P x" using `x \ D` + then show "P x" using `x \ D` proof (induct x) fix x assume "x \ D" and "\y. (y, x) \ R \ y \ D \ P y" - with dcl and istep show "P x" by blast qed qed - - - end