author | wenzelm |
Tue, 20 Jun 2023 16:48:47 +0200 | |
changeset 78181 | c2fbe48e9df4 |
parent 76217 | 8655344f1cf6 |
child 80917 | 2a77bc3b4eac |
permissions | -rw-r--r-- |
1478 | 1 |
(* Title: ZF/Order.thy |
2 |
Author: Lawrence C Paulson, Cambridge University Computer Laboratory |
|
435 | 3 |
Copyright 1994 University of Cambridge |
4 |
||
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
5 |
Results from the book "Set Theory: an Introduction to Independence Proofs" |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
6 |
by Kenneth Kunen. Chapter 1, section 6. |
27703
cb6c513922e0
Definitions and some lemmas for reflexive orderings.
ballarin
parents:
24893
diff
changeset
|
7 |
Additional definitions and lemmas for reflexive orders. |
435 | 8 |
*) |
9 |
||
60770 | 10 |
section\<open>Partial and Total Orderings: Basic Definitions and Properties\<close> |
13356 | 11 |
|
16417 | 12 |
theory Order imports WF Perm begin |
786 | 13 |
|
61798 | 14 |
text \<open>We adopt the following convention: \<open>ord\<close> is used for |
15 |
strict orders and \<open>order\<close> is used for their reflexive |
|
60770 | 16 |
counterparts.\<close> |
27703
cb6c513922e0
Definitions and some lemmas for reflexive orderings.
ballarin
parents:
24893
diff
changeset
|
17 |
|
24893 | 18 |
definition |
76215
a642599ffdea
More syntactic cleanup. LaTeX markup working
paulson <lp15@cam.ac.uk>
parents:
76214
diff
changeset
|
19 |
part_ord :: "[i,i]\<Rightarrow>o" (*Strict partial ordering*) where |
76214 | 20 |
"part_ord(A,r) \<equiv> irrefl(A,r) \<and> trans[A](r)" |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
21 |
|
24893 | 22 |
definition |
76215
a642599ffdea
More syntactic cleanup. LaTeX markup working
paulson <lp15@cam.ac.uk>
parents:
76214
diff
changeset
|
23 |
linear :: "[i,i]\<Rightarrow>o" (*Strict total ordering*) where |
a642599ffdea
More syntactic cleanup. LaTeX markup working
paulson <lp15@cam.ac.uk>
parents:
76214
diff
changeset
|
24 |
"linear(A,r) \<equiv> (\<forall>x\<in>A. \<forall>y\<in>A. \<langle>x,y\<rangle>:r | x=y | \<langle>y,x\<rangle>:r)" |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
25 |
|
24893 | 26 |
definition |
76215
a642599ffdea
More syntactic cleanup. LaTeX markup working
paulson <lp15@cam.ac.uk>
parents:
76214
diff
changeset
|
27 |
tot_ord :: "[i,i]\<Rightarrow>o" (*Strict total ordering*) where |
76214 | 28 |
"tot_ord(A,r) \<equiv> part_ord(A,r) \<and> linear(A,r)" |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
29 |
|
24893 | 30 |
definition |
27703
cb6c513922e0
Definitions and some lemmas for reflexive orderings.
ballarin
parents:
24893
diff
changeset
|
31 |
"preorder_on(A, r) \<equiv> refl(A, r) \<and> trans[A](r)" |
cb6c513922e0
Definitions and some lemmas for reflexive orderings.
ballarin
parents:
24893
diff
changeset
|
32 |
|
cb6c513922e0
Definitions and some lemmas for reflexive orderings.
ballarin
parents:
24893
diff
changeset
|
33 |
definition (*Partial ordering*) |
cb6c513922e0
Definitions and some lemmas for reflexive orderings.
ballarin
parents:
24893
diff
changeset
|
34 |
"partial_order_on(A, r) \<equiv> preorder_on(A, r) \<and> antisym(r)" |
cb6c513922e0
Definitions and some lemmas for reflexive orderings.
ballarin
parents:
24893
diff
changeset
|
35 |
|
cb6c513922e0
Definitions and some lemmas for reflexive orderings.
ballarin
parents:
24893
diff
changeset
|
36 |
abbreviation |
cb6c513922e0
Definitions and some lemmas for reflexive orderings.
ballarin
parents:
24893
diff
changeset
|
37 |
"Preorder(r) \<equiv> preorder_on(field(r), r)" |
cb6c513922e0
Definitions and some lemmas for reflexive orderings.
ballarin
parents:
24893
diff
changeset
|
38 |
|
cb6c513922e0
Definitions and some lemmas for reflexive orderings.
ballarin
parents:
24893
diff
changeset
|
39 |
abbreviation |
cb6c513922e0
Definitions and some lemmas for reflexive orderings.
ballarin
parents:
24893
diff
changeset
|
40 |
"Partial_order(r) \<equiv> partial_order_on(field(r), r)" |
cb6c513922e0
Definitions and some lemmas for reflexive orderings.
ballarin
parents:
24893
diff
changeset
|
41 |
|
cb6c513922e0
Definitions and some lemmas for reflexive orderings.
ballarin
parents:
24893
diff
changeset
|
42 |
definition |
76215
a642599ffdea
More syntactic cleanup. LaTeX markup working
paulson <lp15@cam.ac.uk>
parents:
76214
diff
changeset
|
43 |
well_ord :: "[i,i]\<Rightarrow>o" (*Well-ordering*) where |
76214 | 44 |
"well_ord(A,r) \<equiv> tot_ord(A,r) \<and> wf[A](r)" |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
45 |
|
24893 | 46 |
definition |
76215
a642599ffdea
More syntactic cleanup. LaTeX markup working
paulson <lp15@cam.ac.uk>
parents:
76214
diff
changeset
|
47 |
mono_map :: "[i,i,i,i]\<Rightarrow>i" (*Order-preserving maps*) where |
76213
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
48 |
"mono_map(A,r,B,s) \<equiv> |
76215
a642599ffdea
More syntactic cleanup. LaTeX markup working
paulson <lp15@cam.ac.uk>
parents:
76214
diff
changeset
|
49 |
{f \<in> A->B. \<forall>x\<in>A. \<forall>y\<in>A. \<langle>x,y\<rangle>:r \<longrightarrow> <f`x,f`y>:s}" |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
50 |
|
24893 | 51 |
definition |
76215
a642599ffdea
More syntactic cleanup. LaTeX markup working
paulson <lp15@cam.ac.uk>
parents:
76214
diff
changeset
|
52 |
ord_iso :: "[i,i,i,i]\<Rightarrow>i" (\<open>(\<langle>_, _\<rangle> \<cong>/ \<langle>_, _\<rangle>)\<close> 51) (*Order isomorphisms*) where |
76213
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
53 |
"\<langle>A,r\<rangle> \<cong> \<langle>B,s\<rangle> \<equiv> |
76215
a642599ffdea
More syntactic cleanup. LaTeX markup working
paulson <lp15@cam.ac.uk>
parents:
76214
diff
changeset
|
54 |
{f \<in> bij(A,B). \<forall>x\<in>A. \<forall>y\<in>A. \<langle>x,y\<rangle>:r \<longleftrightarrow> <f`x,f`y>:s}" |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
55 |
|
24893 | 56 |
definition |
76215
a642599ffdea
More syntactic cleanup. LaTeX markup working
paulson <lp15@cam.ac.uk>
parents:
76214
diff
changeset
|
57 |
pred :: "[i,i,i]\<Rightarrow>i" (*Set of predecessors*) where |
a642599ffdea
More syntactic cleanup. LaTeX markup working
paulson <lp15@cam.ac.uk>
parents:
76214
diff
changeset
|
58 |
"pred(A,x,r) \<equiv> {y \<in> A. \<langle>y,x\<rangle>:r}" |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
59 |
|
24893 | 60 |
definition |
76215
a642599ffdea
More syntactic cleanup. LaTeX markup working
paulson <lp15@cam.ac.uk>
parents:
76214
diff
changeset
|
61 |
ord_iso_map :: "[i,i,i,i]\<Rightarrow>i" (*Construction for linearity theorem*) where |
76213
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
62 |
"ord_iso_map(A,r,B,s) \<equiv> |
76215
a642599ffdea
More syntactic cleanup. LaTeX markup working
paulson <lp15@cam.ac.uk>
parents:
76214
diff
changeset
|
63 |
\<Union>x\<in>A. \<Union>y\<in>B. \<Union>f \<in> ord_iso(pred(A,x,r), r, pred(B,y,s), s). {\<langle>x,y\<rangle>}" |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
64 |
|
24893 | 65 |
definition |
76215
a642599ffdea
More syntactic cleanup. LaTeX markup working
paulson <lp15@cam.ac.uk>
parents:
76214
diff
changeset
|
66 |
first :: "[i, i, i] \<Rightarrow> o" where |
a642599ffdea
More syntactic cleanup. LaTeX markup working
paulson <lp15@cam.ac.uk>
parents:
76214
diff
changeset
|
67 |
"first(u, X, R) \<equiv> u \<in> X \<and> (\<forall>v\<in>X. v\<noteq>u \<longrightarrow> \<langle>u,v\<rangle> \<in> R)" |
2469 | 68 |
|
60770 | 69 |
subsection\<open>Immediate Consequences of the Definitions\<close> |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
70 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
71 |
lemma part_ord_Imp_asym: |
76213
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
72 |
"part_ord(A,r) \<Longrightarrow> asym(r \<inter> A*A)" |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
73 |
by (unfold part_ord_def irrefl_def trans_on_def asym_def, blast) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
74 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
75 |
lemma linearE: |
76213
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
76 |
"\<lbrakk>linear(A,r); x \<in> A; y \<in> A; |
76215
a642599ffdea
More syntactic cleanup. LaTeX markup working
paulson <lp15@cam.ac.uk>
parents:
76214
diff
changeset
|
77 |
\<langle>x,y\<rangle>:r \<Longrightarrow> P; x=y \<Longrightarrow> P; \<langle>y,x\<rangle>:r \<Longrightarrow> P\<rbrakk> |
76213
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
78 |
\<Longrightarrow> P" |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
79 |
by (simp add: linear_def, blast) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
80 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
81 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
82 |
(** General properties of well_ord **) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
83 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
84 |
lemma well_ordI: |
76213
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
85 |
"\<lbrakk>wf[A](r); linear(A,r)\<rbrakk> \<Longrightarrow> well_ord(A,r)" |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
86 |
apply (simp add: irrefl_def part_ord_def tot_ord_def |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
87 |
trans_on_def well_ord_def wf_on_not_refl) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
88 |
apply (fast elim: linearE wf_on_asym wf_on_chain3) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
89 |
done |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
90 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
91 |
lemma well_ord_is_wf: |
76213
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
92 |
"well_ord(A,r) \<Longrightarrow> wf[A](r)" |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
93 |
by (unfold well_ord_def, safe) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
94 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
95 |
lemma well_ord_is_trans_on: |
76213
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
96 |
"well_ord(A,r) \<Longrightarrow> trans[A](r)" |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
97 |
by (unfold well_ord_def tot_ord_def part_ord_def, safe) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
98 |
|
76213
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
99 |
lemma well_ord_is_linear: "well_ord(A,r) \<Longrightarrow> linear(A,r)" |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
100 |
by (unfold well_ord_def tot_ord_def, blast) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
101 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
102 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
103 |
(** Derived rules for pred(A,x,r) **) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
104 |
|
76215
a642599ffdea
More syntactic cleanup. LaTeX markup working
paulson <lp15@cam.ac.uk>
parents:
76214
diff
changeset
|
105 |
lemma pred_iff: "y \<in> pred(A,x,r) \<longleftrightarrow> \<langle>y,x\<rangle>:r \<and> y \<in> A" |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
106 |
by (unfold pred_def, blast) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
107 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
108 |
lemmas predI = conjI [THEN pred_iff [THEN iffD2]] |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
109 |
|
76215
a642599ffdea
More syntactic cleanup. LaTeX markup working
paulson <lp15@cam.ac.uk>
parents:
76214
diff
changeset
|
110 |
lemma predE: "\<lbrakk>y \<in> pred(A,x,r); \<lbrakk>y \<in> A; \<langle>y,x\<rangle>:r\<rbrakk> \<Longrightarrow> P\<rbrakk> \<Longrightarrow> P" |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
111 |
by (simp add: pred_def) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
112 |
|
46820 | 113 |
lemma pred_subset_under: "pred(A,x,r) \<subseteq> r -`` {x}" |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
114 |
by (simp add: pred_def, blast) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
115 |
|
46820 | 116 |
lemma pred_subset: "pred(A,x,r) \<subseteq> A" |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
117 |
by (simp add: pred_def, blast) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
118 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
119 |
lemma pred_pred_eq: |
46820 | 120 |
"pred(pred(A,x,r), y, r) = pred(A,x,r) \<inter> pred(A,y,r)" |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
121 |
by (simp add: pred_def, blast) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
122 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
123 |
lemma trans_pred_pred_eq: |
76215
a642599ffdea
More syntactic cleanup. LaTeX markup working
paulson <lp15@cam.ac.uk>
parents:
76214
diff
changeset
|
124 |
"\<lbrakk>trans[A](r); \<langle>y,x\<rangle>:r; x \<in> A; y \<in> A\<rbrakk> |
76213
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
125 |
\<Longrightarrow> pred(pred(A,x,r), y, r) = pred(A,y,r)" |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
126 |
by (unfold trans_on_def pred_def, blast) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
127 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
128 |
|
60770 | 129 |
subsection\<open>Restricting an Ordering's Domain\<close> |
13356 | 130 |
|
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
131 |
(** The ordering's properties hold over all subsets of its domain |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
132 |
[including initial segments of the form pred(A,x,r) **) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
133 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
134 |
(*Note: a relation s such that s<=r need not be a partial ordering*) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
135 |
lemma part_ord_subset: |
76213
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
136 |
"\<lbrakk>part_ord(A,r); B<=A\<rbrakk> \<Longrightarrow> part_ord(B,r)" |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
137 |
by (unfold part_ord_def irrefl_def trans_on_def, blast) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
138 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
139 |
lemma linear_subset: |
76213
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
140 |
"\<lbrakk>linear(A,r); B<=A\<rbrakk> \<Longrightarrow> linear(B,r)" |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
141 |
by (unfold linear_def, blast) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
142 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
143 |
lemma tot_ord_subset: |
76213
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
144 |
"\<lbrakk>tot_ord(A,r); B<=A\<rbrakk> \<Longrightarrow> tot_ord(B,r)" |
76216
9fc34f76b4e8
getting rid of apply (unfold ...)
paulson <lp15@cam.ac.uk>
parents:
76215
diff
changeset
|
145 |
unfolding tot_ord_def |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
146 |
apply (fast elim!: part_ord_subset linear_subset) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
147 |
done |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
148 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
149 |
lemma well_ord_subset: |
76213
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
150 |
"\<lbrakk>well_ord(A,r); B<=A\<rbrakk> \<Longrightarrow> well_ord(B,r)" |
76216
9fc34f76b4e8
getting rid of apply (unfold ...)
paulson <lp15@cam.ac.uk>
parents:
76215
diff
changeset
|
151 |
unfolding well_ord_def |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
152 |
apply (fast elim!: tot_ord_subset wf_on_subset_A) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
153 |
done |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
154 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
155 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
156 |
(** Relations restricted to a smaller domain, by Krzysztof Grabczewski **) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
157 |
|
46821
ff6b0c1087f2
Using mathematical notation for <-> and cardinal arithmetic
paulson
parents:
46820
diff
changeset
|
158 |
lemma irrefl_Int_iff: "irrefl(A,r \<inter> A*A) \<longleftrightarrow> irrefl(A,r)" |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
159 |
by (unfold irrefl_def, blast) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
160 |
|
46821
ff6b0c1087f2
Using mathematical notation for <-> and cardinal arithmetic
paulson
parents:
46820
diff
changeset
|
161 |
lemma trans_on_Int_iff: "trans[A](r \<inter> A*A) \<longleftrightarrow> trans[A](r)" |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
162 |
by (unfold trans_on_def, blast) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
163 |
|
46821
ff6b0c1087f2
Using mathematical notation for <-> and cardinal arithmetic
paulson
parents:
46820
diff
changeset
|
164 |
lemma part_ord_Int_iff: "part_ord(A,r \<inter> A*A) \<longleftrightarrow> part_ord(A,r)" |
76216
9fc34f76b4e8
getting rid of apply (unfold ...)
paulson <lp15@cam.ac.uk>
parents:
76215
diff
changeset
|
165 |
unfolding part_ord_def |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
166 |
apply (simp add: irrefl_Int_iff trans_on_Int_iff) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
167 |
done |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
168 |
|
46821
ff6b0c1087f2
Using mathematical notation for <-> and cardinal arithmetic
paulson
parents:
46820
diff
changeset
|
169 |
lemma linear_Int_iff: "linear(A,r \<inter> A*A) \<longleftrightarrow> linear(A,r)" |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
170 |
by (unfold linear_def, blast) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
171 |
|
46821
ff6b0c1087f2
Using mathematical notation for <-> and cardinal arithmetic
paulson
parents:
46820
diff
changeset
|
172 |
lemma tot_ord_Int_iff: "tot_ord(A,r \<inter> A*A) \<longleftrightarrow> tot_ord(A,r)" |
76216
9fc34f76b4e8
getting rid of apply (unfold ...)
paulson <lp15@cam.ac.uk>
parents:
76215
diff
changeset
|
173 |
unfolding tot_ord_def |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
174 |
apply (simp add: part_ord_Int_iff linear_Int_iff) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
175 |
done |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
176 |
|
46821
ff6b0c1087f2
Using mathematical notation for <-> and cardinal arithmetic
paulson
parents:
46820
diff
changeset
|
177 |
lemma wf_on_Int_iff: "wf[A](r \<inter> A*A) \<longleftrightarrow> wf[A](r)" |
24893 | 178 |
apply (unfold wf_on_def wf_def, fast) (*10 times faster than blast!*) |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
179 |
done |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
180 |
|
46821
ff6b0c1087f2
Using mathematical notation for <-> and cardinal arithmetic
paulson
parents:
46820
diff
changeset
|
181 |
lemma well_ord_Int_iff: "well_ord(A,r \<inter> A*A) \<longleftrightarrow> well_ord(A,r)" |
76216
9fc34f76b4e8
getting rid of apply (unfold ...)
paulson <lp15@cam.ac.uk>
parents:
76215
diff
changeset
|
182 |
unfolding well_ord_def |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
183 |
apply (simp add: tot_ord_Int_iff wf_on_Int_iff) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
184 |
done |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
185 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
186 |
|
60770 | 187 |
subsection\<open>Empty and Unit Domains\<close> |
13356 | 188 |
|
13701 | 189 |
(*The empty relation is well-founded*) |
190 |
lemma wf_on_any_0: "wf[A](0)" |
|
191 |
by (simp add: wf_on_def wf_def, fast) |
|
192 |
||
60770 | 193 |
subsubsection\<open>Relations over the Empty Set\<close> |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
194 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
195 |
lemma irrefl_0: "irrefl(0,r)" |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
196 |
by (unfold irrefl_def, blast) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
197 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
198 |
lemma trans_on_0: "trans[0](r)" |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
199 |
by (unfold trans_on_def, blast) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
200 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
201 |
lemma part_ord_0: "part_ord(0,r)" |
76216
9fc34f76b4e8
getting rid of apply (unfold ...)
paulson <lp15@cam.ac.uk>
parents:
76215
diff
changeset
|
202 |
unfolding part_ord_def |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
203 |
apply (simp add: irrefl_0 trans_on_0) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
204 |
done |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
205 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
206 |
lemma linear_0: "linear(0,r)" |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
207 |
by (unfold linear_def, blast) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
208 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
209 |
lemma tot_ord_0: "tot_ord(0,r)" |
76216
9fc34f76b4e8
getting rid of apply (unfold ...)
paulson <lp15@cam.ac.uk>
parents:
76215
diff
changeset
|
210 |
unfolding tot_ord_def |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
211 |
apply (simp add: part_ord_0 linear_0) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
212 |
done |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
213 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
214 |
lemma wf_on_0: "wf[0](r)" |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
215 |
by (unfold wf_on_def wf_def, blast) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
216 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
217 |
lemma well_ord_0: "well_ord(0,r)" |
76216
9fc34f76b4e8
getting rid of apply (unfold ...)
paulson <lp15@cam.ac.uk>
parents:
76215
diff
changeset
|
218 |
unfolding well_ord_def |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
219 |
apply (simp add: tot_ord_0 wf_on_0) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
220 |
done |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
221 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
222 |
|
60770 | 223 |
subsubsection\<open>The Empty Relation Well-Orders the Unit Set\<close> |
13701 | 224 |
|
60770 | 225 |
text\<open>by Grabczewski\<close> |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
226 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
227 |
lemma tot_ord_unit: "tot_ord({a},0)" |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
228 |
by (simp add: irrefl_def trans_on_def part_ord_def linear_def tot_ord_def) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
229 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
230 |
lemma well_ord_unit: "well_ord({a},0)" |
76216
9fc34f76b4e8
getting rid of apply (unfold ...)
paulson <lp15@cam.ac.uk>
parents:
76215
diff
changeset
|
231 |
unfolding well_ord_def |
13701 | 232 |
apply (simp add: tot_ord_unit wf_on_any_0) |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
233 |
done |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
234 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
235 |
|
60770 | 236 |
subsection\<open>Order-Isomorphisms\<close> |
13356 | 237 |
|
60770 | 238 |
text\<open>Suppes calls them "similarities"\<close> |
13356 | 239 |
|
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
240 |
(** Order-preserving (monotone) maps **) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
241 |
|
76213
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
242 |
lemma mono_map_is_fun: "f \<in> mono_map(A,r,B,s) \<Longrightarrow> f \<in> A->B" |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
243 |
by (simp add: mono_map_def) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
244 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
245 |
lemma mono_map_is_inj: |
76213
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
246 |
"\<lbrakk>linear(A,r); wf[B](s); f \<in> mono_map(A,r,B,s)\<rbrakk> \<Longrightarrow> f \<in> inj(A,B)" |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
247 |
apply (unfold mono_map_def inj_def, clarify) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
248 |
apply (erule_tac x=w and y=x in linearE, assumption+) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
249 |
apply (force intro: apply_type dest: wf_on_not_refl)+ |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
250 |
done |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
251 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
252 |
lemma ord_isoI: |
76213
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
253 |
"\<lbrakk>f \<in> bij(A, B); |
76215
a642599ffdea
More syntactic cleanup. LaTeX markup working
paulson <lp15@cam.ac.uk>
parents:
76214
diff
changeset
|
254 |
\<And>x y. \<lbrakk>x \<in> A; y \<in> A\<rbrakk> \<Longrightarrow> \<langle>x, y\<rangle> \<in> r \<longleftrightarrow> <f`x, f`y> \<in> s\<rbrakk> |
76213
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
255 |
\<Longrightarrow> f \<in> ord_iso(A,r,B,s)" |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
256 |
by (simp add: ord_iso_def) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
257 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
258 |
lemma ord_iso_is_mono_map: |
76213
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
259 |
"f \<in> ord_iso(A,r,B,s) \<Longrightarrow> f \<in> mono_map(A,r,B,s)" |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
260 |
apply (simp add: ord_iso_def mono_map_def) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
261 |
apply (blast dest!: bij_is_fun) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
262 |
done |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
263 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
264 |
lemma ord_iso_is_bij: |
76213
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
265 |
"f \<in> ord_iso(A,r,B,s) \<Longrightarrow> f \<in> bij(A,B)" |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
266 |
by (simp add: ord_iso_def) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
267 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
268 |
(*Needed? But ord_iso_converse is!*) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
269 |
lemma ord_iso_apply: |
76215
a642599ffdea
More syntactic cleanup. LaTeX markup working
paulson <lp15@cam.ac.uk>
parents:
76214
diff
changeset
|
270 |
"\<lbrakk>f \<in> ord_iso(A,r,B,s); \<langle>x,y\<rangle>: r; x \<in> A; y \<in> A\<rbrakk> \<Longrightarrow> <f`x, f`y> \<in> s" |
13611 | 271 |
by (simp add: ord_iso_def) |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
272 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
273 |
lemma ord_iso_converse: |
76215
a642599ffdea
More syntactic cleanup. LaTeX markup working
paulson <lp15@cam.ac.uk>
parents:
76214
diff
changeset
|
274 |
"\<lbrakk>f \<in> ord_iso(A,r,B,s); \<langle>x,y\<rangle>: s; x \<in> B; y \<in> B\<rbrakk> |
76213
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
275 |
\<Longrightarrow> <converse(f) ` x, converse(f) ` y> \<in> r" |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
276 |
apply (simp add: ord_iso_def, clarify) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
277 |
apply (erule bspec [THEN bspec, THEN iffD2]) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
278 |
apply (erule asm_rl bij_converse_bij [THEN bij_is_fun, THEN apply_type])+ |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
279 |
apply (auto simp add: right_inverse_bij) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
280 |
done |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
281 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
282 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
283 |
(** Symmetry and Transitivity Rules **) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
284 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
285 |
(*Reflexivity of similarity*) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
286 |
lemma ord_iso_refl: "id(A): ord_iso(A,r,A,r)" |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
287 |
by (rule id_bij [THEN ord_isoI], simp) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
288 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
289 |
(*Symmetry of similarity*) |
76213
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
290 |
lemma ord_iso_sym: "f \<in> ord_iso(A,r,B,s) \<Longrightarrow> converse(f): ord_iso(B,s,A,r)" |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
291 |
apply (simp add: ord_iso_def) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
292 |
apply (auto simp add: right_inverse_bij bij_converse_bij |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
293 |
bij_is_fun [THEN apply_funtype]) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
294 |
done |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
295 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
296 |
(*Transitivity of similarity*) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
297 |
lemma mono_map_trans: |
76213
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
298 |
"\<lbrakk>g \<in> mono_map(A,r,B,s); f \<in> mono_map(B,s,C,t)\<rbrakk> |
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
299 |
\<Longrightarrow> (f O g): mono_map(A,r,C,t)" |
76216
9fc34f76b4e8
getting rid of apply (unfold ...)
paulson <lp15@cam.ac.uk>
parents:
76215
diff
changeset
|
300 |
unfolding mono_map_def |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
301 |
apply (auto simp add: comp_fun) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
302 |
done |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
303 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
304 |
(*Transitivity of similarity: the order-isomorphism relation*) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
305 |
lemma ord_iso_trans: |
76213
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
306 |
"\<lbrakk>g \<in> ord_iso(A,r,B,s); f \<in> ord_iso(B,s,C,t)\<rbrakk> |
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
307 |
\<Longrightarrow> (f O g): ord_iso(A,r,C,t)" |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
308 |
apply (unfold ord_iso_def, clarify) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
309 |
apply (frule bij_is_fun [of f]) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
310 |
apply (frule bij_is_fun [of g]) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
311 |
apply (auto simp add: comp_bij) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
312 |
done |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
313 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
314 |
(** Two monotone maps can make an order-isomorphism **) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
315 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
316 |
lemma mono_ord_isoI: |
76213
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
317 |
"\<lbrakk>f \<in> mono_map(A,r,B,s); g \<in> mono_map(B,s,A,r); |
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
318 |
f O g = id(B); g O f = id(A)\<rbrakk> \<Longrightarrow> f \<in> ord_iso(A,r,B,s)" |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
319 |
apply (simp add: ord_iso_def mono_map_def, safe) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
320 |
apply (intro fg_imp_bijective, auto) |
46820 | 321 |
apply (subgoal_tac "<g` (f`x), g` (f`y) > \<in> r") |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
322 |
apply (simp add: comp_eq_id_iff [THEN iffD1]) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
323 |
apply (blast intro: apply_funtype) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
324 |
done |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
325 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
326 |
lemma well_ord_mono_ord_isoI: |
76213
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
327 |
"\<lbrakk>well_ord(A,r); well_ord(B,s); |
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
328 |
f \<in> mono_map(A,r,B,s); converse(f): mono_map(B,s,A,r)\<rbrakk> |
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
329 |
\<Longrightarrow> f \<in> ord_iso(A,r,B,s)" |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
330 |
apply (intro mono_ord_isoI, auto) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
331 |
apply (frule mono_map_is_fun [THEN fun_is_rel]) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
332 |
apply (erule converse_converse [THEN subst], rule left_comp_inverse) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
333 |
apply (blast intro: left_comp_inverse mono_map_is_inj well_ord_is_linear |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
334 |
well_ord_is_wf)+ |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
335 |
done |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
336 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
337 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
338 |
(** Order-isomorphisms preserve the ordering's properties **) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
339 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
340 |
lemma part_ord_ord_iso: |
76213
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
341 |
"\<lbrakk>part_ord(B,s); f \<in> ord_iso(A,r,B,s)\<rbrakk> \<Longrightarrow> part_ord(A,r)" |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
342 |
apply (simp add: part_ord_def irrefl_def trans_on_def ord_iso_def) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
343 |
apply (fast intro: bij_is_fun [THEN apply_type]) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
344 |
done |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
345 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
346 |
lemma linear_ord_iso: |
76213
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
347 |
"\<lbrakk>linear(B,s); f \<in> ord_iso(A,r,B,s)\<rbrakk> \<Longrightarrow> linear(A,r)" |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
348 |
apply (simp add: linear_def ord_iso_def, safe) |
13339
0f89104dd377
Fixed quantified variable name preservation for ball and bex (bounded quants)
paulson
parents:
13212
diff
changeset
|
349 |
apply (drule_tac x1 = "f`x" and x = "f`y" in bspec [THEN bspec]) |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
350 |
apply (safe elim!: bij_is_fun [THEN apply_type]) |
67399 | 351 |
apply (drule_tac t = "(`) (converse (f))" in subst_context) |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
352 |
apply (simp add: left_inverse_bij) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
353 |
done |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
354 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
355 |
lemma wf_on_ord_iso: |
76213
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
356 |
"\<lbrakk>wf[B](s); f \<in> ord_iso(A,r,B,s)\<rbrakk> \<Longrightarrow> wf[A](r)" |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
357 |
apply (simp add: wf_on_def wf_def ord_iso_def, safe) |
46953 | 358 |
apply (drule_tac x = "{f`z. z \<in> Z \<inter> A}" in spec) |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
359 |
apply (safe intro!: equalityI) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
360 |
apply (blast dest!: equalityD1 intro: bij_is_fun [THEN apply_type])+ |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
361 |
done |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
362 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
363 |
lemma well_ord_ord_iso: |
76213
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
364 |
"\<lbrakk>well_ord(B,s); f \<in> ord_iso(A,r,B,s)\<rbrakk> \<Longrightarrow> well_ord(A,r)" |
76217 | 365 |
unfolding well_ord_def tot_ord_def |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
366 |
apply (fast elim!: part_ord_ord_iso linear_ord_iso wf_on_ord_iso) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
367 |
done |
9683 | 368 |
|
369 |
||
60770 | 370 |
subsection\<open>Main results of Kunen, Chapter 1 section 6\<close> |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
371 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
372 |
(*Inductive argument for Kunen's Lemma 6.1, etc. |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
373 |
Simple proof from Halmos, page 72*) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
374 |
lemma well_ord_iso_subset_lemma: |
76213
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
375 |
"\<lbrakk>well_ord(A,r); f \<in> ord_iso(A,r, A',r); A'<= A; y \<in> A\<rbrakk> |
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
376 |
\<Longrightarrow> \<not> <f`y, y>: r" |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
377 |
apply (simp add: well_ord_def ord_iso_def) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
378 |
apply (elim conjE CollectE) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
379 |
apply (rule_tac a=y in wf_on_induct, assumption+) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
380 |
apply (blast dest: bij_is_fun [THEN apply_type]) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
381 |
done |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
382 |
|
46953 | 383 |
(*Kunen's Lemma 6.1 \<in> there's no order-isomorphism to an initial segment |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
384 |
of a well-ordering*) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
385 |
lemma well_ord_iso_predE: |
76213
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
386 |
"\<lbrakk>well_ord(A,r); f \<in> ord_iso(A, r, pred(A,x,r), r); x \<in> A\<rbrakk> \<Longrightarrow> P" |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
387 |
apply (insert well_ord_iso_subset_lemma [of A r f "pred(A,x,r)" x]) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
388 |
apply (simp add: pred_subset) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
389 |
(*Now we know f`x < x *) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
390 |
apply (drule ord_iso_is_bij [THEN bij_is_fun, THEN apply_type], assumption) |
46820 | 391 |
(*Now we also know @{term"f`x \<in> pred(A,x,r)"}: contradiction! *) |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
392 |
apply (simp add: well_ord_def pred_def) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
393 |
done |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
394 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
395 |
(*Simple consequence of Lemma 6.1*) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
396 |
lemma well_ord_iso_pred_eq: |
76213
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
397 |
"\<lbrakk>well_ord(A,r); f \<in> ord_iso(pred(A,a,r), r, pred(A,c,r), r); |
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
398 |
a \<in> A; c \<in> A\<rbrakk> \<Longrightarrow> a=c" |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
399 |
apply (frule well_ord_is_trans_on) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
400 |
apply (frule well_ord_is_linear) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
401 |
apply (erule_tac x=a and y=c in linearE, assumption+) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
402 |
apply (drule ord_iso_sym) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
403 |
(*two symmetric cases*) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
404 |
apply (auto elim!: well_ord_subset [OF _ pred_subset, THEN well_ord_iso_predE] |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
405 |
intro!: predI |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
406 |
simp add: trans_pred_pred_eq) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
407 |
done |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
408 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
409 |
(*Does not assume r is a wellordering!*) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
410 |
lemma ord_iso_image_pred: |
76213
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
411 |
"\<lbrakk>f \<in> ord_iso(A,r,B,s); a \<in> A\<rbrakk> \<Longrightarrow> f `` pred(A,a,r) = pred(B, f`a, s)" |
76217 | 412 |
unfolding ord_iso_def pred_def |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
413 |
apply (erule CollectE) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
414 |
apply (simp (no_asm_simp) add: image_fun [OF bij_is_fun Collect_subset]) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
415 |
apply (rule equalityI) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
416 |
apply (safe elim!: bij_is_fun [THEN apply_type]) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
417 |
apply (rule RepFun_eqI) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
418 |
apply (blast intro!: right_inverse_bij [symmetric]) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
419 |
apply (auto simp add: right_inverse_bij bij_is_fun [THEN apply_funtype]) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
420 |
done |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
421 |
|
13212 | 422 |
lemma ord_iso_restrict_image: |
76213
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
423 |
"\<lbrakk>f \<in> ord_iso(A,r,B,s); C<=A\<rbrakk> |
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
424 |
\<Longrightarrow> restrict(f,C) \<in> ord_iso(C, r, f``C, s)" |
46820 | 425 |
apply (simp add: ord_iso_def) |
426 |
apply (blast intro: bij_is_inj restrict_bij) |
|
13212 | 427 |
done |
428 |
||
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
429 |
(*But in use, A and B may themselves be initial segments. Then use |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
430 |
trans_pred_pred_eq to simplify the pred(pred...) terms. See just below.*) |
13212 | 431 |
lemma ord_iso_restrict_pred: |
76213
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
432 |
"\<lbrakk>f \<in> ord_iso(A,r,B,s); a \<in> A\<rbrakk> |
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
433 |
\<Longrightarrow> restrict(f, pred(A,a,r)) \<in> ord_iso(pred(A,a,r), r, pred(B, f`a, s), s)" |
46820 | 434 |
apply (simp add: ord_iso_image_pred [symmetric]) |
435 |
apply (blast intro: ord_iso_restrict_image elim: predE) |
|
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
436 |
done |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
437 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
438 |
(*Tricky; a lot of forward proof!*) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
439 |
lemma well_ord_iso_preserving: |
76215
a642599ffdea
More syntactic cleanup. LaTeX markup working
paulson <lp15@cam.ac.uk>
parents:
76214
diff
changeset
|
440 |
"\<lbrakk>well_ord(A,r); well_ord(B,s); \<langle>a,c\<rangle>: r; |
46820 | 441 |
f \<in> ord_iso(pred(A,a,r), r, pred(B,b,s), s); |
442 |
g \<in> ord_iso(pred(A,c,r), r, pred(B,d,s), s); |
|
76215
a642599ffdea
More syntactic cleanup. LaTeX markup working
paulson <lp15@cam.ac.uk>
parents:
76214
diff
changeset
|
443 |
a \<in> A; c \<in> A; b \<in> B; d \<in> B\<rbrakk> \<Longrightarrow> \<langle>b,d\<rangle>: s" |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
444 |
apply (frule ord_iso_is_bij [THEN bij_is_fun, THEN apply_type], (erule asm_rl predI predE)+) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
445 |
apply (subgoal_tac "b = g`a") |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
446 |
apply (simp (no_asm_simp)) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
447 |
apply (rule well_ord_iso_pred_eq, auto) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
448 |
apply (frule ord_iso_restrict_pred, (erule asm_rl predI)+) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
449 |
apply (simp add: well_ord_is_trans_on trans_pred_pred_eq) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
450 |
apply (erule ord_iso_sym [THEN ord_iso_trans], assumption) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
451 |
done |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
452 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
453 |
(*See Halmos, page 72*) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
454 |
lemma well_ord_iso_unique_lemma: |
76213
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
455 |
"\<lbrakk>well_ord(A,r); |
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
456 |
f \<in> ord_iso(A,r, B,s); g \<in> ord_iso(A,r, B,s); y \<in> A\<rbrakk> |
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
457 |
\<Longrightarrow> \<not> <g`y, f`y> \<in> s" |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
458 |
apply (frule well_ord_iso_subset_lemma) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
459 |
apply (rule_tac f = "converse (f) " and g = g in ord_iso_trans) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
460 |
apply auto |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
461 |
apply (blast intro: ord_iso_sym) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
462 |
apply (frule ord_iso_is_bij [of f]) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
463 |
apply (frule ord_iso_is_bij [of g]) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
464 |
apply (frule ord_iso_converse) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
465 |
apply (blast intro!: bij_converse_bij |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
466 |
intro: bij_is_fun apply_funtype)+ |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
467 |
apply (erule notE) |
13176
312bd350579b
conversion of Perm to Isar. Strengthening of comp_fun_apply
paulson
parents:
13140
diff
changeset
|
468 |
apply (simp add: left_inverse_bij bij_is_fun comp_fun_apply [of _ A B]) |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
469 |
done |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
470 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
471 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
472 |
(*Kunen's Lemma 6.2: Order-isomorphisms between well-orderings are unique*) |
76213
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
473 |
lemma well_ord_iso_unique: "\<lbrakk>well_ord(A,r); |
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
474 |
f \<in> ord_iso(A,r, B,s); g \<in> ord_iso(A,r, B,s)\<rbrakk> \<Longrightarrow> f = g" |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
475 |
apply (rule fun_extension) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
476 |
apply (erule ord_iso_is_bij [THEN bij_is_fun])+ |
76214 | 477 |
apply (subgoal_tac "f`x \<in> B \<and> g`x \<in> B \<and> linear(B,s)") |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
478 |
apply (simp add: linear_def) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
479 |
apply (blast dest: well_ord_iso_unique_lemma) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
480 |
apply (blast intro: ord_iso_is_bij bij_is_fun apply_funtype |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
481 |
well_ord_is_linear well_ord_ord_iso ord_iso_sym) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
482 |
done |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
483 |
|
60770 | 484 |
subsection\<open>Towards Kunen's Theorem 6.3: Linearity of the Similarity Relation\<close> |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
485 |
|
46820 | 486 |
lemma ord_iso_map_subset: "ord_iso_map(A,r,B,s) \<subseteq> A*B" |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
487 |
by (unfold ord_iso_map_def, blast) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
488 |
|
46820 | 489 |
lemma domain_ord_iso_map: "domain(ord_iso_map(A,r,B,s)) \<subseteq> A" |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
490 |
by (unfold ord_iso_map_def, blast) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
491 |
|
46820 | 492 |
lemma range_ord_iso_map: "range(ord_iso_map(A,r,B,s)) \<subseteq> B" |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
493 |
by (unfold ord_iso_map_def, blast) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
494 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
495 |
lemma converse_ord_iso_map: |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
496 |
"converse(ord_iso_map(A,r,B,s)) = ord_iso_map(B,s,A,r)" |
76216
9fc34f76b4e8
getting rid of apply (unfold ...)
paulson <lp15@cam.ac.uk>
parents:
76215
diff
changeset
|
497 |
unfolding ord_iso_map_def |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
498 |
apply (blast intro: ord_iso_sym) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
499 |
done |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
500 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
501 |
lemma function_ord_iso_map: |
76213
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
502 |
"well_ord(B,s) \<Longrightarrow> function(ord_iso_map(A,r,B,s))" |
76217 | 503 |
unfolding ord_iso_map_def function_def |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
504 |
apply (blast intro: well_ord_iso_pred_eq ord_iso_sym ord_iso_trans) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
505 |
done |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
506 |
|
76213
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
507 |
lemma ord_iso_map_fun: "well_ord(B,s) \<Longrightarrow> ord_iso_map(A,r,B,s) |
46820 | 508 |
\<in> domain(ord_iso_map(A,r,B,s)) -> range(ord_iso_map(A,r,B,s))" |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
509 |
by (simp add: Pi_iff function_ord_iso_map |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
510 |
ord_iso_map_subset [THEN domain_times_range]) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
511 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
512 |
lemma ord_iso_map_mono_map: |
76213
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
513 |
"\<lbrakk>well_ord(A,r); well_ord(B,s)\<rbrakk> |
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
514 |
\<Longrightarrow> ord_iso_map(A,r,B,s) |
46820 | 515 |
\<in> mono_map(domain(ord_iso_map(A,r,B,s)), r, |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
516 |
range(ord_iso_map(A,r,B,s)), s)" |
76216
9fc34f76b4e8
getting rid of apply (unfold ...)
paulson <lp15@cam.ac.uk>
parents:
76215
diff
changeset
|
517 |
unfolding mono_map_def |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
518 |
apply (simp (no_asm_simp) add: ord_iso_map_fun) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
519 |
apply safe |
76214 | 520 |
apply (subgoal_tac "x \<in> A \<and> ya:A \<and> y \<in> B \<and> yb:B") |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
521 |
apply (simp add: apply_equality [OF _ ord_iso_map_fun]) |
76216
9fc34f76b4e8
getting rid of apply (unfold ...)
paulson <lp15@cam.ac.uk>
parents:
76215
diff
changeset
|
522 |
unfolding ord_iso_map_def |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
523 |
apply (blast intro: well_ord_iso_preserving, blast) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
524 |
done |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
525 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
526 |
lemma ord_iso_map_ord_iso: |
76213
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
527 |
"\<lbrakk>well_ord(A,r); well_ord(B,s)\<rbrakk> \<Longrightarrow> ord_iso_map(A,r,B,s) |
46820 | 528 |
\<in> ord_iso(domain(ord_iso_map(A,r,B,s)), r, |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
529 |
range(ord_iso_map(A,r,B,s)), s)" |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
530 |
apply (rule well_ord_mono_ord_isoI) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
531 |
prefer 4 |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
532 |
apply (rule converse_ord_iso_map [THEN subst]) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
533 |
apply (simp add: ord_iso_map_mono_map |
32960
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
wenzelm
parents:
27703
diff
changeset
|
534 |
ord_iso_map_subset [THEN converse_converse]) |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
535 |
apply (blast intro!: domain_ord_iso_map range_ord_iso_map |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
536 |
intro: well_ord_subset ord_iso_map_mono_map)+ |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
537 |
done |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
538 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
539 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
540 |
(*One way of saying that domain(ord_iso_map(A,r,B,s)) is downwards-closed*) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
541 |
lemma domain_ord_iso_map_subset: |
76213
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
542 |
"\<lbrakk>well_ord(A,r); well_ord(B,s); |
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
543 |
a \<in> A; a \<notin> domain(ord_iso_map(A,r,B,s))\<rbrakk> |
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
544 |
\<Longrightarrow> domain(ord_iso_map(A,r,B,s)) \<subseteq> pred(A, a, r)" |
76216
9fc34f76b4e8
getting rid of apply (unfold ...)
paulson <lp15@cam.ac.uk>
parents:
76215
diff
changeset
|
545 |
unfolding ord_iso_map_def |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
546 |
apply (safe intro!: predI) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
547 |
(*Case analysis on xa vs a in r *) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
548 |
apply (simp (no_asm_simp)) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
549 |
apply (frule_tac A = A in well_ord_is_linear) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
550 |
apply (rename_tac b y f) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
551 |
apply (erule_tac x=b and y=a in linearE, assumption+) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
552 |
(*Trivial case: b=a*) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
553 |
apply clarify |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
554 |
apply blast |
76215
a642599ffdea
More syntactic cleanup. LaTeX markup working
paulson <lp15@cam.ac.uk>
parents:
76214
diff
changeset
|
555 |
(*Harder case: \<langle>a, xa\<rangle>: r*) |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
556 |
apply (frule ord_iso_is_bij [THEN bij_is_fun, THEN apply_type], |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
557 |
(erule asm_rl predI predE)+) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
558 |
apply (frule ord_iso_restrict_pred) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
559 |
apply (simp add: pred_iff) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
560 |
apply (simp split: split_if_asm |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
561 |
add: well_ord_is_trans_on trans_pred_pred_eq domain_UN domain_Union, blast) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
562 |
done |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
563 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
564 |
(*For the 4-way case analysis in the main result*) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
565 |
lemma domain_ord_iso_map_cases: |
76213
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
566 |
"\<lbrakk>well_ord(A,r); well_ord(B,s)\<rbrakk> |
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
567 |
\<Longrightarrow> domain(ord_iso_map(A,r,B,s)) = A | |
46820 | 568 |
(\<exists>x\<in>A. domain(ord_iso_map(A,r,B,s)) = pred(A,x,r))" |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
569 |
apply (frule well_ord_is_wf) |
76217 | 570 |
unfolding wf_on_def wf_def |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
571 |
apply (drule_tac x = "A-domain (ord_iso_map (A,r,B,s))" in spec) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
572 |
apply safe |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
573 |
(*The first case: the domain equals A*) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
574 |
apply (rule domain_ord_iso_map [THEN equalityI]) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
575 |
apply (erule Diff_eq_0_iff [THEN iffD1]) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
576 |
(*The other case: the domain equals an initial segment*) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
577 |
apply (blast del: domainI subsetI |
32960
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
wenzelm
parents:
27703
diff
changeset
|
578 |
elim!: predE |
69916a850301
eliminated hard tabulators, guessing at each author's individual tab-width;
wenzelm
parents:
27703
diff
changeset
|
579 |
intro!: domain_ord_iso_map_subset |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
580 |
intro: subsetI)+ |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
581 |
done |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
582 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
583 |
(*As above, by duality*) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
584 |
lemma range_ord_iso_map_cases: |
76213
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
585 |
"\<lbrakk>well_ord(A,r); well_ord(B,s)\<rbrakk> |
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
586 |
\<Longrightarrow> range(ord_iso_map(A,r,B,s)) = B | |
46820 | 587 |
(\<exists>y\<in>B. range(ord_iso_map(A,r,B,s)) = pred(B,y,s))" |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
588 |
apply (rule converse_ord_iso_map [THEN subst]) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
589 |
apply (simp add: domain_ord_iso_map_cases) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
590 |
done |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
591 |
|
60770 | 592 |
text\<open>Kunen's Theorem 6.3: Fundamental Theorem for Well-Ordered Sets\<close> |
13356 | 593 |
theorem well_ord_trichotomy: |
76213
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
594 |
"\<lbrakk>well_ord(A,r); well_ord(B,s)\<rbrakk> |
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
595 |
\<Longrightarrow> ord_iso_map(A,r,B,s) \<in> ord_iso(A, r, B, s) | |
46820 | 596 |
(\<exists>x\<in>A. ord_iso_map(A,r,B,s) \<in> ord_iso(pred(A,x,r), r, B, s)) | |
597 |
(\<exists>y\<in>B. ord_iso_map(A,r,B,s) \<in> ord_iso(A, r, pred(B,y,s), s))" |
|
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
598 |
apply (frule_tac B = B in domain_ord_iso_map_cases, assumption) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
599 |
apply (frule_tac B = B in range_ord_iso_map_cases, assumption) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
600 |
apply (drule ord_iso_map_ord_iso, assumption) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
601 |
apply (elim disjE bexE) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
602 |
apply (simp_all add: bexI) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
603 |
apply (rule wf_on_not_refl [THEN notE]) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
604 |
apply (erule well_ord_is_wf) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
605 |
apply assumption |
76215
a642599ffdea
More syntactic cleanup. LaTeX markup working
paulson <lp15@cam.ac.uk>
parents:
76214
diff
changeset
|
606 |
apply (subgoal_tac "\<langle>x,y\<rangle>: ord_iso_map (A,r,B,s) ") |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
607 |
apply (drule rangeI) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
608 |
apply (simp add: pred_def) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
609 |
apply (unfold ord_iso_map_def, blast) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
610 |
done |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
611 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
612 |
|
60770 | 613 |
subsection\<open>Miscellaneous Results by Krzysztof Grabczewski\<close> |
13356 | 614 |
|
615 |
(** Properties of converse(r) **) |
|
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
616 |
|
76213
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
617 |
lemma irrefl_converse: "irrefl(A,r) \<Longrightarrow> irrefl(A,converse(r))" |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
618 |
by (unfold irrefl_def, blast) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
619 |
|
76213
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
620 |
lemma trans_on_converse: "trans[A](r) \<Longrightarrow> trans[A](converse(r))" |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
621 |
by (unfold trans_on_def, blast) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
622 |
|
76213
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
623 |
lemma part_ord_converse: "part_ord(A,r) \<Longrightarrow> part_ord(A,converse(r))" |
76216
9fc34f76b4e8
getting rid of apply (unfold ...)
paulson <lp15@cam.ac.uk>
parents:
76215
diff
changeset
|
624 |
unfolding part_ord_def |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
625 |
apply (blast intro!: irrefl_converse trans_on_converse) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
626 |
done |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
627 |
|
76213
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
628 |
lemma linear_converse: "linear(A,r) \<Longrightarrow> linear(A,converse(r))" |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
629 |
by (unfold linear_def, blast) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
630 |
|
76213
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
631 |
lemma tot_ord_converse: "tot_ord(A,r) \<Longrightarrow> tot_ord(A,converse(r))" |
76216
9fc34f76b4e8
getting rid of apply (unfold ...)
paulson <lp15@cam.ac.uk>
parents:
76215
diff
changeset
|
632 |
unfolding tot_ord_def |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
633 |
apply (blast intro!: part_ord_converse linear_converse) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
634 |
done |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
635 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
636 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
637 |
(** By Krzysztof Grabczewski. |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
638 |
Lemmas involving the first element of a well ordered set **) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
639 |
|
76213
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
640 |
lemma first_is_elem: "first(b,B,r) \<Longrightarrow> b \<in> B" |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
641 |
by (unfold first_def, blast) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
642 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
643 |
lemma well_ord_imp_ex1_first: |
76213
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
644 |
"\<lbrakk>well_ord(A,r); B<=A; B\<noteq>0\<rbrakk> \<Longrightarrow> (\<exists>!b. first(b,B,r))" |
76217 | 645 |
unfolding well_ord_def wf_on_def wf_def first_def |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
646 |
apply (elim conjE allE disjE, blast) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
647 |
apply (erule bexE) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
648 |
apply (rule_tac a = x in ex1I, auto) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
649 |
apply (unfold tot_ord_def linear_def, blast) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
650 |
done |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
651 |
|
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
652 |
lemma the_first_in: |
76213
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
653 |
"\<lbrakk>well_ord(A,r); B<=A; B\<noteq>0\<rbrakk> \<Longrightarrow> (THE b. first(b,B,r)) \<in> B" |
13140
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
654 |
apply (drule well_ord_imp_ex1_first, assumption+) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
655 |
apply (rule first_is_elem) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
656 |
apply (erule theI) |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
657 |
done |
6d97dbb189a9
converted Order.ML OrderType.ML OrderArith.ML to Isar format
paulson
parents:
13119
diff
changeset
|
658 |
|
27703
cb6c513922e0
Definitions and some lemmas for reflexive orderings.
ballarin
parents:
24893
diff
changeset
|
659 |
|
60770 | 660 |
subsection \<open>Lemmas for the Reflexive Orders\<close> |
27703
cb6c513922e0
Definitions and some lemmas for reflexive orderings.
ballarin
parents:
24893
diff
changeset
|
661 |
|
cb6c513922e0
Definitions and some lemmas for reflexive orderings.
ballarin
parents:
24893
diff
changeset
|
662 |
lemma subset_vimage_vimage_iff: |
76213
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
663 |
"\<lbrakk>Preorder(r); A \<subseteq> field(r); B \<subseteq> field(r)\<rbrakk> \<Longrightarrow> |
76215
a642599ffdea
More syntactic cleanup. LaTeX markup working
paulson <lp15@cam.ac.uk>
parents:
76214
diff
changeset
|
664 |
r -`` A \<subseteq> r -`` B \<longleftrightarrow> (\<forall>a\<in>A. \<exists>b\<in>B. \<langle>a, b\<rangle> \<in> r)" |
27703
cb6c513922e0
Definitions and some lemmas for reflexive orderings.
ballarin
parents:
24893
diff
changeset
|
665 |
apply (auto simp: subset_def preorder_on_def refl_def vimage_def image_def) |
cb6c513922e0
Definitions and some lemmas for reflexive orderings.
ballarin
parents:
24893
diff
changeset
|
666 |
apply blast |
cb6c513922e0
Definitions and some lemmas for reflexive orderings.
ballarin
parents:
24893
diff
changeset
|
667 |
unfolding trans_on_def |
59788 | 668 |
apply (erule_tac P = "(\<lambda>x. \<forall>y\<in>field(r). |
669 |
\<forall>z\<in>field(r). \<langle>x, y\<rangle> \<in> r \<longrightarrow> \<langle>y, z\<rangle> \<in> r \<longrightarrow> \<langle>x, z\<rangle> \<in> r)" for r in rev_ballE) |
|
27703
cb6c513922e0
Definitions and some lemmas for reflexive orderings.
ballarin
parents:
24893
diff
changeset
|
670 |
(* instance obtained from proof term generated by best *) |
cb6c513922e0
Definitions and some lemmas for reflexive orderings.
ballarin
parents:
24893
diff
changeset
|
671 |
apply best |
cb6c513922e0
Definitions and some lemmas for reflexive orderings.
ballarin
parents:
24893
diff
changeset
|
672 |
apply blast |
cb6c513922e0
Definitions and some lemmas for reflexive orderings.
ballarin
parents:
24893
diff
changeset
|
673 |
done |
cb6c513922e0
Definitions and some lemmas for reflexive orderings.
ballarin
parents:
24893
diff
changeset
|
674 |
|
cb6c513922e0
Definitions and some lemmas for reflexive orderings.
ballarin
parents:
24893
diff
changeset
|
675 |
lemma subset_vimage1_vimage1_iff: |
76213
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
676 |
"\<lbrakk>Preorder(r); a \<in> field(r); b \<in> field(r)\<rbrakk> \<Longrightarrow> |
76215
a642599ffdea
More syntactic cleanup. LaTeX markup working
paulson <lp15@cam.ac.uk>
parents:
76214
diff
changeset
|
677 |
r -`` {a} \<subseteq> r -`` {b} \<longleftrightarrow> \<langle>a, b\<rangle> \<in> r" |
27703
cb6c513922e0
Definitions and some lemmas for reflexive orderings.
ballarin
parents:
24893
diff
changeset
|
678 |
by (simp add: subset_vimage_vimage_iff) |
cb6c513922e0
Definitions and some lemmas for reflexive orderings.
ballarin
parents:
24893
diff
changeset
|
679 |
|
cb6c513922e0
Definitions and some lemmas for reflexive orderings.
ballarin
parents:
24893
diff
changeset
|
680 |
lemma Refl_antisym_eq_Image1_Image1_iff: |
76213
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
681 |
"\<lbrakk>refl(field(r), r); antisym(r); a \<in> field(r); b \<in> field(r)\<rbrakk> \<Longrightarrow> |
46821
ff6b0c1087f2
Using mathematical notation for <-> and cardinal arithmetic
paulson
parents:
46820
diff
changeset
|
682 |
r `` {a} = r `` {b} \<longleftrightarrow> a = b" |
27703
cb6c513922e0
Definitions and some lemmas for reflexive orderings.
ballarin
parents:
24893
diff
changeset
|
683 |
apply rule |
cb6c513922e0
Definitions and some lemmas for reflexive orderings.
ballarin
parents:
24893
diff
changeset
|
684 |
apply (frule equality_iffD) |
cb6c513922e0
Definitions and some lemmas for reflexive orderings.
ballarin
parents:
24893
diff
changeset
|
685 |
apply (drule equality_iffD) |
cb6c513922e0
Definitions and some lemmas for reflexive orderings.
ballarin
parents:
24893
diff
changeset
|
686 |
apply (simp add: antisym_def refl_def) |
cb6c513922e0
Definitions and some lemmas for reflexive orderings.
ballarin
parents:
24893
diff
changeset
|
687 |
apply best |
cb6c513922e0
Definitions and some lemmas for reflexive orderings.
ballarin
parents:
24893
diff
changeset
|
688 |
apply (simp add: antisym_def refl_def) |
cb6c513922e0
Definitions and some lemmas for reflexive orderings.
ballarin
parents:
24893
diff
changeset
|
689 |
done |
cb6c513922e0
Definitions and some lemmas for reflexive orderings.
ballarin
parents:
24893
diff
changeset
|
690 |
|
cb6c513922e0
Definitions and some lemmas for reflexive orderings.
ballarin
parents:
24893
diff
changeset
|
691 |
lemma Partial_order_eq_Image1_Image1_iff: |
76213
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
692 |
"\<lbrakk>Partial_order(r); a \<in> field(r); b \<in> field(r)\<rbrakk> \<Longrightarrow> |
46821
ff6b0c1087f2
Using mathematical notation for <-> and cardinal arithmetic
paulson
parents:
46820
diff
changeset
|
693 |
r `` {a} = r `` {b} \<longleftrightarrow> a = b" |
27703
cb6c513922e0
Definitions and some lemmas for reflexive orderings.
ballarin
parents:
24893
diff
changeset
|
694 |
by (simp add: partial_order_on_def preorder_on_def |
cb6c513922e0
Definitions and some lemmas for reflexive orderings.
ballarin
parents:
24893
diff
changeset
|
695 |
Refl_antisym_eq_Image1_Image1_iff) |
cb6c513922e0
Definitions and some lemmas for reflexive orderings.
ballarin
parents:
24893
diff
changeset
|
696 |
|
cb6c513922e0
Definitions and some lemmas for reflexive orderings.
ballarin
parents:
24893
diff
changeset
|
697 |
lemma Refl_antisym_eq_vimage1_vimage1_iff: |
76213
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
698 |
"\<lbrakk>refl(field(r), r); antisym(r); a \<in> field(r); b \<in> field(r)\<rbrakk> \<Longrightarrow> |
46821
ff6b0c1087f2
Using mathematical notation for <-> and cardinal arithmetic
paulson
parents:
46820
diff
changeset
|
699 |
r -`` {a} = r -`` {b} \<longleftrightarrow> a = b" |
27703
cb6c513922e0
Definitions and some lemmas for reflexive orderings.
ballarin
parents:
24893
diff
changeset
|
700 |
apply rule |
cb6c513922e0
Definitions and some lemmas for reflexive orderings.
ballarin
parents:
24893
diff
changeset
|
701 |
apply (frule equality_iffD) |
cb6c513922e0
Definitions and some lemmas for reflexive orderings.
ballarin
parents:
24893
diff
changeset
|
702 |
apply (drule equality_iffD) |
cb6c513922e0
Definitions and some lemmas for reflexive orderings.
ballarin
parents:
24893
diff
changeset
|
703 |
apply (simp add: antisym_def refl_def) |
cb6c513922e0
Definitions and some lemmas for reflexive orderings.
ballarin
parents:
24893
diff
changeset
|
704 |
apply best |
cb6c513922e0
Definitions and some lemmas for reflexive orderings.
ballarin
parents:
24893
diff
changeset
|
705 |
apply (simp add: antisym_def refl_def) |
cb6c513922e0
Definitions and some lemmas for reflexive orderings.
ballarin
parents:
24893
diff
changeset
|
706 |
done |
cb6c513922e0
Definitions and some lemmas for reflexive orderings.
ballarin
parents:
24893
diff
changeset
|
707 |
|
cb6c513922e0
Definitions and some lemmas for reflexive orderings.
ballarin
parents:
24893
diff
changeset
|
708 |
lemma Partial_order_eq_vimage1_vimage1_iff: |
76213
e44d86131648
Removal of obsolete ASCII syntax
paulson <lp15@cam.ac.uk>
parents:
69587
diff
changeset
|
709 |
"\<lbrakk>Partial_order(r); a \<in> field(r); b \<in> field(r)\<rbrakk> \<Longrightarrow> |
46821
ff6b0c1087f2
Using mathematical notation for <-> and cardinal arithmetic
paulson
parents:
46820
diff
changeset
|
710 |
r -`` {a} = r -`` {b} \<longleftrightarrow> a = b" |
27703
cb6c513922e0
Definitions and some lemmas for reflexive orderings.
ballarin
parents:
24893
diff
changeset
|
711 |
by (simp add: partial_order_on_def preorder_on_def |
cb6c513922e0
Definitions and some lemmas for reflexive orderings.
ballarin
parents:
24893
diff
changeset
|
712 |
Refl_antisym_eq_vimage1_vimage1_iff) |
cb6c513922e0
Definitions and some lemmas for reflexive orderings.
ballarin
parents:
24893
diff
changeset
|
713 |
|
435 | 714 |
end |