src/HOL/Real/HahnBanach/FunctionNorm.thy
changeset 7656 2f18c0ffc348
parent 7567 62384a807775
child 7808 fd019ac3485f
equal deleted inserted replaced
7655:21b7b0fd41bd 7656:2f18c0ffc348
    69         from a; have le: "rabs (f x) <= c * norm x"; ..;
    69         from a; have le: "rabs (f x) <= c * norm x"; ..;
    70         have "y = rabs (f x) * rinv (norm x)";.;
    70         have "y = rabs (f x) * rinv (norm x)";.;
    71         also; from _  le; have "... <= c * norm x * rinv (norm x)";
    71         also; from _  le; have "... <= c * norm x * rinv (norm x)";
    72         proof (rule real_mult_le_le_mono2);
    72         proof (rule real_mult_le_le_mono2);
    73           show "0r <= rinv (norm x)";
    73           show "0r <= rinv (norm x)";
    74           proof (rule less_imp_le);
    74           proof (rule real_less_imp_le);
    75             show "0r < rinv (norm x)";
    75             show "0r < rinv (norm x)";
    76             proof (rule real_rinv_gt_zero);
    76             proof (rule real_rinv_gt_zero);
    77               show "0r < norm x"; ..;
    77               show "0r < norm x"; ..;
    78             qed;
    78             qed;
    79           qed;
    79           qed;
    80      (*** or:  by (rule less_imp_le, rule real_rinv_gt_zero, rule normed_vs_norm_gt_zero); ***)
    80      (*** or:  by (rule real_less_imp_le, rule real_rinv_gt_zero, rule normed_vs_norm_gt_zero); ***)
    81         qed;
    81         qed;
    82         also; have "... = c * (norm x * rinv (norm x))"; by (rule real_mult_assoc);
    82         also; have "... = c * (norm x * rinv (norm x))"; by (rule real_mult_assoc);
    83         also; have "(norm x * rinv (norm x)) = 1r"; 
    83         also; have "(norm x * rinv (norm x)) = 1r"; 
    84         proof (rule real_mult_inv_right);
    84         proof (rule real_mult_inv_right);
    85           show "norm x ~= 0r"; 
    85           show "norm x ~= 0r"; 
   116         "r = rabs (f x) * rinv (norm x)"; 
   116         "r = rabs (f x) * rinv (norm x)"; 
   117       show  "0r <= r";
   117       show  "0r <= r";
   118       proof (simp!, rule real_le_mult_order);
   118       proof (simp!, rule real_le_mult_order);
   119         show "0r <= rabs (f x)"; by (simp! only: rabs_ge_zero);
   119         show "0r <= rabs (f x)"; by (simp! only: rabs_ge_zero);
   120         show "0r <= rinv (norm x)";
   120         show "0r <= rinv (norm x)";
   121         proof (rule less_imp_le);
   121         proof (rule real_less_imp_le);
   122           show "0r < rinv (norm x)"; 
   122           show "0r < rinv (norm x)"; 
   123           proof (rule real_rinv_gt_zero);
   123           proof (rule real_rinv_gt_zero);
   124             show "0r < norm x"; ..;
   124             show "0r < norm x"; ..;
   125           qed;
   125           qed;
   126         qed;
   126         qed;
   139 proof -; 
   139 proof -; 
   140   assume "is_normed_vectorspace V norm" "x:V" and c: "is_continous V norm f";
   140   assume "is_normed_vectorspace V norm" "x:V" and c: "is_continous V norm f";
   141   have v: "is_vectorspace V"; ..;
   141   have v: "is_vectorspace V"; ..;
   142   assume "x:V";
   142   assume "x:V";
   143   show "?thesis";
   143   show "?thesis";
   144   proof (rule case [of "x = <0>"]);
   144   proof (rule case_split [of "x = <0>"]);
   145     assume "x ~= <0>";
   145     assume "x ~= <0>";
   146     show "?thesis";
   146     show "?thesis";
   147     proof -;
   147     proof -;
   148       have n: "0r <= norm x"; ..;
   148       have n: "0r <= norm x"; ..;
   149       have le: "rabs (f x) * rinv (norm x) <= function_norm V norm f"; 
   149       have le: "rabs (f x) * rinv (norm x) <= function_norm V norm f"; 
   195   assume "is_normed_vectorspace V norm"; 
   195   assume "is_normed_vectorspace V norm"; 
   196   assume c: "is_continous V norm f";
   196   assume c: "is_continous V norm f";
   197   assume fb: "ALL x:V. rabs (f x) <= c * norm x"
   197   assume fb: "ALL x:V. rabs (f x) <= c * norm x"
   198          and "0r <= c";
   198          and "0r <= c";
   199   show "Sup UNIV (B V norm f) <= c"; 
   199   show "Sup UNIV (B V norm f) <= c"; 
   200   proof (rule ub_ge_sup);
   200   proof (rule sup_le_ub);
   201     from ex_fnorm [OF _ c]; show "is_Sup UNIV (B V norm f) (Sup UNIV (B V norm f))"; 
   201     from ex_fnorm [OF _ c]; show "is_Sup UNIV (B V norm f) (Sup UNIV (B V norm f))"; 
   202       by (simp! add: is_function_norm_def function_norm_def); 
   202       by (simp! add: is_function_norm_def function_norm_def); 
   203     show "isUb UNIV (B V norm f) c";  
   203     show "isUb UNIV (B V norm f) c";  
   204     proof (intro isUbI setleI ballI);
   204     proof (intro isUbI setleI ballI);
   205       fix y; assume "y: B V norm f";
   205       fix y; assume "y: B V norm f";
   215           by (simp! add: order_less_imp_not_eq);
   215           by (simp! add: order_less_imp_not_eq);
   216         qed;
   216         qed;
   217             
   217             
   218 	from lt; have "0r < rinv (norm x)";
   218 	from lt; have "0r < rinv (norm x)";
   219 	  by (simp! add: real_rinv_gt_zero);
   219 	  by (simp! add: real_rinv_gt_zero);
   220 	then; have inv_leq: "0r <= rinv (norm x)"; by (rule less_imp_le);
   220 	then; have inv_leq: "0r <= rinv (norm x)"; by (rule real_less_imp_le);
   221 
   221 
   222 	from Px; have "y = rabs (f x) * rinv (norm x)"; ..;
   222 	from Px; have "y = rabs (f x) * rinv (norm x)"; ..;
   223 	also; from inv_leq; have "... <= c * norm x * rinv (norm x)";
   223 	also; from inv_leq; have "... <= c * norm x * rinv (norm x)";
   224 	  proof (rule real_mult_le_le_mono2);
   224 	  proof (rule real_mult_le_le_mono2);
   225 	    from fb x; show "rabs (f x) <= c * norm x"; ..;
   225 	    from fb x; show "rabs (f x) <= c * norm x"; ..;