author | desharna |
Thu, 18 Jul 2024 10:43:55 +0200 | |
changeset 80573 | e9e023381a2d |
parent 76987 | 4c275405faae |
permissions | -rw-r--r-- |
12560 | 1 |
(* Title: ZF/Induct/Acc.thy |
12088 | 2 |
Author: Lawrence C Paulson, Cambridge University Computer Laboratory |
3 |
Copyright 1994 University of Cambridge |
|
12610 | 4 |
*) |
12088 | 5 |
|
60770 | 6 |
section \<open>The accessible part of a relation\<close> |
12088 | 7 |
|
65449
c82e63b11b8b
clarified main ZF.thy / ZFC.thy, and avoid name clash with global HOL/Main.thy;
wenzelm
parents:
61798
diff
changeset
|
8 |
theory Acc imports ZF begin |
12088 | 9 |
|
60770 | 10 |
text \<open> |
76987 | 11 |
Inductive definition of \<open>acc(r)\<close>; see \<^cite>\<open>"paulin-tlca"\<close>. |
60770 | 12 |
\<close> |
12610 | 13 |
|
12088 | 14 |
consts |
76215
a642599ffdea
More syntactic cleanup. LaTeX markup working
paulson <lp15@cam.ac.uk>
parents:
76213
diff
changeset
|
15 |
acc :: "i \<Rightarrow> i" |
12088 | 16 |
|
17 |
inductive |
|
12610 | 18 |
domains "acc(r)" \<subseteq> "field(r)" |
12560 | 19 |
intros |
76213
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69593
diff
changeset
|
20 |
vimage: "\<lbrakk>r-``{a}: Pow(acc(r)); a \<in> field(r)\<rbrakk> \<Longrightarrow> a \<in> acc(r)" |
12088 | 21 |
monos Pow_mono |
22 |
||
60770 | 23 |
text \<open> |
69593 | 24 |
The introduction rule must require \<^prop>\<open>a \<in> field(r)\<close>, |
61798 | 25 |
otherwise \<open>acc(r)\<close> would be a proper class! |
12560 | 26 |
|
12610 | 27 |
\medskip |
28 |
The intended introduction rule: |
|
60770 | 29 |
\<close> |
12610 | 30 |
|
76215
a642599ffdea
More syntactic cleanup. LaTeX markup working
paulson <lp15@cam.ac.uk>
parents:
76213
diff
changeset
|
31 |
lemma accI: "\<lbrakk>\<And>b. \<langle>b,a\<rangle>:r \<Longrightarrow> b \<in> acc(r); a \<in> field(r)\<rbrakk> \<Longrightarrow> a \<in> acc(r)" |
12610 | 32 |
by (blast intro: acc.intros) |
12560 | 33 |
|
76215
a642599ffdea
More syntactic cleanup. LaTeX markup working
paulson <lp15@cam.ac.uk>
parents:
76213
diff
changeset
|
34 |
lemma acc_downward: "\<lbrakk>b \<in> acc(r); \<langle>a,b\<rangle>: r\<rbrakk> \<Longrightarrow> a \<in> acc(r)" |
12610 | 35 |
by (erule acc.cases) blast |
12560 | 36 |
|
18414 | 37 |
lemma acc_induct [consumes 1, case_names vimage, induct set: acc]: |
76213
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69593
diff
changeset
|
38 |
"\<lbrakk>a \<in> acc(r); |
76215
a642599ffdea
More syntactic cleanup. LaTeX markup working
paulson <lp15@cam.ac.uk>
parents:
76213
diff
changeset
|
39 |
\<And>x. \<lbrakk>x \<in> acc(r); \<forall>y. \<langle>y,x\<rangle>:r \<longrightarrow> P(y)\<rbrakk> \<Longrightarrow> P(x) |
76213
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69593
diff
changeset
|
40 |
\<rbrakk> \<Longrightarrow> P(a)" |
12610 | 41 |
by (erule acc.induct) (blast intro: acc.intros) |
12560 | 42 |
|
43 |
lemma wf_on_acc: "wf[acc(r)](r)" |
|
12610 | 44 |
apply (rule wf_onI2) |
45 |
apply (erule acc_induct) |
|
46 |
apply fast |
|
47 |
done |
|
12560 | 48 |
|
12610 | 49 |
lemma acc_wfI: "field(r) \<subseteq> acc(r) \<Longrightarrow> wf(r)" |
50 |
by (erule wf_on_acc [THEN wf_on_subset_A, THEN wf_on_field_imp_wf]) |
|
12560 | 51 |
|
76213
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69593
diff
changeset
|
52 |
lemma acc_wfD: "wf(r) \<Longrightarrow> field(r) \<subseteq> acc(r)" |
12610 | 53 |
apply (rule subsetI) |
54 |
apply (erule wf_induct2, assumption) |
|
55 |
apply (blast intro: accI)+ |
|
56 |
done |
|
12560 | 57 |
|
46822
95f1e700b712
mathematical symbols for Isabelle/ZF example theories
paulson
parents:
35762
diff
changeset
|
58 |
lemma wf_acc_iff: "wf(r) \<longleftrightarrow> field(r) \<subseteq> acc(r)" |
12610 | 59 |
by (rule iffI, erule acc_wfD, erule acc_wfI) |
12560 | 60 |
|
12088 | 61 |
end |