src/HOL/Multivariate_Analysis/Integration.thy
changeset 63540 f8652d0534fa
parent 63492 a662e8139804
child 63593 bbcb05504fdc
equal deleted inserted replaced
63539:70d4d9e5707b 63540:f8652d0534fa
 10166   have x_eq: "x = (\<lambda>i. integral s (f i))"
 10166   have x_eq: "x = (\<lambda>i. integral s (f i))"
 10167     by (simp add: integral_unique[OF f])
 10167     by (simp add: integral_unique[OF f])
 10168   then have x: "{integral s (f k) |k. True} = range x"
 10168   then have x: "{integral s (f k) |k. True} = range x"
 10169     by auto
 10169     by auto
 10170 
 10170 
 10171   have "g integrable_on s \<and> (\<lambda>k. integral s (f k)) \<longlonglongrightarrow> integral s g"
 10171   have *: "g integrable_on s \<and> (\<lambda>k. integral s (f k)) \<longlonglongrightarrow> integral s g"
 10172   proof (intro monotone_convergence_increasing allI ballI assms)
 10172   proof (intro monotone_convergence_increasing allI ballI assms)
 10173     show "bounded {integral s (f k) |k. True}"
 10173     show "bounded {integral s (f k) |k. True}"
 10174       unfolding x by (rule convergent_imp_bounded) fact
 10174       unfolding x by (rule convergent_imp_bounded) fact
 10175   qed (auto intro: f)
 10175   qed (auto intro: f)
 10176   moreover then have "integral s g = x'"
 10176   then have "integral s g = x'"
 10177     by (intro LIMSEQ_unique[OF _ \<open>x \<longlonglongrightarrow> x'\<close>]) (simp add: x_eq)
 10177     by (intro LIMSEQ_unique[OF _ \<open>x \<longlonglongrightarrow> x'\<close>]) (simp add: x_eq)
 10178   ultimately show ?thesis
 10178   with * show ?thesis
 10179     by (simp add: has_integral_integral)
 10179     by (simp add: has_integral_integral)
 10180 qed
 10180 qed
 10181 
 10181 
 10182 lemma monotone_convergence_decreasing:
 10182 lemma monotone_convergence_decreasing:
 10183   fixes f :: "nat \<Rightarrow> 'n::euclidean_space \<Rightarrow> real"
 10183   fixes f :: "nat \<Rightarrow> 'n::euclidean_space \<Rightarrow> real"
 11557     fix y assume "y \<in> K"
 11557     fix y assume "y \<in> K"
 11558     then have "(x0, y) \<in> W" using assms by auto
 11558     then have "(x0, y) \<in> W" using assms by auto
 11559     with \<open>open W\<close>
 11559     with \<open>open W\<close>
 11560     have "\<exists>X0 Y. open X0 \<and> open Y \<and> x0 \<in> X0 \<and> y \<in> Y \<and> X0 \<times> Y \<subseteq> W"
 11560     have "\<exists>X0 Y. open X0 \<and> open Y \<and> x0 \<in> X0 \<and> y \<in> Y \<and> X0 \<times> Y \<subseteq> W"
 11561       by (rule open_prod_elim) blast
 11561       by (rule open_prod_elim) blast
 11562   } then obtain X0 Y where
 11562   }
 11563     "\<forall>y \<in> K. open (X0 y) \<and> open (Y y) \<and> x0 \<in> X0 y \<and> y \<in> Y y \<and> X0 y \<times> Y y \<subseteq> W"
 11563   then obtain X0 Y where
       
 11564     *: "\<forall>y \<in> K. open (X0 y) \<and> open (Y y) \<and> x0 \<in> X0 y \<and> y \<in> Y y \<and> X0 y \<times> Y y \<subseteq> W"
 11564     by metis
 11565     by metis
 11565   moreover
 11566   from * have "\<forall>t\<in>Y ` K. open t" "K \<subseteq> \<Union>(Y ` K)" by auto
 11566   then have "\<forall>t\<in>Y ` K. open t" "K \<subseteq> \<Union>(Y ` K)" by auto
 11567   with \<open>compact K\<close> obtain CC where CC: "CC \<subseteq> Y ` K" "finite CC" "K \<subseteq> \<Union>CC"
 11567   with \<open>compact K\<close> obtain CC where "CC \<subseteq> Y ` K" "finite CC" "K \<subseteq> \<Union>CC"
       
 11568     by (rule compactE)
 11568     by (rule compactE)
 11569   moreover
 11569   then obtain c where c: "\<And>C. C \<in> CC \<Longrightarrow> c C \<in> K \<and> C = Y (c C)"
 11570   then obtain c where c:
       
 11571     "\<And>C. C \<in> CC \<Longrightarrow> c C \<in> K \<and> C = Y (c C)"
       
 11572     by (force intro!: choice)
 11570     by (force intro!: choice)
 11573   ultimately show ?thesis
 11571   with * CC show ?thesis
 11574     by (force intro!: exI[where x="\<Inter>C\<in>CC. X0 (c C)"])
 11572     by (force intro!: exI[where x="\<Inter>C\<in>CC. X0 (c C)"])
 11575 qed
 11573 qed
 11576 
 11574 
 11577 lemma continuous_on_prod_compactE:
 11575 lemma continuous_on_prod_compactE:
 11578   fixes fx::"'a::topological_space \<times> 'b::topological_space \<Rightarrow> 'c::metric_space"
 11576   fixes fx::"'a::topological_space \<times> 'b::topological_space \<Rightarrow> 'c::metric_space"