src/HOL/Analysis/Improper_Integral.thy
changeset 69260 0a9688695a1b
parent 69173 38beaaebe736
child 69313 b021008c5397
equal deleted inserted replaced
69259:438e1a11445f 69260:0a9688695a1b
   672         finally show ?thesis .
   672         finally show ?thesis .
   673       qed
   673       qed
   674     qed
   674     qed
   675   qed
   675   qed
   676   define \<gamma> where "\<gamma> \<equiv> \<lambda>x. \<gamma>0 x \<inter>
   676   define \<gamma> where "\<gamma> \<equiv> \<lambda>x. \<gamma>0 x \<inter>
   677                           ball x ((\<epsilon>/8 / (norm(f x) + 1)) * (INF m:Basis. b \<bullet> m - a \<bullet> m) / content(cbox a b))"
   677                           ball x ((\<epsilon>/8 / (norm(f x) + 1)) * (INF m\<in>Basis. b \<bullet> m - a \<bullet> m) / content(cbox a b))"
   678   have "gauge (\<lambda>x. ball x
   678   have "gauge (\<lambda>x. ball x
   679                     (\<epsilon> * (INF m:Basis. b \<bullet> m - a \<bullet> m) / ((8 * norm (f x) + 8) * content (cbox a b))))"
   679                     (\<epsilon> * (INF m\<in>Basis. b \<bullet> m - a \<bullet> m) / ((8 * norm (f x) + 8) * content (cbox a b))))"
   680     using \<open>0 < content (cbox a b)\<close> \<open>0 < \<epsilon>\<close> a_less_b
   680     using \<open>0 < content (cbox a b)\<close> \<open>0 < \<epsilon>\<close> a_less_b
   681     apply (auto simp: gauge_def divide_simps mult_less_0_iff zero_less_mult_iff add_nonneg_eq_0_iff finite_less_Inf_iff)
   681     apply (auto simp: gauge_def divide_simps mult_less_0_iff zero_less_mult_iff add_nonneg_eq_0_iff finite_less_Inf_iff)
   682     apply (meson add_nonneg_nonneg mult_nonneg_nonneg norm_ge_zero not_less zero_le_numeral)
   682     apply (meson add_nonneg_nonneg mult_nonneg_nonneg norm_ge_zero not_less zero_le_numeral)
   683     done
   683     done
   684   then have "gauge \<gamma>"
   684   then have "gauge \<gamma>"
   691     have "cbox c b \<subseteq> cbox a b"
   691     have "cbox c b \<subseteq> cbox a b"
   692       by (meson mem_box(2) order_refl subset_box(1) that(1))
   692       by (meson mem_box(2) order_refl subset_box(1) that(1))
   693     have "finite S"
   693     have "finite S"
   694       using S by blast
   694       using S by blast
   695     have "\<gamma>0 fine S" and fineS:
   695     have "\<gamma>0 fine S" and fineS:
   696          "(\<lambda>x. ball x (\<epsilon> * (INF m:Basis. b \<bullet> m - a \<bullet> m) / ((8 * norm (f x) + 8) * content (cbox a b)))) fine S"
   696          "(\<lambda>x. ball x (\<epsilon> * (INF m\<in>Basis. b \<bullet> m - a \<bullet> m) / ((8 * norm (f x) + 8) * content (cbox a b)))) fine S"
   697       using \<open>\<gamma> fine S\<close> by (auto simp: \<gamma>_def fine_Int)
   697       using \<open>\<gamma> fine S\<close> by (auto simp: \<gamma>_def fine_Int)
   698     then have "(\<Sum>(x,K) \<in> S. norm (content K *\<^sub>R h x - integral K h)) < \<epsilon>/2"
   698     then have "(\<Sum>(x,K) \<in> S. norm (content K *\<^sub>R h x - integral K h)) < \<epsilon>/2"
   699       by (intro \<gamma>0 that fineS)
   699       by (intro \<gamma>0 that fineS)
   700     moreover have "(\<Sum>(x,K) \<in> S. norm (integral K h) - norm (content K *\<^sub>R h x - integral K h)) \<le> \<epsilon>/2"
   700     moreover have "(\<Sum>(x,K) \<in> S. norm (integral K h) - norm (content K *\<^sub>R h x - integral K h)) \<le> \<epsilon>/2"
   701     proof -
   701     proof -
   733             using content_pos_lt_eq uv Kgt0 by blast
   733             using content_pos_lt_eq uv Kgt0 by blast
   734           then have dist_uv: "dist u v > 0"
   734           then have dist_uv: "dist u v > 0"
   735             using that by auto
   735             using that by auto
   736           ultimately have "norm (h x) \<le> (\<epsilon> * (b \<bullet> i - a \<bullet> i)) / (4 * content (cbox a b) * ?\<Delta>)"
   736           ultimately have "norm (h x) \<le> (\<epsilon> * (b \<bullet> i - a \<bullet> i)) / (4 * content (cbox a b) * ?\<Delta>)"
   737           proof -
   737           proof -
   738             have "dist x u < \<epsilon> * (INF m:Basis. b \<bullet> m - a \<bullet> m) / (4 * (norm (f x) + 1) * content (cbox a b)) / 2"
   738             have "dist x u < \<epsilon> * (INF m\<in>Basis. b \<bullet> m - a \<bullet> m) / (4 * (norm (f x) + 1) * content (cbox a b)) / 2"
   739                  "dist x v < \<epsilon> * (INF m:Basis. b \<bullet> m - a \<bullet> m) / (4 * (norm (f x) + 1) * content (cbox a b)) / 2"
   739                  "dist x v < \<epsilon> * (INF m\<in>Basis. b \<bullet> m - a \<bullet> m) / (4 * (norm (f x) + 1) * content (cbox a b)) / 2"
   740               using fineS u_less_v uv xK
   740               using fineS u_less_v uv xK
   741               by (force simp: fine_def mem_box field_simps dest!: bspec)+
   741               by (force simp: fine_def mem_box field_simps dest!: bspec)+
   742             moreover have "\<epsilon> * (INF m:Basis. b \<bullet> m - a \<bullet> m) / (4 * (norm (f x) + 1) * content (cbox a b)) / 2
   742             moreover have "\<epsilon> * (INF m\<in>Basis. b \<bullet> m - a \<bullet> m) / (4 * (norm (f x) + 1) * content (cbox a b)) / 2
   743                   \<le> \<epsilon> * (b \<bullet> i - a \<bullet> i) / (4 * (norm (f x) + 1) * content (cbox a b)) / 2"
   743                   \<le> \<epsilon> * (b \<bullet> i - a \<bullet> i) / (4 * (norm (f x) + 1) * content (cbox a b)) / 2"
   744               apply (intro mult_left_mono divide_right_mono)
   744               apply (intro mult_left_mono divide_right_mono)
   745               using \<open>i \<in> Basis\<close> \<open>0 < \<epsilon>\<close> apply (auto simp: intro!: cInf_le_finite)
   745               using \<open>i \<in> Basis\<close> \<open>0 < \<epsilon>\<close> apply (auto simp: intro!: cInf_le_finite)
   746               done
   746               done
   747             ultimately
   747             ultimately