3034 } |
3034 } |
3035 qed |
3035 qed |
3036 |
3036 |
3037 lemma has_integral_split: |
3037 lemma has_integral_split: |
3038 fixes f :: "'a::euclidean_space \<Rightarrow> 'b::real_normed_vector" |
3038 fixes f :: "'a::euclidean_space \<Rightarrow> 'b::real_normed_vector" |
3039 assumes "(f has_integral i) (cbox a b \<inter> {x. x\<bullet>k \<le> c})" |
3039 assumes fi: "(f has_integral i) (cbox a b \<inter> {x. x\<bullet>k \<le> c})" |
3040 and "(f has_integral j) (cbox a b \<inter> {x. x\<bullet>k \<ge> c})" |
3040 and fj: "(f has_integral j) (cbox a b \<inter> {x. x\<bullet>k \<ge> c})" |
3041 and k: "k \<in> Basis" |
3041 and k: "k \<in> Basis" |
3042 shows "(f has_integral (i + j)) (cbox a b)" |
3042 shows "(f has_integral (i + j)) (cbox a b)" |
3043 proof (unfold has_integral, rule, rule) |
3043 proof (unfold has_integral, rule, rule) |
3044 case goal1 |
3044 case goal1 |
3045 then have e: "e/2 > 0" |
3045 then have e: "e/2 > 0" |
3046 by auto |
3046 by auto |
3047 guess d1 using has_integralD[OF assms(1)[unfolded interval_split[OF k]] e] . |
3047 obtain d1 |
3048 note d1=this[unfolded interval_split[symmetric,OF k]] |
3048 where d1: "gauge d1" |
3049 guess d2 using has_integralD[OF assms(2)[unfolded interval_split[OF k]] e] . |
3049 and d1norm: |
3050 note d2=this[unfolded interval_split[symmetric,OF k]] |
3050 "\<And>p. \<lbrakk>p tagged_division_of cbox a b \<inter> {x. x \<bullet> k \<le> c}; |
|
3051 d1 fine p\<rbrakk> \<Longrightarrow> norm ((\<Sum>(x, k) \<in> p. content k *\<^sub>R f x) - i) < e / 2" |
|
3052 apply (rule has_integralD[OF fi[unfolded interval_split[OF k]] e]) |
|
3053 apply (simp add: interval_split[symmetric] k) |
|
3054 done |
|
3055 obtain d2 |
|
3056 where d2: "gauge d2" |
|
3057 and d2norm: |
|
3058 "\<And>p. \<lbrakk>p tagged_division_of cbox a b \<inter> {x. c \<le> x \<bullet> k}; |
|
3059 d2 fine p\<rbrakk> \<Longrightarrow> norm ((\<Sum>(x, k) \<in> p. content k *\<^sub>R f x) - j) < e / 2" |
|
3060 apply (rule has_integralD[OF fj[unfolded interval_split[OF k]] e]) |
|
3061 apply (simp add: interval_split[symmetric] k) |
|
3062 done |
3051 let ?d = "\<lambda>x. if x\<bullet>k = c then (d1 x \<inter> d2 x) else ball x (abs(x\<bullet>k - c)) \<inter> d1 x \<inter> d2 x" |
3063 let ?d = "\<lambda>x. if x\<bullet>k = c then (d1 x \<inter> d2 x) else ball x (abs(x\<bullet>k - c)) \<inter> d1 x \<inter> d2 x" |
3052 show ?case |
3064 show ?case |
3053 apply (rule_tac x="?d" in exI) |
3065 apply (rule_tac x="?d" in exI) |
3054 apply rule |
3066 apply rule |
3055 defer |
3067 defer |
3060 show "gauge ?d" |
3072 show "gauge ?d" |
3061 using d1(1) d2(1) unfolding gauge_def by auto |
3073 using d1(1) d2(1) unfolding gauge_def by auto |
3062 fix p |
3074 fix p |
3063 assume "p tagged_division_of (cbox a b)" "?d fine p" |
3075 assume "p tagged_division_of (cbox a b)" "?d fine p" |
3064 note p = this tagged_division_ofD[OF this(1)] |
3076 note p = this tagged_division_ofD[OF this(1)] |
3065 have lem0: |
3077 have xk_le_c: "\<And>x kk. (x, kk) \<in> p \<Longrightarrow> kk \<inter> {x. x\<bullet>k \<le> c} \<noteq> {} \<Longrightarrow> x\<bullet>k \<le> c" |
3066 "\<And>x kk. (x, kk) \<in> p \<Longrightarrow> kk \<inter> {x. x\<bullet>k \<le> c} \<noteq> {} \<Longrightarrow> x\<bullet>k \<le> c" |
3078 proof - |
|
3079 fix x kk |
|
3080 assume as: "(x, kk) \<in> p" and *: "kk \<inter> {x. x\<bullet>k \<le> c} \<noteq> {}" |
|
3081 show "x\<bullet>k \<le> c" |
|
3082 proof (rule ccontr) |
|
3083 assume **: "\<not> ?thesis" |
|
3084 from this[unfolded not_le] |
|
3085 have "kk \<subseteq> ball x \<bar>x \<bullet> k - c\<bar>" |
|
3086 using p(2)[unfolded fine_def, rule_format,OF as,unfolded split_conv] by auto |
|
3087 with * have "\<exists>y. y \<in> ball x \<bar>x \<bullet> k - c\<bar> \<inter> {x. x \<bullet> k \<le> c}" |
|
3088 by blast |
|
3089 then guess y .. |
|
3090 then have "\<bar>x \<bullet> k - y \<bullet> k\<bar> < \<bar>x \<bullet> k - c\<bar>" "y\<bullet>k \<le> c" |
|
3091 apply - |
|
3092 apply (rule le_less_trans) |
|
3093 using Basis_le_norm[OF k, of "x - y"] |
|
3094 apply (auto simp add: dist_norm inner_diff_left) |
|
3095 done |
|
3096 then show False |
|
3097 using **[unfolded not_le] by (auto simp add: field_simps) |
|
3098 qed |
|
3099 qed |
|
3100 have xk_ge_c: |
3067 "\<And>x kk. (x, kk) \<in> p \<Longrightarrow> kk \<inter> {x. x\<bullet>k \<ge> c} \<noteq> {} \<Longrightarrow> x\<bullet>k \<ge> c" |
3101 "\<And>x kk. (x, kk) \<in> p \<Longrightarrow> kk \<inter> {x. x\<bullet>k \<ge> c} \<noteq> {} \<Longrightarrow> x\<bullet>k \<ge> c" |
3068 proof - |
3102 proof - |
3069 fix x kk |
3103 fix x kk |
3070 assume as: "(x, kk) \<in> p" |
3104 assume as: "(x, kk) \<in> p" and *: "kk \<inter> {x. x\<bullet>k \<ge> c} \<noteq> {}" |
3071 { |
3105 show "x\<bullet>k \<ge> c" |
3072 assume *: "kk \<inter> {x. x\<bullet>k \<le> c} \<noteq> {}" |
3106 proof (rule ccontr) |
3073 show "x\<bullet>k \<le> c" |
3107 assume **: "\<not> ?thesis" |
3074 proof (rule ccontr) |
3108 from this[unfolded not_le] have "kk \<subseteq> ball x \<bar>x \<bullet> k - c\<bar>" |
3075 assume **: "\<not> ?thesis" |
3109 using p(2)[unfolded fine_def,rule_format,OF as,unfolded split_conv] by auto |
3076 from this[unfolded not_le] |
3110 with * have "\<exists>y. y \<in> ball x \<bar>x \<bullet> k - c\<bar> \<inter> {x. x \<bullet> k \<ge> c}" |
3077 have "kk \<subseteq> ball x \<bar>x \<bullet> k - c\<bar>" |
3111 by blast |
3078 using p(2)[unfolded fine_def, rule_format,OF as,unfolded split_conv] by auto |
3112 then guess y .. |
3079 with * have "\<exists>y. y \<in> ball x \<bar>x \<bullet> k - c\<bar> \<inter> {x. x \<bullet> k \<le> c}" |
3113 then have "\<bar>x \<bullet> k - y \<bullet> k\<bar> < \<bar>x \<bullet> k - c\<bar>" "y\<bullet>k \<ge> c" |
3080 by blast |
3114 apply - |
3081 then guess y .. |
3115 apply (rule le_less_trans) |
3082 then have "\<bar>x \<bullet> k - y \<bullet> k\<bar> < \<bar>x \<bullet> k - c\<bar>" "y\<bullet>k \<le> c" |
3116 using Basis_le_norm[OF k, of "x - y"] |
3083 apply - |
3117 apply (auto simp add: dist_norm inner_diff_left) |
3084 apply (rule le_less_trans) |
3118 done |
3085 using Basis_le_norm[OF k, of "x - y"] |
3119 then show False |
3086 apply (auto simp add: dist_norm inner_diff_left) |
3120 using **[unfolded not_le] by (auto simp add: field_simps) |
3087 done |
3121 qed |
3088 then show False |
|
3089 using **[unfolded not_le] by (auto simp add: field_simps) |
|
3090 qed |
|
3091 next |
|
3092 assume *: "kk \<inter> {x. x\<bullet>k \<ge> c} \<noteq> {}" |
|
3093 show "x\<bullet>k \<ge> c" |
|
3094 proof (rule ccontr) |
|
3095 assume **: "\<not> ?thesis" |
|
3096 from this[unfolded not_le] have "kk \<subseteq> ball x \<bar>x \<bullet> k - c\<bar>" |
|
3097 using p(2)[unfolded fine_def,rule_format,OF as,unfolded split_conv] by auto |
|
3098 with * have "\<exists>y. y \<in> ball x \<bar>x \<bullet> k - c\<bar> \<inter> {x. x \<bullet> k \<ge> c}" |
|
3099 by blast |
|
3100 then guess y .. |
|
3101 then have "\<bar>x \<bullet> k - y \<bullet> k\<bar> < \<bar>x \<bullet> k - c\<bar>" "y\<bullet>k \<ge> c" |
|
3102 apply - |
|
3103 apply (rule le_less_trans) |
|
3104 using Basis_le_norm[OF k, of "x - y"] |
|
3105 apply (auto simp add: dist_norm inner_diff_left) |
|
3106 done |
|
3107 then show False |
|
3108 using **[unfolded not_le] by (auto simp add: field_simps) |
|
3109 qed |
|
3110 } |
|
3111 qed |
3122 qed |
3112 |
3123 |
3113 have lem1: "\<And>f P Q. (\<forall>x k. (x, k) \<in> {(x, f k) | x k. P x k} \<longrightarrow> Q x k) \<longleftrightarrow> |
3124 have lem1: "\<And>f P Q. (\<forall>x k. (x, k) \<in> {(x, f k) | x k. P x k} \<longrightarrow> Q x k) \<longleftrightarrow> |
3114 (\<forall>x k. P x k \<longrightarrow> Q x (f k))" by auto |
3125 (\<forall>x k. P x k \<longrightarrow> Q x (f k))" by auto |
3115 have lem2: "\<And>f s P f. finite s \<Longrightarrow> finite {(x,f k) | x k. (x,k) \<in> s \<and> P x k}" |
3126 have fin_finite: "\<And>f s P f. finite s \<Longrightarrow> finite {(x,f k) | x k. (x,k) \<in> s \<and> P x k}" |
3116 proof - |
3127 proof - |
3117 case goal1 |
3128 case goal1 |
3118 then have "finite ((\<lambda>(x, k). (x, f k)) ` s)" |
3129 then have "finite ((\<lambda>(x, k). (x, f k)) ` s)" |
3119 by auto |
3130 by auto |
3120 then show ?case |
3131 then show ?case |
3121 by (rule rev_finite_subset) auto |
3132 by (rule rev_finite_subset) auto |
3122 qed |
3133 qed |
3123 have lem3: "\<And>g :: 'a set \<Rightarrow> 'a set. finite p \<Longrightarrow> |
3134 { fix g :: "'a set \<Rightarrow> 'a set" |
3124 setsum (\<lambda>(x, k). content k *\<^sub>R f x) {(x,g k) |x k. (x,k) \<in> p \<and> g k \<noteq> {}} = |
|
3125 setsum (\<lambda>(x, k). content k *\<^sub>R f x) ((\<lambda>(x, k). (x, g k)) ` p)" |
|
3126 apply (rule setsum.mono_neutral_left) |
|
3127 prefer 3 |
|
3128 proof |
|
3129 fix g :: "'a set \<Rightarrow> 'a set" |
|
3130 fix i :: "'a \<times> 'a set" |
3135 fix i :: "'a \<times> 'a set" |
3131 assume "i \<in> (\<lambda>(x, k). (x, g k)) ` p - {(x, g k) |x k. (x, k) \<in> p \<and> g k \<noteq> {}}" |
3136 assume "i \<in> (\<lambda>(x, k). (x, g k)) ` p - {(x, g k) |x k. (x, k) \<in> p \<and> g k \<noteq> {}}" |
3132 then obtain x k where xk: |
3137 then obtain x k where xk: |
3133 "i = (x, g k)" |
3138 "i = (x, g k)" "(x, k) \<in> p" |
3134 "(x, k) \<in> p" |
3139 "(x, g k) \<notin> {(x, g k) |x k. (x, k) \<in> p \<and> g k \<noteq> {}}" |
3135 "(x, g k) \<notin> {(x, g k) |x k. (x, k) \<in> p \<and> g k \<noteq> {}}" |
3140 by auto |
3136 by auto |
|
3137 have "content (g k) = 0" |
3141 have "content (g k) = 0" |
3138 using xk using content_empty by auto |
3142 using xk using content_empty by auto |
3139 then show "(\<lambda>(x, k). content k *\<^sub>R f x) i = 0" |
3143 then have "(\<lambda>(x, k). content k *\<^sub>R f x) i = 0" |
3140 unfolding xk split_conv by auto |
3144 unfolding xk split_conv by auto |
3141 qed auto |
3145 } note [simp] = this |
3142 have lem4: "\<And>g. (\<lambda>(x,l). content (g l) *\<^sub>R f x) = (\<lambda>(x,l). content l *\<^sub>R f x) \<circ> (\<lambda>(x,l). (x,g l))" |
3146 have lem3: "\<And>g :: 'a set \<Rightarrow> 'a set. finite p \<Longrightarrow> |
3143 by auto |
3147 setsum (\<lambda>(x, k). content k *\<^sub>R f x) {(x,g k) |x k. (x,k) \<in> p \<and> g k \<noteq> {}} = |
3144 |
3148 setsum (\<lambda>(x, k). content k *\<^sub>R f x) ((\<lambda>(x, k). (x, g k)) ` p)" |
|
3149 by (rule setsum.mono_neutral_left) auto |
3145 let ?M1 = "{(x, kk \<inter> {x. x\<bullet>k \<le> c}) |x kk. (x, kk) \<in> p \<and> kk \<inter> {x. x\<bullet>k \<le> c} \<noteq> {}}" |
3150 let ?M1 = "{(x, kk \<inter> {x. x\<bullet>k \<le> c}) |x kk. (x, kk) \<in> p \<and> kk \<inter> {x. x\<bullet>k \<le> c} \<noteq> {}}" |
|
3151 have d1_fine: "d1 fine ?M1" |
|
3152 by (force intro: fineI dest: fineD[OF p(2)] simp add: split: split_if_asm) |
3146 have "norm ((\<Sum>(x, k)\<in>?M1. content k *\<^sub>R f x) - i) < e/2" |
3153 have "norm ((\<Sum>(x, k)\<in>?M1. content k *\<^sub>R f x) - i) < e/2" |
3147 apply (rule d1(2),rule tagged_division_ofI) |
3154 proof (rule d1norm [OF tagged_division_ofI d1_fine]) |
3148 apply (rule lem2 p(3))+ |
3155 show "finite ?M1" |
3149 prefer 6 |
3156 by (rule fin_finite p(3))+ |
3150 apply (rule fineI) |
|
3151 proof - |
|
3152 show "\<Union>{k. \<exists>x. (x, k) \<in> ?M1} = cbox a b \<inter> {x. x\<bullet>k \<le> c}" |
3157 show "\<Union>{k. \<exists>x. (x, k) \<in> ?M1} = cbox a b \<inter> {x. x\<bullet>k \<le> c}" |
3153 unfolding p(8)[symmetric] by auto |
3158 unfolding p(8)[symmetric] by auto |
3154 fix x l |
3159 fix x l |
3155 assume xl: "(x, l) \<in> ?M1" |
3160 assume xl: "(x, l) \<in> ?M1" |
3156 then guess x' l' unfolding mem_Collect_eq unfolding Pair_eq by (elim exE conjE) note xl'=this |
3161 then guess x' l' unfolding mem_Collect_eq unfolding Pair_eq by (elim exE conjE) note xl'=this |
3157 have "l' \<subseteq> d1 x'" |
|
3158 apply (rule order_trans[OF fineD[OF p(2) xl'(3)]]) |
|
3159 apply auto |
|
3160 done |
|
3161 then show "l \<subseteq> d1 x" |
|
3162 unfolding xl' by auto |
|
3163 show "x \<in> l" "l \<subseteq> cbox a b \<inter> {x. x \<bullet> k \<le> c}" |
3162 show "x \<in> l" "l \<subseteq> cbox a b \<inter> {x. x \<bullet> k \<le> c}" |
3164 unfolding xl' |
3163 unfolding xl' |
3165 using p(4-6)[OF xl'(3)] using xl'(4) |
3164 using p(4-6)[OF xl'(3)] using xl'(4) |
3166 using lem0(1)[OF xl'(3-4)] by auto |
3165 using xk_le_c[OF xl'(3-4)] by auto |
3167 show "\<exists>a b. l = cbox a b" |
3166 show "\<exists>a b. l = cbox a b" |
3168 unfolding xl' |
3167 unfolding xl' |
3169 using p(6)[OF xl'(3)] |
3168 using p(6)[OF xl'(3)] |
3170 by (fastforce simp add: interval_split[OF k,where c=c]) |
3169 by (fastforce simp add: interval_split[OF k,where c=c]) |
3171 fix y r |
3170 fix y r |
3186 using p(7)[OF xl'(3) yr'(3)] using as unfolding xl' yr' by auto |
3185 using p(7)[OF xl'(3) yr'(3)] using as unfolding xl' yr' by auto |
3187 qed |
3186 qed |
3188 qed |
3187 qed |
3189 moreover |
3188 moreover |
3190 let ?M2 = "{(x,kk \<inter> {x. x\<bullet>k \<ge> c}) |x kk. (x,kk) \<in> p \<and> kk \<inter> {x. x\<bullet>k \<ge> c} \<noteq> {}}" |
3189 let ?M2 = "{(x,kk \<inter> {x. x\<bullet>k \<ge> c}) |x kk. (x,kk) \<in> p \<and> kk \<inter> {x. x\<bullet>k \<ge> c} \<noteq> {}}" |
|
3190 have d2_fine: "d2 fine ?M2" |
|
3191 by (force intro: fineI dest: fineD[OF p(2)] simp add: split: split_if_asm) |
3191 have "norm ((\<Sum>(x, k)\<in>?M2. content k *\<^sub>R f x) - j) < e/2" |
3192 have "norm ((\<Sum>(x, k)\<in>?M2. content k *\<^sub>R f x) - j) < e/2" |
3192 apply (rule d2(2),rule tagged_division_ofI) |
3193 proof (rule d2norm [OF tagged_division_ofI d2_fine]) |
3193 apply (rule lem2 p(3))+ |
3194 show "finite ?M2" |
3194 prefer 6 |
3195 by (rule fin_finite p(3))+ |
3195 apply (rule fineI) |
|
3196 proof - |
|
3197 show "\<Union>{k. \<exists>x. (x, k) \<in> ?M2} = cbox a b \<inter> {x. x\<bullet>k \<ge> c}" |
3196 show "\<Union>{k. \<exists>x. (x, k) \<in> ?M2} = cbox a b \<inter> {x. x\<bullet>k \<ge> c}" |
3198 unfolding p(8)[symmetric] by auto |
3197 unfolding p(8)[symmetric] by auto |
3199 fix x l |
3198 fix x l |
3200 assume xl: "(x, l) \<in> ?M2" |
3199 assume xl: "(x, l) \<in> ?M2" |
3201 then guess x' l' unfolding mem_Collect_eq unfolding Pair_eq by (elim exE conjE) note xl'=this |
3200 then guess x' l' unfolding mem_Collect_eq unfolding Pair_eq by (elim exE conjE) note xl'=this |
3202 have "l' \<subseteq> d2 x'" |
|
3203 apply (rule order_trans[OF fineD[OF p(2) xl'(3)]]) |
|
3204 apply auto |
|
3205 done |
|
3206 then show "l \<subseteq> d2 x" |
|
3207 unfolding xl' by auto |
|
3208 show "x \<in> l" "l \<subseteq> cbox a b \<inter> {x. x \<bullet> k \<ge> c}" |
3201 show "x \<in> l" "l \<subseteq> cbox a b \<inter> {x. x \<bullet> k \<ge> c}" |
3209 unfolding xl' |
3202 unfolding xl' |
3210 using p(4-6)[OF xl'(3)] xl'(4) lem0(2)[OF xl'(3-4)] |
3203 using p(4-6)[OF xl'(3)] xl'(4) xk_ge_c[OF xl'(3-4)] |
3211 by auto |
3204 by auto |
3212 show "\<exists>a b. l = cbox a b" |
3205 show "\<exists>a b. l = cbox a b" |
3213 unfolding xl' |
3206 unfolding xl' |
3214 using p(6)[OF xl'(3)] |
3207 using p(6)[OF xl'(3)] |
3215 by (fastforce simp add: interval_split[OF k, where c=c]) |
3208 by (fastforce simp add: interval_split[OF k, where c=c]) |
3233 qed |
3226 qed |
3234 ultimately |
3227 ultimately |
3235 have "norm (((\<Sum>(x, k)\<in>?M1. content k *\<^sub>R f x) - i) + ((\<Sum>(x, k)\<in>?M2. content k *\<^sub>R f x) - j)) < e/2 + e/2" |
3228 have "norm (((\<Sum>(x, k)\<in>?M1. content k *\<^sub>R f x) - i) + ((\<Sum>(x, k)\<in>?M2. content k *\<^sub>R f x) - j)) < e/2 + e/2" |
3236 using norm_add_less by blast |
3229 using norm_add_less by blast |
3237 also { |
3230 also { |
3238 have *: "\<And>x y. x = (0::real) \<Longrightarrow> x *\<^sub>R (y::'b) = 0" |
3231 have eq0: "\<And>x y. x = (0::real) \<Longrightarrow> x *\<^sub>R (y::'b) = 0" |
3239 using scaleR_zero_left by auto |
3232 using scaleR_zero_left by auto |
|
3233 have cont_eq: "\<And>g. (\<lambda>(x,l). content l *\<^sub>R f x) \<circ> (\<lambda>(x,l). (x,g l)) = (\<lambda>(x,l). content (g l) *\<^sub>R f x)" |
|
3234 by auto |
3240 have "((\<Sum>(x, k)\<in>?M1. content k *\<^sub>R f x) - i) + ((\<Sum>(x, k)\<in>?M2. content k *\<^sub>R f x) - j) = |
3235 have "((\<Sum>(x, k)\<in>?M1. content k *\<^sub>R f x) - i) + ((\<Sum>(x, k)\<in>?M2. content k *\<^sub>R f x) - j) = |
3241 (\<Sum>(x, k)\<in>?M1. content k *\<^sub>R f x) + (\<Sum>(x, k)\<in>?M2. content k *\<^sub>R f x) - (i + j)" |
3236 (\<Sum>(x, k)\<in>?M1. content k *\<^sub>R f x) + (\<Sum>(x, k)\<in>?M2. content k *\<^sub>R f x) - (i + j)" |
3242 by auto |
3237 by auto |
3243 also have "\<dots> = (\<Sum>(x, ka)\<in>p. content (ka \<inter> {x. x \<bullet> k \<le> c}) *\<^sub>R f x) + |
3238 also have "\<dots> = (\<Sum>(x, ka)\<in>p. content (ka \<inter> {x. x \<bullet> k \<le> c}) *\<^sub>R f x) + |
3244 (\<Sum>(x, ka)\<in>p. content (ka \<inter> {x. c \<le> x \<bullet> k}) *\<^sub>R f x) - (i + j)" |
3239 (\<Sum>(x, ka)\<in>p. content (ka \<inter> {x. c \<le> x \<bullet> k}) *\<^sub>R f x) - (i + j)" |
3245 unfolding lem3[OF p(3)] |
3240 unfolding lem3[OF p(3)] |
3246 apply (subst setsum.reindex_nontrivial[OF p(3)]) |
3241 by (subst setsum.reindex_nontrivial[OF p(3)], auto intro!: k eq0 tagged_division_split_left_inj[OF p(1)] tagged_division_split_right_inj[OF p(1)] |
3247 defer |
3242 simp: cont_eq)+ |
3248 apply (subst setsum.reindex_nontrivial[OF p(3)]) |
|
3249 defer |
|
3250 unfolding lem4[symmetric] |
|
3251 apply (rule refl) |
|
3252 unfolding split_paired_all split_conv |
|
3253 apply (rule_tac[!] *) |
|
3254 proof - |
|
3255 case goal1 |
|
3256 then show ?case |
|
3257 apply - |
|
3258 apply (rule tagged_division_split_left_inj [OF p(1), of a b aa ba]) |
|
3259 using k |
|
3260 apply auto |
|
3261 done |
|
3262 next |
|
3263 case goal2 |
|
3264 then show ?case |
|
3265 apply - |
|
3266 apply (rule tagged_division_split_right_inj[OF p(1), of a b aa ba]) |
|
3267 using k |
|
3268 apply auto |
|
3269 done |
|
3270 qed |
|
3271 also note setsum.distrib[symmetric] |
3243 also note setsum.distrib[symmetric] |
3272 also have *: "\<And>x. x \<in> p \<Longrightarrow> |
3244 also have "\<And>x. x \<in> p \<Longrightarrow> |
3273 (\<lambda>(x,ka). content (ka \<inter> {x. x \<bullet> k \<le> c}) *\<^sub>R f x) x + |
3245 (\<lambda>(x,ka). content (ka \<inter> {x. x \<bullet> k \<le> c}) *\<^sub>R f x) x + |
3274 (\<lambda>(x,ka). content (ka \<inter> {x. c \<le> x \<bullet> k}) *\<^sub>R f x) x = |
3246 (\<lambda>(x,ka). content (ka \<inter> {x. c \<le> x \<bullet> k}) *\<^sub>R f x) x = |
3275 (\<lambda>(x,ka). content ka *\<^sub>R f x) x" |
3247 (\<lambda>(x,ka). content ka *\<^sub>R f x) x" |
3276 unfolding split_paired_all split_conv |
3248 proof clarify |
3277 proof - |
|
3278 fix a b |
3249 fix a b |
3279 assume "(a, b) \<in> p" |
3250 assume "(a, b) \<in> p" |
3280 from p(6)[OF this] guess u v by (elim exE) note uv=this |
3251 from p(6)[OF this] guess u v by (elim exE) note uv=this |
3281 then show "content (b \<inter> {x. x \<bullet> k \<le> c}) *\<^sub>R f a + content (b \<inter> {x. c \<le> x \<bullet> k}) *\<^sub>R f a = |
3252 then show "content (b \<inter> {x. x \<bullet> k \<le> c}) *\<^sub>R f a + content (b \<inter> {x. c \<le> x \<bullet> k}) *\<^sub>R f a = |
3282 content b *\<^sub>R f a" |
3253 content b *\<^sub>R f a" |