src/ZF/WF.thy
changeset 47860 7371429c527d
parent 47810 2b6e55924af3
child 59180 85ec71012df8
     1.1 --- a/src/ZF/WF.thy	Sat Mar 17 12:00:11 2012 +0100
     1.2 +++ b/src/ZF/WF.thy	Sat Mar 17 12:36:11 2012 +0000
     1.3 @@ -57,7 +57,7 @@
     1.4  lemma wf_imp_wf_on: "wf(r) ==> wf[A](r)"
     1.5  by (unfold wf_def wf_on_def, force)
     1.6  
     1.7 -lemma wf_on_imp_wf: "[|wf[A](r); r \<subseteq> A*A|] ==> wf(r)";
     1.8 +lemma wf_on_imp_wf: "[|wf[A](r); r \<subseteq> A*A|] ==> wf(r)"
     1.9  by (simp add: wf_on_def subset_Int_iff)
    1.10  
    1.11  lemma wf_on_field_imp_wf: "wf[field(r)](r) ==> wf(r)"
    1.12 @@ -105,7 +105,7 @@
    1.13  
    1.14  text{*Consider the least @{term z} in @{term "domain(r)"} such that
    1.15    @{term "P(z)"} does not hold...*}
    1.16 -lemma wf_induct [induct set: wf]:
    1.17 +lemma wf_induct_raw:
    1.18      "[| wf(r);
    1.19          !!x.[| \<forall>y. <y,x>: r \<longrightarrow> P(y) |] ==> P(x) |]
    1.20       ==> P(a)"
    1.21 @@ -114,7 +114,7 @@
    1.22  apply blast
    1.23  done
    1.24  
    1.25 -lemmas wf_induct_rule = wf_induct [rule_format, induct set: wf]
    1.26 +lemmas wf_induct = wf_induct_raw [rule_format, consumes 1, case_names step, induct set: wf]
    1.27  
    1.28  text{*The form of this rule is designed to match @{text wfI}*}
    1.29  lemma wf_induct2:
    1.30 @@ -128,7 +128,7 @@
    1.31  lemma field_Int_square: "field(r \<inter> A*A) \<subseteq> A"
    1.32  by blast
    1.33  
    1.34 -lemma wf_on_induct [consumes 2, induct set: wf_on]:
    1.35 +lemma wf_on_induct_raw [consumes 2, induct set: wf_on]:
    1.36      "[| wf[A](r);  a \<in> A;
    1.37          !!x.[| x \<in> A;  \<forall>y\<in>A. <y,x>: r \<longrightarrow> P(y) |] ==> P(x)
    1.38       |]  ==>  P(a)"
    1.39 @@ -137,8 +137,8 @@
    1.40  apply (rule field_Int_square, blast)
    1.41  done
    1.42  
    1.43 -lemmas wf_on_induct_rule =
    1.44 -  wf_on_induct [rule_format, consumes 2, induct set: wf_on]
    1.45 +lemmas wf_on_induct =
    1.46 +  wf_on_induct_raw [rule_format, consumes 2, case_names step, induct set: wf_on]
    1.47  
    1.48  
    1.49  text{*If @{term r} allows well-founded induction
    1.50 @@ -297,6 +297,7 @@
    1.51   apply (rule lam_type [THEN restrict_type2])
    1.52    apply blast
    1.53   apply (blast dest: transD)
    1.54 +apply atomize
    1.55  apply (frule spec [THEN mp], assumption)
    1.56  apply (subgoal_tac "<xa,a1> \<in> r")
    1.57   apply (drule_tac x1 = xa in spec [THEN mp], assumption)