src/HOL/Multivariate_Analysis/Integration.thy
changeset 60474 f690cb540385
parent 60472 f60f6f9baf64
child 60487 2abfcf85c627
equal deleted inserted replaced
60473:7dc683911e5d 60474:f690cb540385
  4264     case goal1
  4264     case goal1
  4265     then have *: "0 < (i\<bullet>k - j\<bullet>k) / 3"
  4265     then have *: "0 < (i\<bullet>k - j\<bullet>k) / 3"
  4266       by auto
  4266       by auto
  4267     guess d1 using goal1(1)[unfolded has_integral,rule_format,OF *] by (elim exE conjE) note d1=this[rule_format]
  4267     guess d1 using goal1(1)[unfolded has_integral,rule_format,OF *] by (elim exE conjE) note d1=this[rule_format]
  4268     guess d2 using goal1(2)[unfolded has_integral,rule_format,OF *] by (elim exE conjE) note d2=this[rule_format]
  4268     guess d2 using goal1(2)[unfolded has_integral,rule_format,OF *] by (elim exE conjE) note d2=this[rule_format]
  4269     guess p using fine_division_exists[OF gauge_inter[OF d1(1) d2(1)], of a b] unfolding fine_inter .
  4269     obtain p where p: "p tagged_division_of cbox a b" "d1 fine p" "d2 fine p"   
  4270     note p = this(1) conjunctD2[OF this(2)]
  4270        using fine_division_exists[OF gauge_inter[OF d1(1) d2(1)], of a b] unfolding fine_inter 
       
  4271        by metis    
  4271     note le_less_trans[OF Basis_le_norm[OF k]]
  4272     note le_less_trans[OF Basis_le_norm[OF k]]
  4272     note this[OF d1(2)[OF conjI[OF p(1,2)]]] this[OF d2(2)[OF conjI[OF p(1,3)]]]
  4273     then have "\<bar>((\<Sum>(x, k)\<in>p. content k *\<^sub>R f x) - i) \<bullet> k\<bar> < (i \<bullet> k - j \<bullet> k) / 3"
       
  4274               "\<bar>((\<Sum>(x, k)\<in>p. content k *\<^sub>R g x) - j) \<bullet> k\<bar> < (i \<bullet> k - j \<bullet> k) / 3"
       
  4275       using  k norm_bound_Basis_lt d1 d2 p
       
  4276       by blast+
  4273     then show False
  4277     then show False
  4274       unfolding inner_simps
  4278       unfolding inner_simps
  4275       using rsum_component_le[OF p(1) goal1(3)]
  4279       using rsum_component_le[OF p(1) goal1(3)]
  4276       by (simp add: abs_real_def split: split_if_asm)
  4280       by (simp add: abs_real_def split: split_if_asm)
  4277   qed
  4281   qed
  4278   let ?P = "\<exists>a b. s = cbox a b"
  4282   show ?thesis
  4279   {
  4283   proof (cases "\<exists>a b. s = cbox a b")
  4280     presume "\<not> ?P \<Longrightarrow> ?thesis"
  4284     case True
  4281     then show ?thesis
  4285     with lem assms show ?thesis
  4282     proof (cases ?P)
  4286       by auto
  4283       case True
  4287   next
  4284       then guess a b by (elim exE) note s=this
  4288     case False
  4285       show ?thesis
  4289     show ?thesis
  4286         apply (rule lem)
  4290     proof (rule ccontr)
  4287         using assms[unfolded s]
  4291       assume "\<not> i\<bullet>k \<le> j\<bullet>k"
  4288         apply auto
  4292       then have ij: "(i\<bullet>k - j\<bullet>k) / 3 > 0"
  4289         done
  4293         by auto
  4290     qed auto
  4294       note has_integral_altD[OF _ False this]
  4291   }
  4295       from this[OF assms(2)] this[OF assms(3)] guess B1 B2 . note B=this[rule_format]
  4292   assume as: "\<not> ?P"
  4296       have "bounded (ball 0 B1 \<union> ball (0::'a) B2)"
  4293   { presume "\<not> ?thesis \<Longrightarrow> False" then show ?thesis by auto }
  4297         unfolding bounded_Un by(rule conjI bounded_ball)+
  4294   assume "\<not> i\<bullet>k \<le> j\<bullet>k"
  4298       from bounded_subset_cbox[OF this] guess a b by (elim exE)
  4295   then have ij: "(i\<bullet>k - j\<bullet>k) / 3 > 0"
  4299       note ab = conjunctD2[OF this[unfolded Un_subset_iff]]
  4296     by auto
  4300       guess w1 using B(2)[OF ab(1)] .. note w1=conjunctD2[OF this]
  4297   note has_integral_altD[OF _ as this]
  4301       guess w2 using B(4)[OF ab(2)] .. note w2=conjunctD2[OF this]
  4298   from this[OF assms(2)] this[OF assms(3)] guess B1 B2 . note B=this[rule_format]
  4302       have *: "\<And>w1 w2 j i::real .\<bar>w1 - i\<bar> < (i - j) / 3 \<Longrightarrow> \<bar>w2 - j\<bar> < (i - j) / 3 \<Longrightarrow> w1 \<le> w2 \<Longrightarrow> False"
  4299   have "bounded (ball 0 B1 \<union> ball (0::'a) B2)"
  4303         by (simp add: abs_real_def split: split_if_asm)
  4300     unfolding bounded_Un by(rule conjI bounded_ball)+
  4304       note le_less_trans[OF Basis_le_norm[OF k]]
  4301   from bounded_subset_cbox[OF this] guess a b by (elim exE)
  4305       note this[OF w1(2)] this[OF w2(2)]
  4302   note ab = conjunctD2[OF this[unfolded Un_subset_iff]]
  4306       moreover
  4303   guess w1 using B(2)[OF ab(1)] .. note w1=conjunctD2[OF this]
  4307       have "w1\<bullet>k \<le> w2\<bullet>k"
  4304   guess w2 using B(4)[OF ab(2)] .. note w2=conjunctD2[OF this]
  4308         by (rule lem[OF w1(1) w2(1)]) (simp add: assms(4))
  4305   have *: "\<And>w1 w2 j i::real .\<bar>w1 - i\<bar> < (i - j) / 3 \<Longrightarrow> \<bar>w2 - j\<bar> < (i - j) / 3 \<Longrightarrow> w1 \<le> w2 \<Longrightarrow> False"
  4309       ultimately show False
  4306     by (simp add: abs_real_def split: split_if_asm)
  4310         unfolding inner_simps by(rule *)
  4307   note le_less_trans[OF Basis_le_norm[OF k]]
  4311     qed
  4308   note this[OF w1(2)] this[OF w2(2)]
  4312   qed
  4309   moreover
       
  4310   have "w1\<bullet>k \<le> w2\<bullet>k"
       
  4311     apply (rule lem[OF w1(1) w2(1)])
       
  4312     using assms
       
  4313     apply auto
       
  4314     done
       
  4315   ultimately show False
       
  4316     unfolding inner_simps by(rule *)
       
  4317 qed
  4313 qed
  4318 
  4314 
  4319 lemma integral_component_le:
  4315 lemma integral_component_le:
  4320   fixes g f :: "'a::euclidean_space \<Rightarrow> 'b::euclidean_space"
  4316   fixes g f :: "'a::euclidean_space \<Rightarrow> 'b::euclidean_space"
  4321   assumes "k \<in> Basis"
  4317   assumes "k \<in> Basis"