src/HOL/Analysis/Bounded_Linear_Function.thy
changeset 67685 bdff8bf0a75b
parent 67399 eab6ce8368fa
child 68072 493b818e8e10
equal deleted inserted replaced
67682:00c436488398 67685:bdff8bf0a75b
     6 
     6 
     7 theory Bounded_Linear_Function
     7 theory Bounded_Linear_Function
     8 imports
     8 imports
     9   Topology_Euclidean_Space
     9   Topology_Euclidean_Space
    10   Operator_Norm
    10   Operator_Norm
       
    11   Uniform_Limit
    11 begin
    12 begin
       
    13 
       
    14 lemma onorm_componentwise:
       
    15   assumes "bounded_linear f"
       
    16   shows "onorm f \<le> (\<Sum>i\<in>Basis. norm (f i))"
       
    17 proof -
       
    18   {
       
    19     fix i::'a
       
    20     assume "i \<in> Basis"
       
    21     hence "onorm (\<lambda>x. (x \<bullet> i) *\<^sub>R f i) \<le> onorm (\<lambda>x. (x \<bullet> i)) * norm (f i)"
       
    22       by (auto intro!: onorm_scaleR_left_lemma bounded_linear_inner_left)
       
    23     also have "\<dots> \<le>  norm i * norm (f i)"
       
    24       by (rule mult_right_mono)
       
    25         (auto simp: ac_simps Cauchy_Schwarz_ineq2 intro!: onorm_le)
       
    26     finally have "onorm (\<lambda>x. (x \<bullet> i) *\<^sub>R f i) \<le> norm (f i)" using \<open>i \<in> Basis\<close>
       
    27       by simp
       
    28   } hence "onorm (\<lambda>x. \<Sum>i\<in>Basis. (x \<bullet> i) *\<^sub>R f i) \<le> (\<Sum>i\<in>Basis. norm (f i))"
       
    29     by (auto intro!: order_trans[OF onorm_sum_le] bounded_linear_scaleR_const
       
    30       sum_mono bounded_linear_inner_left)
       
    31   also have "(\<lambda>x. \<Sum>i\<in>Basis. (x \<bullet> i) *\<^sub>R f i) = (\<lambda>x. f (\<Sum>i\<in>Basis. (x \<bullet> i) *\<^sub>R i))"
       
    32     by (simp add: linear_sum bounded_linear.linear assms linear_simps)
       
    33   also have "\<dots> = f"
       
    34     by (simp add: euclidean_representation)
       
    35   finally show ?thesis .
       
    36 qed
       
    37 
       
    38 lemmas onorm_componentwise_le = order_trans[OF onorm_componentwise]
    12 
    39 
    13 subsection \<open>Intro rules for @{term bounded_linear}\<close>
    40 subsection \<open>Intro rules for @{term bounded_linear}\<close>
    14 
    41 
    15 named_theorems bounded_linear_intros
    42 named_theorems bounded_linear_intros
    16 
    43 
   444   continuous_blinfun_componentwiseI1:
   471   continuous_blinfun_componentwiseI1:
   445   fixes f:: "'b::t2_space \<Rightarrow> 'a::euclidean_space \<Rightarrow>\<^sub>L 'c::real_normed_vector"
   472   fixes f:: "'b::t2_space \<Rightarrow> 'a::euclidean_space \<Rightarrow>\<^sub>L 'c::real_normed_vector"
   446   assumes "\<And>i. i \<in> Basis \<Longrightarrow> continuous F (\<lambda>x. f x i)"
   473   assumes "\<And>i. i \<in> Basis \<Longrightarrow> continuous F (\<lambda>x. f x i)"
   447   shows "continuous F f"
   474   shows "continuous F f"
   448   using assms by (auto simp: continuous_def intro!: tendsto_componentwise1)
   475   using assms by (auto simp: continuous_def intro!: tendsto_componentwise1)
       
   476 
       
   477 lemma
       
   478   continuous_on_blinfun_componentwise:
       
   479   fixes f:: "'d::t2_space \<Rightarrow> 'e::euclidean_space \<Rightarrow>\<^sub>L 'f::real_normed_vector"
       
   480   assumes "\<And>i. i \<in> Basis \<Longrightarrow> continuous_on s (\<lambda>x. f x i)"
       
   481   shows "continuous_on s f"
       
   482   using assms
       
   483   by (auto intro!: continuous_at_imp_continuous_on intro!: tendsto_componentwise1
       
   484     simp: continuous_on_eq_continuous_within continuous_def)
   449 
   485 
   450 lemma bounded_linear_blinfun_matrix: "bounded_linear (\<lambda>x. (x::_\<Rightarrow>\<^sub>L _) j \<bullet> i)"
   486 lemma bounded_linear_blinfun_matrix: "bounded_linear (\<lambda>x. (x::_\<Rightarrow>\<^sub>L _) j \<bullet> i)"
   451   by (auto intro!: bounded_linearI' bounded_linear_intros)
   487   by (auto intro!: bounded_linearI' bounded_linear_intros)
   452 
   488 
   453 lemma continuous_blinfun_matrix:
   489 lemma continuous_blinfun_matrix:
   690 lemmas [simp] = blinfun_mult_left.rep_eq
   726 lemmas [simp] = blinfun_mult_left.rep_eq
   691 
   727 
   692 lemma bounded_linear_blinfun_mult_left[bounded_linear]: "bounded_linear blinfun_mult_left"
   728 lemma bounded_linear_blinfun_mult_left[bounded_linear]: "bounded_linear blinfun_mult_left"
   693   by transfer (rule bounded_bilinear.flip[OF bounded_bilinear_mult])
   729   by transfer (rule bounded_bilinear.flip[OF bounded_bilinear_mult])
   694 
   730 
       
   731 lemmas bounded_linear_function_uniform_limit_intros[uniform_limit_intros] =
       
   732   bounded_linear.uniform_limit[OF bounded_linear_apply_blinfun]
       
   733   bounded_linear.uniform_limit[OF bounded_linear_blinfun_apply]
       
   734   bounded_linear.uniform_limit[OF bounded_linear_blinfun_matrix]
       
   735 
   695 end
   736 end