@@ -51,8 +51,8 @@ namespace abelSummationProof
51
51
52
52
open intervalIntegral IntervalIntegrable
53
53
54
- private theorem sumlocc (n : ℕ) :
55
- ∀ᵐ t, t ∈ Set.Icc (n : ℝ) (n + 1 ) → ∑ k ∈ Icc 0 ⌊t⌋₊, c k = ∑ k ∈ Icc 0 n, c k := by
54
+ private theorem sumlocc {m : ℕ} (n : ℕ) :
55
+ ∀ᵐ t, t ∈ Set.Icc (n : ℝ) (n + 1 ) → ∑ k ∈ Icc m ⌊t⌋₊, c k = ∑ k ∈ Icc m n, c k := by
56
56
filter_upwards [Ico_ae_eq_Icc] with t h ht
57
57
rw [Nat.floor_eq_on_Ico _ _ (h.mpr ht)]
58
58
@@ -83,19 +83,20 @@ private theorem ineqofmemIco' {k : ℕ} (hk : k ∈ Ico (⌊a⌋₊ + 1) ⌊b⌋
83
83
a ≤ k ∧ k + 1 ≤ b :=
84
84
ineqofmemIco (by rwa [← Finset.coe_Ico])
85
85
86
- private theorem integrablemulsum (ha : 0 ≤ a) {g : ℝ → 𝕜} (hg_int : IntegrableOn g (Set.Icc a b)) :
87
- IntegrableOn (fun t ↦ g t * ∑ k ∈ Icc 0 ⌊t⌋₊, c k) (Set.Icc a b) := by
86
+ theorem _root_.integrableOn_mul_sum_Icc {m : ℕ} (ha : 0 ≤ a) {g : ℝ → 𝕜}
87
+ (hg_int : IntegrableOn g (Set.Icc a b)) :
88
+ IntegrableOn (fun t ↦ g t * ∑ k ∈ Icc m ⌊t⌋₊, c k) (Set.Icc a b) := by
88
89
obtain hab | hab := le_or_gt a b
89
90
· obtain hb | hb := eq_or_lt_of_le (Nat.floor_le_floor hab)
90
- · have : ∀ᵐ t, t ∈ Set.Icc a b → ∑ k ∈ Icc 0 ⌊a⌋₊, c k = ∑ k ∈ Icc 0 ⌊t⌋₊, c k := by
91
+ · have : ∀ᵐ t, t ∈ Set.Icc a b → ∑ k ∈ Icc m ⌊a⌋₊, c k = ∑ k ∈ Icc m ⌊t⌋₊, c k := by
91
92
filter_upwards [sumlocc c ⌊a⌋₊] with t ht₁ ht₂
92
93
rw [ht₁ ⟨(Nat.floor_le ha).trans ht₂.1 , hb ▸ ht₂.2 .trans (Nat.lt_floor_add_one b).le⟩]
93
94
rw [← ae_restrict_iff' measurableSet_Icc] at this
94
95
exact IntegrableOn.congr_fun_ae
95
96
(hg_int.mul_const _) ((Filter.EventuallyEq.refl _ g).mul this)
96
97
· have h_locint {t₁ t₂ : ℝ} {n : ℕ} (h : t₁ ≤ t₂) (h₁ : n ≤ t₁) (h₂ : t₂ ≤ n + 1 )
97
98
(h₃ : a ≤ t₁) (h₄ : t₂ ≤ b) :
98
- IntervalIntegrable (fun t ↦ g t * ∑ k ∈ Icc 0 ⌊t⌋₊, c k) volume t₁ t₂ := by
99
+ IntervalIntegrable (fun t ↦ g t * ∑ k ∈ Icc m ⌊t⌋₊, c k) volume t₁ t₂ := by
99
100
rw [intervalIntegrable_iff_integrableOn_Icc_of_le h]
100
101
exact (IntegrableOn.mono_set (hg_int.mul_const _) (Set.Icc_subset_Icc h₃ h₄)).congr
101
102
<| ae_restrict_of_ae_restrict_of_subset (Set.Icc_subset_Icc h₁ h₂)
@@ -154,15 +155,15 @@ theorem _root_.sum_mul_eq_sub_sub_integral_mul (ha : 0 ≤ a) (hab : a ≤ b)
154
155
-- (Note we have 5 goals, but the 1st and 3rd are identical. TODO: find a non-hacky way of dealing
155
156
-- with both at once.)
156
157
· rw [intervalIntegrable_iff_integrableOn_Icc_of_le aux6]
157
- exact (integrablemulsum c ha hf_int).mono_set (Set.Icc_subset_Icc_right aux5)
158
+ exact (integrableOn_mul_sum_Icc c ha hf_int).mono_set (Set.Icc_subset_Icc_right aux5)
158
159
· rw [intervalIntegrable_iff_integrableOn_Icc_of_le aux5]
159
- exact (integrablemulsum c ha hf_int).mono_set (Set.Icc_subset_Icc_left aux6)
160
+ exact (integrableOn_mul_sum_Icc c ha hf_int).mono_set (Set.Icc_subset_Icc_left aux6)
160
161
· rw [intervalIntegrable_iff_integrableOn_Icc_of_le aux6]
161
- exact (integrablemulsum c ha hf_int).mono_set (Set.Icc_subset_Icc_right aux5)
162
+ exact (integrableOn_mul_sum_Icc c ha hf_int).mono_set (Set.Icc_subset_Icc_right aux5)
162
163
· rw [intervalIntegrable_iff_integrableOn_Icc_of_le aux3]
163
- exact (integrablemulsum c ha hf_int).mono_set (Set.Icc_subset_Icc_right aux4)
164
+ exact (integrableOn_mul_sum_Icc c ha hf_int).mono_set (Set.Icc_subset_Icc_right aux4)
164
165
· exact fun k hk ↦ (intervalIntegrable_iff_integrableOn_Icc_of_le (mod_cast k.le_succ)).mpr
165
- <| (integrablemulsum c ha hf_int).mono_set
166
+ <| (integrableOn_mul_sum_Icc c ha hf_int).mono_set
166
167
<| (Set.Icc_subset_Icc_iff (mod_cast k.le_succ)).mpr <| mod_cast (ineqofmemIco hk)
167
168
168
169
/-- A version of `sum_mul_eq_sub_sub_integral_mul` where the endpoints are `Nat`. -/
@@ -209,7 +210,7 @@ theorem sum_mul_eq_sub_integral_mul₀ (hc : c 0 = 0) (b : ℝ)
209
210
f b * (∑ k ∈ Icc 0 ⌊b⌋₊, c k) - ∫ t in Set.Ioc 1 b, deriv f t * ∑ k ∈ Icc 0 ⌊t⌋₊, c k := by
210
211
obtain hb | hb := le_or_gt 1 b
211
212
· have : 1 ≤ ⌊b⌋₊ := (Nat.one_le_floor_iff _).mpr hb
212
- nth_rewrite 1 [Icc_eq_cons_Ioc (by omega ), sum_cons, ← Nat.Icc_succ_left,
213
+ nth_rewrite 1 [Icc_eq_cons_Ioc (Nat.zero_le _ ), sum_cons, ← Nat.Icc_succ_left,
213
214
Icc_eq_cons_Ioc (by omega), sum_cons]
214
215
rw [Nat.succ_eq_add_one, zero_add, ← Nat.floor_one (α := ℝ),
215
216
sum_mul_eq_sub_sub_integral_mul c zero_le_one hb hf_diff hf_int, Nat.floor_one, Nat.cast_one,
@@ -235,13 +236,14 @@ section limit
235
236
236
237
open Filter Topology abelSummationProof intervalIntegral
237
238
238
- private theorem locallyintegrablemulsum (ha : 0 ≤ a) {g : ℝ → 𝕜} (hg : IntegrableOn g (Set.Ici a)) :
239
- LocallyIntegrableOn (fun t ↦ g t * ∑ k ∈ Icc 0 ⌊t⌋₊, c k) (Set.Ici a) := by
239
+ theorem locallyIntegrableOn_mul_sum_Icc {m : ℕ} (ha : 0 ≤ a) {g : ℝ → 𝕜}
240
+ (hg : IntegrableOn g (Set.Ici a)) :
241
+ LocallyIntegrableOn (fun t ↦ g t * ∑ k ∈ Icc m ⌊t⌋₊, c k) (Set.Ici a) := by
240
242
refine (locallyIntegrableOn_iff isLocallyClosed_Ici).mpr fun K hK₁ hK₂ ↦ ?_
241
243
by_cases hK₃ : K.Nonempty
242
244
· have h_inf : a ≤ sInf K := (hK₁ (hK₂.sInf_mem hK₃))
243
245
refine IntegrableOn.mono_set ?_ (Bornology.IsBounded.subset_Icc_sInf_sSup hK₂.isBounded)
244
- refine integrablemulsum _ (ha.trans h_inf) (hg.mono_set ?_)
246
+ refine integrableOn_mul_sum_Icc _ (ha.trans h_inf) (hg.mono_set ?_)
245
247
exact (Set.Icc_subset_Ici_iff (Real.sInf_le_sSup _ hK₂.bddBelow hK₂.bddAbove)).mpr h_inf
246
248
· rw [Set.not_nonempty_iff_eq_empty.mp hK₃]
247
249
exact integrableOn_empty
@@ -259,7 +261,8 @@ theorem tendsto_sum_mul_atTop_nhds_one_sub_integral
259
261
refine Tendsto.congr (fun _ ↦ by rw [← integral_of_le (Nat.cast_nonneg _)]) ?_
260
262
refine intervalIntegral_tendsto_integral_Ioi _ ?_ tendsto_natCast_atTop_atTop
261
263
exact integrableOn_Ici_iff_integrableOn_Ioi.mp
262
- <| (locallyintegrablemulsum c le_rfl hf_int).integrableOn_of_isBigO_atTop hg_dom hg_int
264
+ <| (locallyIntegrableOn_mul_sum_Icc c le_rfl hf_int).integrableOn_of_isBigO_atTop
265
+ hg_dom hg_int
263
266
refine (h_lim.sub h_lim').congr (fun _ ↦ ?_)
264
267
rw [sum_mul_eq_sub_integral_mul' _ _ (fun t ht ↦ hf_diff _ ht.1 )
265
268
(hf_int.mono_set Set.Icc_subset_Ici_self)]
@@ -280,7 +283,8 @@ theorem tendsto_sum_mul_atTop_nhds_one_sub_integral₀ (hc : c 0 = 0)
280
283
atTop (𝓝 (∫ t in Set.Ioi 1 , deriv f t * ∑ k ∈ Icc 0 ⌊t⌋₊, c k)) := by
281
284
refine Tendsto.congr' h (intervalIntegral_tendsto_integral_Ioi _ ?_ tendsto_natCast_atTop_atTop)
282
285
exact integrableOn_Ici_iff_integrableOn_Ioi.mp
283
- <| (locallyintegrablemulsum c zero_le_one hf_int).integrableOn_of_isBigO_atTop hg_dom hg_int
286
+ <| (locallyIntegrableOn_mul_sum_Icc c zero_le_one hf_int).integrableOn_of_isBigO_atTop
287
+ hg_dom hg_int
284
288
refine (h_lim.sub h_lim').congr (fun _ ↦ ?_)
285
289
rw [sum_mul_eq_sub_integral_mul₀' _ hc _ (fun t ht ↦ hf_diff _ ht.1 )
286
290
(hf_int.mono_set Set.Icc_subset_Ici_self)]
@@ -325,9 +329,10 @@ private theorem summable_mul_of_bigO_atTop_aux (m : ℕ)
325
329
· exact add_le_add_left
326
330
(le_trans (neg_le_abs _) (Real.norm_eq_abs _ ▸ norm_integral_le_integral_norm _)) _
327
331
· refine add_le_add_left (setIntegral_mono_set ?_ ?_ Set.Ioc_subset_Ioi_self.eventuallyLE) C₁
328
- · refine integrableOn_Ici_iff_integrableOn_Ioi.mp <|
332
+ · exact integrableOn_Ici_iff_integrableOn_Ioi.mp <|
329
333
(integrable_norm_iff h_mes.aestronglyMeasurable).mpr <|
330
- (locallyintegrablemulsum _ m.cast_nonneg hf_int).integrableOn_of_isBigO_atTop hg₁ hg₂
334
+ (locallyIntegrableOn_mul_sum_Icc _ m.cast_nonneg hf_int).integrableOn_of_isBigO_atTop
335
+ hg₁ hg₂
331
336
· filter_upwards with t using norm_nonneg _
332
337
333
338
theorem summable_mul_of_bigO_atTop
0 commit comments