src/ZF/Induct/Acc.thy
changeset 46822 95f1e700b712
parent 35762 af3ff2ba4c54
child 58623 2db1df2c8467
equal deleted inserted replaced
46821:ff6b0c1087f2 46822:95f1e700b712
    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