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