| author | wenzelm | 
| Wed, 10 Jul 2002 14:47:48 +0200 | |
| changeset 13332 | f130bcf29620 | 
| parent 7219 | 4e3f386c2e37 | 
| permissions | -rw-r--r-- | 
| 5078 | 1 | (* Title : Lubs.ML | 
| 7219 | 2 | ID : $Id$ | 
| 5078 | 3 | Author : Jacques D. Fleuriot | 
| 4 | Copyright : 1998 University of Cambridge | |
| 5 | Description : Completeness of the reals. A few of the | |
| 6 | definitions suggested by James Margetson | |
| 7 | *) | |
| 8 | ||
| 9 | (*------------------------------------------------------------------------ | |
| 10 | Rules for *<= and <=* | |
| 11 | ------------------------------------------------------------------------*) | |
| 5143 
b94cd208f073
Removal of leading "\!\!..." from most Goal commands
 paulson parents: 
5078diff
changeset | 12 | Goalw [setle_def] "ALL y: S. y <= x ==> S *<= x"; | 
| 5078 | 13 | by (assume_tac 1); | 
| 14 | qed "setleI"; | |
| 15 | ||
| 5143 
b94cd208f073
Removal of leading "\!\!..." from most Goal commands
 paulson parents: 
5078diff
changeset | 16 | Goalw [setle_def] "[| S *<= x; y: S |] ==> y <= x"; | 
| 5078 | 17 | by (Fast_tac 1); | 
| 18 | qed "setleD"; | |
| 19 | ||
| 5143 
b94cd208f073
Removal of leading "\!\!..." from most Goal commands
 paulson parents: 
5078diff
changeset | 20 | Goalw [setge_def] "ALL y: S. x<= y ==> x <=* S"; | 
| 5078 | 21 | by (assume_tac 1); | 
| 22 | qed "setgeI"; | |
| 23 | ||
| 5143 
b94cd208f073
Removal of leading "\!\!..." from most Goal commands
 paulson parents: 
5078diff
changeset | 24 | Goalw [setge_def] "[| x <=* S; y: S |] ==> x <= y"; | 
| 5078 | 25 | by (Fast_tac 1); | 
| 26 | qed "setgeD"; | |
| 27 | ||
| 28 | (*------------------------------------------------------------------------ | |
| 29 | Rules about leastP, ub and lub | |
| 30 | ------------------------------------------------------------------------*) | |
| 5143 
b94cd208f073
Removal of leading "\!\!..." from most Goal commands
 paulson parents: 
5078diff
changeset | 31 | Goalw [leastP_def] "leastP P x ==> P x"; | 
| 5078 | 32 | by (Step_tac 1); | 
| 33 | qed "leastPD1"; | |
| 34 | ||
| 5143 
b94cd208f073
Removal of leading "\!\!..." from most Goal commands
 paulson parents: 
5078diff
changeset | 35 | Goalw [leastP_def] "leastP P x ==> x <=* Collect P"; | 
| 5078 | 36 | by (Step_tac 1); | 
| 37 | qed "leastPD2"; | |
| 38 | ||
| 5143 
b94cd208f073
Removal of leading "\!\!..." from most Goal commands
 paulson parents: 
5078diff
changeset | 39 | Goal "[| leastP P x; y: Collect P |] ==> x <= y"; | 
| 5078 | 40 | by (blast_tac (claset() addSDs [leastPD2,setgeD]) 1); | 
| 41 | qed "leastPD3"; | |
| 42 | ||
| 43 | Goalw [isLub_def,isUb_def,leastP_def] | |
| 5148 
74919e8f221c
More tidying and removal of "\!\!... from Goal commands
 paulson parents: 
5143diff
changeset | 44 | "isLub R S x ==> S *<= x"; | 
| 5078 | 45 | by (Step_tac 1); | 
| 46 | qed "isLubD1"; | |
| 47 | ||
| 48 | Goalw [isLub_def,isUb_def,leastP_def] | |
| 5148 
74919e8f221c
More tidying and removal of "\!\!... from Goal commands
 paulson parents: 
5143diff
changeset | 49 | "isLub R S x ==> x: R"; | 
| 5078 | 50 | by (Step_tac 1); | 
| 51 | qed "isLubD1a"; | |
| 52 | ||
| 5143 
b94cd208f073
Removal of leading "\!\!..." from most Goal commands
 paulson parents: 
5078diff
changeset | 53 | Goalw [isUb_def] "isLub R S x ==> isUb R S x"; | 
| 5078 | 54 | by (blast_tac (claset() addDs [isLubD1,isLubD1a]) 1); | 
| 55 | qed "isLub_isUb"; | |
| 56 | ||
| 5143 
b94cd208f073
Removal of leading "\!\!..." from most Goal commands
 paulson parents: 
5078diff
changeset | 57 | Goal "[| isLub R S x; y : S |] ==> y <= x"; | 
| 5078 | 58 | by (blast_tac (claset() addSDs [isLubD1,setleD]) 1); | 
| 59 | qed "isLubD2"; | |
| 60 | ||
| 5143 
b94cd208f073
Removal of leading "\!\!..." from most Goal commands
 paulson parents: 
5078diff
changeset | 61 | Goalw [isLub_def] "isLub R S x ==> leastP(isUb R S) x"; | 
| 5078 | 62 | by (assume_tac 1); | 
| 63 | qed "isLubD3"; | |
| 64 | ||
| 5143 
b94cd208f073
Removal of leading "\!\!..." from most Goal commands
 paulson parents: 
5078diff
changeset | 65 | Goalw [isLub_def] "leastP(isUb R S) x ==> isLub R S x"; | 
| 5078 | 66 | by (assume_tac 1); | 
| 67 | qed "isLubI1"; | |
| 68 | ||
| 69 | Goalw [isLub_def,leastP_def] | |
| 5148 
74919e8f221c
More tidying and removal of "\!\!... from Goal commands
 paulson parents: 
5143diff
changeset | 70 | "[| isUb R S x; x <=* Collect (isUb R S) |] ==> isLub R S x"; | 
| 5078 | 71 | by (Step_tac 1); | 
| 72 | qed "isLubI2"; | |
| 73 | ||
| 5143 
b94cd208f073
Removal of leading "\!\!..." from most Goal commands
 paulson parents: 
5078diff
changeset | 74 | Goalw [isUb_def] "[| isUb R S x; y : S |] ==> y <= x"; | 
| 5078 | 75 | by (fast_tac (claset() addDs [setleD]) 1); | 
| 76 | qed "isUbD"; | |
| 77 | ||
| 5143 
b94cd208f073
Removal of leading "\!\!..." from most Goal commands
 paulson parents: 
5078diff
changeset | 78 | Goalw [isUb_def] "isUb R S x ==> S *<= x"; | 
| 5078 | 79 | by (Step_tac 1); | 
| 80 | qed "isUbD2"; | |
| 81 | ||
| 5143 
b94cd208f073
Removal of leading "\!\!..." from most Goal commands
 paulson parents: 
5078diff
changeset | 82 | Goalw [isUb_def] "isUb R S x ==> x: R"; | 
| 5078 | 83 | by (Step_tac 1); | 
| 84 | qed "isUbD2a"; | |
| 85 | ||
| 5143 
b94cd208f073
Removal of leading "\!\!..." from most Goal commands
 paulson parents: 
5078diff
changeset | 86 | Goalw [isUb_def] "[| S *<= x; x: R |] ==> isUb R S x"; | 
| 5078 | 87 | by (Step_tac 1); | 
| 88 | qed "isUbI"; | |
| 89 | ||
| 5143 
b94cd208f073
Removal of leading "\!\!..." from most Goal commands
 paulson parents: 
5078diff
changeset | 90 | Goalw [isLub_def] "[| isLub R S x; isUb R S y |] ==> x <= y"; | 
| 5078 | 91 | by (blast_tac (claset() addSIs [leastPD3]) 1); | 
| 92 | qed "isLub_le_isUb"; | |
| 93 | ||
| 5143 
b94cd208f073
Removal of leading "\!\!..." from most Goal commands
 paulson parents: 
5078diff
changeset | 94 | Goalw [ubs_def,isLub_def] "isLub R S x ==> x <=* ubs R S"; | 
| 5078 | 95 | by (etac leastPD2 1); | 
| 96 | qed "isLub_ubs"; | |
| 97 | ||
| 98 | ||
| 99 | ||
| 100 |