src/HOL/Multivariate_Analysis/Integration.thy
changeset 60810 9ede42599eeb
parent 60800 7d04351c795a
child 60867 86e7560e07d0
equal deleted inserted replaced
60809:457abb82fb9e 60810:9ede42599eeb
     8 imports
     8 imports
     9   Derivative
     9   Derivative
    10   "~~/src/HOL/Library/Indicator_Function"
    10   "~~/src/HOL/Library/Indicator_Function"
    11 begin
    11 begin
    12 
    12 
    13 lemma cSup_abs_le: (* TODO: is this really needed? *)
    13 lemma cSup_abs_le: (* TODO: move to Conditionally_Complete_Lattices.thy? *)
    14   fixes S :: "real set"
    14   fixes S :: "real set"
    15   shows "S \<noteq> {} \<Longrightarrow> (\<forall>x\<in>S. \<bar>x\<bar> \<le> a) \<Longrightarrow> \<bar>Sup S\<bar> \<le> a"
    15   shows "S \<noteq> {} \<Longrightarrow> (\<And>x. x\<in>S \<Longrightarrow> \<bar>x\<bar> \<le> a) \<Longrightarrow> \<bar>Sup S\<bar> \<le> a"
    16   by (auto simp add: abs_le_interval_iff intro: cSup_least) (metis cSup_upper2 bdd_aboveI)
    16   by (auto simp add: abs_le_interval_iff intro: cSup_least) (metis cSup_upper2 bdd_aboveI)
    17 
    17 
    18 lemma cInf_abs_ge: (* TODO: is this really needed? *)
    18 lemma cInf_abs_ge: 
    19   fixes S :: "real set"
    19   fixes S :: "real set"
    20   shows "S \<noteq> {} \<Longrightarrow> (\<forall>x\<in>S. \<bar>x\<bar> \<le> a) \<Longrightarrow> \<bar>Inf S\<bar> \<le> a"
    20   shows "S \<noteq> {} \<Longrightarrow> (\<And>x. x\<in>S \<Longrightarrow> \<bar>x\<bar> \<le> a) \<Longrightarrow> \<bar>Inf S\<bar> \<le> a"
    21   by (simp add: Inf_real_def) (insert cSup_abs_le [of "uminus ` S"], auto)
    21   using cSup_abs_le [of "uminus ` S"]
    22 
    22   by (fastforce simp add: Inf_real_def)
    23 lemma cSup_asclose: (* TODO: is this really needed? *)
    23 
       
    24 lemma cSup_asclose:
    24   fixes S :: "real set"
    25   fixes S :: "real set"
    25   assumes S: "S \<noteq> {}"
    26   assumes S: "S \<noteq> {}"
    26     and b: "\<forall>x\<in>S. \<bar>x - l\<bar> \<le> e"
    27     and b: "\<forall>x\<in>S. \<bar>x - l\<bar> \<le> e"
    27   shows "\<bar>Sup S - l\<bar> \<le> e"
    28   shows "\<bar>Sup S - l\<bar> \<le> e"
    28 proof -
    29 proof -
    32     using b by (auto intro!: bdd_aboveI[of _ "l + e"])
    33     using b by (auto intro!: bdd_aboveI[of _ "l + e"])
    33   with S b show ?thesis
    34   with S b show ?thesis
    34     unfolding th by (auto intro!: cSup_upper2 cSup_least)
    35     unfolding th by (auto intro!: cSup_upper2 cSup_least)
    35 qed
    36 qed
    36 
    37 
    37 lemma cInf_asclose: (* TODO: is this really needed? *)
    38 lemma cInf_asclose:
    38   fixes S :: "real set"
    39   fixes S :: "real set"
    39   assumes S: "S \<noteq> {}"
    40   assumes S: "S \<noteq> {}"
    40     and b: "\<forall>x\<in>S. \<bar>x - l\<bar> \<le> e"
    41     and b: "\<forall>x\<in>S. \<bar>x - l\<bar> \<le> e"
    41   shows "\<bar>Inf S - l\<bar> \<le> e"
    42   shows "\<bar>Inf S - l\<bar> \<le> e"
    42 proof -
    43 proof -
  4929       unfolding xk by auto
  4930       unfolding xk by auto
  4930     note p = tagged_partial_division_ofD[OF insert(4)]
  4931     note p = tagged_partial_division_ofD[OF insert(4)]
  4931     from p(4)[unfolded xk, OF insertI1] guess u v by (elim exE) note uv=this
  4932     from p(4)[unfolded xk, OF insertI1] guess u v by (elim exE) note uv=this
  4932 
  4933 
  4933     have "finite {k. \<exists>x. (x, k) \<in> p}"
  4934     have "finite {k. \<exists>x. (x, k) \<in> p}"
  4934       apply (rule finite_subset[of _ "snd ` p"],rule)
  4935       apply (rule finite_subset[of _ "snd ` p"])
  4935       unfolding subset_eq image_iff mem_Collect_eq
       
  4936       apply (erule exE)
       
  4937       apply (rule_tac x="(xa,x)" in bexI)
       
  4938       using p
  4936       using p
       
  4937       apply safe
       
  4938       apply (metis image_iff snd_conv)
  4939       apply auto
  4939       apply auto
  4940       done
  4940       done
  4941     then have int: "interior (cbox u v) \<inter> interior (\<Union>{k. \<exists>x. (x, k) \<in> p}) = {}"
  4941     then have int: "interior (cbox u v) \<inter> interior (\<Union>{k. \<exists>x. (x, k) \<in> p}) = {}"
  4942       apply (rule inter_interior_unions_intervals)
  4942       apply (rule inter_interior_unions_intervals)
  4943       apply (rule open_interior)
  4943       apply (rule open_interior)
  4976         apply rule
  4976         apply rule
  4977         apply rule
  4977         apply rule
  4978         apply rule
  4978         apply rule
  4979         apply rule
  4979         apply rule
  4980         apply (erule insertE)
  4980         apply (erule insertE)
  4981         defer
  4981         apply (simp add: uv xk)
  4982         apply (rule UnI2)
  4982         apply (rule UnI2)
  4983         apply (drule q1(3)[rule_format])
  4983         apply (drule q1(3)[rule_format])
  4984         unfolding xk uv
  4984         unfolding xk uv
  4985         apply auto
  4985         apply auto
  4986         done
  4986         done
  5000         apply rule
  5000         apply rule
  5001         apply rule
  5001         apply rule
  5002         apply rule
  5002         apply rule
  5003         apply (erule insertE)
  5003         apply (erule insertE)
  5004         apply (rule UnI2)
  5004         apply (rule UnI2)
  5005         defer
  5005         apply (simp add: False uv xk)
  5006         apply (drule q1(3)[rule_format])
  5006         apply (drule q1(3)[rule_format])
  5007         using False
  5007         using False
  5008         unfolding xk uv
  5008         unfolding xk uv
  5009         apply auto
  5009         apply auto
  5010         done
  5010         done
 11769         apply (rule absolutely_integrable_onD)
 11769         apply (rule absolutely_integrable_onD)
 11770         apply(rule absolutely_integrable_sup_real)
 11770         apply(rule absolutely_integrable_sup_real)
 11771         prefer 5 unfolding real_norm_def
 11771         prefer 5 unfolding real_norm_def
 11772         apply rule
 11772         apply rule
 11773         apply (rule cSup_abs_le)
 11773         apply (rule cSup_abs_le)
 11774         prefer 5
 11774         using assms
       
 11775         apply (force simp add: )
       
 11776         prefer 4
 11775         apply rule
 11777         apply rule
 11776         apply (rule_tac g=h in absolutely_integrable_integrable_bound)
 11778         apply (rule_tac g=h in absolutely_integrable_integrable_bound)
 11777         using assms
 11779         using assms
 11778         unfolding real_norm_def
 11780         unfolding real_norm_def
 11779         apply auto
 11781         apply auto