src/HOL/Analysis/Henstock_Kurzweil_Integration.thy
changeset 65036 ab7e11730ad8
parent 64911 f0e07600de47
child 65204 d23eded35a33
equal deleted inserted replaced
65035:b46fe5138cb0 65036:ab7e11730ad8
     7 theory Henstock_Kurzweil_Integration
     7 theory Henstock_Kurzweil_Integration
     8 imports
     8 imports
     9   Lebesgue_Measure Tagged_Division
     9   Lebesgue_Measure Tagged_Division
    10 begin
    10 begin
    11 
    11 
    12 (* BEGIN MOVE *)
    12 (* try instead structured proofs below *)
    13 lemma norm_minus2: "norm (x1-x2, y1-y2) = norm (x2-x1, y2-y1)"
       
    14   by (simp add: norm_minus_eqI)
       
    15 
       
    16 lemma norm_diff2: "\<lbrakk>y = y1 + y2; x = x1 + x2; e = e1 + e2; norm(y1 - x1) \<le> e1; norm(y2 - x2) \<le> e2\<rbrakk>
    13 lemma norm_diff2: "\<lbrakk>y = y1 + y2; x = x1 + x2; e = e1 + e2; norm(y1 - x1) \<le> e1; norm(y2 - x2) \<le> e2\<rbrakk>
    17   \<Longrightarrow> norm(y - x) \<le> e"
    14   \<Longrightarrow> norm(y - x) \<le> e"
    18   using norm_triangle_mono [of "y1 - x1" "e1" "y2 - x2" "e2"]
    15   using norm_triangle_mono [of "y1 - x1" "e1" "y2 - x2" "e2"]
    19   by (simp add: add_diff_add)
    16   by (simp add: add_diff_add)
    20 
    17 
  7694         using fine by (simp add: fine_def Ball_def)
  7691         using fine by (simp add: fine_def Ball_def)
  7695       { fix x1 x2
  7692       { fix x1 x2
  7696         assume xuvwz: "x1 \<in> cbox u v" "x2 \<in> cbox w z"
  7693         assume xuvwz: "x1 \<in> cbox u v" "x2 \<in> cbox w z"
  7697         then have x: "x1 \<in> cbox a b" "x2 \<in> cbox c d"
  7694         then have x: "x1 \<in> cbox a b" "x2 \<in> cbox c d"
  7698           using uwvz_sub by auto
  7695           using uwvz_sub by auto
  7699         have "norm (x1 - t1, x2 - t2) < k"
  7696         have "norm (x1 - t1, x2 - t2) = norm (t1 - x1, t2 - x2)"
       
  7697           by (simp add: norm_Pair norm_minus_commute)
       
  7698         also have "norm (t1 - x1, t2 - x2) < k"
  7700           using xuvwz ls uwvz_sub unfolding ball_def
  7699           using xuvwz ls uwvz_sub unfolding ball_def
  7701           by (force simp add: cbox_Pair_eq dist_norm norm_minus2)
  7700           by (force simp add: cbox_Pair_eq dist_norm )
  7702         then have "norm (f (x1,x2) - f (t1,t2)) \<le> e / content ?CBOX / 2"
  7701         finally have "norm (f (x1,x2) - f (t1,t2)) \<le> e / content ?CBOX / 2"
  7703           using nf [OF t x]  by simp
  7702           using nf [OF t x]  by simp
  7704       } note nf' = this
  7703       } note nf' = this
  7705       have f_int_uwvz: "f integrable_on cbox (u,w) (v,z)"
  7704       have f_int_uwvz: "f integrable_on cbox (u,w) (v,z)"
  7706         using f_int_acbd uwvz_sub integrable_on_subcbox by blast
  7705         using f_int_acbd uwvz_sub integrable_on_subcbox by blast
  7707       have f_int_uv: "\<And>x. x \<in> cbox u v \<Longrightarrow> (\<lambda>y. f (x,y)) integrable_on cbox w z"
  7706       have f_int_uv: "\<And>x. x \<in> cbox u v \<Longrightarrow> (\<lambda>y. f (x,y)) integrable_on cbox w z"
  7850         using False a by (intro abs_of_nonneg) (simp_all add: field_simps)
  7849         using False a by (intro abs_of_nonneg) (simp_all add: field_simps)
  7851       also have "\<dots> \<le> exp (- a * c) / a" using a by simp
  7850       also have "\<dots> \<le> exp (- a * c) / a" using a by simp
  7852       finally show ?thesis .
  7851       finally show ?thesis .
  7853     qed (insert a, simp_all add: integral_f)
  7852     qed (insert a, simp_all add: integral_f)
  7854     thus "bounded {integral {c..} (f k) |k. True}"
  7853     thus "bounded {integral {c..} (f k) |k. True}"
  7855       by (intro bounded_realI[of _ "exp (-a*c)/a"]) auto
  7854       by (intro boundedI[of _ "exp (-a*c)/a"]) auto
  7856   qed (auto simp: f_def)
  7855   qed (auto simp: f_def)
  7857 
  7856 
  7858   from eventually_gt_at_top[of "nat \<lceil>c\<rceil>"] have "eventually (\<lambda>k. of_nat k > c) sequentially"
  7857   from eventually_gt_at_top[of "nat \<lceil>c\<rceil>"] have "eventually (\<lambda>k. of_nat k > c) sequentially"
  7859     by eventually_elim linarith
  7858     by eventually_elim linarith
  7860   hence "eventually (\<lambda>k. exp (-a*c)/a - exp (-a * of_nat k)/a = integral {c..} (f k)) sequentially"
  7859   hence "eventually (\<lambda>k. exp (-a*c)/a - exp (-a * of_nat k)/a = integral {c..} (f k)) sequentially"
  7943         by (auto simp: F_def divide_simps simp del: of_nat_Suc intro!: powr_mono2)
  7942         by (auto simp: F_def divide_simps simp del: of_nat_Suc intro!: powr_mono2)
  7944       hence "F k = abs (F k)" by simp
  7943       hence "F k = abs (F k)" by simp
  7945       finally have "abs (F k) \<le>  c powr (a + 1) / (a + 1)" .
  7944       finally have "abs (F k) \<le>  c powr (a + 1) / (a + 1)" .
  7946     }
  7945     }
  7947     thus "bounded {integral {0..c} (f k) |k. True}"
  7946     thus "bounded {integral {0..c} (f k) |k. True}"
  7948       by (intro bounded_realI[of _ "c powr (a+1) / (a+1)"]) (auto simp: integral_f)
  7947       by (intro boundedI[of _ "c powr (a+1) / (a+1)"]) (auto simp: integral_f)
  7949   qed
  7948   qed
  7950 
  7949 
  7951   from False c have "c > 0" by simp
  7950   from False c have "c > 0" by simp
  7952   from order_tendstoD(2)[OF LIMSEQ_inverse_real_of_nat this]
  7951   from order_tendstoD(2)[OF LIMSEQ_inverse_real_of_nat this]
  7953     have "eventually (\<lambda>k. c powr (a + 1) / (a + 1) - inverse (real (Suc k)) powr (a+1) / (a+1) =
  7952     have "eventually (\<lambda>k. c powr (a + 1) / (a + 1) - inverse (real (Suc k)) powr (a+1) / (a+1) =