1 Authors: Andrei Popescu & Dmitriy Traytel |
|
2 |
|
3 |
|
4 PDF Documentation: |
|
5 ----------------- |
|
6 |
|
7 See "document/root.pdf". |
|
8 |
|
9 |
|
10 |
|
11 Short description of the theories' main content: |
|
12 ----------------------------------------------- |
|
13 |
|
14 The "minor" theories Fun_More, Wellfounded_More and Order_Relation_More are |
|
15 extensions of the existing theories Fun, Wellfounded and |
|
16 Order_Relation: |
|
17 -- Fun_More states more facts (mainly) concerning injections, bijections, |
|
18 inverses, and (numeric) cardinals of finite sets. |
|
19 -- Wellfounded_More states variations of well-founded |
|
20 recursion and well-founded recursion. |
|
21 -- Order_Relation_More fixes a relation, defines upper and lower bounds |
|
22 operators and proves many basic properties for these |
|
23 (depending on assumptions such as reflexivity or transitivity). |
|
24 |
|
25 The "major" theories are: |
|
26 -- Wellorder_Relation: Here one fixes a well-order relation, and then: |
|
27 ----- 1) Defines the concepts of maximum (of two elements), minimum (of a set), supremum, |
|
28 successor (of a set), and order filter (i.e., downwards closed set, a.k.a. |
|
29 initial segment). |
|
30 -- Wellorder_Embedding: |
|
31 ----- 2) For two well-order relations, |
|
32 defines *well-order embeddings* as injective functions copying |
|
33 the source into an order filter of the target and *compatible functions* |
|
34 as those preserving the order. Also, *isomorphisms* |
|
35 and *strict embeddings* are defined to be embeddings that are, and respectively |
|
36 are not, bijections. |
|
37 |
|
38 -- Constructions_on_Wellorders: |
|
39 ----- 1) Defines direct images, restrictions, disjoint unions and |
|
40 bounded squares of well-orders. |
|
41 ----- 2) Defines the relations "ordLeq", "ordLess" and "ordIso" |
|
42 between well-order relations (concrete syntax: r <=o r', r <o r' and |
|
43 r =o r', respectively), defined by the existence of an embedding, |
|
44 strict embedding and isomorphism, respectively between the two members. |
|
45 Among the properties proved for these relations: |
|
46 --------- ordLeq is total; |
|
47 --------- ordLess (on a fixed type) is well-founded. |
|
48 |
|
49 -- Cardinal_Order_Relation: |
|
50 ---- 1) Defines a *cardinal order* to be a well-order minim w.r.t. "ordLeq" |
|
51 (or, equivalently, minimal w.r.t. "ordLess"). |
|
52 ordLess being well-founded together with the well-ordering theorem (from theory Zorn.thy) |
|
53 ensures the existence of a cardinal relation on any given set. In addition, |
|
54 a cardinal relation on a set is unique up to order isomorphism. |
|
55 ---- 2) Defines the cardinal of a set A, |A|, to be SOME cardinal |
|
56 order on it (unique up to =o, according to the above). |
|
57 ---- 3) Proves properties of cardinals, including their |
|
58 interactions with sums, products, unions, lists, |
|
59 powersets, sets of finite sets. Among them, nontrivial |
|
60 facts concerning the invariance of infinite cardinals |
|
61 under some of these constructs -- e.g., if A is infinite, |
|
62 than the cardinal of lists/words over A is the same (up to |
|
63 the "cardinal equality" =o) as that of A. |
|
64 ---- 5) Studies the connection between the introduced (order-based) notion |
|
65 of cardinal and the numeric one previously defined for |
|
66 finite sets (operator "card"). On the way, one introduces the cardinal omega |
|
67 (natLeq) and the finite cardinals (natLeq_on n). |
|
68 ---- 6) Defines and proves the existence of successor cardinals. |
|
69 |
|
70 -- Cardinal_Arithmetic |
|
71 |
|
72 |
|
73 Here is a list of names of proved facts concerning cardinalities that are |
|
74 expressed independently of notions of order, and of potential interest |
|
75 for "working mathematicians": |
|
76 --- one_set_greater, one_type_greater (their proofs use the |
|
77 fact that ordinals are totally ordered) |
|
78 --- Plus_into_Times, Plus_into_Times_types, |
|
79 Plus_infinite_bij_betw, Plus_infinite_bij_betw_types, |
|
80 Times_same_infinite_bij_betw, Times_same_infinite_bij_betw_types, |
|
81 Times_infinite_bij_betw, Times_infinite_bij_betw_types |
|
82 inj_on_UNION_infinite, List_infinite_bij_betw, List_infinite_bij_betw_types |
|
83 Fpow_infinite_bij_betw |
|
84 (their proofs employ cardinals) |
|
85 |
|
86 |
|
87 |
|
88 |
|
89 Minor technicalities and naming issues: |
|
90 --------------------------------------- |
|
91 |
|
92 1. Most of the definitions and theorems are proved in files suffixed with |
|
93 "_Base". Bootstrapping considerations (for the (co)datatype package) made this |
|
94 division desirable. |
|
95 |
|
96 |
|
97 2. Even though we would have preferred to use "initial segment" instead of |
|
98 "order filter", we chose the latter to avoid terminological clash with |
|
99 the operator "init_seg_of" from Zorn.thy. The latter expresses a related, but different |
|
100 concept -- it considers a relation, rather than a set, as initial segment of a relation. |
|
101 |
|
102 |
|
103 3. We prefer to define the upper-bound operations under, underS, |
|
104 etc., as opposed to working with combinations of relation image, |
|
105 converse and diagonal, because the former seem more intuitive |
|
106 notations when we think of orderings (but of course we cannot |
|
107 define them as abbreviations, as this would have a global |
|
108 effect, also affecting cases where one does not think of relations |
|
109 as orders). Moreover, in my locales the relation parameter r for |
|
110 under, underS etc. is fixed, hence these operations can keep r |
|
111 implicit. To get a concrete glimpse at my aesthetic reason for |
|
112 introducing these operations: otherwise, instead of "underS a", |
|
113 we would have to write "(r - Id)^-1 `` {a}" or "r^-1 `` {a} - Id". |
|
114 |
|
115 |
|
116 4. Even though the main focus of this development are |
|
117 the well-order relations, we prove the basic results on order relations |
|
118 and bounds as generally as possible. |
|
119 To the contrary, the results concerning minima, suprema and successors |
|
120 are stated for well-order relations, not maximally generally. |
|
121 |
|
122 |
|
123 5. "Refl_on A r" requires in particular that "r <= A <*> A", |
|
124 and therefore whenever "Refl_on A r", we have that necessarily |
|
125 "A = Field r". This means that in a theory of orders the domain |
|
126 A would be redundant -- we decided not to include it explicitly |
|
127 for most of the tehory. |
|
128 |
|
129 |
|
130 6. An infinite ordinal/cardinal is one for which the field is infinite. |
|
131 We always prefer the slightly more verbose "finite (Field r)" to the more |
|
132 compact but less standard equivalent condition "finite r". |
|
133 |
|
134 |
|
135 7. After we proved lots of facts about injections and |
|
136 bijections, we discovered that a couple of |
|
137 fancier (set-restricted) version of some of them are proved in |
|
138 the theory FuncSet. However, we did not need here restricted |
|
139 abstraction and such, and felt we should not import the whole |
|
140 theory for just a couple of minor facts. |
|
141 |
|
142 |
|
143 |
|
144 |
|
145 |
|
146 |
|
147 |
|
148 Notes for anyone who would like to enrich these theories in the future |
|
149 -------------------------------------------------------------------------------------- |
|
150 |
|
151 Theory Fun_More (and Fun_More_Base): |
|
152 - Careful: "inj" is an abbreviation for "inj_on UNIV", while |
|
153 "bij" is not an abreviation for "bij_betw UNIV UNIV", but |
|
154 a defined constant; there is no "surj_betw", but only "surj". |
|
155 "inv" is an abbreviation for "inv_into UNIV" |
|
156 - In subsection "Purely functional properties": |
|
157 -- Recall lemma "comp_inj_on". |
|
158 -- A lemma for inj_on corresponding to "bij_betw_same_card" already exists, and is called "card_inj_on_le". |
|
159 - In subsection "Properties involving Hilbert choice": |
|
160 -- One should refrain from trying to prove "intuitive" properties of f conditioned |
|
161 by properties of (inv_into f A), such as "bij_betw A' A (inv_into f A) ==> bij_betw A A' f". |
|
162 They usually do not hold, since one cannot usually infer the well-definedness of "inv_into f A". |
|
163 - A lemma "bij_betw_inv_into_LEFT" -- why didn't |
|
164 "proof(auto simp add: bij_betw_inv_into_left)" finish the proof? |
|
165 -- Recall lemma "bij_betw_inv_into". |
|
166 - In subsection "Other facts": |
|
167 -- Does the lemma "atLeastLessThan_injective" already exist anywhere? |
|
168 |
|
169 Theory Order_Relation_More (and Order_Relation_More_Base): |
|
170 - In subsection "Auxiliaries": |
|
171 -- Recall the lemmas "order_on_defs", "Field_def", "Domain_def", "Range_def", "converse_def". |
|
172 -- Recall that "refl_on r A" forces r to not be defined outside A. |
|
173 This is why "partial_order_def" |
|
174 can afford to use non-parameterized versions of antisym and trans. |
|
175 -- Recall the ASCII notation for "converse r": "r ^-1". |
|
176 -- Recall the abbreviations: |
|
177 abbreviation "Refl r ≡ refl_on (Field r) r" |
|
178 abbreviation "Preorder r ≡ preorder_on (Field r) r" |
|
179 abbreviation "Partial_order r ≡ partial_order_on (Field r) r" |
|
180 abbreviation "Total r ≡ total_on (Field r) r" |
|
181 abbreviation "Linear_order r ≡ linear_order_on (Field r) r" |
|
182 abbreviation "Well_order r ≡ well_order_on (Field r) r" |
|
183 |
|
184 Theory Wellorder_Relation (and Wellorder_Relation_Base): |
|
185 - In subsection "Auxiliaries": recall lemmas "order_on_defs" |
|
186 - In subsection "The notions of maximum, minimum, supremum, successor and order filter": |
|
187 Should we define all constants from "wo_rel" in "rel" instead, |
|
188 so that their outside definition not be conditional in "wo_rel r"? |
|
189 |
|
190 Theory Wellfounded_More (and Wellfounded_More_Base): |
|
191 Recall the lemmas "wfrec" and "wf_induct". |
|
192 |
|
193 Theory Wellorder_Embedding (and Wellorder_Embedding_Base): |
|
194 - Recall "inj_on_def" and "bij_betw_def". |
|
195 - Line 5 in the proof of lemma embed_in_Field: we have to figure out for this and many other |
|
196 situations: Why did it work without annotations to Refl_under_in? |
|
197 - At the proof of theorem "wellorders_totally_ordered" (and, similarly, elsewhere): |
|
198 Had we used metavariables instead of local definitions for H, f, g and test, the |
|
199 goals (in the goal window) would have become unreadable, |
|
200 making impossible to debug theorem instantiations. |
|
201 - At lemma "embed_unique": If we add the attribute "rule format" at lemma, we get an error at qed. |
|
202 |
|
203 Theory Constructions_on_Wellorders (and Constructions_on_Wellorders_Base): |
|
204 - Some of the lemmas in this section are about more general kinds of relations than |
|
205 well-orders, but it is not clear whether they are useful in such more general contexts. |
|
206 - Recall that "equiv" does not have the "equiv_on" and "Equiv" versions, |
|
207 like the order relation. "equiv" corresponds, for instance, to "well_order_on". |
|
208 - The lemmas "ord_trans" are not clearly useful together, as their employment within blast or auto |
|
209 tends to diverge. |
|
210 |
|
211 Theory Cardinal_Order_Relation (and Cardinal_Order_Relation_Base): |
|
212 - Careful: if "|..|" meets an outer parehthesis, an extra space needs to be inserted, as in |
|
213 "( |A| )". |
|
214 - At lemma like ordLeq_Sigma_mono1: Not worth stating something like ordLeq_Sigma_mono2 -- |
|
215 would be a mere instance of card_of_Sigma_mono2. |
|
216 - At lemma ordLeq_Sigma_cong2: Again, no reason for stating something like ordLeq_Sigma_cong2. |
|
217 - At lemma Fpow_Pow_finite: why wouldn't a version of this lemma with "... Int finite" |
|
218 also be proved by blast? |
|