src/HOL/Real/HahnBanach/FunctionNorm.thy
author wenzelm
Fri, 08 Mar 2002 16:24:06 +0100
changeset 13049 ce180e5b7fa0
parent 12018 ec054019c910
child 13515 a6a7025fd7e8
permissions -rw-r--r--
tuned;
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/FunctionNorm.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
9035
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 9013
diff changeset
     6
header {* The norm of a function *}
7808
fd019ac3485f update from Gertrud;
wenzelm
parents: 7656
diff changeset
     7
9035
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 9013
diff changeset
     8
theory FunctionNorm = NormedSpace + FunctionOrder:
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
     9
9035
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 9013
diff changeset
    10
subsection {* Continuous linear forms*}
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
    11
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
    12
text {*
11472
wenzelm
parents: 10752
diff changeset
    13
  A linear form @{text f} on a normed vector space @{text "(V, \<parallel>\<cdot>\<parallel>)"}
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
    14
  is \emph{continuous}, iff it is bounded, i.~e.
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
    15
  \begin{center}
11472
wenzelm
parents: 10752
diff changeset
    16
  @{text "\<exists>c \<in> R. \<forall>x \<in> V. \<bar>f x\<bar> \<le> c \<cdot> \<parallel>x\<parallel>"}
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
    17
  \end{center}
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
    18
  In our application no other functions than linear forms are
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
    19
  considered, so we can define continuous linear forms as bounded
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
    20
  linear forms:
9035
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 9013
diff changeset
    21
*}
7535
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
constdefs
7978
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
    24
  is_continuous ::
11472
wenzelm
parents: 10752
diff changeset
    25
  "'a::{plus, minus, zero} set \<Rightarrow> ('a \<Rightarrow> real) \<Rightarrow> ('a \<Rightarrow> real) \<Rightarrow> bool"
wenzelm
parents: 10752
diff changeset
    26
  "is_continuous V norm f \<equiv>
wenzelm
parents: 10752
diff changeset
    27
    is_linearform V f \<and> (\<exists>c. \<forall>x \<in> V. \<bar>f x\<bar> \<le> c * norm x)"
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    28
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
    29
lemma continuousI [intro]:
11472
wenzelm
parents: 10752
diff changeset
    30
  "is_linearform V f \<Longrightarrow> (\<And>x. x \<in> V \<Longrightarrow> \<bar>f x\<bar> \<le> c * norm x)
wenzelm
parents: 10752
diff changeset
    31
  \<Longrightarrow> is_continuous V norm f"
wenzelm
parents: 10752
diff changeset
    32
  by (unfold is_continuous_def) blast
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
    33
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
    34
lemma continuous_linearform [intro?]:
11472
wenzelm
parents: 10752
diff changeset
    35
  "is_continuous V norm f \<Longrightarrow> is_linearform V f"
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
    36
  by (unfold is_continuous_def) blast
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    37
9408
d3d56e1d2ec1 classical atts now intro! / intro / intro?;
wenzelm
parents: 9394
diff changeset
    38
lemma continuous_bounded [intro?]:
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
    39
  "is_continuous V norm f
11472
wenzelm
parents: 10752
diff changeset
    40
  \<Longrightarrow> \<exists>c. \<forall>x \<in> V. \<bar>f x\<bar> \<le> c * norm x"
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
    41
  by (unfold is_continuous_def) blast
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    42
11472
wenzelm
parents: 10752
diff changeset
    43
9035
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 9013
diff changeset
    44
subsection{* The norm of a linear form *}
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
    45
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
    46
text {*
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
    47
  The least real number @{text c} for which holds
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
    48
  \begin{center}
11472
wenzelm
parents: 10752
diff changeset
    49
  @{text "\<forall>x \<in> V. \<bar>f x\<bar> \<le> c \<cdot> \<parallel>x\<parallel>"}
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
    50
  \end{center}
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
    51
  is called the \emph{norm} of @{text f}.
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
    52
11472
wenzelm
parents: 10752
diff changeset
    53
  For non-trivial vector spaces @{text "V \<noteq> {0}"} the norm can be
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
    54
  defined as
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
    55
  \begin{center}
11472
wenzelm
parents: 10752
diff changeset
    56
  @{text "\<parallel>f\<parallel> = \<sup>x \<noteq> 0. \<bar>f x\<bar> / \<parallel>x\<parallel>"}
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
    57
  \end{center}
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
    58
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
    59
  For the case @{text "V = {0}"} the supremum would be taken from an
11472
wenzelm
parents: 10752
diff changeset
    60
  empty set. Since @{text \<real>} is unbounded, there would be no supremum.
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
    61
  To avoid this situation it must be guaranteed that there is an
11472
wenzelm
parents: 10752
diff changeset
    62
  element in this set. This element must be @{text "{} \<ge> 0"} so that
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
    63
  @{text function_norm} has the norm properties. Furthermore
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
    64
  it does not have to change the norm in all other cases, so it must
11472
wenzelm
parents: 10752
diff changeset
    65
  be @{text 0}, as all other elements of are @{text "{} \<ge> 0"}.
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
    66
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
    67
  Thus we define the set @{text B} the supremum is taken from as
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
    68
  \begin{center}
11472
wenzelm
parents: 10752
diff changeset
    69
  @{text "{0} \<union> {\<bar>f x\<bar> / \<parallel>x\<parallel>. x \<noteq> 0 \<and> x \<in> F}"}
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
    70
  \end{center}
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
    71
*}
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
    72
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
    73
constdefs
11472
wenzelm
parents: 10752
diff changeset
    74
  B :: "'a set \<Rightarrow> ('a \<Rightarrow> real) \<Rightarrow> ('a::{plus, minus, zero} \<Rightarrow> real) \<Rightarrow> real set"
wenzelm
parents: 10752
diff changeset
    75
  "B V norm f \<equiv>
12018
ec054019c910 Numerals and simprocs for types real and hypreal. The abstract
paulson
parents: 11701
diff changeset
    76
  {0} \<union> {\<bar>f x\<bar> * inverse (norm x) | x. x \<noteq> 0 \<and> x \<in> V}"
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
    77
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
    78
text {*
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
    79
  @{text n} is the function norm of @{text f}, iff @{text n} is the
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
    80
  supremum of @{text B}.
9035
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 9013
diff changeset
    81
*}
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
    82
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    83
constdefs
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
    84
  is_function_norm ::
11472
wenzelm
parents: 10752
diff changeset
    85
  "('a::{minus,plus,zero} \<Rightarrow> real) \<Rightarrow> 'a set \<Rightarrow> ('a \<Rightarrow> real) \<Rightarrow> real \<Rightarrow> bool"
wenzelm
parents: 10752
diff changeset
    86
  "is_function_norm f V norm fn \<equiv> is_Sup UNIV (B V norm f) fn"
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    87
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
    88
text {*
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
    89
  @{text function_norm} is equal to the supremum of @{text B}, if the
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
    90
  supremum exists. Otherwise it is undefined.
9035
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 9013
diff changeset
    91
*}
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    92
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
    93
constdefs
11472
wenzelm
parents: 10752
diff changeset
    94
  function_norm :: "('a::{minus,plus,zero} \<Rightarrow> real) \<Rightarrow> 'a set \<Rightarrow> ('a \<Rightarrow> real) \<Rightarrow> real"
wenzelm
parents: 10752
diff changeset
    95
  "function_norm f V norm \<equiv> Sup UNIV (B V norm f)"
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
    96
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
    97
syntax
11472
wenzelm
parents: 10752
diff changeset
    98
  function_norm :: "('a \<Rightarrow> real) \<Rightarrow> 'a set \<Rightarrow> ('a \<Rightarrow> real) \<Rightarrow> real"  ("\<parallel>_\<parallel>_,_")
9374
153853af318b - xsymbols for
bauerg
parents: 9035
diff changeset
    99
12018
ec054019c910 Numerals and simprocs for types real and hypreal. The abstract
paulson
parents: 11701
diff changeset
   100
lemma B_not_empty: "0 \<in> B V norm f"
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   101
  by (unfold B_def) blast
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   102
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   103
text {*
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   104
  The following lemma states that every continuous linear form on a
11472
wenzelm
parents: 10752
diff changeset
   105
  normed space @{text "(V, \<parallel>\<cdot>\<parallel>)"} has a function norm.
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   106
*}
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   107
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   108
lemma ex_fnorm [intro?]:
11472
wenzelm
parents: 10752
diff changeset
   109
  "is_normed_vectorspace V norm \<Longrightarrow> is_continuous V norm f
wenzelm
parents: 10752
diff changeset
   110
     \<Longrightarrow> is_function_norm f V norm \<parallel>f\<parallel>V,norm"
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   111
proof (unfold function_norm_def is_function_norm_def
9998
09bf8fcd1c6e fixed someI2_ex;
wenzelm
parents: 9969
diff changeset
   112
  is_continuous_def Sup_def, elim conjE, rule someI2_ex)
9035
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 9013
diff changeset
   113
  assume "is_normed_vectorspace V norm"
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   114
  assume "is_linearform V f"
11472
wenzelm
parents: 10752
diff changeset
   115
  and e: "\<exists>c. \<forall>x \<in> V. \<bar>f x\<bar> \<le> c * norm x"
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   116
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   117
  txt {* The existence of the supremum is shown using the
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   118
  completeness of the reals. Completeness means, that
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   119
  every non-empty bounded set of reals has a
9035
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 9013
diff changeset
   120
  supremum. *}
11472
wenzelm
parents: 10752
diff changeset
   121
  show  "\<exists>a. is_Sup UNIV (B V norm f) a"
9035
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 9013
diff changeset
   122
  proof (unfold is_Sup_def, rule reals_complete)
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   123
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   124
    txt {* First we have to show that @{text B} is non-empty: *}
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   125
11472
wenzelm
parents: 10752
diff changeset
   126
    show "\<exists>X. X \<in> B V norm f"
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   127
    proof
12018
ec054019c910 Numerals and simprocs for types real and hypreal. The abstract
paulson
parents: 11701
diff changeset
   128
      show "0 \<in> (B V norm f)" by (unfold B_def) blast
9035
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 9013
diff changeset
   129
    qed
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   130
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   131
    txt {* Then we have to show that @{text B} is bounded: *}
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   132
11472
wenzelm
parents: 10752
diff changeset
   133
    from e show "\<exists>Y. isUb UNIV (B V norm f) Y"
9035
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 9013
diff changeset
   134
    proof
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   135
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   136
      txt {* We know that @{text f} is bounded by some value @{text c}. *}
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   137
11472
wenzelm
parents: 10752
diff changeset
   138
      fix c assume a: "\<forall>x \<in> V. \<bar>f x\<bar> \<le> c * norm x"
12018
ec054019c910 Numerals and simprocs for types real and hypreal. The abstract
paulson
parents: 11701
diff changeset
   139
      def b \<equiv> "max c 0"
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   140
9035
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 9013
diff changeset
   141
      show "?thesis"
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   142
      proof (intro exI isUbI setleI ballI, unfold B_def,
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   143
        elim UnE CollectE exE conjE singletonE)
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   144
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   145
        txt {* To proof the thesis, we have to show that there is some
11472
wenzelm
parents: 10752
diff changeset
   146
        constant @{text b}, such that @{text "y \<le> b"} for all
wenzelm
parents: 10752
diff changeset
   147
        @{text "y \<in> B"}. Due to the definition of @{text B} there are
wenzelm
parents: 10752
diff changeset
   148
        two cases for @{text "y \<in> B"}.  If @{text "y = 0"} then
wenzelm
parents: 10752
diff changeset
   149
        @{text "y \<le> max c 0"}: *}
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   150
12018
ec054019c910 Numerals and simprocs for types real and hypreal. The abstract
paulson
parents: 11701
diff changeset
   151
        fix y assume "y = (0::real)"
11472
wenzelm
parents: 10752
diff changeset
   152
        show "y \<le> b" by (simp! add: le_maxI2)
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   153
11472
wenzelm
parents: 10752
diff changeset
   154
        txt {* The second case is @{text "y = \<bar>f x\<bar> / \<parallel>x\<parallel>"} for some
wenzelm
parents: 10752
diff changeset
   155
        @{text "x \<in> V"} with @{text "x \<noteq> 0"}. *}
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   156
9035
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 9013
diff changeset
   157
      next
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   158
        fix x y
11472
wenzelm
parents: 10752
diff changeset
   159
        assume "x \<in> V"  "x \<noteq> 0"
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   160
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   161
        txt {* The thesis follows by a short calculation using the
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   162
        fact that @{text f} is bounded. *}
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   163
11472
wenzelm
parents: 10752
diff changeset
   164
        assume "y = \<bar>f x\<bar> * inverse (norm x)"
wenzelm
parents: 10752
diff changeset
   165
        also have "... \<le> c * norm x * inverse (norm x)"
9035
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 9013
diff changeset
   166
        proof (rule real_mult_le_le_mono2)
12018
ec054019c910 Numerals and simprocs for types real and hypreal. The abstract
paulson
parents: 11701
diff changeset
   167
          show "0 \<le> inverse (norm x)"
ec054019c910 Numerals and simprocs for types real and hypreal. The abstract
paulson
parents: 11701
diff changeset
   168
            by (rule order_less_imp_le, rule real_inverse_gt_0,
9035
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 9013
diff changeset
   169
                rule normed_vs_norm_gt_zero)
11472
wenzelm
parents: 10752
diff changeset
   170
          from a show "\<bar>f x\<bar> \<le> c * norm x" ..
9035
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 9013
diff changeset
   171
        qed
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   172
        also have "... = c * (norm x * inverse (norm x))"
9035
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 9013
diff changeset
   173
          by (rule real_mult_assoc)
12018
ec054019c910 Numerals and simprocs for types real and hypreal. The abstract
paulson
parents: 11701
diff changeset
   174
        also have "(norm x * inverse (norm x)) = (1::real)"
9035
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 9013
diff changeset
   175
        proof (rule real_mult_inv_right1)
12018
ec054019c910 Numerals and simprocs for types real and hypreal. The abstract
paulson
parents: 11701
diff changeset
   176
          show nz: "norm x \<noteq> 0"
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   177
            by (rule not_sym, rule lt_imp_not_eq,
9035
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 9013
diff changeset
   178
              rule normed_vs_norm_gt_zero)
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 9013
diff changeset
   179
        qed
11472
wenzelm
parents: 10752
diff changeset
   180
        also have "c * ... \<le> b " by (simp! add: le_maxI1)
wenzelm
parents: 10752
diff changeset
   181
        finally show "y \<le> b" .
9035
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 9013
diff changeset
   182
      qed simp
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 9013
diff changeset
   183
    qed
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 9013
diff changeset
   184
  qed
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 9013
diff changeset
   185
qed
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   186
11472
wenzelm
parents: 10752
diff changeset
   187
text {* The norm of a continuous function is always @{text "\<ge> 0"}. *}
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   188
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   189
lemma fnorm_ge_zero [intro?]:
11472
wenzelm
parents: 10752
diff changeset
   190
  "is_continuous V norm f \<Longrightarrow> is_normed_vectorspace V norm
12018
ec054019c910 Numerals and simprocs for types real and hypreal. The abstract
paulson
parents: 11701
diff changeset
   191
   \<Longrightarrow> 0 \<le> \<parallel>f\<parallel>V,norm"
9035
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 9013
diff changeset
   192
proof -
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   193
  assume c: "is_continuous V norm f"
9035
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 9013
diff changeset
   194
     and n: "is_normed_vectorspace V norm"
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   195
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   196
  txt {* The function norm is defined as the supremum of @{text B}.
11472
wenzelm
parents: 10752
diff changeset
   197
  So it is @{text "\<ge> 0"} if all elements in @{text B} are
wenzelm
parents: 10752
diff changeset
   198
  @{text "\<ge> 0"}, provided the supremum exists and @{text B} is not
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   199
  empty. *}
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   200
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   201
  show ?thesis
9035
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 9013
diff changeset
   202
  proof (unfold function_norm_def, rule sup_ub1)
12018
ec054019c910 Numerals and simprocs for types real and hypreal. The abstract
paulson
parents: 11701
diff changeset
   203
    show "\<forall>x \<in> (B V norm f). 0 \<le> x"
7978
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
   204
    proof (intro ballI, unfold B_def,
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   205
           elim UnE singletonE CollectE exE conjE)
9035
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 9013
diff changeset
   206
      fix x r
11472
wenzelm
parents: 10752
diff changeset
   207
      assume "x \<in> V"  "x \<noteq> 0"
wenzelm
parents: 10752
diff changeset
   208
        and r: "r = \<bar>f x\<bar> * inverse (norm x)"
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   209
12018
ec054019c910 Numerals and simprocs for types real and hypreal. The abstract
paulson
parents: 11701
diff changeset
   210
      have ge: "0 \<le> \<bar>f x\<bar>" by (simp! only: abs_ge_zero)
ec054019c910 Numerals and simprocs for types real and hypreal. The abstract
paulson
parents: 11701
diff changeset
   211
      have "0 \<le> inverse (norm x)"
ec054019c910 Numerals and simprocs for types real and hypreal. The abstract
paulson
parents: 11701
diff changeset
   212
        by (rule order_less_imp_le, rule real_inverse_gt_0, rule)(***
10752
c4f1bf2acf4c tidying, and separation of HOL-Hyperreal from HOL-Real
paulson
parents: 10687
diff changeset
   213
        proof (rule order_less_imp_le);
12018
ec054019c910 Numerals and simprocs for types real and hypreal. The abstract
paulson
parents: 11701
diff changeset
   214
          show "0 < inverse (norm x)";
10606
e3229a37d53f converted rinv to inverse;
bauerg
parents: 9998
diff changeset
   215
          proof (rule real_inverse_gt_zero);
12018
ec054019c910 Numerals and simprocs for types real and hypreal. The abstract
paulson
parents: 11701
diff changeset
   216
            show "0 < norm x"; ..;
7566
c5a3f980a7af accomodate refined facts handling;
wenzelm
parents: 7535
diff changeset
   217
          qed;
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   218
        qed; ***)
12018
ec054019c910 Numerals and simprocs for types real and hypreal. The abstract
paulson
parents: 11701
diff changeset
   219
      with ge show "0 \<le> r"
9035
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 9013
diff changeset
   220
       by (simp only: r, rule real_le_mult_order1a)
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 9013
diff changeset
   221
    qed (simp!)
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   222
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   223
    txt {* Since @{text f} is continuous the function norm exists: *}
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   224
11472
wenzelm
parents: 10752
diff changeset
   225
    have "is_function_norm f V norm \<parallel>f\<parallel>V,norm" ..
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   226
    thus "is_Sup UNIV (B V norm f) (Sup UNIV (B V norm f))"
9035
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 9013
diff changeset
   227
      by (unfold is_function_norm_def function_norm_def)
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   228
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   229
    txt {* @{text B} is non-empty by construction: *}
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   230
12018
ec054019c910 Numerals and simprocs for types real and hypreal. The abstract
paulson
parents: 11701
diff changeset
   231
    show "0 \<in> B V norm f" by (rule B_not_empty)
9035
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 9013
diff changeset
   232
  qed
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 9013
diff changeset
   233
qed
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   234
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   235
text {*
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   236
  \medskip The fundamental property of function norms is:
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   237
  \begin{center}
11472
wenzelm
parents: 10752
diff changeset
   238
  @{text "\<bar>f x\<bar> \<le> \<parallel>f\<parallel> \<cdot> \<parallel>x\<parallel>"}
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   239
  \end{center}
9035
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 9013
diff changeset
   240
*}
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   241
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   242
lemma norm_fx_le_norm_f_norm_x:
11472
wenzelm
parents: 10752
diff changeset
   243
  "is_continuous V norm f \<Longrightarrow> is_normed_vectorspace V norm \<Longrightarrow> x \<in> V
wenzelm
parents: 10752
diff changeset
   244
    \<Longrightarrow> \<bar>f x\<bar> \<le> \<parallel>f\<parallel>V,norm * norm x"
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   245
proof -
11472
wenzelm
parents: 10752
diff changeset
   246
  assume "is_normed_vectorspace V norm"  "x \<in> V"
9035
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 9013
diff changeset
   247
  and c: "is_continuous V norm f"
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 9013
diff changeset
   248
  have v: "is_vectorspace V" ..
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   249
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   250
 txt{* The proof is by case analysis on @{text x}. *}
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   251
9035
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 9013
diff changeset
   252
  show ?thesis
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 9013
diff changeset
   253
  proof cases
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   254
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   255
    txt {* For the case @{text "x = 0"} the thesis follows from the
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   256
    linearity of @{text f}: for every linear function holds
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   257
    @{text "f 0 = 0"}. *}
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   258
9374
153853af318b - xsymbols for
bauerg
parents: 9035
diff changeset
   259
    assume "x = 0"
11472
wenzelm
parents: 10752
diff changeset
   260
    have "\<bar>f x\<bar> = \<bar>f 0\<bar>" by (simp!)
12018
ec054019c910 Numerals and simprocs for types real and hypreal. The abstract
paulson
parents: 11701
diff changeset
   261
    also from v continuous_linearform have "f 0 = 0" ..
9035
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 9013
diff changeset
   262
    also note abs_zero
12018
ec054019c910 Numerals and simprocs for types real and hypreal. The abstract
paulson
parents: 11701
diff changeset
   263
    also have "0 \<le> \<parallel>f\<parallel>V,norm * norm x"
9035
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 9013
diff changeset
   264
    proof (rule real_le_mult_order1a)
12018
ec054019c910 Numerals and simprocs for types real and hypreal. The abstract
paulson
parents: 11701
diff changeset
   265
      show "0 \<le> \<parallel>f\<parallel>V,norm" ..
ec054019c910 Numerals and simprocs for types real and hypreal. The abstract
paulson
parents: 11701
diff changeset
   266
      show "0 \<le> norm x" ..
9035
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 9013
diff changeset
   267
    qed
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   268
    finally
11472
wenzelm
parents: 10752
diff changeset
   269
    show "\<bar>f x\<bar> \<le> \<parallel>f\<parallel>V,norm * norm x" .
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   270
9035
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 9013
diff changeset
   271
  next
11472
wenzelm
parents: 10752
diff changeset
   272
    assume "x \<noteq> 0"
12018
ec054019c910 Numerals and simprocs for types real and hypreal. The abstract
paulson
parents: 11701
diff changeset
   273
    have n: "0 < norm x" ..
ec054019c910 Numerals and simprocs for types real and hypreal. The abstract
paulson
parents: 11701
diff changeset
   274
    hence nz: "norm x \<noteq> 0"
9379
21cfeae6659d tuded presentation;
bauerg
parents: 9374
diff changeset
   275
      by (simp only: lt_imp_not_eq)
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   276
11472
wenzelm
parents: 10752
diff changeset
   277
    txt {* For the case @{text "x \<noteq> 0"} we derive the following fact
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   278
    from the definition of the function norm:*}
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   279
11472
wenzelm
parents: 10752
diff changeset
   280
    have l: "\<bar>f x\<bar> * inverse (norm x) \<le> \<parallel>f\<parallel>V,norm"
9035
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 9013
diff changeset
   281
    proof (unfold function_norm_def, rule sup_ub)
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 9013
diff changeset
   282
      from ex_fnorm [OF _ c]
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 9013
diff changeset
   283
      show "is_Sup UNIV (B V norm f) (Sup UNIV (B V norm f))"
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 9013
diff changeset
   284
         by (simp! add: is_function_norm_def function_norm_def)
11472
wenzelm
parents: 10752
diff changeset
   285
      show "\<bar>f x\<bar> * inverse (norm x) \<in> B V norm f"
7978
1b99ee57d131 final update by Gertrud Bauer;
wenzelm
parents: 7927
diff changeset
   286
        by (unfold B_def, intro UnI2 CollectI exI [of _ x]
9035
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 9013
diff changeset
   287
            conjI, simp)
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 9013
diff changeset
   288
    qed
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   289
9035
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 9013
diff changeset
   290
    txt {* The thesis now follows by a short calculation: *}
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   291
12018
ec054019c910 Numerals and simprocs for types real and hypreal. The abstract
paulson
parents: 11701
diff changeset
   292
    have "\<bar>f x\<bar> = \<bar>f x\<bar> * 1" by (simp!)
ec054019c910 Numerals and simprocs for types real and hypreal. The abstract
paulson
parents: 11701
diff changeset
   293
    also from nz have "1 = inverse (norm x) * norm x"
9379
21cfeae6659d tuded presentation;
bauerg
parents: 9374
diff changeset
   294
      by (simp add: real_mult_inv_left1)
11472
wenzelm
parents: 10752
diff changeset
   295
    also have "\<bar>f x\<bar> * ... = \<bar>f x\<bar> * inverse (norm x) * norm x"
9374
153853af318b - xsymbols for
bauerg
parents: 9035
diff changeset
   296
      by (simp! add: real_mult_assoc)
11472
wenzelm
parents: 10752
diff changeset
   297
    also from n l have "... \<le> \<parallel>f\<parallel>V,norm * norm x"
9379
21cfeae6659d tuded presentation;
bauerg
parents: 9374
diff changeset
   298
      by (simp add: real_mult_le_le_mono2)
11472
wenzelm
parents: 10752
diff changeset
   299
    finally show "\<bar>f x\<bar> \<le> \<parallel>f\<parallel>V,norm * norm x" .
9035
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 9013
diff changeset
   300
  qed
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 9013
diff changeset
   301
qed
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   302
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   303
text {*
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   304
  \medskip The function norm is the least positive real number for
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   305
  which the following inequation holds:
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   306
  \begin{center}
11472
wenzelm
parents: 10752
diff changeset
   307
  @{text "\<bar>f x\<bar> \<le> c \<cdot> \<parallel>x\<parallel>"}
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   308
  \end{center}
9035
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 9013
diff changeset
   309
*}
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   310
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   311
lemma fnorm_le_ub:
11472
wenzelm
parents: 10752
diff changeset
   312
  "is_continuous V norm f \<Longrightarrow> is_normed_vectorspace V norm \<Longrightarrow>
12018
ec054019c910 Numerals and simprocs for types real and hypreal. The abstract
paulson
parents: 11701
diff changeset
   313
     \<forall>x \<in> V. \<bar>f x\<bar> \<le> c * norm x \<Longrightarrow> 0 \<le> c
11472
wenzelm
parents: 10752
diff changeset
   314
  \<Longrightarrow> \<parallel>f\<parallel>V,norm \<le> c"
9035
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 9013
diff changeset
   315
proof (unfold function_norm_def)
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   316
  assume "is_normed_vectorspace V norm"
9035
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 9013
diff changeset
   317
  assume c: "is_continuous V norm f"
11472
wenzelm
parents: 10752
diff changeset
   318
  assume fb: "\<forall>x \<in> V. \<bar>f x\<bar> \<le> c * norm x"
12018
ec054019c910 Numerals and simprocs for types real and hypreal. The abstract
paulson
parents: 11701
diff changeset
   319
    and "0 \<le> c"
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   320
11472
wenzelm
parents: 10752
diff changeset
   321
  txt {* Suppose the inequation holds for some @{text "c \<ge> 0"}.  If
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   322
  @{text c} is an upper bound of @{text B}, then @{text c} is greater
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   323
  than the function norm since the function norm is the least upper
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   324
  bound.  *}
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   325
11472
wenzelm
parents: 10752
diff changeset
   326
  show "Sup UNIV (B V norm f) \<le> c"
9035
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 9013
diff changeset
   327
  proof (rule sup_le_ub)
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   328
    from ex_fnorm [OF _ c]
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   329
    show "is_Sup UNIV (B V norm f) (Sup UNIV (B V norm f))"
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   330
      by (simp! add: is_function_norm_def function_norm_def)
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   331
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   332
    txt {* @{text c} is an upper bound of @{text B}, i.e. every
11472
wenzelm
parents: 10752
diff changeset
   333
    @{text "y \<in> B"} is less than @{text c}. *}
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   334
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   335
    show "isUb UNIV (B V norm f) c"
9035
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 9013
diff changeset
   336
    proof (intro isUbI setleI ballI)
11472
wenzelm
parents: 10752
diff changeset
   337
      fix y assume "y \<in> B V norm f"
wenzelm
parents: 10752
diff changeset
   338
      thus le: "y \<le> c"
9035
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 9013
diff changeset
   339
      proof (unfold B_def, elim UnE CollectE exE conjE singletonE)
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   340
11472
wenzelm
parents: 10752
diff changeset
   341
       txt {* The first case for @{text "y \<in> B"} is @{text "y = 0"}. *}
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   342
12018
ec054019c910 Numerals and simprocs for types real and hypreal. The abstract
paulson
parents: 11701
diff changeset
   343
        assume "y = 0"
11472
wenzelm
parents: 10752
diff changeset
   344
        show "y \<le> c" by (blast!)
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   345
11472
wenzelm
parents: 10752
diff changeset
   346
        txt{* The second case is @{text "y = \<bar>f x\<bar> / \<parallel>x\<parallel>"} for some
wenzelm
parents: 10752
diff changeset
   347
        @{text "x \<in> V"} with @{text "x \<noteq> 0"}. *}
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   348
9035
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 9013
diff changeset
   349
      next
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   350
        fix x
11472
wenzelm
parents: 10752
diff changeset
   351
        assume "x \<in> V"  "x \<noteq> 0"
7917
5e5b9813cce7 HahnBanach update by Gertrud Bauer;
wenzelm
parents: 7808
diff changeset
   352
12018
ec054019c910 Numerals and simprocs for types real and hypreal. The abstract
paulson
parents: 11701
diff changeset
   353
        have lz: "0 < norm x"
9035
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 9013
diff changeset
   354
          by (simp! add: normed_vs_norm_gt_zero)
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   355
12018
ec054019c910 Numerals and simprocs for types real and hypreal. The abstract
paulson
parents: 11701
diff changeset
   356
        have nz: "norm x \<noteq> 0"
9035
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 9013
diff changeset
   357
        proof (rule not_sym)
12018
ec054019c910 Numerals and simprocs for types real and hypreal. The abstract
paulson
parents: 11701
diff changeset
   358
          from lz show "0 \<noteq> norm x"
9035
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 9013
diff changeset
   359
            by (simp! add: order_less_imp_not_eq)
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 9013
diff changeset
   360
        qed
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   361
12018
ec054019c910 Numerals and simprocs for types real and hypreal. The abstract
paulson
parents: 11701
diff changeset
   362
        from lz have "0 < inverse (norm x)"
ec054019c910 Numerals and simprocs for types real and hypreal. The abstract
paulson
parents: 11701
diff changeset
   363
          by (simp! add: real_inverse_gt_0)
ec054019c910 Numerals and simprocs for types real and hypreal. The abstract
paulson
parents: 11701
diff changeset
   364
        hence inverse_gez: "0 \<le> inverse (norm x)"
10752
c4f1bf2acf4c tidying, and separation of HOL-Hyperreal from HOL-Real
paulson
parents: 10687
diff changeset
   365
          by (rule order_less_imp_le)
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   366
11472
wenzelm
parents: 10752
diff changeset
   367
        assume "y = \<bar>f x\<bar> * inverse (norm x)"
wenzelm
parents: 10752
diff changeset
   368
        also from inverse_gez have "... \<le> c * norm x * inverse (norm x)"
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   369
          proof (rule real_mult_le_le_mono2)
11472
wenzelm
parents: 10752
diff changeset
   370
            show "\<bar>f x\<bar> \<le> c * norm x" by (rule bspec)
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   371
          qed
11472
wenzelm
parents: 10752
diff changeset
   372
        also have "... \<le> c" by (simp add: nz real_mult_assoc)
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   373
        finally show ?thesis .
9035
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 9013
diff changeset
   374
      qed
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   375
    qed blast
9035
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 9013
diff changeset
   376
  qed
371f023d3dbd removed explicit terminator (";");
wenzelm
parents: 9013
diff changeset
   377
qed
7535
599d3414b51d The Hahn-Banach theorem for real vectorspaces (Isabelle/Isar)
wenzelm
parents:
diff changeset
   378
10687
c186279eecea tuned HOL/Real/HahnBanach;
wenzelm
parents: 10606
diff changeset
   379
end