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" |