src/HOL/Real/HahnBanach/FunctionNorm.thy
changeset 9374 153853af318b
parent 9035 371f023d3dbd
child 9379 21cfeae6659d
equal deleted inserted replaced
9373:78a11a353473 9374:153853af318b
    16 so we can define continuous linear forms as bounded linear forms:
    16 so we can define continuous linear forms as bounded linear forms:
    17 *}
    17 *}
    18 
    18 
    19 constdefs
    19 constdefs
    20   is_continuous ::
    20   is_continuous ::
    21   "['a::{minus, plus} set, 'a => real, 'a => real] => bool" 
    21   "['a::{plus, minus, zero} set, 'a => real, 'a => real] => bool" 
    22   "is_continuous V norm f == 
    22   "is_continuous V norm f == 
    23     is_linearform V f & (EX c. ALL x:V. abs (f x) <= c * norm x)"
    23     is_linearform V f \<and> (\<exists>c. \<forall>x \<in> V. |f x| <= c * norm x)"
    24 
    24 
    25 lemma continuousI [intro]: 
    25 lemma continuousI [intro]: 
    26   "[| is_linearform V f; !! x. x:V ==> abs (f x) <= c * norm x |] 
    26   "[| is_linearform V f; !! x. x \<in> V ==> |f x| <= c * norm x |] 
    27   ==> is_continuous V norm f"
    27   ==> is_continuous V norm f"
    28 proof (unfold is_continuous_def, intro exI conjI ballI)
    28 proof (unfold is_continuous_def, intro exI conjI ballI)
    29   assume r: "!! x. x:V ==> abs (f x) <= c * norm x" 
    29   assume r: "!! x. x \<in> V ==> |f x| <= c * norm x" 
    30   fix x assume "x:V" show "abs (f x) <= c * norm x" by (rule r)
    30   fix x assume "x \<in> V" show "|f x| <= c * norm x" by (rule r)
    31 qed
    31 qed
    32   
    32   
    33 lemma continuous_linearform [intro??]: 
    33 lemma continuous_linearform [intro??]: 
    34   "is_continuous V norm f ==> is_linearform V f"
    34   "is_continuous V norm f ==> is_linearform V f"
    35   by (unfold is_continuous_def) force
    35   by (unfold is_continuous_def) force
    36 
    36 
    37 lemma continuous_bounded [intro??]:
    37 lemma continuous_bounded [intro??]:
    38   "is_continuous V norm f 
    38   "is_continuous V norm f 
    39   ==> EX c. ALL x:V. abs (f x) <= c * norm x"
    39   ==> \<exists>c. \<forall>x \<in> V. |f x| <= c * norm x"
    40   by (unfold is_continuous_def) force
    40   by (unfold is_continuous_def) force
    41 
    41 
    42 subsection{* The norm of a linear form *}
    42 subsection{* The norm of a linear form *}
    43 
    43 
    44 
    44 
    57 does not have to change the norm in all other cases, so it must be
    57 does not have to change the norm in all other cases, so it must be
    58 $0$, as all other elements of are ${} \ge 0$.
    58 $0$, as all other elements of are ${} \ge 0$.
    59 
    59 
    60 Thus we define the set $B$ the supremum is taken from as
    60 Thus we define the set $B$ the supremum is taken from as
    61 \[
    61 \[
    62 \{ 0 \} \Un \left\{ \frac{|f\ap x|}{\norm x} \dt x\neq \zero \And x\in F\right\}
    62 \{ 0 \} \Union \left\{ \frac{|f\ap x|}{\norm x} \dt x\neq \zero \And x\in F\right\}
    63  \]
    63  \]
    64 *}
    64 *}
    65 
    65 
    66 constdefs
    66 constdefs
    67   B :: "[ 'a set, 'a => real, 'a => real ] => real set"
    67   B :: "[ 'a set, 'a => real, 'a::{plus, minus, zero} => real ] => real set"
    68   "B V norm f == 
    68   "B V norm f == 
    69   {#0} Un {abs (f x) * rinv (norm x) | x. x ~= 00 & x:V}"
    69   {#0} \<union> {|f x| * rinv (norm x) | x. x \<noteq> 0 \<and> x \<in> V}"
    70 
    70 
    71 text{* $n$ is the function norm of $f$, iff 
    71 text{* $n$ is the function norm of $f$, iff 
    72 $n$ is the supremum of $B$. 
    72 $n$ is the supremum of $B$. 
    73 *}
    73 *}
    74 
    74 
    75 constdefs 
    75 constdefs 
    76   is_function_norm :: 
    76   is_function_norm :: 
    77   " ['a set, 'a => real, 'a => real] => real => bool"
    77   " ['a::{minus,plus,zero}  => real, 'a set, 'a => real] => real => bool"
    78   "is_function_norm V norm f fn == is_Sup UNIV (B V norm f) fn"
    78   "is_function_norm f V norm fn == is_Sup UNIV (B V norm f) fn"
    79 
    79 
    80 text{* $\idt{function{\dsh}norm}$ is equal to the supremum of $B$, 
    80 text{* $\idt{function{\dsh}norm}$ is equal to the supremum of $B$, 
    81 if the supremum exists. Otherwise it is undefined. *}
    81 if the supremum exists. Otherwise it is undefined. *}
    82 
    82 
    83 constdefs 
    83 constdefs 
    84   function_norm :: " ['a set, 'a => real, 'a => real] => real"
    84   function_norm :: " ['a::{minus,plus,zero} => real, 'a set, 'a => real] => real"
    85   "function_norm V norm f == Sup UNIV (B V norm f)"
    85   "function_norm f V norm == Sup UNIV (B V norm f)"
    86 
    86 
    87 lemma B_not_empty: "#0 : B V norm f"
    87 syntax   
       
    88   function_norm :: " ['a => real, 'a set, 'a => real] => real" ("\<parallel>_\<parallel>_,_")
       
    89 
       
    90 lemma B_not_empty: "#0 \<in> B V norm f"
    88   by (unfold B_def, force)
    91   by (unfold B_def, force)
    89 
    92 
    90 text {* The following lemma states that every continuous linear form
    93 text {* The following lemma states that every continuous linear form
    91 on a normed space $(V, \norm{\cdot})$ has a function norm. *}
    94 on a normed space $(V, \norm{\cdot})$ has a function norm. *}
    92 
    95 
    93 lemma ex_fnorm [intro??]: 
    96 lemma ex_fnorm [intro??]: 
    94   "[| is_normed_vectorspace V norm; is_continuous V norm f|]
    97   "[| is_normed_vectorspace V norm; is_continuous V norm f|]
    95      ==> is_function_norm V norm f (function_norm V norm f)" 
    98      ==> is_function_norm f V norm \<parallel>f\<parallel>V,norm" 
    96 proof (unfold function_norm_def is_function_norm_def 
    99 proof (unfold function_norm_def is_function_norm_def 
    97   is_continuous_def Sup_def, elim conjE, rule selectI2EX)
   100   is_continuous_def Sup_def, elim conjE, rule selectI2EX)
    98   assume "is_normed_vectorspace V norm"
   101   assume "is_normed_vectorspace V norm"
    99   assume "is_linearform V f" 
   102   assume "is_linearform V f" 
   100   and e: "EX c. ALL x:V. abs (f x) <= c * norm x"
   103   and e: "\<exists>c. \<forall>x \<in> V. |f x| <= c * norm x"
   101 
   104 
   102   txt {* The existence of the supremum is shown using the 
   105   txt {* The existence of the supremum is shown using the 
   103   completeness of the reals. Completeness means, that
   106   completeness of the reals. Completeness means, that
   104   every non-empty bounded set of reals has a 
   107   every non-empty bounded set of reals has a 
   105   supremum. *}
   108   supremum. *}
   106   show  "EX a. is_Sup UNIV (B V norm f) a" 
   109   show  "\<exists>a. is_Sup UNIV (B V norm f) a" 
   107   proof (unfold is_Sup_def, rule reals_complete)
   110   proof (unfold is_Sup_def, rule reals_complete)
   108 
   111 
   109     txt {* First we have to show that $B$ is non-empty: *} 
   112     txt {* First we have to show that $B$ is non-empty: *} 
   110 
   113 
   111     show "EX X. X : B V norm f" 
   114     show "\<exists>X. X \<in> B V norm f" 
   112     proof (intro exI)
   115     proof (intro exI)
   113       show "#0 : (B V norm f)" by (unfold B_def, force)
   116       show "#0 \<in> (B V norm f)" by (unfold B_def, force)
   114     qed
   117     qed
   115 
   118 
   116     txt {* Then we have to show that $B$ is bounded: *}
   119     txt {* Then we have to show that $B$ is bounded: *}
   117 
   120 
   118     from e show "EX Y. isUb UNIV (B V norm f) Y"
   121     from e show "\<exists>Y. isUb UNIV (B V norm f) Y"
   119     proof
   122     proof
   120 
   123 
   121       txt {* We know that $f$ is bounded by some value $c$. *}  
   124       txt {* We know that $f$ is bounded by some value $c$. *}  
   122   
   125   
   123       fix c assume a: "ALL x:V. abs (f x) <= c * norm x"
   126       fix c assume a: "\<forall>x \<in> V. |f x| <= c * norm x"
   124       def b == "max c #0"
   127       def b == "max c #0"
   125 
   128 
   126       show "?thesis"
   129       show "?thesis"
   127       proof (intro exI isUbI setleI ballI, unfold B_def, 
   130       proof (intro exI isUbI setleI ballI, unfold B_def, 
   128 	elim UnE CollectE exE conjE singletonE)
   131 	elim UnE CollectE exE conjE singletonE)
   139         $y = {|f\ap x|}/{\norm x}$ for some 
   142         $y = {|f\ap x|}/{\norm x}$ for some 
   140         $x\in V$ with $x \neq \zero$. *}
   143         $x\in V$ with $x \neq \zero$. *}
   141 
   144 
   142       next
   145       next
   143 	fix x y
   146 	fix x y
   144         assume "x:V" "x ~= 00" (***
   147         assume "x \<in> V" "x \<noteq> 0" (***
   145 
   148 
   146          have ge: "#0 <= rinv (norm x)";
   149          have ge: "#0 <= rinv (norm x)";
   147           by (rule real_less_imp_le, rule real_rinv_gt_zero, 
   150           by (rule real_less_imp_le, rule real_rinv_gt_zero, 
   148                 rule normed_vs_norm_gt_zero); ( ***
   151                 rule normed_vs_norm_gt_zero); ( ***
   149           proof (rule real_less_imp_le);
   152           proof (rule real_less_imp_le);
   150             show "#0 < rinv (norm x)";
   153             show "#0 < rinv (norm x)";
   151             proof (rule real_rinv_gt_zero);
   154             proof (rule real_rinv_gt_zero);
   152               show "#0 < norm x"; ..;
   155               show "#0 < norm x"; ..;
   153             qed;
   156             qed;
   154           qed; *** )
   157           qed; *** )
   155         have nz: "norm x ~= #0" 
   158         have nz: "norm x \<noteq> #0" 
   156           by (rule not_sym, rule lt_imp_not_eq, 
   159           by (rule not_sym, rule lt_imp_not_eq, 
   157               rule normed_vs_norm_gt_zero) (***
   160               rule normed_vs_norm_gt_zero) (***
   158           proof (rule not_sym);
   161           proof (rule not_sym);
   159             show "#0 ~= norm x"; 
   162             show "#0 \<noteq> norm x"; 
   160             proof (rule lt_imp_not_eq);
   163             proof (rule lt_imp_not_eq);
   161               show "#0 < norm x"; ..;
   164               show "#0 < norm x"; ..;
   162             qed;
   165             qed;
   163           qed; ***)***)
   166           qed; ***)***)
   164 
   167 
   165         txt {* The thesis follows by a short calculation using the 
   168         txt {* The thesis follows by a short calculation using the 
   166         fact that $f$ is bounded. *}
   169         fact that $f$ is bounded. *}
   167     
   170     
   168         assume "y = abs (f x) * rinv (norm x)"
   171         assume "y = |f x| * rinv (norm x)"
   169         also have "... <= c * norm x * rinv (norm x)"
   172         also have "... <= c * norm x * rinv (norm x)"
   170         proof (rule real_mult_le_le_mono2)
   173         proof (rule real_mult_le_le_mono2)
   171           show "#0 <= rinv (norm x)"
   174           show "#0 <= rinv (norm x)"
   172             by (rule real_less_imp_le, rule real_rinv_gt_zero1, 
   175             by (rule real_less_imp_le, rule real_rinv_gt_zero1, 
   173                 rule normed_vs_norm_gt_zero)
   176                 rule normed_vs_norm_gt_zero)
   174           from a show "abs (f x) <= c * norm x" ..
   177           from a show "|f x| <= c * norm x" ..
   175         qed
   178         qed
   176         also have "... = c * (norm x * rinv (norm x))" 
   179         also have "... = c * (norm x * rinv (norm x))" 
   177           by (rule real_mult_assoc)
   180           by (rule real_mult_assoc)
   178         also have "(norm x * rinv (norm x)) = (#1::real)" 
   181         also have "(norm x * rinv (norm x)) = (#1::real)" 
   179         proof (rule real_mult_inv_right1)
   182         proof (rule real_mult_inv_right1)
   180           show nz: "norm x ~= #0" 
   183           show nz: "norm x \<noteq> #0" 
   181             by (rule not_sym, rule lt_imp_not_eq, 
   184             by (rule not_sym, rule lt_imp_not_eq, 
   182               rule normed_vs_norm_gt_zero)
   185               rule normed_vs_norm_gt_zero)
   183         qed
   186         qed
   184         also have "c * ... <= b " by (simp! add: le_max1)
   187         also have "c * ... <= b " by (simp! add: le_max1)
   185 	finally show "y <= b" .
   188 	finally show "y <= b" .
   189 qed
   192 qed
   190 
   193 
   191 text {* The norm of a continuous function is always $\geq 0$. *}
   194 text {* The norm of a continuous function is always $\geq 0$. *}
   192 
   195 
   193 lemma fnorm_ge_zero [intro??]: 
   196 lemma fnorm_ge_zero [intro??]: 
   194   "[| is_continuous V norm f; is_normed_vectorspace V norm|]
   197   "[| is_continuous V norm f; is_normed_vectorspace V norm |]
   195    ==> #0 <= function_norm V norm f"
   198    ==> #0 <= \<parallel>f\<parallel>V,norm"
   196 proof -
   199 proof -
   197   assume c: "is_continuous V norm f" 
   200   assume c: "is_continuous V norm f" 
   198      and n: "is_normed_vectorspace V norm"
   201      and n: "is_normed_vectorspace V norm"
   199 
   202 
   200   txt {* The function norm is defined as the supremum of $B$. 
   203   txt {* The function norm is defined as the supremum of $B$. 
   201   So it is $\geq 0$ if all elements in $B$ are $\geq 0$, provided
   204   So it is $\geq 0$ if all elements in $B$ are $\geq 0$, provided
   202   the supremum exists and $B$ is not empty. *}
   205   the supremum exists and $B$ is not empty. *}
   203 
   206 
   204   show ?thesis 
   207   show ?thesis 
   205   proof (unfold function_norm_def, rule sup_ub1)
   208   proof (unfold function_norm_def, rule sup_ub1)
   206     show "ALL x:(B V norm f). #0 <= x" 
   209     show "\<forall>x \<in> (B V norm f). #0 <= x" 
   207     proof (intro ballI, unfold B_def,
   210     proof (intro ballI, unfold B_def,
   208            elim UnE singletonE CollectE exE conjE) 
   211            elim UnE singletonE CollectE exE conjE) 
   209       fix x r
   212       fix x r
   210       assume "x : V" "x ~= 00" 
   213       assume "x \<in> V" "x \<noteq> 0" 
   211         and r: "r = abs (f x) * rinv (norm x)"
   214         and r: "r = |f x| * rinv (norm x)"
   212 
   215 
   213       have ge: "#0 <= abs (f x)" by (simp! only: abs_ge_zero)
   216       have ge: "#0 <= |f x|" by (simp! only: abs_ge_zero)
   214       have "#0 <= rinv (norm x)" 
   217       have "#0 <= rinv (norm x)" 
   215         by (rule real_less_imp_le, rule real_rinv_gt_zero1, rule)(***
   218         by (rule real_less_imp_le, rule real_rinv_gt_zero1, rule)(***
   216         proof (rule real_less_imp_le);
   219         proof (rule real_less_imp_le);
   217           show "#0 < rinv (norm x)"; 
   220           show "#0 < rinv (norm x)"; 
   218           proof (rule real_rinv_gt_zero);
   221           proof (rule real_rinv_gt_zero);
   223        by (simp only: r, rule real_le_mult_order1a)
   226        by (simp only: r, rule real_le_mult_order1a)
   224     qed (simp!)
   227     qed (simp!)
   225 
   228 
   226     txt {* Since $f$ is continuous the function norm exists: *}
   229     txt {* Since $f$ is continuous the function norm exists: *}
   227 
   230 
   228     have "is_function_norm V norm f (function_norm V norm f)" ..
   231     have "is_function_norm f V norm \<parallel>f\<parallel>V,norm" ..
   229     thus "is_Sup UNIV (B V norm f) (Sup UNIV (B V norm f))" 
   232     thus "is_Sup UNIV (B V norm f) (Sup UNIV (B V norm f))" 
   230       by (unfold is_function_norm_def function_norm_def)
   233       by (unfold is_function_norm_def function_norm_def)
   231 
   234 
   232     txt {* $B$ is non-empty by construction: *}
   235     txt {* $B$ is non-empty by construction: *}
   233 
   236 
   234     show "#0 : B V norm f" by (rule B_not_empty)
   237     show "#0 \<in> B V norm f" by (rule B_not_empty)
   235   qed
   238   qed
   236 qed
   239 qed
   237   
   240   
   238 text{* \medskip The fundamental property of function norms is: 
   241 text{* \medskip The fundamental property of function norms is: 
   239 \begin{matharray}{l}
   242 \begin{matharray}{l}
   240 | f\ap x | \leq {\fnorm {f}} \cdot {\norm x}  
   243 | f\ap x | \leq {\fnorm {f}} \cdot {\norm x}  
   241 \end{matharray}
   244 \end{matharray}
   242 *}
   245 *}
   243 
   246 
   244 lemma norm_fx_le_norm_f_norm_x: 
   247 lemma norm_fx_le_norm_f_norm_x: 
   245   "[| is_normed_vectorspace V norm; x:V; is_continuous V norm f |] 
   248   "[| is_continuous V norm f; is_normed_vectorspace V norm; x \<in> V |] 
   246     ==> abs (f x) <= function_norm V norm f * norm x" 
   249     ==> |f x| <= \<parallel>f\<parallel>V,norm * norm x"
   247 proof - 
   250 proof - 
   248   assume "is_normed_vectorspace V norm" "x:V" 
   251   assume "is_normed_vectorspace V norm" "x \<in> V" 
   249   and c: "is_continuous V norm f"
   252   and c: "is_continuous V norm f"
   250   have v: "is_vectorspace V" ..
   253   have v: "is_vectorspace V" ..
   251   assume "x:V"
       
   252 
   254 
   253  txt{* The proof is by case analysis on $x$. *}
   255  txt{* The proof is by case analysis on $x$. *}
   254  
   256  
   255   show ?thesis
   257   show ?thesis
   256   proof cases
   258   proof cases
   257 
   259 
   258     txt {* For the case $x = \zero$ the thesis follows
   260     txt {* For the case $x = \zero$ the thesis follows
   259     from the linearity of $f$: for every linear function
   261     from the linearity of $f$: for every linear function
   260     holds $f\ap \zero = 0$. *}
   262     holds $f\ap \zero = 0$. *}
   261 
   263 
   262     assume "x = 00"
   264     assume "x = 0"
   263     have "abs (f x) = abs (f 00)" by (simp!)
   265     have "|f x| = |f 0|" by (simp!)
   264     also from v continuous_linearform have "f 00 = #0" ..
   266     also from v continuous_linearform have "f 0 = #0" ..
   265     also note abs_zero
   267     also note abs_zero
   266     also have "#0 <= function_norm V norm f * norm x"
   268     also have "#0 <= \<parallel>f\<parallel>V,norm * norm x"
   267     proof (rule real_le_mult_order1a)
   269     proof (rule real_le_mult_order1a)
   268       show "#0 <= function_norm V norm f" ..
   270       show "#0 <= \<parallel>f\<parallel>V,norm" ..
   269       show "#0 <= norm x" ..
   271       show "#0 <= norm x" ..
   270     qed
   272     qed
   271     finally 
   273     finally 
   272     show "abs (f x) <= function_norm V norm f * norm x" .
   274     show "|f x| <= \<parallel>f\<parallel>V,norm * norm x" .
   273 
   275 
   274   next
   276   next
   275     assume "x ~= 00"
   277     assume "x \<noteq> 0"
   276     have n: "#0 <= norm x" ..
   278     have n: "#0 <= norm x" ..
   277     have nz: "norm x ~= #0"
   279     have nz: "norm x \<noteq> #0"
   278     proof (rule lt_imp_not_eq [RS not_sym])
   280     proof (rule lt_imp_not_eq [RS not_sym])
   279       show "#0 < norm x" ..
   281       show "#0 < norm x" ..
   280     qed
   282     qed
   281 
   283 
   282     txt {* For the case $x\neq \zero$ we derive the following
   284     txt {* For the case $x\neq \zero$ we derive the following
   283     fact from the definition of the function norm:*}
   285     fact from the definition of the function norm:*}
   284 
   286 
   285     have l: "abs (f x) * rinv (norm x) <= function_norm V norm f"
   287     have l: "|f x| * rinv (norm x) <= \<parallel>f\<parallel>V,norm"
   286     proof (unfold function_norm_def, rule sup_ub)
   288     proof (unfold function_norm_def, rule sup_ub)
   287       from ex_fnorm [OF _ c]
   289       from ex_fnorm [OF _ c]
   288       show "is_Sup UNIV (B V norm f) (Sup UNIV (B V norm f))"
   290       show "is_Sup UNIV (B V norm f) (Sup UNIV (B V norm f))"
   289          by (simp! add: is_function_norm_def function_norm_def)
   291          by (simp! add: is_function_norm_def function_norm_def)
   290       show "abs (f x) * rinv (norm x) : B V norm f" 
   292       show "|f x| * rinv (norm x) \<in> B V norm f" 
   291         by (unfold B_def, intro UnI2 CollectI exI [of _ x]
   293         by (unfold B_def, intro UnI2 CollectI exI [of _ x]
   292             conjI, simp)
   294             conjI, simp)
   293     qed
   295     qed
   294 
   296 
   295     txt {* The thesis now follows by a short calculation: *}
   297     txt {* The thesis now follows by a short calculation: *}
   296 
   298 
   297     have "abs (f x) = abs (f x) * (#1::real)" by (simp!)
   299     have "|f x| = |f x| * #1" by (simp!)
   298     also from nz have "(#1::real) = rinv (norm x) * norm x" 
   300     also from nz have "#1 = rinv (norm x) * norm x" 
   299       by (rule real_mult_inv_left1 [RS sym])
   301       by (rule real_mult_inv_left1 [RS sym])
   300     also 
   302     also 
   301     have "abs (f x) * ... = abs (f x) * rinv (norm x) * norm x"
   303     have "|f x| * ... = |f x| * rinv (norm x) * norm x"
   302       by (simp! add: real_mult_assoc [of "abs (f x)"])
   304       by (simp! add: real_mult_assoc)
   303     also have "... <= function_norm V norm f * norm x" 
   305     also have "... <= \<parallel>f\<parallel>V,norm * norm x"
   304       by (rule real_mult_le_le_mono2 [OF n l])
   306       by (rule real_mult_le_le_mono2 [OF n l])
   305     finally 
   307     finally 
   306     show "abs (f x) <= function_norm V norm f * norm x" .
   308     show "|f x| <= \<parallel>f\<parallel>V,norm * norm x" .
   307   qed
   309   qed
   308 qed
   310 qed
   309 
   311 
   310 text{* \medskip The function norm is the least positive real number for 
   312 text{* \medskip The function norm is the least positive real number for 
   311 which the following inequation holds:
   313 which the following inequation holds:
   313 | f\ap x | \leq c \cdot {\norm x}  
   315 | f\ap x | \leq c \cdot {\norm x}  
   314 \end{matharray} 
   316 \end{matharray} 
   315 *}
   317 *}
   316 
   318 
   317 lemma fnorm_le_ub: 
   319 lemma fnorm_le_ub: 
   318   "[| is_normed_vectorspace V norm; is_continuous V norm f;
   320   "[| is_continuous V norm f; is_normed_vectorspace V norm; 
   319      ALL x:V. abs (f x) <= c * norm x; #0 <= c |]
   321      \<forall>x \<in> V. |f x| <= c * norm x; #0 <= c |]
   320   ==> function_norm V norm f <= c"
   322   ==> \<parallel>f\<parallel>V,norm <= c"
   321 proof (unfold function_norm_def)
   323 proof (unfold function_norm_def)
   322   assume "is_normed_vectorspace V norm" 
   324   assume "is_normed_vectorspace V norm" 
   323   assume c: "is_continuous V norm f"
   325   assume c: "is_continuous V norm f"
   324   assume fb: "ALL x:V. abs (f x) <= c * norm x"
   326   assume fb: "\<forall>x \<in> V. |f x| <= c * norm x"
   325          and "#0 <= c"
   327          and "#0 <= c"
   326 
   328 
   327   txt {* Suppose the inequation holds for some $c\geq 0$.
   329   txt {* Suppose the inequation holds for some $c\geq 0$.
   328   If $c$ is an upper bound of $B$, then $c$ is greater 
   330   If $c$ is an upper bound of $B$, then $c$ is greater 
   329   than the function norm since the function norm is the
   331   than the function norm since the function norm is the
   334   proof (rule sup_le_ub)
   336   proof (rule sup_le_ub)
   335     from ex_fnorm [OF _ c] 
   337     from ex_fnorm [OF _ c] 
   336     show "is_Sup UNIV (B V norm f) (Sup UNIV (B V norm f))" 
   338     show "is_Sup UNIV (B V norm f) (Sup UNIV (B V norm f))" 
   337       by (simp! add: is_function_norm_def function_norm_def) 
   339       by (simp! add: is_function_norm_def function_norm_def) 
   338   
   340   
   339     txt {* $c$ is an upper bound of $B$, i.~e.~every
   341     txt {* $c$ is an upper bound of $B$, i.e. every
   340     $y\in B$ is less than $c$. *}
   342     $y\in B$ is less than $c$. *}
   341 
   343 
   342     show "isUb UNIV (B V norm f) c"  
   344     show "isUb UNIV (B V norm f) c"  
   343     proof (intro isUbI setleI ballI)
   345     proof (intro isUbI setleI ballI)
   344       fix y assume "y: B V norm f"
   346       fix y assume "y \<in> B V norm f"
   345       thus le: "y <= c"
   347       thus le: "y <= c"
   346       proof (unfold B_def, elim UnE CollectE exE conjE singletonE)
   348       proof (unfold B_def, elim UnE CollectE exE conjE singletonE)
   347 
   349 
   348        txt {* The first case for $y\in B$ is $y=0$. *}
   350        txt {* The first case for $y\in B$ is $y=0$. *}
   349 
   351 
   354         $y = {|f\ap x|}/{\norm x}$ for some 
   356         $y = {|f\ap x|}/{\norm x}$ for some 
   355         $x\in V$ with $x \neq \zero$. *}  
   357         $x\in V$ with $x \neq \zero$. *}  
   356 
   358 
   357       next
   359       next
   358 	fix x 
   360 	fix x 
   359         assume "x : V" "x ~= 00" 
   361         assume "x \<in> V" "x \<noteq> 0" 
   360 
   362 
   361         have lz: "#0 < norm x" 
   363         have lz: "#0 < norm x" 
   362           by (simp! add: normed_vs_norm_gt_zero)
   364           by (simp! add: normed_vs_norm_gt_zero)
   363           
   365           
   364         have nz: "norm x ~= #0" 
   366         have nz: "norm x \<noteq> #0" 
   365         proof (rule not_sym)
   367         proof (rule not_sym)
   366           from lz show "#0 ~= norm x"
   368           from lz show "#0 \<noteq> norm x"
   367             by (simp! add: order_less_imp_not_eq)
   369             by (simp! add: order_less_imp_not_eq)
   368         qed
   370         qed
   369             
   371             
   370 	from lz have "#0 < rinv (norm x)"
   372 	from lz have "#0 < rinv (norm x)"
   371 	  by (simp! add: real_rinv_gt_zero1)
   373 	  by (simp! add: real_rinv_gt_zero1)
   372 	hence rinv_gez: "#0 <= rinv (norm x)"
   374 	hence rinv_gez: "#0 <= rinv (norm x)"
   373           by (rule real_less_imp_le)
   375           by (rule real_less_imp_le)
   374 
   376 
   375 	assume "y = abs (f x) * rinv (norm x)" 
   377 	assume "y = |f x| * rinv (norm x)" 
   376 	also from rinv_gez have "... <= c * norm x * rinv (norm x)"
   378 	also from rinv_gez have "... <= c * norm x * rinv (norm x)"
   377 	  proof (rule real_mult_le_le_mono2)
   379 	  proof (rule real_mult_le_le_mono2)
   378 	    show "abs (f x) <= c * norm x" by (rule bspec)
   380 	    show "|f x| <= c * norm x" by (rule bspec)
   379 	  qed
   381 	  qed
   380 	also have "... <= c" by (simp add: nz real_mult_assoc)
   382 	also have "... <= c" by (simp add: nz real_mult_assoc)
   381 	finally show ?thesis .
   383 	finally show ?thesis .
   382       qed
   384       qed
   383     qed force
   385     qed force