88 |
88 |
89 Minor technicalities and naming issues: |
89 Minor technicalities and naming issues: |
90 --------------------------------------- |
90 --------------------------------------- |
91 |
91 |
92 1. Most of the definitions and theorems are proved in files suffixed with |
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 |
93 "_LFP" or "_GFP". Bootstrapping considerations (for the (co)datatype package) made |
94 division desirable. |
94 this division desirable. |
95 |
95 |
96 |
96 |
97 2. Even though we would have preferred to use "initial segment" instead of |
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 |
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 |
99 the operator "init_seg_of" from Zorn.thy. The latter expresses a related, but different |
146 |
146 |
147 |
147 |
148 Notes for anyone who would like to enrich these theories in the future |
148 Notes for anyone who would like to enrich these theories in the future |
149 -------------------------------------------------------------------------------------- |
149 -------------------------------------------------------------------------------------- |
150 |
150 |
151 Theory Fun_More (and Fun_More_Base): |
151 Theory Fun_More (and Fun_More_*): |
152 - Careful: "inj" is an abbreviation for "inj_on UNIV", while |
152 - Careful: "inj" is an abbreviation for "inj_on UNIV", while |
153 "bij" is not an abreviation for "bij_betw UNIV UNIV", but |
153 "bij" is not an abreviation for "bij_betw UNIV UNIV", but |
154 a defined constant; there is no "surj_betw", but only "surj". |
154 a defined constant; there is no "surj_betw", but only "surj". |
155 "inv" is an abbreviation for "inv_into UNIV" |
155 "inv" is an abbreviation for "inv_into UNIV" |
156 - In subsection "Purely functional properties": |
156 - In subsection "Purely functional properties": |
164 "proof(auto simp add: bij_betw_inv_into_left)" finish the proof? |
164 "proof(auto simp add: bij_betw_inv_into_left)" finish the proof? |
165 -- Recall lemma "bij_betw_inv_into". |
165 -- Recall lemma "bij_betw_inv_into". |
166 - In subsection "Other facts": |
166 - In subsection "Other facts": |
167 -- Does the lemma "atLeastLessThan_injective" already exist anywhere? |
167 -- Does the lemma "atLeastLessThan_injective" already exist anywhere? |
168 |
168 |
169 Theory Order_Relation_More (and Order_Relation_More_Base): |
169 Theory Order_Relation_More (and Order_Relation_More_*): |
170 - In subsection "Auxiliaries": |
170 - In subsection "Auxiliaries": |
171 -- Recall the lemmas "order_on_defs", "Field_def", "Domain_def", "Range_def", "converse_def". |
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. |
172 -- Recall that "refl_on r A" forces r to not be defined outside A. |
173 This is why "partial_order_def" |
173 This is why "partial_order_def" |
174 can afford to use non-parameterized versions of antisym and trans. |
174 can afford to use non-parameterized versions of antisym and trans. |
179 abbreviation "Partial_order r ≡ partial_order_on (Field r) r" |
179 abbreviation "Partial_order r ≡ partial_order_on (Field r) r" |
180 abbreviation "Total r ≡ total_on (Field r) r" |
180 abbreviation "Total r ≡ total_on (Field r) r" |
181 abbreviation "Linear_order r ≡ linear_order_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" |
182 abbreviation "Well_order r ≡ well_order_on (Field r) r" |
183 |
183 |
184 Theory Wellorder_Relation (and Wellorder_Relation_Base): |
184 Theory Wellorder_Relation (and Wellorder_Relation_*): |
185 - In subsection "Auxiliaries": recall lemmas "order_on_defs" |
185 - In subsection "Auxiliaries": recall lemmas "order_on_defs" |
186 - In subsection "The notions of maximum, minimum, supremum, successor and order filter": |
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, |
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"? |
188 so that their outside definition not be conditional in "wo_rel r"? |
189 |
189 |
190 Theory Wellfounded_More (and Wellfounded_More_Base): |
190 Theory Wellfounded_More (and Wellfounded_More_*): |
191 Recall the lemmas "wfrec" and "wf_induct". |
191 Recall the lemmas "wfrec" and "wf_induct". |
192 |
192 |
193 Theory Wellorder_Embedding (and Wellorder_Embedding_Base): |
193 Theory Wellorder_Embedding (and Wellorder_Embedding_*): |
194 - Recall "inj_on_def" and "bij_betw_def". |
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 |
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? |
196 situations: Why did it work without annotations to Refl_under_in? |
197 - At the proof of theorem "wellorders_totally_ordered" (and, similarly, elsewhere): |
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 |
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, |
199 goals (in the goal window) would have become unreadable, |
200 making impossible to debug theorem instantiations. |
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. |
201 - At lemma "embed_unique": If we add the attribute "rule format" at lemma, we get an error at qed. |
202 |
202 |
203 Theory Constructions_on_Wellorders (and Constructions_on_Wellorders_Base): |
203 Theory Constructions_on_Wellorders (and Constructions_on_Wellorders_*): |
204 - Some of the lemmas in this section are about more general kinds of relations than |
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. |
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, |
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". |
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 |
208 - The lemmas "ord_trans" are not clearly useful together, as their employment within blast or auto |
209 tends to diverge. |
209 tends to diverge. |
210 |
210 |
211 Theory Cardinal_Order_Relation (and Cardinal_Order_Relation_Base): |
211 Theory Cardinal_Order_Relation (and Cardinal_Order_Relation_*): |
212 - Careful: if "|..|" meets an outer parehthesis, an extra space needs to be inserted, as in |
212 - Careful: if "|..|" meets an outer parehthesis, an extra space needs to be inserted, as in |
213 "( |A| )". |
213 "( |A| )". |
214 - At lemma like ordLeq_Sigma_mono1: Not worth stating something like ordLeq_Sigma_mono2 -- |
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. |
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. |
216 - At lemma ordLeq_Sigma_cong2: Again, no reason for stating something like ordLeq_Sigma_cong2. |