src/HOL/Real/HahnBanach/Bounds.thy
changeset 7917 5e5b9813cce7
parent 7808 fd019ac3485f
child 7978 1b99ee57d131
--- a/src/HOL/Real/HahnBanach/Bounds.thy	Fri Oct 22 18:41:00 1999 +0200
+++ b/src/HOL/Real/HahnBanach/Bounds.thy	Fri Oct 22 20:14:31 1999 +0200
@@ -7,18 +7,19 @@
 
 theory Bounds = Main + Real:;
 
+text_raw {* \begin{comment} *};
 
 subsection {* The sets of lower and upper bounds *};
 
 constdefs
   is_LowerBound :: "('a::order) set => 'a set => 'a => bool"
-  "is_LowerBound A B == %x. x:A & (ALL y:B. x <= y)"
+  "is_LowerBound A B == \<lambda>x. x:A & (ALL y:B. x <= y)"
    
   LowerBounds :: "('a::order) set => 'a set => 'a set"
   "LowerBounds A B == Collect (is_LowerBound A B)"
 
   is_UpperBound :: "('a::order) set => 'a set => 'a => bool"
-  "is_UpperBound A B == %x. x:A & (ALL y:B. y <= x)"
+  "is_UpperBound A B == \<lambda>x. x:A & (ALL y:B. y <= x)"
  
   UpperBounds :: "('a::order) set => 'a set => 'a set"
   "UpperBounds A B == Collect (is_UpperBound A B)";
@@ -34,9 +35,9 @@
     ("(3LOWER'_BOUNDS _./ _)" 10);
 
 translations
-  "UPPER_BOUNDS x:A. P" == "UpperBounds A (Collect (%x. P))"
+  "UPPER_BOUNDS x:A. P" == "UpperBounds A (Collect (\<lambda>x. P))"
   "UPPER_BOUNDS x. P" == "UPPER_BOUNDS x:UNIV. P"
-  "LOWER_BOUNDS x:A. P" == "LowerBounds A (Collect (%x. P))"
+  "LOWER_BOUNDS x:A. P" == "LowerBounds A (Collect (\<lambda>x. P))"
   "LOWER_BOUNDS x. P" == "LOWER_BOUNDS x:UNIV. P";
 
 
@@ -68,42 +69,67 @@
 
 subsection {* Infimum and Supremum *};
 
+text_raw {* \end{comment} *};
+
+text {* A supremum of an ordered set $B$ w.~r.~t.~$A$ 
+is defined as a least upperbound of $B$, which lies in $A$.
+The definition of the supremum is based on the
+existing definition (see HOL/Real/Lubs.thy).*};
+   
+text{* If a supremum exists, then $\idt{Sup}\ap A\ap B$
+is equal to the supremum. *};
+
 constdefs
   is_Sup :: "('a::order) set => 'a set => 'a => bool"
   "is_Sup A B x == isLub A B x"
-   
+
   Sup :: "('a::order) set => 'a set => 'a"
-  "Sup A B == Eps (is_Sup A B)"
+  "Sup A B == Eps (is_Sup A B)";
+;
+text_raw {* \begin{comment} *};
 
-  is_Inf :: "('a::order) set => 'a set => 'a => bool"  
+constdefs
+  is_Inf :: "('a::order) set => 'a set => 'a => bool"
   "is_Inf A B x == x:A & is_Greatest (LowerBounds A B) x"
 
   Inf :: "('a::order) set => 'a set => 'a"
   "Inf A B == Eps (is_Inf A B)";
 
 syntax
-  "_SUP" :: "[pttrn, 'a set, 'a => bool] => 'a set"     
+  "_SUP" :: "[pttrn, 'a set, 'a => bool] => 'a set"
     ("(3SUP _:_./ _)" 10)
-  "_SUP_U" :: "[pttrn, 'a => bool] => 'a set"           
+  "_SUP_U" :: "[pttrn, 'a => bool] => 'a set"
     ("(3SUP _./ _)" 10)
-  "_INF" :: "[pttrn, 'a set, 'a => bool] => 'a set"     
+  "_INF" :: "[pttrn, 'a set, 'a => bool] => 'a set"
     ("(3INF _:_./ _)" 10)
-  "_INF_U" :: "[pttrn, 'a => bool] => 'a set"           
+  "_INF_U" :: "[pttrn, 'a => bool] => 'a set"
     ("(3INF _./ _)" 10);
 
 translations
-  "SUP x:A. P" == "Sup A (Collect (%x. P))"
+  "SUP x:A. P" == "Sup A (Collect (\<lambda>x. P))"
   "SUP x. P" == "SUP x:UNIV. P"
-  "INF x:A. P" == "Inf A (Collect (%x. P))"
+  "INF x:A. P" == "Inf A (Collect (\<lambda>x. P))"
   "INF x. P" == "INF x:UNIV. P";
 
+text_raw {* \end{comment} *};
+;
+
+text{* The supremum of $B$ is less than every upper bound
+of $B$.*};
+
 lemma sup_le_ub: "isUb A B y ==> is_Sup A B s ==> s <= y";
   by (unfold is_Sup_def, rule isLub_le_isUb);
 
+text {* The supremum $B$ is an upperbound for $B$. *};
+
 lemma sup_ub: "y:B ==> is_Sup A B s ==> y <= s";
   by (unfold is_Sup_def, rule isLubD2);
 
-lemma sup_ub1: "ALL y:B. a <= y ==> is_Sup A B s ==> x:B ==> a <= s";
+text{* The supremum of a non-empty set $B$ is greater
+than a lower bound of $B$. *};
+
+lemma sup_ub1: 
+  "[| ALL y:B. a <= y; is_Sup A B s; x:B |] ==> a <= s";
 proof -; 
   assume "ALL y:B. a <= y" "is_Sup A B s" "x:B";
   have "a <= x"; by (rule bspec);