Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  Improper_Integral.thy   Sprache: unbekannt

 

    Author: LC Paulson (ported from HOL Light)
*)


sectionsubsectiontext\<open>The definition here only really makes sense for an elementary set.

theory "Improper_Integral"
  importsdefinition\<^marker>\<open>tag important\<close> equiintegrable_on (infixr \<open>equiintegrable'_on\<close> 46)
begin

         (\<forall>e > 0. \<exists>\<gamma>. gauge \<gamma> \<and>

text\<open>The definition here only really makes sense for an elementary set.
     We just use compact intervals in applications below                          \<longrightarrow> norm ((\<Sum>(x,K) \<in> \<D>. content K *\<^sub>R f x) - integral I f) < e))"

definition\<^marker>\<open>tag important\<close> equiintegrable_on (infixr \<open>equiintegrable'_on\<close> 46)
  wherelemma equiintegrable_on_subset: "\F equiintegrable_on I; G \ F\ \ G equiintegrable_on I"
         le conj_forward imp_forward all_forward ex_forward | blast)+
         (\<forall>e > 0. \<exists>\<gamma>. gauge \<gamma> \<and>  shows "(F \ G) equiintegrable_on I"  unfolding equiintegrable_on_def
                    (\<forall>f \<D>. f \<in> F \<and> \<D> tagged_division_of I \<and> \<gamma> fine \<D>
                          \<longrightarrow> norm ((\<Sum>(x,K) \<in> \<D>. content K *\<^sub>R f x) - integral I f) < e))"

lemma equiintegrable_on_integrable      and \<gamma>1: "\<And>f \<D>. f \<in> F \<and> \<D> tagged_division_of I \<and> \<gamma>1 fine \<D>
     "\F equiintegrable_on I; f \ F\ \ f integrable_on I"
  using equiintegrable_on_def      using assms \<open>\<epsilon> > 0\<close> unfolding equiintegrable_on_def by auto

lemma equiintegrable_on_sing [simp]:
     "{f} equiintegrable_on cbox a b \ f integrable_on cbox a b"
  by                     \<Longrightarrow> norm ((\<Sum>(x,K) \<in> \<D>. content K *\<^sub>R f x) - integral I f) < \<epsilon>"

lemma equiintegrable_on_subset: "\F equiintegrable_on I; G \ F\ \ G equiintegrable_on I"
  unfolding      using \<open>gauge \<gamma>1\<close> \<open>gauge \<gamma>2\<close> by blast
  by (erule    moreover have "\f \. f \ F \ G \ \ tagged_division_of I \ (\x. \1 x \ \2 x) fine \ \

lemma equiintegrable_on_Un:
  assumes "F equiintegrable_on I" "G equiintegrable_on I"
  shows "(F \ G) equiintegrable_on I"
  unfolding equiintegrable_on_def
proof (intro conjI      using \<gamma>1 \<gamma>2 by (auto simp: fine_Int)
  show "\f\F \ G. f integrable_on I"
    using
  showlemma equiintegrable_on_insert  assumes "f integrable_on cbox a b" "F equiintegrable_on cbox a b"
            (\<forall>f \<D>. f \<in> F \<union> G \<and>
                   \<D> tagged_division_of I \<and> \<gamma> fine \<D> \<longrightarrow>
                   norm ((\<Sum>(x,K) \<in> \<D>. content K *\<^sub>R f x) - integral I f) < \<epsilon>)"
         if  show "f integrable_on I"
  proof -
    obtain \<gamma>1 where "gauge \<gamma>1"
      and    using that assms equiintegrable_on_integrable integrable_cmul by   show "\\. gauge \ \ (\f \. f \ (\c\{- k..k}. \f\F. {\x. c *\<^sub>R f x}) \ \ tagged_division_of I
                    \<Longrightarrow> norm ((\<Sum>(x,K) \<in> \<D>. content K *\<^sub>R f x) - integral I f) < \<epsilon>"
      using    if "\ > 0" for \
    obtain \<gamma>2 where  "gauge \<gamma>2"
      and \<gamma>2: "\<And>f \<D>. f \<in> G \<and> \<D> tagged_division_of I \<and> \<gamma>2 fine \<D>
                    \<Longrightarrow> norm ((\<Sum>(x,K) \<in> \<D>. content K *\<^sub>R f x) - integral I f) < \<epsilon>"
      using assms \<open>\<epsilon> > 0\<close> unfolding equiintegrable_on_def by auto      using assms \<open>\<epsilon> > 0\<close> unfolding equiintegrable_on_def
    have "gauge (\x. \1 x \ \2 x)"
      using \<open>gauge \<gamma>1\<close> \<open>gauge \<gamma>2\<close> by blast
        and "f \ F" "\ tagged_division_of I" "\ fine \"
                for \<D> c f
      have "norm ((\x\\. case x of (x, K) \ content K *\<^sub>R c *\<^sub>R f x) - integral I (\x. c *\<^sub>R f x))
    ultimately show ?thesis
      by (intro          = \<bar>c\<bar> * norm ((\<Sum>x\<in>\<D>. case x of (x, K) \<Rightarrow> content K *\<^sub>R f x) - integral I f)"
  qed
qed


lemma equiintegrable_on_insert:
  assumes "f integrable_on cbox a b" "F equiintegrable_on cbox a b"
  shows "(insert f F) equiintegrable_on cbox a b"
  by (metis assms      also have "\ < (\k\ + 1) * (\ / (\k\ + 1))"


lemma equiintegrable_cmul:
  assumes  have "\ = \"
        by auto
  unfolding equiintegrable_on_def
  proof (    ultimately show ?thesis
  show "f qed

    forlemma equiintegrable_add:
    using that assms equiintegrable_on_integrable integrable_cmul  assumes F: "F equiintegrable_on I" and G: "G equiintegrable_on I"
  show  unfolding equiintegrable_on_def
          \<and> \<gamma> fine \<D> \<longrightarrow> norm ((\<Sum>(x, K)\<in>\<D>. content K *\<^sub>R f x) - integral I f) < \<epsilon>)"  show "f integrable_on I"
    if   show "\\. gauge \ \ (\f \. f \ (\f\F. \g\G. {\x. f x + g x}) \ \ tagged_division_of I
  proof -
    obtain \<gamma> where "gauge \<gamma>"
      and \<gamma>: "\<And>f \<D>. \<lbrakk>f \<in> F; \<D> tagged_division_of I; \<gamma> fine \<D>\<rbrakk>
                    \<Longrightarrow> norm ((\<Sum>(x,K) \<in> \<D>. content K *\<^sub>R f x) - integral I f) < \<epsilon> / (\<bar>k\<bar> + 1)"
      and \<gamma>1: "\<And>f \<D>. \<lbrakk>f \<in> F; \<D> tagged_division_of I; \<gamma>1 fine \<D>\<rbrakk>
      by (metis add.commute add.right_neutral add_strict_mono divide_pos_pos norm_eq_zero real_norm_def zero_less_norm_iff zero_less_one)
    moreover have " obtain \2 where "gauge \2"
      if c: "c \ {- k..k}"
        and "f \ F" "\ tagged_division_of I" "\ fine \"
      for \<D> c f
    proof -
      have "norm ((\x\\. case x of (x, K) \ content K *\<^sub>R c *\<^sub>R f x) - integral I (\x. c *\<^sub>R f x))
          = \<bar>c\<bar> * norm ((\<Sum>x\<in>\<D>. case x of (x, K) \<Rightarrow> content K *\<^sub>R f x) - integral I f)"
        by (simp add: algebra_simps scale_sum_right case_prod_unfold flip: norm_scaleR)
      also have "\ \ (\k\ + 1) * norm ((\x\\. case x of (x, K) \ content K *\<^sub>R f x) - integral I f)"
        using c by (auto simp: mult_right_mono)
      also have "\ < (\k\ + 1) * (\ / (\k\ + 1))"
        by (rule        and \<D>: "\<D> tagged_division_of I" and fine: "(\<lambda>x. \<gamma>1 x \<inter> \<gamma>2 x) fine \<D>"
      also     proof -
        by auto
      finally show ?thesis .
    qed
    ultimately show ?thesis
      by (rule_tac x=" using F G equiintegrable_on_def by blast+
  qed      have "norm ((\(x,K) \ \. content K *\<^sub>R h x) - integral I h)
qed


lemma equiintegrable_add:
  assumes F: "F equiintegrable_on I" and G: "G equiintegrable_on I"
  shows "(\f \ F. \g \ G. {(\x. f x + g x)}) equiintegrable_on I"
  unfolding      also have "\ = norm (((\(x,K) \ \. content K *\<^sub>R f x) - integral I f + (\(x,K) \ \. content K *\<^sub>R g x) - integral I g))"
proof (intro conjI impI allI ballI)
  show "f integrable_on I"
    if "f \ (\f\F. \g\G. {\x. f x + g x})" for f
    using that equiintegrable_on_integrable assms  by (auto intro: integrable_add)
  show "\\. gauge \ \ (\f \. f \ (\f\F. \g\G. {\x. f x + g x}) \ \ tagged_division_of I
          \<and> \<gamma> fine \<D> \<longrightarrow> norm ((\<Sum>(x, K)\<in>\<D>. content K *\<^sub>R f x) - integral I f) < \<epsilon>)"
    if "\ > 0" for \
  proof -
    obtain \<gamma>1 where "gauge \<gamma>1"
      and \<gamma>1: "\<And>f \<D>. \<lbrakk>f \<in> F; \<D> tagged_division_of I; \<gamma>1 fine \<D>\<rbrakk>
                    \<Longrightarrow> norm ((\<Sum>(x,K) \<in> \<D>. content K *\<^sub>R f x) - integral I f) < \<epsilon>/2"    ultimately java.lang.StringIndexOutOfBoundsException: Range [0, 19) out of bounds for length 14
      using assms \<open>\<epsilon> > 0\<close> unfolding equiintegrable_on_def by (meson half_gt_zero_iff)
    obtain \<gamma>2 where  "gauge \<gamma>2"
      and             using \<gamma> [OF _ \<D> fine, of "f i"] funcset_mem [OF f] that  by auto
                    \<Longrightarrow> norm ((\<Sum>(x,K) \<in> \<D>. content K *\<^sub>R g x) - integral I g) < \<epsilon>/2"
      using        using 1 \<open>\<epsilon> > 0\<close> by (simp add: flip: sum_divide_distrib sum_distrib_right)
    have "gauge (\x. \1 x \ \2 x)"
      using \<open>gauge \<gamma>1\<close> \<open>gauge \<gamma>2\<close> by blast  qedqed
    moreover  shows "(\I \ Collect finite. \c \ {c. (\i \ I. c i \ 0) \ sum c I = 1}.
      if
text\<open> Basic combining theorems for the interval of integration.\<close>
      for h \<D>
    proof -
      obtain f g where "f \ F" "g \ G" and heq: "h = (\x. f x + g x)"
        using h by blast
      then have int: "f integrable_on I" "g integrable_on I"
        using F G equiintegrable_on_def by blast+
      have "norm ((\(x,K) \ \. content K *\<^sub>R h x) - integral I h)
          = norm  unfolding equiintegrable_on_def 
        by (simp add
      also havetext\<open> Main limit theorem for an equiintegrable sequence.\<close>
          fixes g :: "'a :: euclidean_space \ 'b :: banach"
      also have "\ \ norm ((\(x,K) \ \. content K *\<^sub>R f x) - integral I f) + norm ((\(x,K) \ \. content K *\<^sub>R g x) - integral I g)"
        by (metis (mono_tags) add_diff_eq norm_triangle_ineq)
      also have "\ < \/2 + \/2"
        using \<gamma>1 [OF \<open>f \<in> F\<close> \<D>] \<gamma>2 [OF \<open>g \<in> G\<close> \<D>] fine  by (simp add: fine_Int)
      finally show ?thesis by simp    fix e::real
    qed
    ultimately show ?thesis
      by meson
  qed
qed

lemma equiintegrable_minus    then obtain \<gamma> where "gauge \<gamma>"
  assumes                       \<Longrightarrow> norm((\<Sum>(x,K) \<in> \<D>. content K *\<^sub>R f n x) - integral (cbox a b) (f n)) < e/3"
  shows "(\f \ F. {(\x. - f x)}) equiintegrable_on I"
  by (force intro: equiintegrable_on_subset [OF    obtain \<D> where \<D>: "\<D> tagged_division_of (cbox a b)" and "\<gamma> fine \<D>"  "finite \<D>"

lemma equiintegrable_diff:
  assumes F: "F equiintegrable_on I" and G: "G equiintegrable_on I"
  shows "(\f \ F. \g \ G. {(\x. f x - g x)}) equiintegrable_on I"
  by (rule equiintegrable_on_subset [OF equiintegrable_add [OF F equiintegrable_minus [OF G]]]) auto


lemma equiintegrable_sum:
  fixes F :: "('a::euclidean_space \ 'b::euclidean_space) set"
  assumes "F equiintegrable_on cbox a with e3 obtain M where
        M: "\m n. \m\M; n\M\ \ dist (\(x,K)\\. content K *\<^sub>R f m x) (\(x,K)\\. content K *\<^sub>R f n x)
          \<Union>f \<in> I \<rightarrow> F. {(\<lambda>x. sum (\<lambda>i::'j. c i *\<^sub>R f i x) I)}) equiintegrable_on cbox a b"
    (is "?G equiintegrable_on _")
  unfolding equiintegrable_on_def      unfolding    have "\m n. \m\M; n\M;
proof (intro conjI impI allI ballI)
  show "f integrable_on cbox a b" if "f \ ?G" for f
    using that assms by (auto simp: equiintegrable_on_def intro!: integrable_sum integrable_cmul)
  show "\\. gauge \
           \<and> (\<forall>g \<D>. g \<in> ?G \<and> \<D> tagged_division_of cbox a b \<and> \<gamma> fine \<D>    then show "\M. \m\M. \n\M. dist (integral (cbox a b) (f m)) (integral (cbox a b) (f n)) < e"
              \<longrightarrow> norm ((\<Sum>(x,K) \<in> \<D>. content K *\<^sub>R g x) - integral (cbox a b) g) < \<epsilon>)"
    if      by simp
  proof -
    obtain \<gamma> where "gauge \<gamma>"
      and \<gamma>: "\<And>f \<D>. \<lbrakk>f \<in> F; \<D> tagged_division_of cbox a b; \<gamma> fine \<D>\<rbrakk>
                    \<Longrightarrow> norm ((\<Sum>(x,K) \<in> \<D>. content K *\<^sub>R f x) - integral (cbox a b) f) < \<epsilon> / 2"                    \<Longrightarrow> norm((\<Sum>(x,K)\<in>\<D>. content K *\<^sub>R f n x) - integral (cbox a b) (f n)) < e/2"
      using assms \<open>\<epsilon> > 0\<close> unfolding equiintegrable_on_def by (meson half_gt_zero_iff)
    moreover have "norm ((\(x,K) \ \. content K *\<^sub>R g x) - integral (cbox a b) g) < \"
      if g: "g \ ?G"
        and      proof (rule Lim_norm_ubound)
        and fine: "\ fine \"
      for \<D> g
    proof -
      obtain I c f where "finite I" and 0: "\i::'j. i \ I \ 0 \ c i"
        and 1: "sum c I = 1" and f: "f \ I \ F" and geq: "g = (\x. \i\I. c i *\<^sub>R f i x)"
        using g by auto
      have fi_int: "f i integrable_on cbox a b" if "i \ I" for i
        by      with \<open>0 < e\<close> show ?thesis
      have *: "integral (cbox a b) (\x. c i *\<^sub>R f i x) = (\(x, K)\\. integral K (\x. c i *\<^sub>R f i x))"
        if "i \ I" for i
      proof -
        have "f norm ((\(x,K)\\. content K *\<^sub>R g x) - L) < e)"
          by (metis Pi_iff assms equiintegrable_on_def      by meson
        then show ?thesis    by (simp add: \<open>(\<lambda>n. integral (cbox a b) (f n)) \<longlonglongrightarrow> L\<close> has_integral_integrable_integral)
          
      qed
      have  assumes " shows "(\<lambda>f. f \<circ> uminus) ` F equiintegrable_on cbox (-b) (-a)"
        using \<D> by blast
      have swap: "(\(x,K)\\. content K *\<^sub>R (\i\I. c i *\<^sub>R f i x))
            = (\<Sum>i\<in>I. c i *\<^sub>R (\<Sum>(x,K)\<in>\<D>. content K *\<^sub>R f i x))"
        by (simp add: scale_sum_right case_prod_unfold algebra_simps) (rule sum.swap)
      have "norm ((\(x, K)\\. content K *\<^sub>R g x) - integral (cbox a b) g)
          = norm ((\<Sum>i\<in>I. c i *\<^sub>R ((\<Sum>(x,K)\<in>\<D>. content K *\<^sub>R f i x) - integral (cbox a b) (f i))))"
        unfolding geq swap
        by (simp add: scaleR_right.sum algebra_simps   proof (intro exI, safe)
      also have "\ \ (\i\I. c i * \ / 2)"
      proof (rule sum_norm_le)
        show "norm (c i *\<^sub>R ((\(xa, K)\\. content K *\<^sub>R f i xa) - integral (cbox a b) (f i))) \ c i * \ / 2"
          if      if "f \ F" and tag: "\ tagged_division_of cbox (- b) (- a)"
        proof -
          have "norm ((\(x, K)\\. content K *\<^sub>R f i x) - integral (cbox a b) (f i)) \ \/2"
            using \<gamma> [OF _ \<D> fine, of "f i"] funcset_mem [OF f] that  by auto      have 1: "(\(x,K). (- x, uminus ` K)) ` \ tagged_partial_division_of cbox a b"
          then showjava.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 13
            using          have "y \ uminus ` cbox a b"
        qed
      qed
      also have "\ < \"
            by force
      finally        qed
    qed
    ultimately show           by (fastforce simp: tagged_partial_division_of_def interior_negations image_iff)
      by (rule_tac x="\" in exI) auto
  qed
qed

corollary equiintegrable_sum_real:
  fixes F :: "(real \ 'b::euclidean_space) set"
  assumes "F equiintegrable_on {a..b}"
  shows then obtain a X where           by auto
      qed
         equiintegrable_on {a..b}"
  using equiintegrable_sum [of         by (metis (no_types, lifting) equation_minus_iff imageE      have tag': "(\(x,K). (- x, uminus ` K)) ` \ tagged_division_of cbox a b"


text\<open> Basic combining theorems for the interval of integration.\<close>        using fine byon (\<lambda>(x,K). (- x, uminus ` K)) \<D>"

lemma equiintegrable_on_null [simp]:
   "content(cbox a b) = 0 \ F equiintegrable_on cbox a b"
  unfolding        obtain a b where "I = cbox a b"
  by (metis diff_zero gauge_trivial integrable_on_null integral_null norm_zero sum_content_null)


text\<open> Main limit theorem for an equiintegrable sequence.\<close>

theorem equiintegrable_limit:
  fixes g :: "'a :: euclidean_space \ 'b :: banach"
  assumes feq: "range f equiintegrable_on cbox a b"
      and to_g: "\x. x \ cbox a b \ (\n. f n x) \ g x"
    shows " then show ?thesis
proof -
          using content_image_affinity_cbox [of "-1" 0] by auto
  proof (clarsimp simp add: Cauchy_def)
    fix e::real
                (\<Sum>(x,K) \<in> \<D>. content K *\<^sub>R f (- x))"
    then have e3: "0 < e/3"
      by simp
    then obtain \<gamma> where "gauge \<gamma>"
         and      then         using \<gamma> [OF \<open>f \<in> F\<close> tag' fine'] integral_reflect
                       \<Longrightarrow> norm((\<Sum>(x,K) \<in> \<D>. content K *\<^sub>R f n x) - integral (cbox a b) (f n)) < e/3"
      using feq unfolding equiintegrable_on_def
      by (meson image_eqI iso_tuple_UNIV_I    qed
    using assms
      by (meson \<open>gauge \<gamma>\<close> fine_division_exists tagged_division_of_finite)
      by (metis (mono_tags, lifting) comp_apply integrable_eq integrable_reflect)
      java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
    have "(\n. \(x,K)\\. content K *\<^sub>R f n x) \ (\(x,K)\\. content K *\<^sub>R g x)"proof (cases "content (cbox u v) = 0")
      using \<D> to_g by (auto intro!: tendsto_sum tendsto_scaleR)  case False
          by (force simp: content_cbox_if divide_simps  splitqed
      by (mesonlemma content_division_lemma1:
    with e3 obtain M where
  assumes div: "\ division_of S" and S: "S \ cbox a b" and i: "i \ Basis"
                      < e/      and mt: "\K. K \ \ \ content K \ 0"
      unfolding Cauchy_def by blast
    have "\m n. \m\M; n\M;
                 dist (\<Sum>(x,K)\<in>\<D>. content K *\<^sub>R f m x) (\<Sum>(x,K)\<in>\<D>. content K *\<^sub>R f n x) < e/3\<rbrakk>   shows "(b \ i - a \ i) * (\K\\. content K / (interval_upperbound K \ i - interval_lowerbound K \ i))
  have "finite \"
       by (metis \<delta>T dist_commute dist_triangle_third [OF _ _ \<delta>T])  define extend where    "extend \ \K. cbox (\j \ Basis. if j = i then (a \ i) *\<^sub>R i else (interval_lowerbound K \ j) *\<^sub>R j)
                       (\<Sum>j \<in> Basis. if j = i then (b \<bullet> i) *\<^sub>R i else (interval_upperbound K \<bullet> j) *\<^sub>R j)"
      using   have div_subset_cbox: "\K. K \ \ \ K \ cbox a b"
  qed
  then obtain L where    using div by blast
    by (meson convergent_eq_Cauchy)
    have extend: "extend K \ {}" "extend K \ cbox a b" if K: "K \ \" for K
  proof    obtain u v where K: "K = cbox u v" "K \ {}" "K \ cbox a b"
    fix e::real assume "0 < e"
    then have e2: "0 < e have "\<bullet> i \<le> b \<bullet> i"
      by simp
    with K show "extend K \ {}"
      and \<gamma>: "\<And>n \<D>. \<lbrakk>\<D> tagged_division_of cbox a b; \<gamma> fine \<D>\<rbrakk>
                    \<Longrightarrow> norm((\<Sum>(x,K)\<in>\<D>. content K *\<^sub>R f n x) - integral (cbox a b) (f n)) < e/2"      by (simp add: extend_def i box_ne_empty)
      using feq unfolding equiintegrable_on_def  proof -
      by (meson image_eqI       using K cbox_division_memE [OF _ div    obtain w z where K2: "K2 = cbox w z" " using K cbox_division_memE [OF _ div] by ( have cboxes: "cbox u v \<in> \<D>" "cbox w z \<in> \<D>" "cbox u v \<noteq> cbox w z"
    moreover      have "a \ i < x \ i" "x \ i < b \ i"
    have "norm ((\(x,K)\\. content K *\<^sub>R g x) - L) < e"
              if       and wx: "\k. k \ Basis - {i} \ w \ k < x \ k"
    proof -
      have "norm have "box u v \<noteq> {}" "box w z \<noteq> {}"
      proof (rule Lim_norm_ubound)
        show " then obtain q s
          using to_g        where q: "\k. k \ Basis \ w \ k < q \ k \ q \ k < z \ k"
          by (intro tendsto_diff tendsto_sum          and s: "\k. k \ Basis \ u \ k < s \ k \ s \ k < v \ k"
        show "\\<^sub>F n in sequentially.
                norm ((\<Sum>(x,K) \<in> \<D>. content K *\<^sub>R f n x) - integral (cbox a b) (f n)) \<le> e/2"        by (meson all_not_in_conv mem_box(1))
          by (intro eventuallyI less_imp_le \<gamma> that)
      qed auto
      with \<open>0 < e\<close> show ?thesis             and  wza: "(cbox w z) \ {x. x \ i = a \ i} \ {}"
        by linarith        then obtain r t where "r \ i = a \ i" and r: "\k. k \ Basis \ w \ k \ r \ k \ r \ k \ z \ k"
    qed
    ultimately
    show "\\. gauge \ \
             (\<forall>\<D>. \<D> tagged_division_of cbox a b \<and> \<gamma> fine \<D> \<longrightarrow>
                  norm ((\<Sum>(x,K)\<in>\<D>. content K *\<^sub>R g x) - L) < e)"
      by meson
  qed
  with L show ?thesis
    by (simp add: \<open>(\<lambda>n. integral (cbox a b) (f n)) \<longlonglongrightarrow> L\<close> has_integral_integrable_integral)
qed


lemma equiintegrable_reflect:
  assumes "F equiintegrable_on cbox a b"
  shows "(\f. f \ uminus) ` F equiintegrable_on cbox (-b) (-a)"
proof -
  have \<section>: "\<exists>\<gamma>. gauge \<gamma> \<and>
            (\<forall>f \<D>. f \<in> (\<lambda>f. f \<circ> uminus) ` F \<and> \<D> tagged_division_of cbox (- b) (- a) \<and> \<gamma> fine \<D> \<longrightarrow>
                   norm ((\<Sum>(x,K) \<in> \<D>. content K *\<^sub>R f x) - integral (cbox (- b) (- a)) f) < e)"          by (intro sum_if_inner that \<open>i \<in> Basis\<close>)
       if "gauge \" and
           \<gamma>: "\<And>f \<D>. \<lbrakk>f \<in> F; \<D> tagged_division_of cbox a b; \<gamma> fine \<D>\<rbrakk> \<Longrightarrow>          with \<open>i \<in> Basis\<close> s u ux xv
                     norm ((\<Sum>(x,K) \<in> \<D>. content K *\<^sub>R f x) - integral (cbox a b) f) < e" for e \<gamma>          have "min (q \ i) (s \ i) < z \ i"
  proof (intro exI            by (force simp: mem_box)
    show "gauge assume "\<forall>K\<in>\<D>. K \<inter> {x. x \<bullet> i = b \<bullet> i} \<noteq> {}"
      by (metis \<open>gauge \<gamma>\<close> gauge_reflect)
    show "norm ((\(x,K) \ \. content K *\<^sub>R (f \ uminus) x) - integral (cbox (- b) (- a)) (f \ uminus)) < e"
      if " using cboxes by (auto simp: content_eq_0_interior)
         and fine: "(\x. uminus ` \ (- x)) fine \" for f \
    proof -
      have 1: "(\(x,K). (- x, uminus ` K)) ` \ tagged_partial_division_of cbox a b"
        if                        and "t \ i = b \ i" and t: "\k. k \ Basis \ u \ k \ t \ k \ t \ k \ v \ k"
      proof -
        have "- y \ cbox a b"
          if z: "s \ i < z \ i"
             "(x, Y) \ \" "y \ Y" for x Y y
        proof -
          have "y \ uminus ` cbox a b"
            using that by auto
          then show "- y define \ where "\ \ (\j \ Basis. if j = i then max (q \ i) (s \ i) *\<^sub>R i else (x \ j) *\<^sub>R j)"
            by force
        qed        have [simp]: "\ \ j = (if j = i then max (q \ j) (s \ j) else x \ j)" if "j \ Basis" for j
        with that show ?thesis          unfolding \<xi>_def
          by (fastforce simp: tagged_partial_division_of_def          show "\ \ box u v"
      qed
      have 2: "\K. (\x. (x,K) \ (\(x,K). (- x, uminus ` K)) ` \) \ x \ K"
              if            using \<open>i \<in> Basis\<close> q by (force simp: mem_box wx xz z)
      proof      qed
        have xm    ultimately show ?thesis by auto
          by (simp add: that)
        then obtain a X   have "?lhs = (\<Sum>K\<in>\<D>. (b \<bullet> i - a \<bullet> i) * content K / (interv_diff K i))"
          by auto
        then show ?thesis
          by (metis (no_types, lifting) add.inverse_inverse image_iff pair_imageI)
      qed
      have 3: "\x X y. \\ tagged_partial_division_of cbox (- b) (- a); (x, X) \ \; y \ X\ \ - y \ cbox a b"
        by (metis (no_types, lifting) equation_minus_iff imageE subsetD tagged_partial_division_ofD(3) uminus_interval_vector)
      have tag': "(\(x,K). (- x, uminus ` K)) ` \ tagged_division_of cbox a b"
        using tag  by (auto simp: tagged_division_of_def dest: 1 2 3)
      have fine' proof (rule sum.cong [OF refl])
        using fine by (fastforce simp: fine_def)
      have inj: "inj_on (\(x,K). (- x, uminus ` K)) \"
        unfolding inj_on_def by force
      have eq: "content (uminus ` I) = content I"
               if I: "(x, I) \ \" and fnz: "f (- x) \ 0" for x I
      proof -
        obtain a b where "I = cbox a b"
          using tag I that by (force simp: tagged_division_of_def tagged_partial_division_of_def)
        then show ?thesis
          using content_image_affinity_cbox [of "-1" 0] by auto
      qed
      have "(\(x,K) \ (\(x,K). (- x, uminus ` K)) ` \. content K *\<^sub>R f x) =
            (\<Sum>(x,K) \<in> \<D>. content K *\<^sub>R f (- x))"
        by (auto simp add: eq sum.reindex [OF inj] intro!: sum.cong)
      then show ?thesis
        using    then have uv: "u \ i < v \ i"
        by (metis (mono_tags, lifting) Henstock_Kurzweil_Integration.integral_cong comp_apply split_def sum.      using mt [OF \<open>K \<in> \<D>\<close>] \<open>i \<in> Basis\<close> content_eq_0 by fastforce
    qed
  qed    then have "(b \ i - a \ i) * content K / (interv_diff K i)
   show ?thesis
    using assms
    apply       using K box_ne_empty(1) content_cbox by fastforce    also have "... = (\x\Basis. if x = i then b \ x - a \ x
    subgoal for f
      by (metis (mono_tags, lifting) comp_apply integrable_eq integrable_reflect    also have "... = (\k\Basis.
    using \<section> by fastforce
qed

subsection\<open>Subinterval restrictions for equiintegrable families\<close>

text\<open>First, some technical lemmas about minimizing a "flat" part of a sum over a division.\<close>

lemma lemma0:
  assumes "i \ Basis"
    shows    also have "... = (\k\Basis.
           (if content (cbox u v) = 0 then 0
            else                        (\<Sum>j\<in>Basis. if j = i then (a \<bullet> i) *\<^sub>R i else (interval_lowerbound (cbox u v) \<bullet> j) *\<^sub>R j) \<bullet> k)"
proof (cases "content (cbox u v) = also have ".      using \<open>i \<in> Basis\<close> K box_ne_empty \<open>K \<in> \<D>\<close> extend(1) 
  case True
  then show ?  qed
next
  case False
  then show ?thesis
    using prod      using int_extend_disjoint [of K1    then show ?thesis
      by (force  also have "... \ ?rhs"
qed


lemma content_division_lemma1:
  assumesjava.lang.StringIndexOutOfBoundsException: Range [0, 10) out of bounds for length 5
        case True
      and disj: "(\K \ \. K \ {x. x \ i = a \ i} \ {}) \ (\K \ \. K \ {x. x \ i = b \ i} \ {})"
       by (auto simpnext
          \<le> content(cbox a b)"   (is "?lhs \<le> ?rhs")
proof -
  have "finite \"    using content_pos_lt_eq that by   have "finite \"
    using div by blast
  define extend where
    "extend \ \K. cbox (\j \ Basis. if j = i then (a \ i) *\<^sub>R i else (interval_lowerbound K \ j) *\<^sub>R j)
                       (\<Sum>j \<in> Basis. if j = i then (b \<bullet> i) *\<^sub>R i else (interval_upperbound K \<bullet> j) *\<^sub>R j)"
  have div_subset_cbox: "\K. K \ \ \ K \ cbox a b"
    using S div by auto
  have     using Dlec_def by blast
    using div by     using interval_split [OF i] div by  then have gec_is_cbox: "\content (L \ {x. x \ i \ c}) \ 0; L \ \\ \ \a b. L \ {x. x \ i \ c} = cbox a b" for L
  have extend_cbox: "\K. K \ \ \ \a b. extend K = cbox a b"
    using           \<Longrightarrow> content (y \<inter> {x. x \<bullet> i \<le> c}) = 0"
  have  have zero_right: "\x y. \x \ \; y \ \; x \ y; x \ {x. c \ x \ i} = y \ {x. c \ x \ i}\
  proof -
    obtain u v where Karrow> content (y \<inter> {x. c \<le> x \<bullet> i}) = 0"
      using
    with i show "extend K \ cbox a b"
      by (  proof (rule content_division_lemma1)
    have "a \ i \ b \ i"
      using K by (metis bot      show "\K1 K2. \K1 \ Dlec; K2 \ Dlec\ \ K1 \ K2 \ interior K1 \ interior K2 = {}"
    with K show "extend K \ {}"
      by (simp    show "\Dlec \ cbox a b'"
  qed
  have int_extend_disjoint:
       "interior(extend K1) \ interior(extend K2) = {}" if K: "K1 \ \" "K2 \ \" "K1 \ K2" for K1 K2
  proof -
    obtain u v where K1  qed (use i Dlec_def in  moreover
      using K cbox_division_memE    unfolding Dlec_def using \<open>finite \<D>\<close> by (auto simp: sum.mono_neutral_left)  moreover have "... =
    obtain w z where  moreover have "(b' \ i - a \ i) = (c - a \ i)"
      using  ultimately
    have cboxes: "cbox u v \ \" "cbox w z \ \" "cbox u v \ cbox w z"
      using K1 K2 that by auto             \<le> content(cbox a b')"
    with
      by blast
    moreover
    have "\x. x \ box u v \ x \ box w z"
         if " proof (rule content_division_lemma1)
    proof -
      have    proof (intro conjI . \<lbrakk>K1 \<in> Dgec; K2 \<in> Dgec\<rbrakk> \<Longrightarrow> K1 \<noteq> K2 \<longrightarrow> interior K1 \<inter> interior K2 = {}"
       and ux: "\k. k \ Basis - {i} \ u \ k < x \ k"
       and    show "\Dgec \ cbox a' b"
       and    show "(\K\Dgec. K \ {x. x \ i = a' \ i} \ {}) \ (\K\Dgec. K \ {x. x \ i = b \ i} \ {})"
       and  qed (use i Dgec_def in auto)
        using that K1 K2 i by (auto simp: extend_def box_ne_empty       content K / interv_diff K i)"
      have "box u v \ {}" "box w z \ {}"
        using cboxes interior_cbox by (auto simp: content_eq_0_interior    by (simp add: zero_right sum.reindex_nontrivial  moreover have "(b \ i - a' \ i) = (b \ i - c)"
      then obtain q   have gec: "(b \ i - c) * (\K\\. ((\K. content K / (interv_diff K i)) \ ((\K. K \ {x. x \ i \ c}))) K)
        where q: "\k. k \ Basis \ w \ k < q \ k \ q \ k < z \ k"
          and s: "\k. k \ Basis \ u \ k < s \ k \ s \ k < v \ k"
        by (meson all_not_in_conv mem_box(1))
      show ?thesis    then show ?thesis
      proof
        assume "\K\\. K \ {x. x \ i = a \ i} \ {}"
        then have uva: "(cbox u v) \ {x. x \ i = a \ i} \ {}"
             and  wza: "(cbox w z) \ {x. x \ i = a \ i} \ {}"
          using cboxes by (auto simp:       ultimately have "a' = a"
        then obtain r t where "r \ i = a \ i" and r: "\k. k \ Basis \ w \ k \ r \ k \ r \ k \ z \ k"
                        and               = (\<Sum>K\<in>\<D>. content K / interv_diff K i)"
          by (fastforce simp        fix K assume "K \ \"
        have u: "u \ i < q \ i"
          using i K2        then have "K \ {x. a \ i \ x \ i} = K"
        have w: "w \ i < s \ i"
          using i K1(1) K1      ultimately show ?thesis
        define \<xi> where "\<xi> \<equiv> (\<Sum>j \<in> Basis. if j = i then min (q \<bullet> i) (s \<bullet> i) *\<^sub>R i else (x \<bullet> j) *\<^sub>R j)"    next
        have [simp]: "\ \ j = (if j = i then min (q \ j) (s \ j) else x \ j)" if "j \ Basis" for j
          unfolding \<xi>_def
          by (intro sum_if_inner that \<open>i \<in> Basis\<close>)
        show ?thesis
        proof (intro exI conjI)
          have "min (q \ i) (s \ i) < v \ i"
            using i s by fastforce
              = (\<Sum>K\<in>\<D>. content K / interv_diff K i)"
          show "\ \ box u v"
            by (force simp: mem_box)
          have "min (q bullet> i \ b \ i" if "x \ K" for x
            using i q by force
          with \<open>i \<in> Basis\<close> q w wx xz
          show "\ \ box w z"
            by (force simp: java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 18
        qed
      next
        assume "\K\\. K \ {x. x \ i = b \ i} \ {}"
        then have uva:    proof -
             and  wza        using that mk_disjoint_insert [OF        by (metis Int_insert_left_if0 finite_Basis finite_insert      then show ?thesis
          using cboxes    then have "(\K\\. ((\K. content K / (interv_diff K i)) \ ((\K. K \ {x. x \ i \ c}))) K)
        then obtain r t where "r \ i = b \ i" and r: "\k. k \ Basis \ w \ k \ r \ k \ r \ k \ z \ k"
                        and     moreover
          \<le> (\<Sum>K\<in>\<D>. ((\<lambda>K. content K / (interv_diff K i)) \<circ> ((\<lambda>K. K \<inter> {x. x \<bullet> i \<le> c}))) K) +
        have z: "s \ i < z \ i"
              proof -
            (\<Sum>K\<in>\<D>. ((\<lambda>K. content K / (interv_diff K i)) \<circ> ((\<lambda>K. K \<inter> {x. x \<bullet> i \<le> c}))) K +
          using K2(1) K2(3      proof (rule sum_mono)
        define \<xi> where "\<xi> \<equiv> (\<Sum>j \<in> Basis. if j = i then max (q \<bullet> i) (s \<bullet> i) *\<^sub>R i else (x \<bullet> j) *\<^sub>R j)"        then obtain u v where          using div by blast
        have [simp]: "\ \ j = (if j = i then max (q \ j) (s \ j) else x \ j)" if "j \ Basis" for j
          unfolding \<xi>_def
          by (intro sum_if_inner that \<open>i \<in> Basis\<close>)
        show          using i by (auto simp: interval_split        have *: "\content (cbox u v') = 0; content (cbox u' v) = 0\ \ content (cbox u v) = 0"
        proof (intro exI conjI)
          show "\ \ box u v"
            using \<open>i \<in> Basis\<close> s by (force simp: mem_box ux v xv)
          show "\ \ box w z"
            using \<open>i \<in> Basis\<close> q by (force simp: mem_box wx xz z)
        qed
      qed
    qed
    ultimately    qed
  qed
  define interv_diff       using i abc
  have "?lhs = (\K\\. (b \ i - a \ i) * content K / (interv_diff K i))"
    by (simp add: sum_distrib_left interv_diff_def)
  also have "\ = sum (content \ extend) \"
  proof (rule sum.cong [OF refl])
    fix K       apply (simp add: field_simps      apply (auto simp: if_distrib prod      done
    then obtain u v where K: "K = by linarith
      using      using abc interv_diff_def by (simp  qed
    then have uv: "u
      using mt  fixes f :: "'a::euclidean_space \ 'b::euclidean_space"
    have "insert i (Basis \ -{i}) = Basis"
      using \<open>i \<in> Basis\<close> by auto
    then have             "\c i S h. \c \ cbox a b; i \ Basis; S tagged_partial_division_of cbox a b;
             = (b \<bullet> i - a \<bullet> i) * (\<Prod>i \<in> insert i (Basis \<inter> -{i}). v \<bullet> i - u \<bullet> i) / (interv_diff (cbox u v) i)"
proof (cases "content(cbox a b) = 0")
    also have  proof
                      else      by (simp add: gauge_trivial)
      using    show "(\(x,K) \ S. norm (integral K h)) < \"
    also have "... = (\k\Basis.
                        (\<Sum>j\<in>Basis. if j = i then (b \<bullet> i - a \<bullet> i) *\<^sub>R i 
                                    else          using that True content_0_subset          by (fastforce simp: tagged_partial_division_of_def intro: sum      with \<open>0 < \<epsilon>\<close> show ?thesis
      using java.lang.StringIndexOutOfBoundsException: Range [0, 67) out of bounds for length 48
    also have "... = (\k\Basis.
                        (\<Sum>j\<in>Basis. if j = i then (b \<bullet> i) *\<^sub>R i else (interval_upperbound (cbox u v) \<bullet> j) *\<^sub>R j) \<bullet> k -               and \<gamma>: "\<And>f \<D>. \<lbrakk>f \<in> F; \<D> tagged_division_of cbox a b; \<gamma> fine \<D>\<rbrakk>
                        (\<Sum>j\<in>Basis. if j = i then (a \<bullet> i) *\<^sub>R i else (interval_lowerbound (cbox u v) \<bullet> j) *\<^sub>R j) \<bullet> k)"    proof      have e5: "\/(5 * (Suc DIM('b))) > 0"
      using \<open>i \<in> Basis\<close>
      by (intro prod    proof
    also have "... = (content \ extend) K"
      using \<open>i \<in> Basis\<close> K box_ne_empty \<open>K \<in> \<D>\<close> extend(1) 
      by (auto simp add      proof -
    finally show "(b \ i - a \ i) * content K / (interv_diff K i) = (content \ extend) K" .
  qed
  also have "... = sum content (extend using that F equiintegrable_on_def by metis
  proof -
    have "\K1 \ \; K2 \ \; K1 \ K2; extend K1 = extend K2\ \ content (extend K1) = 0" for K1 K2
      using int_extend_disjoint [of K1 K2        also have "... < \/2"
    then show ?thesis
      by       qed
  qed
  also have "... \ ?rhs"
  proof (rule subadditive_content_division)
    show "extend ` \ division_of \ (extend ` \)"  define interv_diff where "interv_diff \ \K. \i::'a. interval_upperbound K \ i - interval_lowerbound K \ i"
      using int_extend_disjoint  by (auto simp: division_of_def \<open>finite \<D>\<close> extend extend_cbox)  then have "gauge (\x. ball x
    show "\ (extend ` \) \ cbox a b"
      using extend by fastforce
  qed
  finally show ?thesis .
qed


proposition  proof -
  assumes      by (meson mem_box(2) order_refl    have "finite S"
    and "a \ i \ c" "c \ b \ i"
    and nonmt: "\K. K \ \ \ K \ {x. x \ i = c} \ {}"
        using \<open>\<gamma> fine S\<close> by (auto simp: \<gamma>_def fine_Int)
          \<le> 2 * content(cbox a b)"
proof       by (intro \<gamma>0 that fineS)
  case True
  have "(\K\\. content K / (interval_upperbound K \ i - interval_lowerbound K \ i)) = 0"
    using S            \<le> (\<Sum>(x,K) \<in> S. norm (content K *\<^sub>R h x))"
  then show        fix x K
    by (auto simp        have "norm (integral K h) - norm (content K *\<^sub>R h x - integral K h) \ norm (integral K h - (integral K h - content K *\<^sub>R h x))"
next
  case          by simp
  then have "content(cbox a b) > 0"
    using  have "... \ (\(x,K) \ S. \/4 * (b \ i - a \ i) / content (cbox a b) * content K / interv_diff K i)"
  then have "a \ i < b \ i" if "i \ Basis" for i
    using content_pos_lt_eq         then have x: "x \ cbox a b"
  have  show "norm (content K *\<^sub>R h x) \ \/4 * (b \ i - a \ i) / content (cbox a b) * content K / interv_diff K i"
    using div by blast          case True
  define Dlec          case False
  define            using zero_less_measure_iff by blast
  define a' where "a'            using S \<open>(x,K) \<in> S\<close> unfolding tagged_partial_division_of_def by blast
  define            using content_pos_lt_eq uv Kgt0 by blast
  define interv_diff where            using that by auto
  have Dlec_cbox: "\K. K \ Dlec \ \a b. K = cbox a b"
    using interval_split [OF i] div by (fastforce            have "dist x u < \ * (INF m\Basis. b \ m - a \ m) / (4 * (norm (f x) + 1) * content (cbox a b)) / 2"
  then                 "dist x v < \ * (INF m\Basis. b \ m - a \ m) / (4 * (norm (f x) + 1) * content (cbox a b)) / 2"
    using Dlec_def by blast              using fineS u_less_v uv xK
  have Dgec_cbox            moreover have "\ * (INF m\Basis. b \ m - a \ m) / (4 * (norm (f x) + 1) * content (cbox a b)) / 2
    using interval_split [OF i] div by (fastforce simp: Dgec_def division_of_def)
  then have gec_is_cbox: "\content (L \ {x. x \ i \ c}) \ 0; L \ \\ \ \a b. L \ {x. x \ i \ c} = cbox a b" for L
    using Dgec_def                using \<open>i \<in> Basis\<close> by (auto intro!: cInf_le_finite)

  have zero_left: "\x y. \x \ \; y \ \; x \ y; x \ {x. x \ i \ c} = y \ {x. x \ i \ c}\
           \<Longrightarrow> content (y \<inter> {x. x \<bullet> i \<le> c}) = 0"
    by (metis division_split_left_inj [OF div] lec_is_cbox              by linarith+
  have zero_right: "\x y. \x \ \; y \ \; x \ y; x \ {x. c \ x \ i} = y \ {x. c \ x \ i}\
           \<Longrightarrow> content (y \<inter> {x. c \<le> x \<bullet> i}) = 0"
    by              by (metis inner_commute inner_diff_right \<open>i \<in> Basis\<close> Basis_le_norm)

            also have "... < (norm (f x by simp
    unfolding interv_diff_def
  proof (rule content_division_lemma1)
    show " by (simp add: add.commute add_pos_nonneg)
      unfolding division_of_def
    proof (                by (simp only: mult_ac divide_simps            qed
      show " by (simp add: dist_norm norm_minus_commute)
        by (clarsimp simp: Dlec_def) (use div in auto)            proof (intro mult_right_mono divide_left_mono divide_right_mono uvi              show "norm (v - u) * \v \ i - u \ i\ > 0"
    qed                using a_less_b \<open>0 < \<epsilon>\<close> \<open>i \<in> Basis\<close> by force
    show "\Dlec \ cbox a b'"
      using Dlec_def div            finally show ?thesis by simp
    show "(\K\Dlec. K \ {x. x \ i = a \ i} \ {}) \ (\K\Dlec. K \ {x. x \ i = b' \ i} \ {})"
      using nonmt by (fastforce simp          also have "... = \/4 * (b \ i - a \ i) / content (cbox a b) * content K / interv_diff K i"
  qed (use i Dlec_def          finally show ?thesis .
  moreover
  have "(\K\Dlec. content K / (interv_diff K i)) = (\K\(\K. K \ {x. x \ i \ c}) ` \. content K / interv_diff K i)"
    unfolding Dlec_def        apply (rule sum.over_tagged_division_lemma [OF tagged_partial_division_of_Union_self [        apply (simp add: box_eq_empty(1) content_eq_0        done
  moreover have "... =
        (\<Sum>K\<in>\<D>. ((\<lambda>K. content K / (interv_diff K i)) \<circ> ((\<lambda>K. K \<inter> {x. x \<bullet> i \<le> c}))) K)"      proof (rule mult_left_mono        have "(b \ i - a \ i) * (\K\snd ` S. content K / interv_diff K i) \ 2 * content (cbox a b)"
    by            by (auto intro: S tagged_partial_division_of_Union_self          show "\(snd ` S) \ cbox a b"
          show "a \ i \ c \ i" "c \ i \ b \ i"
    by (simp        qed (use that in auto)
  ultimately
            by (simp add: contab_gt0)
             \<le> content(cbox a b')"
    by simp

  have "(b \ i - a' \ i) * (\K\Dgec. content K / (interv_diff K i)) \ content(cbox a' b)"
      by (simp add: Groups_Big.sum_subtractf [symmetric    ultimately show "(\(x,K) \ S. norm (integral K h)) < \"
  proof (rule content_division_lemma1)
    showjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
      unfoldingproof (cases "content(cbox a b) = 0")
    proof (intro conjI ballI Dgec_cboxnext
      show   then have "content(cbox a b) > 0"
  then have "a \ i < b \ i" if "i \ Basis" for i
    qed    using F that by (simp add:  let ?CI = "\K h x. content K *\<^sub>R h x - integral K h"
    show     unfolding equiintegrable_on_def
  proof (intro conjI; clarify)
    show "(\K\Dgec. K \ {x. x \ i = a' \ i} \ {}) \ (\K\Dgec. K \ {x. x \ i = b \ i} \ {})"
      using nonmt by (fastforce simp: Dgec_def \<bullet> i \<le> c}" h]
  qed (use i Dgec_def in auto)
  moreover
  have "(\K\Dgec. content K / (interv_diff K i)) = (\K\(\K. K \ {x. c \ x \ i}) ` \.
       content K / interv_diff                     T tagged_division_of cbox a b \<and> \<gamma> fine T \<longrightarrow>
    unfolding Dgec_def using \<open>finite \<D>\<close> by (auto simp: sum.mono_neutral_left)
  moreover have "\ =
        (\<Sum>K\<in>\<D>. ((\<lambda>K. content K / (interv_diff K i)) \<circ> ((\<lambda>K. K \<inter> {x. x \<bullet> i \<ge> c}))) K)"      obtain \<gamma>0 where "gauge \<gamma>0" and \<gamma>0:
    by (simp                        \<gamma>0 fine S; h \<in> F; \<And>x K. (x,K) \<in> S \<Longrightarrow> (K \<inter> {x. x \<bullet> i = c \<bullet> i} \<noteq> {})\<rbrakk>
  moreover have "(b \ i - a' \ i) = (b \ i - c)"
    by (simp         show "\h x. \h \ F; x \ cbox a b\ \ norm (h x) \ norm (f x)"
  ultimately          by (auto simp: norm_f)
  have gec: "(b \ i - c) * (\K\\. ((\K. content K / (interv_diff K i)) \ ((\K. K \ {x. x \ i \ c}))) K)
             \<le> content(cbox a' b)"brakk>h \<in> F; T tagged_division_of cbox a b; \<gamma>1 fine T\<rbrakk>
    by simp

  show ?thesis
  proof (cases "c = a \ i \ c = b \ i")
    case True
    then      proof -
            have e5: "\/(7 * (Suc DIM('b))) > 0"
      assume c: "c = a \ i"
      moreover
      have "(\j\Basis. (if j = i then a \ i else a \ j) *\<^sub>R j) = a"
        using euclidean_representation [      have h_less3: "(\(x,K) \ T. norm (?CI K h x)) < \/3"
      ultimately have "a' = a"
        by (simp add: i a' proof -
      then have "content (cbox a' b) \ 2 * content (cbox a b)" by simp
      moreover
      have eq: "(\K\\. content (K \ {x. a \ i \ x \ i}) / interv_diff (K \ {x. a \ i \ x \ i}) i)
              = (\<Sum>K\<in>\<D>. content K / interv_diff K i)"
        (is "sum ?f _ = sum ?g _")
      proof (rule sum.cong [OF refl])
        fix K assume "K \ \"
        then have "a \ i \ x \ i" if "x \ K" for x
          by (metis S UnionI div division_ofD(6) i mem_box(2) subsetCE that)
        then have "K \ {x. a \ i \ x \ i} = K"
          by blast
        then show "?f K = ?g K"
          by simp
      qed
      ultimately show ?thesis
        using gec c eq interv_diff_def by auto
    next
      assume c: "c = b \ i"
      moreover have "(\j\Basis. (if j = i then b \ i else b \ j) *\<^sub>R j) = b"
        using euclidean_representation [of b] sum.cong [OF refl, of Basis "\i. (b \ i) *\<^sub>R i"] by presburger
      ultimately have "b' = b"
        by (simp add: i b'_def cong: if_cong)
      then have "content (cbox a b') \ 2 * content (cbox a b)" by simp
      moreover
      have eq: "(\K\\. content (K \ {x. x \ i \ b \ i}) / interv_diff (K \ {x. x \ i \ b \ i}) i)
              = (\<Sum>K\<in>\<D>. content K / interv_diff K i)"
               (is "sum ?f _ = sum ?g _")
      proof (rule sum.cong [OF refl])
        fix K assume "K \ \"
        then have "x \ i \ b \ i" if "x \ K" for x
          by (metis S UnionI div division_ofD(6) i mem_box(2) subsetCE that)
        then have "K \ {x. x \ i \ b \ i} = K"
          by blast
        then show "?f K = ?g K"
          by simp
      qed
      ultimately show ?thesis
        using lec c eq interv_diff_def by auto
    qed
  next
    case False
    have prod_if: "(\k\Basis \ - {i}. f k) = (\k\Basis. f k) / f i" if "f i \ (0::real)" for f
    proof -
      have "f i * prod f (Basis \ - {i}) = prod f Basis"
        using that mk_disjoint_insert [OF i]
        by (metis Int_insert_left_if0 finite_Basis finite_insert le_iff_inf order_refl prod.insert subset_Compl_singleton)
      then show ?thesis
        by (metis nonzero_mult_div_cancel_left that)
    qed
    have abc: "a \ i < c" "c < b \ i"
      using False assms by auto
    then have "(\K\\. ((\K. content K / (interv_diff K i)) \ ((\K. K \ {x. x \ i \ c}))) K)
                  \<le> content(cbox a b') / (c - a \<bullet> i)"
              "(\K\\. ((\K. content K / (interv_diff K i)) \ ((\K. K \ {x. x \ i \ c}))) K)
                 \<le> content(cbox a' b) / (b \<bullet> i - c)"
      using lec gec by (simp_all add: field_split_simps)
    moreover
    have "(\K\\. content K / (interv_diff K i))
          \<le> (\<Sum>K\<in>\<D>. ((\<lambda>K. content K / (interv_diff K i)) \<circ> ((\<lambda>K. K \<inter> {x. x \<bullet> i \<le> c}))) K) +
            (\<Sum>K\<in>\<D>. ((\<lambda>K. content K / (interv_diff K i)) \<circ> ((\<lambda>K. K \<inter> {x. x \<bullet> i \<ge> c}))) K)"
           (is "?lhs \ ?rhs")
    proof -
      have "?lhs \
            (\<Sum>K\<in>\<D>. ((\<lambda>K. content K / (interv_diff K i)) \<circ> ((\<lambda>K. K \<inter> {x. x \<bullet> i \<le> c}))) K +
                    ((\<lambda>K. content K / (interv_diff K i)) \<circ> ((\<lambda>K. K \<inter> {x. x \<bullet> i \<ge> c}))) K)"
            (is "sum ?f _ \ sum ?g _")
      proof (rule sum_mono)
        fix K assume "K \ \"
        then obtain u v where uv: "K = cbox u v"
          using div by blast
        obtain u' v' where uv': "cbox u v \ {x. x \ i \ c} = cbox u v'"
                                "cbox u v \ {x. c \ x \ i} = cbox u' v"
                                "\k. k \ Basis \ u' \ k = (if k = i then max (u \ i) c else u \ k)"
                                "\k. k \ Basis \ v' \ k = (if k = i then min (v \ i) c else v \ k)"
          using i by (auto simp: interval_split)
        have *: "\content (cbox u v') = 0; content (cbox u' v) = 0\ \ content (cbox u v) = 0"
                "content (cbox u' v) \ 0 \ content (cbox u v) \ 0"
                "content (cbox u v') \ 0 \ content (cbox u v) \ 0"
          using i uv uv' by (auto simp: content_eq_0 le_max_iff_disj min_le_iff_disj split: if_split_asm intro: order_trans)
        have uniq: "\j. \j \ Basis; \ u \ j \ v \ j\ \ j = i"
          by (metis \<open>K \<in> \<D>\<close> box_ne_empty(1) div division_of_def uv)
        show "?f K \ ?g K"
          using i uv uv' by (auto simp add: interv_diff_def lemma0 dest: uniq * intro!: prod_nonneg)
      qed
      also have "... = ?rhs"
        by (simp add: sum.distrib)
      finally show ?thesis .
    qed
    moreover have "content (cbox a b') / (c - a \ i) = content (cbox a b) / (b \ i - a \ i)"
      using i abc
      apply (simp add: field_simps a'_def b'_def measure_lborel_cbox_eq inner_diff)
      apply (auto simp: if_distrib if_distrib [of "\f. f x" for x] prod.If_cases [of Basis "\x. x = i", simplified] prod_if field_simps)
      done
    moreover have "content (cbox a' b) / (b \ i - c) = content (cbox a b) / (b \ i - a \ i)"
      using i abc
      apply (simp add: field_simps a'_def b'_def measure_lborel_cbox_eq inner_diff)
      apply (auto simp: if_distrib prod.If_cases [of Basis "\x. x = i", simplified] prod_if field_simps)
      done
    ultimately
    have "(\K\\. content K / (interv_diff K i)) \ 2 * content (cbox a b) / (b \ i - a \ i)"
      by linarith
    then show ?thesis
      using abc interv_diff_def by (simp add: field_split_simps)
  qed
qed


proposition bounded_equiintegral_over_thin_tagged_partial_division:
  fixes f :: "'a::euclidean_space \ 'b::euclidean_space"
  assumes F: "F equiintegrable_on cbox a b" and f: "f \ F" and "0 < \"
      and norm_f: "\h x. \h \ F; x \ cbox a b\ \ norm(h x) \ norm(f x)"
  obtains \<gamma> where "gauge \<gamma>"
             "\c i S h. \c \ cbox a b; i \ Basis; S tagged_partial_division_of cbox a b;
                         \<gamma> fine S; h \<in> F; \<And>x K. (x,K) \<in> S \<Longrightarrow> (K \<inter> {x. x \<bullet> i = c \<bullet> i} \<noteq> {})\<rbrakk>
                        \<Longrightarrow> (\<Sum>(x,K) \<in> S. norm (integral K h)) < \<epsilon>"
proof (cases "content(cbox a b) = 0")
  case True
  show ?thesis
  proof
    show "gauge (\x. ball x 1)"
      by (simp add: gauge_trivial)
    show "(\(x,K) \ S. norm (integral K h)) < \"
         if "S tagged_partial_division_of cbox a b" "(\x. ball x 1) fine S" for S and h:: "'a \ 'b"
    proof -
      have "(\(x,K) \ S. norm (integral K h)) = 0"
          using that True content_0_subset
          by (fastforce simp: tagged_partial_division_of_def intro: sum.neutral)
      with \<open>0 < \<epsilon>\<close> show ?thesis
        by simp
    qed
  qed
next
  case False
  then have contab_gt0:  "content(cbox a b) > 0"
    by (simp add: zero_less_measure_iff)
  then have a_less_b: "\i. i \ Basis \ a\i < b\i"
    by (auto simp: content_pos_lt_eq)
  obtain \<gamma>0 where "gauge \<gamma>0"
            and \<gamma>0: "\<And>S h. \<lbrakk>S tagged_partial_division_of cbox a b; \<gamma>0 fine S; h \<in> F\<rbrakk>
                           \<Longrightarrow> (\<Sum>(x,K) \<in> S. norm (content K *\<^sub>R h x - integral K h)) < \<epsilon>/2"
  proof -
    obtain \<gamma> where "gauge \<gamma>"
               and \<gamma>: "\<And>f \<D>. \<lbrakk>f \<in> F; \<D> tagged_division_of cbox a b; \<gamma> fine \<D>\<rbrakk>
                              \<Longrightarrow> norm ((\<Sum>(x,K) \<in> \<D>. content K *\<^sub>R f x) - integral (cbox a b) f)
                                  < \<epsilon>/(5 * (Suc DIM('b)))"
    proof -
      have e5: "\/(5 * (Suc DIM('b))) > 0"
        using \<open>\<epsilon> > 0\<close> by auto
      then show ?thesis
        using F that by (auto simp: equiintegrable_on_def)
    qed
    show ?thesis
    proof
      show "gauge \"
        by (rule \<open>gauge \<gamma>\<close>)
      show "(\(x,K) \ S. norm (content K *\<^sub>R h x - integral K h)) < \/2"
           if "S tagged_partial_division_of cbox a b" "\ fine S" "h \ F" for S h
      proof -
        have "(\(x,K) \ S. norm (content K *\<^sub>R h x - integral K h)) \ 2 * real DIM('b) * (\/(5 * Suc DIM('b)))"
        proof (rule Henstock_lemma_part2 [of h a b])
          show "h integrable_on cbox a b"
            using that F equiintegrable_on_def by metis
          show "gauge \"
            by (rule \<open>gauge \<gamma>\<close>)
        qed (use that \<open>\<epsilon> > 0\<close> \<gamma> in auto)
        also have "... < \/2"
          using \<open>\<epsilon> > 0\<close> by (simp add: divide_simps)
        finally show ?thesis .
      qed
    qed
  qed
  define \<gamma> where "\<gamma> \<equiv> \<lambda>x. \<gamma>0 x \<inter>
                          ball x ((\<epsilon>/8 / (norm(f x) + 1)) * (INF m\<in>Basis. b \<bullet> m - a \<bullet> m) / content(cbox a b))"
  define interv_diff where "interv_diff \ \K. \i::'a. interval_upperbound K \ i - interval_lowerbound K \ i"
  have "8 * content (cbox a b) + norm (f x) * (8 * content (cbox a b)) > 0" for x
    by (metis add.right_neutral add_pos_pos contab_gt0 mult_pos_pos mult_zero_left norm_eq_zero zero_less_norm_iff zero_less_numeral)
  then have "gauge (\x. ball x
                    (\<epsilon> * (INF m\<in>Basis. b \<bullet> m - a \<bullet> m) / ((8 * norm (f x) + 8) * content (cbox a b))))"
    using \<open>0 < content (cbox a b)\<close> \<open>0 < \<epsilon>\<close> a_less_b 
    by (auto simp add: gauge_def field_split_simps add_nonneg_eq_0_iff finite_less_Inf_iff)
  then have "gauge \"
    unfolding \<gamma>_def using \<open>gauge \<gamma>0\<close> gauge_Int by auto
  moreover
  have "(\(x,K) \ S. norm (integral K h)) < \"
       if "c \ cbox a b" "i \ Basis" and S: "S tagged_partial_division_of cbox a b"
          and "\ fine S" "h \ F" and ne: "\x K. (x,K) \ S \ K \ {x. x \ i = c \ i} \ {}" for c i S h
  proof -
    have "cbox c b \ cbox a b"
      by (meson mem_box(2) order_refl subset_box(1) that(1))
    have "finite S"
      using S unfolding tagged_partial_division_of_def by blast
    have "\0 fine S" and fineS:
         "(\x. ball x (\ * (INF m\Basis. b \ m - a \ m) / ((8 * norm (f x) + 8) * content (cbox a b)))) fine S"
      using \<open>\<gamma> fine S\<close> by (auto simp: \<gamma>_def fine_Int)
    then have "(\(x,K) \ S. norm (content K *\<^sub>R h x - integral K h)) < \/2"
      by (intro \<gamma>0 that fineS)
    moreover have "(\(x,K) \ S. norm (integral K h) - norm (content K *\<^sub>R h x - integral K h)) \ \/2"
    proof -
      have "(\(x,K) \ S. norm (integral K h) - norm (content K *\<^sub>R h x - integral K h))
            \<le> (\<Sum>(x,K) \<in> S. norm (content K *\<^sub>R h x))"
      proof (clarify intro!: sum_mono)
        fix x K
        assume xK: "(x,K) \ S"
        have "norm (integral K h) - norm (content K *\<^sub>R h x - integral K h) \ norm (integral K h - (integral K h - content K *\<^sub>R h x))"
          by (metis norm_minus_commute norm_triangle_ineq2)
        also have "... \ norm (content K *\<^sub>R h x)"
          by simp
        finally show "norm (integral K h) - norm (content K *\<^sub>R h x - integral K h) \ norm (content K *\<^sub>R h x)" .
      qed
      also have "... \ (\(x,K) \ S. \/4 * (b \ i - a \ i) / content (cbox a b) * content K / interv_diff K i)"
      proof (clarify intro!: sum_mono)
        fix x K
        assume xK: "(x,K) \ S"
        then have x: "x \ cbox a b"
          using S unfolding tagged_partial_division_of_def by (meson subset_iff)
        show "norm (content K *\<^sub>R h x) \ \/4 * (b \ i - a \ i) / content (cbox a b) * content K / interv_diff K i"
        proof (cases "content K = 0")
          case True
          then show ?thesis by simp
        next
          case False
          then have Kgt0: "content K > 0"
            using zero_less_measure_iff by blast
          moreover
          obtain u v where uv: "K = cbox u v"
            using S \<open>(x,K) \<in> S\<close> unfolding tagged_partial_division_of_def by blast
          then have u_less_v: "\i. i \ Basis \ u \ i < v \ i"
            using content_pos_lt_eq uv Kgt0 by blast
          then have dist_uv: "dist u v > 0"
            using that by auto
          ultimately have "norm (h x) \ (\ * (b \ i - a \ i)) / (4 * content (cbox a b) * interv_diff K i)"
          proof -
            have "dist x u < \ * (INF m\Basis. b \ m - a \ m) / (4 * (norm (f x) + 1) * content (cbox a b)) / 2"
                 "dist x v < \ * (INF m\Basis. b \ m - a \ m) / (4 * (norm (f x) + 1) * content (cbox a b)) / 2"
              using fineS u_less_v uv xK
              by (force simp: fine_def mem_box field_simps dest!: bspec)+
            moreover have "\ * (INF m\Basis. b \ m - a \ m) / (4 * (norm (f x) + 1) * content (cbox a b)) / 2
                  \<le> \<epsilon> * (b \<bullet> i - a \<bullet> i) / (4 * (norm (f x) + 1) * content (cbox a b)) / 2"
            proof (intro mult_left_mono divide_right_mono)
              show "(INF m\Basis. b \ m - a \ m) \ b \ i - a \ i"
                using \<open>i \<in> Basis\<close> by (auto intro!: cInf_le_finite)
            qed (use \<open>0 < \<epsilon>\<close> in auto)
            ultimately
            have "dist x u < \ * (b \ i - a \ i) / (4 * (norm (f x) + 1) * content (cbox a b)) / 2"
                 "dist x v < \ * (b \ i - a \ i) / (4 * (norm (f x) + 1) * content (cbox a b)) / 2"
              by linarith+
            then have duv: "dist u v < \ * (b \ i - a \ i) / (4 * (norm (f x) + 1) * content (cbox a b))"
              using dist_triangle_half_r by blast
            have uvi: "\v \ i - u \ i\ \ norm (v - u)"
              by (metis inner_commute inner_diff_right \<open>i \<in> Basis\<close> Basis_le_norm)
            have "norm (h x) \ norm (f x)"
              using x that by (auto simp: norm_f)
            also have "... < (norm (f x) + 1)"
              by simp
            also have "... < \ * (b \ i - a \ i) / dist u v / (4 * content (cbox a b))"
            proof -
              have "0 < norm (f x) + 1"
                by (simp add: add.commute add_pos_nonneg)
              then show ?thesis
                using duv dist_uv contab_gt0
                by (simp only: mult_ac divide_simps) auto
            qed
            also have "... = \ * (b \ i - a \ i) / norm (v - u) / (4 * content (cbox a b))"
              by (simp add: dist_norm norm_minus_commute)
            also have "... \ \ * (b \ i - a \ i) / \v \ i - u \ i\ / (4 * content (cbox a b))"
            proof (intro mult_right_mono divide_left_mono divide_right_mono uvi)
              show "norm (v - u) * \v \ i - u \ i\ > 0"
                using u_less_v [OF \<open>i \<in> Basis\<close>] 
                by (auto simp: less_eq_real_def zero_less_mult_iff that)
              show "\ * (b \ i - a \ i) \ 0"
                using a_less_b \<open>0 < \<epsilon>\<close> \<open>i \<in> Basis\<close> by force
            qed auto
            also have "... = \ * (b \ i - a \ i) / (4 * content (cbox a b) * interv_diff K i)"
              using uv False that(2) u_less_v interv_diff_def by fastforce
            finally show ?thesis by simp
          qed
          with Kgt0 have "norm (content K *\<^sub>R h x) \ content K * ((\/4 * (b \ i - a \ i) / content (cbox a b)) / interv_diff K i)"
            using mult_left_mono by fastforce
          also have "... = \/4 * (b \ i - a \ i) / content (cbox a b) * content K / interv_diff K i"
            by (simp add: field_split_simps)
          finally show ?thesis .
        qed
      qed
      also have "... = (\K\snd ` S. \/4 * (b \ i - a \ i) / content (cbox a b) * content K / interv_diff K i)"
        unfolding interv_diff_def
        apply (rule sum.over_tagged_division_lemma [OF tagged_partial_division_of_Union_self [OF S]])
        apply (simp add: box_eq_empty(1) content_eq_0)
        done
      also have "... = \/2 * ((b \ i - a \ i) / (2 * content (cbox a b)) * (\K\snd ` S. content K / interv_diff K i))"
        by (simp add: interv_diff_def sum_distrib_left mult.assoc)
      also have "... \ (\/2) * 1"
      proof (rule mult_left_mono)
        have "(b \ i - a \ i) * (\K\snd ` S. content K / interv_diff K i) \ 2 * content (cbox a b)"
          unfolding interv_diff_def
        proof (rule sum_content_area_over_thin_division)
          show "snd ` S division_of \(snd ` S)"
            by (auto intro: S tagged_partial_division_of_Union_self division_of_tagged_division)
          show "\(snd ` S) \ cbox a b"
            using S unfolding tagged_partial_division_of_def by force
          show "a \ i \ c \ i" "c \ i \ b \ i"
            using mem_box(2) that by blast+
        qed (use that in auto)
        then show "(b \ i - a \ i) / (2 * content (cbox a b)) * (\K\snd ` S. content K / interv_diff K i) \ 1"
          by (simp add: contab_gt0)
      qed (use \<open>0 < \<epsilon>\<close> in auto)
      finally show ?thesis by simp
    qed
    then have "(\(x,K) \ S. norm (integral K h)) - (\(x,K) \ S. norm (content K *\<^sub>R h x - integral K h)) \ \/2"
      by (simp add: Groups_Big.sum_subtractf [symmetric])
    ultimately show "(\(x,K) \ S. norm (integral K h)) < \"
      by linarith
  qed
  ultimately show ?thesis using that by auto
qed



proposition equiintegrable_halfspace_restrictions_le:
  fixes f :: "'a::euclidean_space \ 'b::euclidean_space"
  assumes F: "F equiintegrable_on cbox a b" and f: "f \ F"
    and norm_f: "\h x. \h \ F; x \ cbox a b\ \ norm(h x) \ norm(f x)"
  shows "(\i \ Basis. \c. \h \ F. {(\x. if x \ i \ c then h x else 0)})
         equiintegrable_on cbox a b"
proof (cases "content(cbox a b) = 0")
  case True
  then show ?thesis by simp
next
  case False
  then have "content(cbox a b) > 0"
    using zero_less_measure_iff by blast
  then have "a \ i < b \ i" if "i \ Basis" for i
    using content_pos_lt_eq that by blast
  have int_F: "f integrable_on cbox a b" if "f \ F" for f
    using F that by (simp add: equiintegrable_on_def)
  let ?CI = "\K h x. content K *\<^sub>R h x - integral K h"
  show ?thesis
    unfolding equiintegrable_on_def
  proof (intro conjI; clarify)
    show int_lec: "\i \ Basis; h \ F\ \ (\x. if x \ i \ c then h x else 0) integrable_on cbox a b" for i c h
      using integrable_restrict_Int [of "{x. x \ i \ c}" h]
      by (simp add: inf_commute int_F integrable_split(1))
    show "\\. gauge \ \
              (\<forall>f T. f \<in> (\<Union>i\<in>Basis. \<Union>c. \<Union>h\<in>F. {\<lambda>x. if x \<bullet> i \<le> c then h x else 0}) \<and>
                     T tagged_division_of cbox a b \<and> \<gamma> fine T \<longrightarrow>
                     norm ((\<Sum>(x,K) \<in> T. content K *\<^sub>R f x) - integral (cbox a b) f) < \<epsilon>)"
      if "\ > 0" for \
    proof -
      obtain \<gamma>0 where "gauge \<gamma>0" and \<gamma>0:
        "\c i S h. \c \ cbox a b; i \ Basis; S tagged_partial_division_of cbox a b;
                        \<gamma>0 fine S; h \<in> F; \<And>x K. (x,K) \<in> S \<Longrightarrow> (K \<inter> {x. x \<bullet> i = c \<bullet> i} \<noteq> {})\<rbrakk>
                       \<Longrightarrow> (\<Sum>(x,K) \<in> S. norm (integral K h)) < \<epsilon>/12"
      proof (rule bounded_equiintegral_over_thin_tagged_partial_division [OF F f, of \<open>\<epsilon>/12\<close>])
        show "\h x. \h \ F; x \ cbox a b\ \ norm (h x) \ norm (f x)"
          by (auto simp: norm_f)
      qed (use \<open>\<epsilon> > 0\<close> in auto)
      obtain \<gamma>1 where "gauge \<gamma>1"
        and \<gamma>1: "\<And>h T. \<lbrakk>h \<in> F; T tagged_division_of cbox a b; \<gamma>1 fine T\<rbrakk>
                              \<Longrightarrow> norm ((\<Sum>(x,K) \<in> T. content K *\<^sub>R h x) - integral (cbox a b) h)
                                  < \<epsilon>/(7 * (Suc DIM('b)))"
      proof -
        have e5: "\/(7 * (Suc DIM('b))) > 0"
          using \<open>\<epsilon> > 0\<close> by auto
        then show ?thesis
          using F that by (auto simp: equiintegrable_on_def)
      qed
      have h_less3: "(\(x,K) \ T. norm (?CI K h x)) < \/3"
        if "T tagged_partial_division_of cbox a b" "\1 fine T" "h \ F" for T h
      proof -
--> --------------------

--> maximum size reached

--> --------------------

100%


[ zur Elbe Produktseite wechseln0.48Quellennavigators  Analyse erneut starten  ]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge