equal
deleted
inserted
replaced
34 lemma acc_downward: "[| b \<in> acc(r); <a,b>: r |] ==> a \<in> acc(r)" |
34 lemma acc_downward: "[| b \<in> acc(r); <a,b>: r |] ==> a \<in> acc(r)" |
35 by (erule acc.cases) blast |
35 by (erule acc.cases) blast |
36 |
36 |
37 lemma acc_induct [consumes 1, case_names vimage, induct set: acc]: |
37 lemma acc_induct [consumes 1, case_names vimage, induct set: acc]: |
38 "[| a \<in> acc(r); |
38 "[| a \<in> acc(r); |
39 !!x. [| x \<in> acc(r); \<forall>y. <y,x>:r --> P(y) |] ==> P(x) |
39 !!x. [| x \<in> acc(r); \<forall>y. <y,x>:r \<longrightarrow> P(y) |] ==> P(x) |
40 |] ==> P(a)" |
40 |] ==> P(a)" |
41 by (erule acc.induct) (blast intro: acc.intros) |
41 by (erule acc.induct) (blast intro: acc.intros) |
42 |
42 |
43 lemma wf_on_acc: "wf[acc(r)](r)" |
43 lemma wf_on_acc: "wf[acc(r)](r)" |
44 apply (rule wf_onI2) |
44 apply (rule wf_onI2) |
53 apply (rule subsetI) |
53 apply (rule subsetI) |
54 apply (erule wf_induct2, assumption) |
54 apply (erule wf_induct2, assumption) |
55 apply (blast intro: accI)+ |
55 apply (blast intro: accI)+ |
56 done |
56 done |
57 |
57 |
58 lemma wf_acc_iff: "wf(r) <-> field(r) \<subseteq> acc(r)" |
58 lemma wf_acc_iff: "wf(r) \<longleftrightarrow> field(r) \<subseteq> acc(r)" |
59 by (rule iffI, erule acc_wfD, erule acc_wfI) |
59 by (rule iffI, erule acc_wfD, erule acc_wfI) |
60 |
60 |
61 end |
61 end |