src/HOL/Real/HahnBanach/Bounds.thy
author wenzelm
Fri, 08 Oct 1999 16:40:27 +0200
changeset 7808 fd019ac3485f
parent 7656 2f18c0ffc348
child 7917 5e5b9813cce7
permissions -rw-r--r--
update from Gertrud;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
7566
c5a3f980a7af accomodate refined facts handling;
wenzelm
parents: 7535
diff changeset
     1
(*  Title:      HOL/Real/HahnBanach/Bounds.thy
c5a3f980a7af accomodate refined facts handling;
wenzelm
parents: 7535
diff changeset
     2
    ID:         $Id$
c5a3f980a7af accomodate refined facts handling;
wenzelm
parents: 7535
diff changeset
     3
    Author:     Gertrud Bauer, TU Munich
c5a3f980a7af accomodate refined facts handling;
wenzelm
parents: 7535
diff changeset
     4
*)
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
     5
7808
fd019ac3485f update from Gertrud;
wenzelm
parents: 7656
diff changeset
     6
header {* Bounds *};
fd019ac3485f update from Gertrud;
wenzelm
parents: 7656
diff changeset
     7
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
     8
theory Bounds = Main + Real:;
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
     9
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    10
7808
fd019ac3485f update from Gertrud;
wenzelm
parents: 7656
diff changeset
    11
subsection {* The sets of lower and upper bounds *};
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    12
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    13
constdefs
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    14
  is_LowerBound :: "('a::order) set => 'a set => 'a => bool"
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    15
  "is_LowerBound A B == %x. x:A & (ALL y:B. x <= y)"
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    16
   
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    17
  LowerBounds :: "('a::order) set => 'a set => 'a set"
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    18
  "LowerBounds A B == Collect (is_LowerBound A B)"
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    19
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    20
  is_UpperBound :: "('a::order) set => 'a set => 'a => bool"
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    21
  "is_UpperBound A B == %x. x:A & (ALL y:B. y <= x)"
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    22
 
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    23
  UpperBounds :: "('a::order) set => 'a set => 'a set"
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    24
  "UpperBounds A B == Collect (is_UpperBound A B)";
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    25
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    26
syntax
7808
fd019ac3485f update from Gertrud;
wenzelm
parents: 7656
diff changeset
    27
  "_UPPERS" :: "[pttrn, 'a set, 'a => bool] => 'a set"     
fd019ac3485f update from Gertrud;
wenzelm
parents: 7656
diff changeset
    28
    ("(3UPPER'_BOUNDS _:_./ _)" 10)
fd019ac3485f update from Gertrud;
wenzelm
parents: 7656
diff changeset
    29
  "_UPPERS_U" :: "[pttrn, 'a => bool] => 'a set"           
fd019ac3485f update from Gertrud;
wenzelm
parents: 7656
diff changeset
    30
    ("(3UPPER'_BOUNDS _./ _)" 10)
fd019ac3485f update from Gertrud;
wenzelm
parents: 7656
diff changeset
    31
  "_LOWERS" :: "[pttrn, 'a set, 'a => bool] => 'a set"     
fd019ac3485f update from Gertrud;
wenzelm
parents: 7656
diff changeset
    32
    ("(3LOWER'_BOUNDS _:_./ _)" 10)
fd019ac3485f update from Gertrud;
wenzelm
parents: 7656
diff changeset
    33
  "_LOWERS_U" :: "[pttrn, 'a => bool] => 'a set"           
fd019ac3485f update from Gertrud;
wenzelm
parents: 7656
diff changeset
    34
    ("(3LOWER'_BOUNDS _./ _)" 10);
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    35
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    36
translations
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    37
  "UPPER_BOUNDS x:A. P" == "UpperBounds A (Collect (%x. P))"
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    38
  "UPPER_BOUNDS x. P" == "UPPER_BOUNDS x:UNIV. P"
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    39
  "LOWER_BOUNDS x:A. P" == "LowerBounds A (Collect (%x. P))"
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    40
  "LOWER_BOUNDS x. P" == "LOWER_BOUNDS x:UNIV. P";
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    41
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    42
7808
fd019ac3485f update from Gertrud;
wenzelm
parents: 7656
diff changeset
    43
subsection {* Least and greatest elements *};
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    44
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    45
constdefs
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    46
  is_Least :: "('a::order) set => 'a => bool"
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    47
  "is_Least B == is_LowerBound B B"
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    48
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    49
  Least :: "('a::order) set => 'a"
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    50
  "Least B == Eps (is_Least B)"
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    51
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    52
  is_Greatest :: "('a::order) set => 'a => bool"
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    53
  "is_Greatest B == is_UpperBound B B"
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    54
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    55
  Greatest :: "('a::order) set => 'a" 
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    56
  "Greatest B == Eps (is_Greatest B)";
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    57
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    58
syntax
7808
fd019ac3485f update from Gertrud;
wenzelm
parents: 7656
diff changeset
    59
  "_LEAST"    :: "[pttrn, 'a => bool] => 'a"  
fd019ac3485f update from Gertrud;
wenzelm
parents: 7656
diff changeset
    60
    ("(3LLEAST _./ _)" 10)
fd019ac3485f update from Gertrud;
wenzelm
parents: 7656
diff changeset
    61
  "_GREATEST" :: "[pttrn, 'a => bool] => 'a"  
fd019ac3485f update from Gertrud;
wenzelm
parents: 7656
diff changeset
    62
    ("(3GREATEST _./ _)" 10);
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    63
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    64
translations
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    65
  "LLEAST x. P" == "Least {x. P}"
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    66
  "GREATEST x. P" == "Greatest {x. P}";
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    67
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    68
7808
fd019ac3485f update from Gertrud;
wenzelm
parents: 7656
diff changeset
    69
subsection {* Infimum and Supremum *};
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    70
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    71
constdefs
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    72
  is_Sup :: "('a::order) set => 'a set => 'a => bool"
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    73
  "is_Sup A B x == isLub A B x"
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    74
   
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    75
  Sup :: "('a::order) set => 'a set => 'a"
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    76
  "Sup A B == Eps (is_Sup A B)"
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    77
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    78
  is_Inf :: "('a::order) set => 'a set => 'a => bool"  
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    79
  "is_Inf A B x == x:A & is_Greatest (LowerBounds A B) x"
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    80
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    81
  Inf :: "('a::order) set => 'a set => 'a"
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    82
  "Inf A B == Eps (is_Inf A B)";
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    83
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    84
syntax
7808
fd019ac3485f update from Gertrud;
wenzelm
parents: 7656
diff changeset
    85
  "_SUP" :: "[pttrn, 'a set, 'a => bool] => 'a set"     
fd019ac3485f update from Gertrud;
wenzelm
parents: 7656
diff changeset
    86
    ("(3SUP _:_./ _)" 10)
fd019ac3485f update from Gertrud;
wenzelm
parents: 7656
diff changeset
    87
  "_SUP_U" :: "[pttrn, 'a => bool] => 'a set"           
fd019ac3485f update from Gertrud;
wenzelm
parents: 7656
diff changeset
    88
    ("(3SUP _./ _)" 10)
fd019ac3485f update from Gertrud;
wenzelm
parents: 7656
diff changeset
    89
  "_INF" :: "[pttrn, 'a set, 'a => bool] => 'a set"     
fd019ac3485f update from Gertrud;
wenzelm
parents: 7656
diff changeset
    90
    ("(3INF _:_./ _)" 10)
fd019ac3485f update from Gertrud;
wenzelm
parents: 7656
diff changeset
    91
  "_INF_U" :: "[pttrn, 'a => bool] => 'a set"           
fd019ac3485f update from Gertrud;
wenzelm
parents: 7656
diff changeset
    92
    ("(3INF _./ _)" 10);
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    93
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    94
translations
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    95
  "SUP x:A. P" == "Sup A (Collect (%x. P))"
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    96
  "SUP x. P" == "SUP x:UNIV. P"
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    97
  "INF x:A. P" == "Inf A (Collect (%x. P))"
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    98
  "INF x. P" == "INF x:UNIV. P";
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    99
7656
2f18c0ffc348 update from Gertrud;
wenzelm
parents: 7566
diff changeset
   100
lemma sup_le_ub: "isUb A B y ==> is_Sup A B s ==> s <= y";
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   101
  by (unfold is_Sup_def, rule isLub_le_isUb);
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   102
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   103
lemma sup_ub: "y:B ==> is_Sup A B s ==> y <= s";
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   104
  by (unfold is_Sup_def, rule isLubD2);
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   105
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   106
lemma sup_ub1: "ALL y:B. a <= y ==> is_Sup A B s ==> x:B ==> a <= s";
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   107
proof -; 
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   108
  assume "ALL y:B. a <= y" "is_Sup A B s" "x:B";
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   109
  have "a <= x"; by (rule bspec);
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   110
  also; have "x <= s"; by (rule sup_ub);
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   111
  finally; show "a <= s"; .;
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   112
qed;
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   113
  
7808
fd019ac3485f update from Gertrud;
wenzelm
parents: 7656
diff changeset
   114
end;