diff -r 66c4567664b5 -r eddcc7c726f3 src/HOL/Analysis/Bounded_Linear_Function.thy --- a/src/HOL/Analysis/Bounded_Linear_Function.thy Sun Mar 17 21:26:42 2019 +0100 +++ b/src/HOL/Analysis/Bounded_Linear_Function.thy Mon Mar 18 15:35:34 2019 +0000 @@ -9,6 +9,8 @@ Topology_Euclidean_Space Operator_Norm Uniform_Limit + Function_Topology + begin lemma onorm_componentwise: @@ -733,4 +735,86 @@ bounded_linear.uniform_limit[OF bounded_linear_blinfun_apply] bounded_linear.uniform_limit[OF bounded_linear_blinfun_matrix] + +subsection \The strong operator topology on continuous linear operators\ + +text \Let \'a\ and \'b\ be two normed real vector spaces. Then the space of linear continuous +operators from \'a\ to \'b\ has a canonical norm, and therefore a canonical corresponding topology +(the type classes instantiation are given in \<^file>\Bounded_Linear_Function.thy\). + +However, there is another topology on this space, the strong operator topology, where \T\<^sub>n\ tends to +\T\ iff, for all \x\ in \'a\, then \T\<^sub>n x\ tends to \T x\. This is precisely the product topology +where the target space is endowed with the norm topology. It is especially useful when \'b\ is the set +of real numbers, since then this topology is compact. + +We can not implement it using type classes as there is already a topology, but at least we +can define it as a topology. + +Note that there is yet another (common and useful) topology on operator spaces, the weak operator +topology, defined analogously using the product topology, but where the target space is given the +weak-* topology, i.e., the pullback of the weak topology on the bidual of the space under the +canonical embedding of a space into its bidual. We do not define it there, although it could also be +defined analogously. +\ + +definition%important strong_operator_topology::"('a::real_normed_vector \\<^sub>L'b::real_normed_vector) topology" +where "strong_operator_topology = pullback_topology UNIV blinfun_apply euclidean" + +lemma strong_operator_topology_topspace: + "topspace strong_operator_topology = UNIV" +unfolding strong_operator_topology_def topspace_pullback_topology topspace_euclidean by auto + +lemma strong_operator_topology_basis: + fixes f::"('a::real_normed_vector \\<^sub>L'b::real_normed_vector)" and U::"'i \ 'b set" and x::"'i \ 'a" + assumes "finite I" "\i. i \ I \ open (U i)" + shows "openin strong_operator_topology {f. \i\I. blinfun_apply f (x i) \ U i}" +proof - + have "open {g::('a\'b). \i\I. g (x i) \ U i}" + by (rule product_topology_basis'[OF assms]) + moreover have "{f. \i\I. blinfun_apply f (x i) \ U i} + = blinfun_apply-`{g::('a\'b). \i\I. g (x i) \ U i} \ UNIV" + by auto + ultimately show ?thesis + unfolding strong_operator_topology_def by (subst openin_pullback_topology) auto +qed + +lemma strong_operator_topology_continuous_evaluation: + "continuous_on_topo strong_operator_topology euclidean (\f. blinfun_apply f x)" +proof - + have "continuous_on_topo strong_operator_topology euclidean ((\f. f x) o blinfun_apply)" + unfolding strong_operator_topology_def apply (rule continuous_on_topo_pullback) + using continuous_on_topo_UNIV continuous_on_product_coordinates by fastforce + then show ?thesis unfolding comp_def by simp +qed + +lemma continuous_on_strong_operator_topo_iff_coordinatewise: + "continuous_on_topo T strong_operator_topology f + \ (\x. continuous_on_topo T euclidean (\y. blinfun_apply (f y) x))" +proof (auto) + fix x::"'b" + assume "continuous_on_topo T strong_operator_topology f" + with continuous_on_topo_compose[OF this strong_operator_topology_continuous_evaluation] + have "continuous_on_topo T euclidean ((\z. blinfun_apply z x) o f)" + by simp + then show "continuous_on_topo T euclidean (\y. blinfun_apply (f y) x)" + unfolding comp_def by auto +next + assume *: "\x. continuous_on_topo T euclidean (\y. blinfun_apply (f y) x)" + have "continuous_on_topo T euclidean (blinfun_apply o f)" + unfolding euclidean_product_topology + apply (rule continuous_on_topo_coordinatewise_then_product, auto) + using * unfolding comp_def by auto + show "continuous_on_topo T strong_operator_topology f" + unfolding strong_operator_topology_def + apply (rule continuous_on_topo_pullback') + by (auto simp add: \continuous_on_topo T euclidean (blinfun_apply o f)\) +qed + +lemma strong_operator_topology_weaker_than_euclidean: + "continuous_on_topo euclidean strong_operator_topology (\f. f)" + by (subst continuous_on_strong_operator_topo_iff_coordinatewise, + auto simp add: continuous_on_topo_UNIV[symmetric] linear_continuous_on) + + + end