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