Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit 13bf761

Browse files
committed
feat(measure_theory/functions/lp_space): bounds on the sum of functions in L^p, p < 1, and applications (#18796)
The `L^p` space satisfies the triangular inequality for `p ≥ 1`. We show that, for `p < 1`, it satisfies a weaker inequality (with the loss of a multiplicative constant `2^(1/p - 1)`), which is still enough for several results. This makes it possible to remove the assumptions on `p` in results on density of continuous functions.
1 parent 155d551 commit 13bf761

File tree

5 files changed

+263
-173
lines changed

5 files changed

+263
-173
lines changed

src/analysis/mean_inequalities_pow.lean

Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,20 @@ begin
109109
{ simp [hw', fin.sum_univ_succ], },
110110
end
111111

112+
/-- Unweighted mean inequality, version for two elements of `ℝ≥0` and real exponents. -/
113+
theorem rpow_add_le_mul_rpow_add_rpow (z₁ z₂ : ℝ≥0) {p : ℝ} (hp : 1 ≤ p) :
114+
(z₁ + z₂) ^ p ≤ 2^(p-1) * (z₁ ^ p + z₂ ^ p) :=
115+
begin
116+
rcases eq_or_lt_of_le hp with rfl|h'p,
117+
{ simp only [rpow_one, sub_self, rpow_zero, one_mul] },
118+
convert rpow_arith_mean_le_arith_mean2_rpow (1/2) (1/2) (2 * z₁) (2 * z₂) (add_halves 1) hp,
119+
{ simp only [one_div, inv_mul_cancel_left₀, ne.def, bit0_eq_zero, one_ne_zero, not_false_iff] },
120+
{ simp only [one_div, inv_mul_cancel_left₀, ne.def, bit0_eq_zero, one_ne_zero, not_false_iff] },
121+
{ have A : p - 10 := ne_of_gt (sub_pos.2 h'p),
122+
simp only [mul_rpow, rpow_sub' _ A, div_eq_inv_mul, rpow_one, mul_one],
123+
ring }
124+
end
125+
112126
/-- Weighted generalized mean inequality, version for sums over finite sets, with `ℝ≥0`-valued
113127
functions and real exponents. -/
114128
theorem arith_mean_le_rpow_mean (w z : ι → ℝ≥0) (hw' : ∑ i in s, w i = 1) {p : ℝ}
@@ -117,10 +131,6 @@ theorem arith_mean_le_rpow_mean (w z : ι → ℝ≥0) (hw' : ∑ i in s, w i =
117131
by exact_mod_cast real.arith_mean_le_rpow_mean s _ _ (λ i _, (w i).coe_nonneg)
118132
(by exact_mod_cast hw') (λ i _, (z i).coe_nonneg) hp
119133

120-
end nnreal
121-
122-
namespace nnreal
123-
124134
private lemma add_rpow_le_one_of_add_le_one {p : ℝ} (a b : ℝ≥0) (hab : a + b ≤ 1)
125135
(hp1 : 1 ≤ p) :
126136
a ^ p + b ^ p ≤ 1 :=
@@ -248,9 +258,21 @@ begin
248258
{ simp [hw', fin.sum_univ_succ], },
249259
end
250260

251-
end ennreal
252-
253-
namespace ennreal
261+
/-- Unweighted mean inequality, version for two elements of `ℝ≥0∞` and real exponents. -/
262+
theorem rpow_add_le_mul_rpow_add_rpow (z₁ z₂ : ℝ≥0∞) {p : ℝ} (hp : 1 ≤ p) :
263+
(z₁ + z₂) ^ p ≤ 2^(p-1) * (z₁ ^ p + z₂ ^ p) :=
264+
begin
265+
rcases eq_or_lt_of_le hp with rfl|h'p,
266+
{ simp only [rpow_one, sub_self, rpow_zero, one_mul, le_refl], },
267+
convert rpow_arith_mean_le_arith_mean2_rpow
268+
(1/2) (1/2) (2 * z₁) (2 * z₂) (ennreal.add_halves 1) hp,
269+
{ simp [← mul_assoc, ennreal.inv_mul_cancel two_ne_zero two_ne_top] },
270+
{ simp [← mul_assoc, ennreal.inv_mul_cancel two_ne_zero two_ne_top] },
271+
{ have A : p - 10 := ne_of_gt (sub_pos.2 h'p),
272+
simp only [mul_rpow_of_nonneg _ _ (zero_le_one.trans hp), rpow_sub _ _ two_ne_zero two_ne_top,
273+
div_eq_inv_mul, rpow_one, mul_one],
274+
ring }
275+
end
254276

255277
lemma add_rpow_le_rpow_add {p : ℝ} (a b : ℝ≥0∞) (hp1 : 1 ≤ p) :
256278
a ^ p + b ^ p ≤ (a + b) ^ p :=

src/measure_theory/function/continuous_map_dense.lean

Lines changed: 48 additions & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import measure_theory.integral.bochner
1212
/-!
1313
# Approximation in Lᵖ by continuous functions
1414
15-
This file proves that bounded continuous functions are dense in `Lp E p μ`, for `1 ≤ p < ∞`, if the
15+
This file proves that bounded continuous functions are dense in `Lp E p μ`, for `p < ∞`, if the
1616
domain `α` of the functions is a normal topological space and the measure `μ` is weakly regular.
1717
It also proves the same results for approximation by continuous functions with compact support
1818
when the space is locally compact and `μ` is regular.
@@ -127,9 +127,9 @@ begin
127127
end
128128

129129
/-- In a locally compact space, any function in `ℒp` can be approximated by compactly supported
130-
continuous functions when `1 ≤ p < ∞`, version in terms of `snorm`. -/
130+
continuous functions when `p < ∞`, version in terms of `snorm`. -/
131131
lemma mem_ℒp.exists_has_compact_support_snorm_sub_le
132-
[locally_compact_space α] [μ.regular] (hp : p ≠ ∞) (h'p : 1 ≤ p)
132+
[locally_compact_space α] [μ.regular] (hp : p ≠ ∞)
133133
{f : α → E} (hf : mem_ℒp f p μ) {ε : ℝ≥0∞} (hε : ε ≠ 0) :
134134
∃ (g : α → E), has_compact_support g ∧ snorm (f - g) p μ ≤ ε ∧ continuous g ∧ mem_ℒp g p μ :=
135135
begin
@@ -140,7 +140,7 @@ begin
140140
-- It suffices to check that the set of functions we consider approximates characteristic
141141
-- functions, is stable under addition and consists of ae strongly measurable functions.
142142
-- First check the latter easy facts.
143-
apply hf.induction_dense hp h'p _ _ _ _ hε, rotate,
143+
apply hf.induction_dense hp _ _ _ _ hε, rotate,
144144
-- stability under addition
145145
{ rintros f g ⟨f_cont, f_mem, hf⟩ ⟨g_cont, g_mem, hg⟩,
146146
exact ⟨f_cont.add g_cont, f_mem.add g_mem, hf.add hg⟩ },
@@ -150,63 +150,52 @@ begin
150150
-- We are left with approximating characteristic functions.
151151
-- This follows from `exists_continuous_snorm_sub_le_of_closed`.
152152
assume c t ht htμ ε hε,
153-
have h'ε : ε / 20, by simpa using,
153+
rcases exists_Lp_half E μ p hε with ⟨δ, δpos, hδ⟩,
154154
obtain ⟨η, ηpos, hη⟩ : ∃ (η : ℝ≥0), 0 < η ∧ ∀ (s : set α), μ s ≤ η →
155-
snorm (s.indicator (λ x, c)) p μ ≤ ε / 2, from exists_snorm_indicator_le hp c h'ε,
155+
snorm (s.indicator (λ x, c)) p μ ≤ δ, from exists_snorm_indicator_le hp c δpos.ne',
156156
have hη_pos' : (0 : ℝ≥0∞) < η, from ennreal.coe_pos.2 ηpos,
157157
obtain ⟨s, st, s_compact, μs⟩ : ∃ s ⊆ t, is_compact s ∧ μ (t \ s) < η,
158158
from ht.exists_is_compact_diff_lt htμ.ne hη_pos'.ne',
159159
have hsμ : μ s < ∞, from (measure_mono st).trans_lt htμ,
160-
have I1 : snorm (s.indicator (λ y, c) - t.indicator (λ y, c)) p μ ≤ ε/2,
160+
have I1 : snorm (s.indicator (λ y, c) - t.indicator (λ y, c)) p μ ≤ δ,
161161
{ rw [← snorm_neg, neg_sub, ← indicator_diff st],
162162
exact (hη _ μs.le) },
163163
obtain ⟨k, k_compact, sk, -⟩ : ∃ (k : set α), is_compact k ∧ s ⊆ interior k ∧ k ⊆ univ,
164164
from exists_compact_between s_compact is_open_univ (subset_univ _),
165165
rcases exists_continuous_snorm_sub_le_of_closed hp s_compact.is_closed is_open_interior sk
166-
hsμ.ne c h'ε with ⟨f, f_cont, I2, f_bound, f_support, f_mem⟩,
167-
have I3 : snorm (f - t.indicator (λ y, c)) p μ ≤ ε, from calc
168-
snorm (f - t.indicator (λ y, c)) p μ
169-
= snorm ((f - s.indicator (λ y, c)) + (s.indicator (λ y, c) - t.indicator (λ y, c))) p μ :
170-
by simp only [sub_add_sub_cancel]
171-
... ≤ snorm (f - s.indicator (λ y, c)) p μ
172-
+ snorm (s.indicator (λ y, c) - t.indicator (λ y, c)) p μ :
173-
begin
174-
refine snorm_add_le _ _ h'p,
175-
{ exact f_mem.ae_strongly_measurable.sub
176-
(ae_strongly_measurable_const.indicator s_compact.measurable_set) },
177-
{ exact (ae_strongly_measurable_const.indicator s_compact.measurable_set).sub
178-
(ae_strongly_measurable_const.indicator ht) },
179-
end
180-
... ≤ ε/2 + ε/2 : add_le_add I2 I1
181-
... = ε : ennreal.add_halves _,
166+
hsμ.ne c δpos.ne' with ⟨f, f_cont, I2, f_bound, f_support, f_mem⟩,
167+
have I3 : snorm (f - t.indicator (λ y, c)) p μ ≤ ε,
168+
{ convert (hδ _ _ (f_mem.ae_strongly_measurable.sub
169+
(ae_strongly_measurable_const.indicator s_compact.measurable_set))
170+
((ae_strongly_measurable_const.indicator s_compact.measurable_set).sub
171+
(ae_strongly_measurable_const.indicator ht)) I2 I1).le,
172+
simp only [sub_add_sub_cancel] },
182173
refine ⟨f, I3, f_cont, f_mem, has_compact_support.intro k_compact (λ x hx, _)⟩,
183174
rw ← function.nmem_support,
184175
contrapose! hx,
185176
exact interior_subset (f_support hx)
186177
end
187178

188179
/-- In a locally compact space, any function in `ℒp` can be approximated by compactly supported
189-
continuous functions when `1 ≤ p < ∞`, version in terms of `∫`. -/
180+
continuous functions when `0 < p < ∞`, version in terms of `∫`. -/
190181
lemma mem_ℒp.exists_has_compact_support_integral_rpow_sub_le
191-
[locally_compact_space α] [μ.regular] {p : ℝ} (h'p : 1 p)
182+
[locally_compact_space α] [μ.regular] {p : ℝ} (hp : 0 < p)
192183
{f : α → E} (hf : mem_ℒp f (ennreal.of_real p) μ) {ε : ℝ} (hε : 0 < ε) :
193184
∃ (g : α → E), has_compact_support g ∧ ∫ x, ‖f x - g x‖^p ∂μ ≤ ε ∧ continuous g
194185
∧ mem_ℒp g (ennreal.of_real p) μ :=
195186
begin
196187
have I : 0 < ε ^ (1/p) := real.rpow_pos_of_pos hε _,
197188
have A : ennreal.of_real (ε ^ (1/p)) ≠ 0,
198189
by simp only [ne.def, ennreal.of_real_eq_zero, not_le, I],
199-
have B : 1 ≤ ennreal.of_real p,
200-
{ convert ennreal.of_real_le_of_real h'p, exact ennreal.of_real_one.symm },
201-
rcases hf.exists_has_compact_support_snorm_sub_le ennreal.coe_ne_top B A
190+
have B : ennreal.of_real p ≠ 0, by simpa only [ne.def, ennreal.of_real_eq_zero, not_le] using hp,
191+
rcases hf.exists_has_compact_support_snorm_sub_le ennreal.coe_ne_top A
202192
with ⟨g, g_support, hg, g_cont, g_mem⟩,
203193
change snorm _ (ennreal.of_real p) _ ≤ _ at hg,
204194
refine ⟨g, g_support, _, g_cont, g_mem⟩,
205-
rwa [(hf.sub g_mem).snorm_eq_integral_rpow_norm (zero_lt_one.trans_le B).ne'
206-
ennreal.coe_ne_top, ennreal.of_real_le_of_real_iff I.le, one_div,
207-
ennreal.to_real_of_real (zero_le_one.trans h'p), real.rpow_le_rpow_iff _ hε.le _] at hg,
208-
{ exact integral_nonneg (λ x, real.rpow_nonneg_of_nonneg (norm_nonneg _) _) },
209-
{ exact inv_pos.2 (zero_lt_one.trans_le h'p) }
195+
rwa [(hf.sub g_mem).snorm_eq_integral_rpow_norm B ennreal.coe_ne_top,
196+
ennreal.of_real_le_of_real_iff I.le, one_div,
197+
ennreal.to_real_of_real hp.le, real.rpow_le_rpow_iff _ hε.le (inv_pos.2 hp)] at hg,
198+
exact integral_nonneg (λ x, real.rpow_nonneg_of_nonneg (norm_nonneg _) _),
210199
end
211200

212201
/-- In a locally compact space, any integrable function can be approximated by compactly supported
@@ -217,7 +206,7 @@ lemma integrable.exists_has_compact_support_lintegral_sub_le [locally_compact_sp
217206
∧ integrable g μ :=
218207
begin
219208
simp only [← mem_ℒp_one_iff_integrable, ← snorm_one_eq_lintegral_nnnorm] at hf ⊢,
220-
exact hf.exists_has_compact_support_snorm_sub_le ennreal.one_ne_top le_rfl hε,
209+
exact hf.exists_has_compact_support_snorm_sub_le ennreal.one_ne_top hε,
221210
end
222211

223212
/-- In a locally compact space, any integrable function can be approximated by compactly supported
@@ -229,12 +218,12 @@ lemma integrable.exists_has_compact_support_integral_sub_le [locally_compact_spa
229218
begin
230219
simp only [← mem_ℒp_one_iff_integrable, ← snorm_one_eq_lintegral_nnnorm,
231220
← ennreal.of_real_one] at hf ⊢,
232-
simpa using hf.exists_has_compact_support_integral_rpow_sub_le le_rfl hε,
221+
simpa using hf.exists_has_compact_support_integral_rpow_sub_le zero_lt_one hε,
233222
end
234223

235-
/-- Any function in `ℒp` can be approximated by bounded continuous functions when `1 ≤ p < ∞`,
224+
/-- Any function in `ℒp` can be approximated by bounded continuous functions when `p < ∞`,
236225
version in terms of `snorm`. -/
237-
lemma mem_ℒp.exists_bounded_continuous_snorm_sub_le [μ.weakly_regular] (hp : p ≠ ∞) (h'p : 1 ≤ p)
226+
lemma mem_ℒp.exists_bounded_continuous_snorm_sub_le [μ.weakly_regular] (hp : p ≠ ∞)
238227
{f : α → E} (hf : mem_ℒp f p μ) {ε : ℝ≥0∞} (hε : ε ≠ 0) :
239228
∃ (g : α →ᵇ E), snorm (f - g) p μ ≤ ε ∧ mem_ℒp g p μ :=
240229
begin
@@ -245,7 +234,7 @@ begin
245234
-- It suffices to check that the set of functions we consider approximates characteristic
246235
-- functions, is stable under addition and made of ae strongly measurable functions.
247236
-- First check the latter easy facts.
248-
apply hf.induction_dense hp h'p _ _ _ _ hε, rotate,
237+
apply hf.induction_dense hp _ _ _ _ hε, rotate,
249238
-- stability under addition
250239
{ rintros f g ⟨f_cont, f_mem, f_bd⟩ ⟨g_cont, g_mem, g_bd⟩,
251240
refine ⟨f_cont.add g_cont, f_mem.add g_mem, _⟩,
@@ -257,58 +246,46 @@ begin
257246
-- We are left with approximating characteristic functions.
258247
-- This follows from `exists_continuous_snorm_sub_le_of_closed`.
259248
assume c t ht htμ ε hε,
260-
have h'ε : ε / 20, by simpa using,
249+
rcases exists_Lp_half E μ p hε with ⟨δ, δpos, hδ⟩,
261250
obtain ⟨η, ηpos, hη⟩ : ∃ (η : ℝ≥0), 0 < η ∧ ∀ (s : set α), μ s ≤ η →
262-
snorm (s.indicator (λ x, c)) p μ ≤ ε / 2, from exists_snorm_indicator_le hp c h'ε,
251+
snorm (s.indicator (λ x, c)) p μ ≤ δ, from exists_snorm_indicator_le hp c δpos.ne',
263252
have hη_pos' : (0 : ℝ≥0∞) < η, from ennreal.coe_pos.2 ηpos,
264253
obtain ⟨s, st, s_closed, μs⟩ : ∃ s ⊆ t, is_closed s ∧ μ (t \ s) < η,
265254
from ht.exists_is_closed_diff_lt htμ.ne hη_pos'.ne',
266255
have hsμ : μ s < ∞, from (measure_mono st).trans_lt htμ,
267-
have I1 : snorm (s.indicator (λ y, c) - t.indicator (λ y, c)) p μ ≤ ε/2,
256+
have I1 : snorm (s.indicator (λ y, c) - t.indicator (λ y, c)) p μ ≤ δ,
268257
{ rw [← snorm_neg, neg_sub, ← indicator_diff st],
269258
exact (hη _ μs.le) },
270259
rcases exists_continuous_snorm_sub_le_of_closed hp s_closed is_open_univ (subset_univ _)
271-
hsμ.ne c h'ε with ⟨f, f_cont, I2, f_bound, -, f_mem⟩,
272-
have I3 : snorm (f - t.indicator (λ y, c)) p μ ≤ ε, from calc
273-
snorm (f - t.indicator (λ y, c)) p μ
274-
= snorm ((f - s.indicator (λ y, c)) + (s.indicator (λ y, c) - t.indicator (λ y, c))) p μ :
275-
by simp only [sub_add_sub_cancel]
276-
... ≤ snorm (f - s.indicator (λ y, c)) p μ
277-
+ snorm (s.indicator (λ y, c) - t.indicator (λ y, c)) p μ :
278-
begin
279-
refine snorm_add_le _ _ h'p,
280-
{ exact f_mem.ae_strongly_measurable.sub
281-
(ae_strongly_measurable_const.indicator s_closed.measurable_set) },
282-
{ exact (ae_strongly_measurable_const.indicator s_closed.measurable_set).sub
283-
(ae_strongly_measurable_const.indicator ht) },
284-
end
285-
... ≤ ε/2 + ε/2 : add_le_add I2 I1
286-
... = ε : ennreal.add_halves _,
260+
hsμ.ne c δpos.ne' with ⟨f, f_cont, I2, f_bound, -, f_mem⟩,
261+
have I3 : snorm (f - t.indicator (λ y, c)) p μ ≤ ε,
262+
{ convert (hδ _ _ (f_mem.ae_strongly_measurable.sub
263+
(ae_strongly_measurable_const.indicator s_closed.measurable_set))
264+
((ae_strongly_measurable_const.indicator s_closed.measurable_set).sub
265+
(ae_strongly_measurable_const.indicator ht)) I2 I1).le,
266+
simp only [sub_add_sub_cancel] },
287267
refine ⟨f, I3, f_cont, f_mem, _⟩,
288268
exact (bounded_continuous_function.of_normed_add_comm_group f f_cont _ f_bound).bounded_range,
289269
end
290270

291-
/-- Any function in `ℒp` can be approximated by bounded continuous functions when `1 ≤ p < ∞`,
271+
/-- Any function in `ℒp` can be approximated by bounded continuous functions when `0 < p < ∞`,
292272
version in terms of `∫`. -/
293273
lemma mem_ℒp.exists_bounded_continuous_integral_rpow_sub_le
294-
[μ.weakly_regular] {p : ℝ} (h'p : 1 p)
274+
[μ.weakly_regular] {p : ℝ} (hp : 0 < p)
295275
{f : α → E} (hf : mem_ℒp f (ennreal.of_real p) μ) {ε : ℝ} (hε : 0 < ε) :
296276
∃ (g : α →ᵇ E), ∫ x, ‖f x - g x‖^p ∂μ ≤ ε ∧ mem_ℒp g (ennreal.of_real p) μ :=
297277
begin
298278
have I : 0 < ε ^ (1/p) := real.rpow_pos_of_pos hε _,
299279
have A : ennreal.of_real (ε ^ (1/p)) ≠ 0,
300280
by simp only [ne.def, ennreal.of_real_eq_zero, not_le, I],
301-
have B : 1 ≤ ennreal.of_real p,
302-
{ convert ennreal.of_real_le_of_real h'p, exact ennreal.of_real_one.symm },
303-
rcases hf.exists_bounded_continuous_snorm_sub_le ennreal.coe_ne_top B A
304-
with ⟨g, hg, g_mem⟩,
281+
have B : ennreal.of_real p ≠ 0, by simpa only [ne.def, ennreal.of_real_eq_zero, not_le] using hp,
282+
rcases hf.exists_bounded_continuous_snorm_sub_le ennreal.coe_ne_top A with ⟨g, hg, g_mem⟩,
305283
change snorm _ (ennreal.of_real p) _ ≤ _ at hg,
306284
refine ⟨g, _, g_mem⟩,
307-
rwa [(hf.sub g_mem).snorm_eq_integral_rpow_norm (zero_lt_one.trans_le B).ne'
308-
ennreal.coe_ne_top, ennreal.of_real_le_of_real_iff I.le, one_div,
309-
ennreal.to_real_of_real (zero_le_one.trans h'p), real.rpow_le_rpow_iff _ hε.le _] at hg,
310-
{ exact integral_nonneg (λ x, real.rpow_nonneg_of_nonneg (norm_nonneg _) _) },
311-
{ exact inv_pos.2 (zero_lt_one.trans_le h'p) }
285+
rwa [(hf.sub g_mem).snorm_eq_integral_rpow_norm B ennreal.coe_ne_top,
286+
ennreal.of_real_le_of_real_iff I.le, one_div,
287+
ennreal.to_real_of_real hp.le, real.rpow_le_rpow_iff _ hε.le (inv_pos.2 hp)] at hg,
288+
exact integral_nonneg (λ x, real.rpow_nonneg_of_nonneg (norm_nonneg _) _),
312289
end
313290

314291
/-- Any integrable function can be approximated by bounded continuous functions,
@@ -318,7 +295,7 @@ lemma integrable.exists_bounded_continuous_lintegral_sub_le [μ.weakly_regular]
318295
∃ (g : α →ᵇ E), ∫⁻ x, ‖f x - g x‖₊ ∂μ ≤ ε ∧ integrable g μ :=
319296
begin
320297
simp only [← mem_ℒp_one_iff_integrable, ← snorm_one_eq_lintegral_nnnorm] at hf ⊢,
321-
exact hf.exists_bounded_continuous_snorm_sub_le ennreal.one_ne_top le_rfl hε,
298+
exact hf.exists_bounded_continuous_snorm_sub_le ennreal.one_ne_top hε,
322299
end
323300

324301
/-- Any integrable function can be approximated by bounded continuous functions,
@@ -329,7 +306,7 @@ lemma integrable.exists_bounded_continuous_integral_sub_le [μ.weakly_regular]
329306
begin
330307
simp only [← mem_ℒp_one_iff_integrable, ← snorm_one_eq_lintegral_nnnorm,
331308
← ennreal.of_real_one] at hf ⊢,
332-
simpa using hf.exists_bounded_continuous_integral_rpow_sub_le le_rfl hε,
309+
simpa using hf.exists_bounded_continuous_integral_rpow_sub_le zero_lt_one hε,
333310
end
334311

335312
namespace Lp
@@ -348,7 +325,7 @@ begin
348325
intros ε hε,
349326
have A : ennreal.of_real ε ≠ 0, by simp only [ne.def, ennreal.of_real_eq_zero, not_le, hε],
350327
obtain ⟨g, hg, g_mem⟩ : ∃ (g : α →ᵇ E), snorm (f - g) p μ ≤ ennreal.of_real ε ∧ mem_ℒp g p μ,
351-
from (Lp.mem_ℒp f).exists_bounded_continuous_snorm_sub_le hp _i.out A,
328+
from (Lp.mem_ℒp f).exists_bounded_continuous_snorm_sub_le hp A,
352329
refine ⟨g_mem.to_Lp _, _, ⟨g, rfl⟩⟩,
353330
simp only [dist_eq_norm, metric.mem_closed_ball'],
354331
rw Lp.norm_def,

0 commit comments

Comments
 (0)