author | ballarin |
Wed, 30 Apr 2003 10:01:35 +0200 | |
changeset 13936 | d3671b878828 |
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:
5078
diff
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:
5078
diff
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:
5078
diff
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:
5078
diff
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:
5078
diff
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:
5078
diff
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:
5078
diff
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:
5143
diff
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:
5143
diff
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:
5078
diff
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:
5078
diff
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:
5078
diff
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:
5078
diff
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:
5143
diff
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:
5078
diff
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:
5078
diff
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:
5078
diff
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:
5078
diff
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:
5078
diff
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:
5078
diff
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 |