src/HOL/Multivariate_Analysis/Integration.thy
changeset 53015 a1119cf551e8
parent 52141 eff000cab70f
child 53374 a14d2a854c02
equal deleted inserted replaced
53009:bb18eed53ed6 53015:a1119cf551e8
   877   assumes incl: "{c..d} \<subseteq> {a..b::'a::ordered_euclidean_space}"
   877   assumes incl: "{c..d} \<subseteq> {a..b::'a::ordered_euclidean_space}"
   878     and nonempty: "{c..d} \<noteq> {}"
   878     and nonempty: "{c..d} \<noteq> {}"
   879   obtains p where "p division_of {a..b}" "{c..d} \<in> p"
   879   obtains p where "p division_of {a..b}" "{c..d} \<in> p"
   880 proof
   880 proof
   881   let ?B = "\<lambda>f::'a\<Rightarrow>'a \<times> 'a. {(\<Sum>i\<in>Basis. (fst (f i) \<bullet> i) *\<^sub>R i) .. (\<Sum>i\<in>Basis. (snd (f i) \<bullet> i) *\<^sub>R i)}"
   881   let ?B = "\<lambda>f::'a\<Rightarrow>'a \<times> 'a. {(\<Sum>i\<in>Basis. (fst (f i) \<bullet> i) *\<^sub>R i) .. (\<Sum>i\<in>Basis. (snd (f i) \<bullet> i) *\<^sub>R i)}"
   882   def p \<equiv> "?B ` (Basis \<rightarrow>\<^isub>E {(a, c), (c, d), (d, b)})"
   882   def p \<equiv> "?B ` (Basis \<rightarrow>\<^sub>E {(a, c), (c, d), (d, b)})"
   883 
   883 
   884   show "{c .. d} \<in> p"
   884   show "{c .. d} \<in> p"
   885     unfolding p_def
   885     unfolding p_def
   886     by (auto simp add: interval_eq_empty eucl_le[where 'a='a]
   886     by (auto simp add: interval_eq_empty eucl_le[where 'a='a]
   887              intro!: image_eqI[where x="\<lambda>(i::'a)\<in>Basis. (c, d)"])
   887              intro!: image_eqI[where x="\<lambda>(i::'a)\<in>Basis. (c, d)"])
   898   proof (rule division_ofI)
   898   proof (rule division_ofI)
   899     show "finite p" unfolding p_def by (auto intro!: finite_PiE)
   899     show "finite p" unfolding p_def by (auto intro!: finite_PiE)
   900     {
   900     {
   901       fix k
   901       fix k
   902       assume "k \<in> p"
   902       assume "k \<in> p"
   903       then obtain f where f: "f \<in> Basis \<rightarrow>\<^isub>E {(a, c), (c, d), (d, b)}" and k: "k = ?B f"
   903       then obtain f where f: "f \<in> Basis \<rightarrow>\<^sub>E {(a, c), (c, d), (d, b)}" and k: "k = ?B f"
   904         by (auto simp: p_def)
   904         by (auto simp: p_def)
   905       then show "\<exists>a b. k = {a..b}" by auto
   905       then show "\<exists>a b. k = {a..b}" by auto
   906       have "k \<subseteq> {a..b} \<and> k \<noteq> {}"
   906       have "k \<subseteq> {a..b} \<and> k \<noteq> {}"
   907       proof (simp add: k interval_eq_empty subset_interval not_less, safe)
   907       proof (simp add: k interval_eq_empty subset_interval not_less, safe)
   908         fix i :: 'a assume i: "i \<in> Basis"
   908         fix i :: 'a assume i: "i \<in> Basis"
   915           by (auto simp: subset_iff eucl_le[where 'a='a])
   915           by (auto simp: subset_iff eucl_le[where 'a='a])
   916       qed
   916       qed
   917       then show "k \<noteq> {}" "k \<subseteq> {a .. b}" by auto
   917       then show "k \<noteq> {}" "k \<subseteq> {a .. b}" by auto
   918       {
   918       {
   919         fix l assume "l \<in> p"
   919         fix l assume "l \<in> p"
   920         then obtain g where g: "g \<in> Basis \<rightarrow>\<^isub>E {(a, c), (c, d), (d, b)}" and l: "l = ?B g"
   920         then obtain g where g: "g \<in> Basis \<rightarrow>\<^sub>E {(a, c), (c, d), (d, b)}" and l: "l = ?B g"
   921           by (auto simp: p_def)
   921           by (auto simp: p_def)
   922         assume "l \<noteq> k"
   922         assume "l \<noteq> k"
   923         have "\<exists>i\<in>Basis. f i \<noteq> g i"
   923         have "\<exists>i\<in>Basis. f i \<noteq> g i"
   924         proof (rule ccontr)
   924         proof (rule ccontr)
   925           assume "\<not> (\<exists>i\<in>Basis. f i \<noteq> g i)"
   925           assume "\<not> (\<exists>i\<in>Basis. f i \<noteq> g i)"
   950           by (auto simp: eucl_le[where 'a='a])
   950           by (auto simp: eucl_le[where 'a='a])
   951         then show "\<exists>l. x \<bullet> i \<in> {fst l \<bullet> i .. snd l \<bullet> i} \<and> l \<in> {(a, c), (c, d), (d, b)}"
   951         then show "\<exists>l. x \<bullet> i \<in> {fst l \<bullet> i .. snd l \<bullet> i} \<and> l \<in> {(a, c), (c, d), (d, b)}"
   952           by auto
   952           by auto
   953       qed
   953       qed
   954       then guess f unfolding bchoice_iff .. note f = this
   954       then guess f unfolding bchoice_iff .. note f = this
   955       moreover then have "restrict f Basis \<in> Basis \<rightarrow>\<^isub>E {(a, c), (c, d), (d, b)}"
   955       moreover then have "restrict f Basis \<in> Basis \<rightarrow>\<^sub>E {(a, c), (c, d), (d, b)}"
   956         by auto
   956         by auto
   957       moreover from f have "x \<in> ?B (restrict f Basis)"
   957       moreover from f have "x \<in> ?B (restrict f Basis)"
   958         by (auto simp: mem_interval eucl_le[where 'a='a])
   958         by (auto simp: mem_interval eucl_le[where 'a='a])
   959       ultimately have "\<exists>k\<in>p. x \<in> k"
   959       ultimately have "\<exists>k\<in>p. x \<in> k"
   960         unfolding p_def by blast }
   960         unfolding p_def by blast }