src/HOL/Multivariate_Analysis/Integration.thy
changeset 53442 f41ab5a7df97
parent 53434 92da725a248f
child 53443 2f6c0289dcde
equal deleted inserted replaced
53441:63958e9e0073 53442:f41ab5a7df97
  3123 
  3123 
  3124 
  3124 
  3125 subsection {* Cauchy-type criterion for integrability. *}
  3125 subsection {* Cauchy-type criterion for integrability. *}
  3126 
  3126 
  3127 (* XXXXXXX *)
  3127 (* XXXXXXX *)
  3128 lemma integrable_cauchy: fixes f::"'n::ordered_euclidean_space \<Rightarrow> 'a::{real_normed_vector,complete_space}"
  3128 lemma integrable_cauchy:
       
  3129   fixes f :: "'n::ordered_euclidean_space \<Rightarrow> 'a::{real_normed_vector,complete_space}"
  3129   shows "f integrable_on {a..b} \<longleftrightarrow>
  3130   shows "f integrable_on {a..b} \<longleftrightarrow>
  3130   (\<forall>e>0.\<exists>d. gauge d \<and> (\<forall>p1 p2. p1 tagged_division_of {a..b} \<and> d fine p1 \<and>
  3131     (\<forall>e>0.\<exists>d. gauge d \<and>
  3131                             p2 tagged_division_of {a..b} \<and> d fine p2
  3132       (\<forall>p1 p2. p1 tagged_division_of {a..b} \<and> d fine p1 \<and>
  3132                             \<longrightarrow> norm(setsum (\<lambda>(x,k). content k *\<^sub>R f x) p1 -
  3133         p2 tagged_division_of {a..b} \<and> d fine p2 \<longrightarrow>
  3133                                      setsum (\<lambda>(x,k). content k *\<^sub>R f x) p2) < e))" (is "?l = (\<forall>e>0. \<exists>d. ?P e d)")
  3134         norm (setsum (\<lambda>(x,k). content k *\<^sub>R f x) p1 -
  3134 proof assume ?l
  3135         setsum (\<lambda>(x,k). content k *\<^sub>R f x) p2) < e))"
       
  3136   (is "?l = (\<forall>e>0. \<exists>d. ?P e d)")
       
  3137 proof
       
  3138   assume ?l
  3135   then guess y unfolding integrable_on_def has_integral .. note y=this
  3139   then guess y unfolding integrable_on_def has_integral .. note y=this
  3136   show "\<forall>e>0. \<exists>d. ?P e d" proof(rule,rule) case goal1 hence "e/2 > 0" by auto
  3140   show "\<forall>e>0. \<exists>d. ?P e d"
       
  3141   proof (rule, rule)
       
  3142     case goal1
       
  3143     then have "e/2 > 0" by auto
  3137     then guess d apply- apply(drule y[rule_format]) by(erule exE,erule conjE) note d=this[rule_format]
  3144     then guess d apply- apply(drule y[rule_format]) by(erule exE,erule conjE) note d=this[rule_format]
  3138     show ?case apply(rule_tac x=d in exI,rule,rule d) apply(rule,rule,rule,(erule conjE)+)
  3145     show ?case
  3139     proof- fix p1 p2 assume as:"p1 tagged_division_of {a..b}" "d fine p1" "p2 tagged_division_of {a..b}" "d fine p2"
  3146       apply (rule_tac x=d in exI)
       
  3147       apply rule
       
  3148       apply (rule d)
       
  3149       apply rule
       
  3150       apply rule
       
  3151       apply rule
       
  3152       apply (erule conjE)+
       
  3153     proof -
       
  3154       fix p1 p2
       
  3155       assume as: "p1 tagged_division_of {a..b}" "d fine p1"
       
  3156         "p2 tagged_division_of {a..b}" "d fine p2"
  3140       show "norm ((\<Sum>(x, k)\<in>p1. content k *\<^sub>R f x) - (\<Sum>(x, k)\<in>p2. content k *\<^sub>R f x)) < e"
  3157       show "norm ((\<Sum>(x, k)\<in>p1. content k *\<^sub>R f x) - (\<Sum>(x, k)\<in>p2. content k *\<^sub>R f x)) < e"
  3141         apply(rule dist_triangle_half_l[where y=y,unfolded dist_norm])
  3158         apply (rule dist_triangle_half_l[where y=y,unfolded dist_norm])
  3142         using d(2)[OF conjI[OF as(1-2)]] d(2)[OF conjI[OF as(3-4)]] .
  3159         using d(2)[OF conjI[OF as(1-2)]] d(2)[OF conjI[OF as(3-4)]] .
  3143     qed qed
  3160     qed
  3144 next assume "\<forall>e>0. \<exists>d. ?P e d" hence "\<forall>n::nat. \<exists>d. ?P (inverse(real (n + 1))) d" by auto
  3161   qed
       
  3162 next
       
  3163   assume "\<forall>e>0. \<exists>d. ?P e d"
       
  3164   then have "\<forall>n::nat. \<exists>d. ?P (inverse(real (n + 1))) d"
       
  3165     by auto
  3145   from choice[OF this] guess d .. note d=conjunctD2[OF this[rule_format],rule_format]
  3166   from choice[OF this] guess d .. note d=conjunctD2[OF this[rule_format],rule_format]
  3146   have "\<And>n. gauge (\<lambda>x. \<Inter>{d i x |i. i \<in> {0..n}})" apply(rule gauge_inters) using d(1) by auto
  3167   have "\<And>n. gauge (\<lambda>x. \<Inter>{d i x |i. i \<in> {0..n}})"
  3147   hence "\<forall>n. \<exists>p. p tagged_division_of {a..b} \<and> (\<lambda>x. \<Inter>{d i x |i. i \<in> {0..n}}) fine p" apply-
  3168     apply (rule gauge_inters)
  3148   proof case goal1 from this[of n] show ?case apply(drule_tac fine_division_exists) by auto qed
  3169     using d(1)
       
  3170     apply auto
       
  3171     done
       
  3172   then have "\<forall>n. \<exists>p. p tagged_division_of {a..b} \<and> (\<lambda>x. \<Inter>{d i x |i. i \<in> {0..n}}) fine p"
       
  3173     apply -
       
  3174   proof
       
  3175     case goal1
       
  3176     from this[of n]
       
  3177     show ?case
       
  3178       apply (drule_tac fine_division_exists)
       
  3179       apply auto
       
  3180       done
       
  3181   qed
  3149   from choice[OF this] guess p .. note p = conjunctD2[OF this[rule_format]]
  3182   from choice[OF this] guess p .. note p = conjunctD2[OF this[rule_format]]
  3150   have dp:"\<And>i n. i\<le>n \<Longrightarrow> d i fine p n" using p(2) unfolding fine_inters by auto
  3183   have dp: "\<And>i n. i\<le>n \<Longrightarrow> d i fine p n"
       
  3184     using p(2) unfolding fine_inters by auto
  3151   have "Cauchy (\<lambda>n. setsum (\<lambda>(x,k). content k *\<^sub>R (f x)) (p n))"
  3185   have "Cauchy (\<lambda>n. setsum (\<lambda>(x,k). content k *\<^sub>R (f x)) (p n))"
  3152   proof(rule CauchyI) case goal1 then guess N unfolding real_arch_inv[of e] .. note N=this
  3186   proof (rule CauchyI)
  3153     show ?case apply(rule_tac x=N in exI)
  3187     case goal1
  3154     proof(rule,rule,rule,rule) fix m n assume mn:"N \<le> m" "N \<le> n" have *:"N = (N - 1) + 1" using N by auto
  3188     then guess N unfolding real_arch_inv[of e] .. note N=this
       
  3189     show ?case
       
  3190       apply (rule_tac x=N in exI)
       
  3191     proof (rule, rule, rule, rule)
       
  3192       fix m n
       
  3193       assume mn: "N \<le> m" "N \<le> n"
       
  3194       have *: "N = (N - 1) + 1" using N by auto
  3155       show "norm ((\<Sum>(x, k)\<in>p m. content k *\<^sub>R f x) - (\<Sum>(x, k)\<in>p n. content k *\<^sub>R f x)) < e"
  3195       show "norm ((\<Sum>(x, k)\<in>p m. content k *\<^sub>R f x) - (\<Sum>(x, k)\<in>p n. content k *\<^sub>R f x)) < e"
  3156         apply(rule less_trans[OF _ N[THEN conjunct2,THEN conjunct2]]) apply(subst *) apply(rule d(2))
  3196         apply (rule less_trans[OF _ N[THEN conjunct2,THEN conjunct2]])
  3157         using dp p(1) using mn by auto
  3197         apply(subst *)
  3158     qed qed
  3198         apply(rule d(2))
       
  3199         using dp p(1)
       
  3200         using mn
       
  3201         apply auto
       
  3202         done
       
  3203     qed
       
  3204   qed
  3159   then guess y unfolding convergent_eq_cauchy[symmetric] .. note y=this[THEN LIMSEQ_D]
  3205   then guess y unfolding convergent_eq_cauchy[symmetric] .. note y=this[THEN LIMSEQ_D]
  3160   show ?l unfolding integrable_on_def has_integral apply(rule_tac x=y in exI)
  3206   show ?l
  3161   proof(rule,rule) fix e::real assume "e>0" hence *:"e/2 > 0" by auto
  3207     unfolding integrable_on_def has_integral
  3162     then guess N1 unfolding real_arch_inv[of "e/2"] .. note N1=this hence N1':"N1 = N1 - 1 + 1" by auto
  3208     apply (rule_tac x=y in exI)
       
  3209   proof (rule, rule)
       
  3210     fix e :: real
       
  3211     assume "e>0"
       
  3212     then have *:"e/2 > 0" by auto
       
  3213     then guess N1 unfolding real_arch_inv[of "e/2"] .. note N1=this
       
  3214     then have N1': "N1 = N1 - 1 + 1"
       
  3215       by auto
  3163     guess N2 using y[OF *] .. note N2=this
  3216     guess N2 using y[OF *] .. note N2=this
  3164     show "\<exists>d. gauge d \<and> (\<forall>p. p tagged_division_of {a..b} \<and> d fine p \<longrightarrow> norm ((\<Sum>(x, k)\<in>p. content k *\<^sub>R f x) - y) < e)"
  3217     show "\<exists>d. gauge d \<and>
  3165       apply(rule_tac x="d (N1 + N2)" in exI) apply rule defer
  3218       (\<forall>p. p tagged_division_of {a..b} \<and> d fine p \<longrightarrow> norm ((\<Sum>(x, k)\<in>p. content k *\<^sub>R f x) - y) < e)"
  3166     proof(rule,rule,erule conjE) show "gauge (d (N1 + N2))" using d by auto
  3219       apply (rule_tac x="d (N1 + N2)" in exI)
  3167       fix q assume as:"q tagged_division_of {a..b}" "d (N1 + N2) fine q"
  3220       apply rule
  3168       have *:"inverse (real (N1 + N2 + 1)) < e / 2" apply(rule less_trans) using N1 by auto
  3221       defer
  3169       show "norm ((\<Sum>(x, k)\<in>q. content k *\<^sub>R f x) - y) < e" apply(rule norm_triangle_half_r)
  3222     proof (rule, rule, erule conjE)
  3170         apply(rule less_trans[OF _ *]) apply(subst N1', rule d(2)[of "p (N1+N2)"]) defer
  3223       show "gauge (d (N1 + N2))"
       
  3224         using d by auto
       
  3225       fix q
       
  3226       assume as: "q tagged_division_of {a..b}" "d (N1 + N2) fine q"
       
  3227       have *: "inverse (real (N1 + N2 + 1)) < e / 2"
       
  3228         apply (rule less_trans)
       
  3229         using N1
       
  3230         apply auto
       
  3231         done
       
  3232       show "norm ((\<Sum>(x, k)\<in>q. content k *\<^sub>R f x) - y) < e"
       
  3233         apply (rule norm_triangle_half_r)
       
  3234         apply (rule less_trans[OF _ *])
       
  3235         apply (subst N1', rule d(2)[of "p (N1+N2)"])
       
  3236         defer
  3171         using N2[rule_format,of "N1+N2"]
  3237         using N2[rule_format,of "N1+N2"]
  3172         using as dp[of "N1 - 1 + 1 + N2" "N1 + N2"] using p(1)[of "N1 + N2"] using N1 by auto qed qed qed
  3238         using as dp[of "N1 - 1 + 1 + N2" "N1 + N2"]
       
  3239         using p(1)[of "N1 + N2"]
       
  3240         using N1
       
  3241         apply auto
       
  3242         done
       
  3243     qed
       
  3244   qed
       
  3245 qed
       
  3246 
  3173 
  3247 
  3174 subsection {* Additivity of integral on abutting intervals. *}
  3248 subsection {* Additivity of integral on abutting intervals. *}
  3175 
  3249 
  3176 lemma interval_split:
  3250 lemma interval_split:
  3177   fixes a::"'a::ordered_euclidean_space" assumes "k \<in> Basis"
  3251   fixes a :: "'a::ordered_euclidean_space"
       
  3252   assumes "k \<in> Basis"
  3178   shows
  3253   shows
  3179     "{a..b} \<inter> {x. x\<bullet>k \<le> c} = {a .. (\<Sum>i\<in>Basis. (if i = k then min (b\<bullet>k) c else b\<bullet>i) *\<^sub>R i)}"
  3254     "{a..b} \<inter> {x. x\<bullet>k \<le> c} = {a .. (\<Sum>i\<in>Basis. (if i = k then min (b\<bullet>k) c else b\<bullet>i) *\<^sub>R i)}"
  3180     "{a..b} \<inter> {x. x\<bullet>k \<ge> c} = {(\<Sum>i\<in>Basis. (if i = k then max (a\<bullet>k) c else a\<bullet>i) *\<^sub>R i) .. b}"
  3255     "{a..b} \<inter> {x. x\<bullet>k \<ge> c} = {(\<Sum>i\<in>Basis. (if i = k then max (a\<bullet>k) c else a\<bullet>i) *\<^sub>R i) .. b}"
  3181   apply(rule_tac[!] set_eqI) unfolding Int_iff mem_interval mem_Collect_eq using assms
  3256   apply (rule_tac[!] set_eqI)
  3182   by auto
  3257   unfolding Int_iff mem_interval mem_Collect_eq
  3183 
  3258   using assms
  3184 lemma content_split: fixes a::"'a::ordered_euclidean_space" assumes "k\<in>Basis" shows
  3259   apply auto
  3185   "content {a..b} = content({a..b} \<inter> {x. x\<bullet>k \<le> c}) + content({a..b} \<inter> {x. x\<bullet>k >= c})"
  3260   done
       
  3261 
       
  3262 lemma content_split:
       
  3263   fixes a :: "'a::ordered_euclidean_space"
       
  3264   assumes "k \<in> Basis"
       
  3265   shows "content {a..b} = content({a..b} \<inter> {x. x\<bullet>k \<le> c}) + content({a..b} \<inter> {x. x\<bullet>k \<ge> c})"
  3186 proof cases
  3266 proof cases
  3187   note simps = interval_split[OF assms] content_closed_interval_cases eucl_le[where 'a='a]
  3267   note simps = interval_split[OF assms] content_closed_interval_cases eucl_le[where 'a='a]
  3188   have *:"Basis = insert k (Basis - {k})" "\<And>x. finite (Basis-{x})" "\<And>x. x\<notin>Basis-{x}"
  3268   have *: "Basis = insert k (Basis - {k})" "\<And>x. finite (Basis-{x})" "\<And>x. x\<notin>Basis-{x}"
  3189     using assms by auto
  3269     using assms by auto
  3190   have *:"\<And>X Y Z. (\<Prod>i\<in>Basis. Z i (if i = k then X else Y i)) = Z k X * (\<Prod>i\<in>Basis-{k}. Z i (Y i))"
  3270   have *: "\<And>X Y Z. (\<Prod>i\<in>Basis. Z i (if i = k then X else Y i)) = Z k X * (\<Prod>i\<in>Basis-{k}. Z i (Y i))"
  3191     "(\<Prod>i\<in>Basis. b\<bullet>i - a\<bullet>i) = (\<Prod>i\<in>Basis-{k}. b\<bullet>i - a\<bullet>i) * (b\<bullet>k - a\<bullet>k)"
  3271     "(\<Prod>i\<in>Basis. b\<bullet>i - a\<bullet>i) = (\<Prod>i\<in>Basis-{k}. b\<bullet>i - a\<bullet>i) * (b\<bullet>k - a\<bullet>k)"
  3192     apply(subst *(1)) defer apply(subst *(1)) unfolding setprod_insert[OF *(2-)] by auto
  3272     apply (subst *(1))
  3193   assume as:"a\<le>b" moreover have "\<And>x. min (b \<bullet> k) c = max (a \<bullet> k) c
  3273     defer
  3194     \<Longrightarrow> x* (b\<bullet>k - a\<bullet>k) = x*(max (a \<bullet> k) c - a \<bullet> k) + x*(b \<bullet> k - max (a \<bullet> k) c)"
  3274     apply (subst *(1))
  3195     by  (auto simp add:field_simps)
  3275     unfolding setprod_insert[OF *(2-)]
  3196   moreover have **:"(\<Prod>i\<in>Basis. ((\<Sum>i\<in>Basis. (if i = k then min (b \<bullet> k) c else b \<bullet> i) *\<^sub>R i) \<bullet> i - a \<bullet> i)) =
  3276     apply auto
       
  3277     done
       
  3278   assume as: "a \<le> b"
       
  3279   moreover
       
  3280   have "\<And>x. min (b \<bullet> k) c = max (a \<bullet> k) c \<Longrightarrow>
       
  3281     x * (b\<bullet>k - a\<bullet>k) = x * (max (a \<bullet> k) c - a \<bullet> k) + x * (b \<bullet> k - max (a \<bullet> k) c)"
       
  3282     by  (auto simp add: field_simps)
       
  3283   moreover
       
  3284   have **: "(\<Prod>i\<in>Basis. ((\<Sum>i\<in>Basis. (if i = k then min (b \<bullet> k) c else b \<bullet> i) *\<^sub>R i) \<bullet> i - a \<bullet> i)) =
  3197       (\<Prod>i\<in>Basis. (if i = k then min (b \<bullet> k) c else b \<bullet> i) - a \<bullet> i)"
  3285       (\<Prod>i\<in>Basis. (if i = k then min (b \<bullet> k) c else b \<bullet> i) - a \<bullet> i)"
  3198     "(\<Prod>i\<in>Basis. b \<bullet> i - ((\<Sum>i\<in>Basis. (if i = k then max (a \<bullet> k) c else a \<bullet> i) *\<^sub>R i) \<bullet> i)) =
  3286     "(\<Prod>i\<in>Basis. b \<bullet> i - ((\<Sum>i\<in>Basis. (if i = k then max (a \<bullet> k) c else a \<bullet> i) *\<^sub>R i) \<bullet> i)) =
  3199       (\<Prod>i\<in>Basis. b \<bullet> i - (if i = k then max (a \<bullet> k) c else a \<bullet> i))"
  3287       (\<Prod>i\<in>Basis. b \<bullet> i - (if i = k then max (a \<bullet> k) c else a \<bullet> i))"
  3200     by (auto intro!: setprod_cong)
  3288     by (auto intro!: setprod_cong)
  3201   have "\<not> a \<bullet> k \<le> c \<Longrightarrow> \<not> c \<le> b \<bullet> k \<Longrightarrow> False"
  3289   have "\<not> a \<bullet> k \<le> c \<Longrightarrow> \<not> c \<le> b \<bullet> k \<Longrightarrow> False"
  3202     unfolding not_le using as[unfolded eucl_le[where 'a='a],rule_format,of k] assms by auto
  3290     unfolding not_le
  3203   ultimately show ?thesis using assms unfolding simps **
  3291     using as[unfolded eucl_le[where 'a='a],rule_format,of k] assms
  3204     unfolding *(1)[of "\<lambda>i x. b\<bullet>i - x"] *(1)[of "\<lambda>i x. x - a\<bullet>i"] unfolding *(2)
  3292     by auto
       
  3293   ultimately show ?thesis
       
  3294     using assms
       
  3295     unfolding simps **
       
  3296     unfolding *(1)[of "\<lambda>i x. b\<bullet>i - x"] *(1)[of "\<lambda>i x. x - a\<bullet>i"]
       
  3297     unfolding *(2)
  3205     by auto
  3298     by auto
  3206 next
  3299 next
  3207   assume "\<not> a \<le> b" then have "{a .. b} = {}"
  3300   assume "\<not> a \<le> b"
       
  3301   then have "{a .. b} = {}"
  3208     unfolding interval_eq_empty by (auto simp: eucl_le[where 'a='a] not_le)
  3302     unfolding interval_eq_empty by (auto simp: eucl_le[where 'a='a] not_le)
  3209   then show ?thesis by auto
  3303   then show ?thesis
       
  3304     by auto
  3210 qed
  3305 qed
  3211 
  3306 
  3212 lemma division_split_left_inj: fixes type::"'a::ordered_euclidean_space"
  3307 lemma division_split_left_inj:
  3213   assumes "d division_of i" "k1 \<in> d" "k2 \<in> d"  "k1 \<noteq> k2"
  3308   fixes type :: "'a::ordered_euclidean_space"
  3214   "k1 \<inter> {x::'a. x\<bullet>k \<le> c} = k2 \<inter> {x. x\<bullet>k \<le> c}"and k:"k\<in>Basis"
  3309   assumes "d division_of i"
       
  3310     and "k1 \<in> d"
       
  3311     and "k2 \<in> d"
       
  3312     and "k1 \<noteq> k2"
       
  3313     and "k1 \<inter> {x::'a. x\<bullet>k \<le> c} = k2 \<inter> {x. x\<bullet>k \<le> c}"
       
  3314     and k: "k\<in>Basis"
  3215   shows "content(k1 \<inter> {x. x\<bullet>k \<le> c}) = 0"
  3315   shows "content(k1 \<inter> {x. x\<bullet>k \<le> c}) = 0"
  3216 proof- note d=division_ofD[OF assms(1)]
  3316 proof -
  3217   have *:"\<And>a b::'a. \<And> c. (content({a..b} \<inter> {x. x\<bullet>k \<le> c}) = 0 \<longleftrightarrow> interior({a..b} \<inter> {x. x\<bullet>k \<le> c}) = {})"
  3317   note d=division_ofD[OF assms(1)]
       
  3318   have *: "\<And>a b::'a. \<And> c. (content({a..b} \<inter> {x. x\<bullet>k \<le> c}) = 0 \<longleftrightarrow> interior({a..b} \<inter> {x. x\<bullet>k \<le> c}) = {})"
  3218     unfolding  interval_split[OF k] content_eq_0_interior by auto
  3319     unfolding  interval_split[OF k] content_eq_0_interior by auto
  3219   guess u1 v1 using d(4)[OF assms(2)] apply-by(erule exE)+ note uv1=this
  3320   guess u1 v1 using d(4)[OF assms(2)] apply-by(erule exE)+ note uv1=this
  3220   guess u2 v2 using d(4)[OF assms(3)] apply-by(erule exE)+ note uv2=this
  3321   guess u2 v2 using d(4)[OF assms(3)] apply-by(erule exE)+ note uv2=this
  3221   have **:"\<And>s t u. s \<inter> t = {} \<Longrightarrow> u \<subseteq> s \<Longrightarrow> u \<subseteq> t \<Longrightarrow> u = {}" by auto
  3322   have **: "\<And>s t u. s \<inter> t = {} \<Longrightarrow> u \<subseteq> s \<Longrightarrow> u \<subseteq> t \<Longrightarrow> u = {}"
  3222   show ?thesis unfolding uv1 uv2 * apply(rule **[OF d(5)[OF assms(2-4)]])
  3323     by auto
  3223     defer apply(subst assms(5)[unfolded uv1 uv2]) unfolding uv1 uv2 by auto qed
  3324   show ?thesis
       
  3325     unfolding uv1 uv2 * apply(rule **[OF d(5)[OF assms(2-4)]])
       
  3326     defer
       
  3327     apply (subst assms(5)[unfolded uv1 uv2])
       
  3328     unfolding uv1 uv2
       
  3329     apply auto
       
  3330     done
       
  3331 qed
  3224 
  3332 
  3225 lemma division_split_right_inj: fixes type::"'a::ordered_euclidean_space"
  3333 lemma division_split_right_inj: fixes type::"'a::ordered_euclidean_space"
  3226   assumes "d division_of i" "k1 \<in> d" "k2 \<in> d"  "k1 \<noteq> k2"
  3334   assumes "d division_of i" "k1 \<in> d" "k2 \<in> d"  "k1 \<noteq> k2"
  3227   "k1 \<inter> {x::'a. x\<bullet>k \<ge> c} = k2 \<inter> {x. x\<bullet>k \<ge> c}" and k:"k\<in>Basis"
  3335   "k1 \<inter> {x::'a. x\<bullet>k \<ge> c} = k2 \<inter> {x. x\<bullet>k \<ge> c}" and k:"k\<in>Basis"
  3228   shows "content(k1 \<inter> {x. x\<bullet>k \<ge> c}) = 0"
  3336   shows "content(k1 \<inter> {x. x\<bullet>k \<ge> c}) = 0"