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" |