src/HOL/Ordinals_and_Cardinals/README.txt
changeset 49310 6e30078de4f0
parent 49309 f20b24214ac2
child 49311 56fcd826f90c
equal deleted inserted replaced
49309:f20b24214ac2 49310:6e30078de4f0
     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?