Skip to content

Commit 03cf112

Browse files
committed
feat: remove completeness assumption in Sobolev inequality (#14262)
1 parent 85d5f96 commit 03cf112

3 files changed

Lines changed: 35 additions & 14 deletions

File tree

Mathlib/Analysis/Normed/Group/Completion.lean

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,10 @@ instance [SeminormedAddCommGroup E] : NormedAddCommGroup (Completion E) where
4343
exact Continuous.comp Completion.continuous_extension continuous_sub
4444
· rw [← Completion.coe_sub, norm_coe, Completion.dist_eq, dist_eq_norm]
4545

46+
@[simp]
47+
theorem nnnorm_coe {E} [SeminormedAddCommGroup E] (x : E) : ‖(x : Completion E)‖₊ = ‖x‖₊ := by
48+
simp [nnnorm]
49+
4650
end Completion
4751

4852
end UniformSpace

Mathlib/MeasureTheory/Integral/IntegralEqImproper.lean

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1022,6 +1022,24 @@ theorem _root_.HasCompactSupport.integral_Iic_deriv_eq (hf : ContDiff ℝ 1 f)
10221022
rw [hasCompactSupport_iff_eventuallyEq, Filter.coclosedCompact_eq_cocompact] at h2f
10231023
exact h2f.filter_mono _root_.atBot_le_cocompact |>.tendsto
10241024

1025+
open UniformSpace in
1026+
lemma _root_.HasCompactSupport.ennnorm_le_lintegral_Ici_deriv
1027+
{F : Type*} [NormedAddCommGroup F] [NormedSpace ℝ F]
1028+
{f : ℝ → F} (hf : ContDiff ℝ 1 f) (h'f : HasCompactSupport f) (x : ℝ) :
1029+
(‖f x‖₊ : ℝ≥0∞) ≤ ∫⁻ y in Iic x, ‖deriv f y‖₊ := by
1030+
let I : F →L[ℝ] Completion F := Completion.toComplL
1031+
let f' : ℝ → Completion F := I ∘ f
1032+
have hf' : ContDiff ℝ 1 f' := hf.continuousLinearMap_comp I
1033+
have h'f' : HasCompactSupport f' := h'f.comp_left rfl
1034+
have : (‖f' x‖₊ : ℝ≥0∞) ≤ ∫⁻ y in Iic x, ‖deriv f' y‖₊ := by
1035+
rw [← HasCompactSupport.integral_Iic_deriv_eq hf' h'f' x]
1036+
exact ennnorm_integral_le_lintegral_ennnorm _
1037+
convert this with y
1038+
· simp [f', I, Completion.nnnorm_coe]
1039+
· rw [fderiv.comp_deriv _ I.differentiableAt (hf.differentiable le_rfl _)]
1040+
simp only [ContinuousLinearMap.fderiv]
1041+
simp [I]
1042+
10251043
end IicFTC
10261044

10271045
section UnivFTC

Mathlib/MeasureTheory/Integral/SobolevInequality.lean

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -263,11 +263,13 @@ theorem lintegral_mul_prod_lintegral_pow_le {p : ℝ} (hp₀ : 0 ≤ p)
263263

264264
/-- Special case of the grid-lines lemma `lintegral_mul_prod_lintegral_pow_le`, taking the extremal
265265
exponent `p = (#ι - 1)⁻¹`. -/
266-
theorem lintegral_prod_lintegral_pow_le [Nontrivial ι]
266+
theorem lintegral_prod_lintegral_pow_le
267267
{p : ℝ} (hp : Real.IsConjExponent #ι p)
268268
{f} (hf : Measurable f) :
269269
∫⁻ x, ∏ i, (∫⁻ xᵢ, f (update x i xᵢ) ∂μ i) ^ ((1 : ℝ) / (#ι - 1 : ℝ)) ∂.pi μ
270270
≤ (∫⁻ x, f x ∂.pi μ) ^ p := by
271+
have : Nontrivial ι :=
272+
Fintype.one_lt_card_iff_nontrivial.mp (by exact_mod_cast hp.one_lt)
271273
have h0 : (1:ℝ) < #ι := by norm_cast; exact Fintype.one_lt_card
272274
have h1 : (0:ℝ) < #ι - 1 := by linarith
273275
have h2 : 0 ≤ ((1 : ℝ) / (#ι - 1 : ℝ)) := by positivity
@@ -279,7 +281,7 @@ theorem lintegral_prod_lintegral_pow_le [Nontrivial ι]
279281

280282
/-! ## The Gagliardo-Nirenberg-Sobolev inequality -/
281283

282-
variable {F : Type*} [NormedAddCommGroup F] [NormedSpace ℝ F] [CompleteSpace F]
284+
variable {F : Type*} [NormedAddCommGroup F] [NormedSpace ℝ F]
283285

284286
/-- The **Gagliardo-Nirenberg-Sobolev inequality**. Let `u` be a continuously differentiable
285287
compactly-supported function `u` on `ℝⁿ`, for `n ≥ 2`. (More literally we encode `ℝⁿ` as
@@ -299,8 +301,6 @@ theorem lintegral_pow_le_pow_lintegral_fderiv_aux
299301
By taking the product over these `n` factors, raising them to the power `(n-1)⁻¹` and integrating,
300302
we get the inequality `∫ |u| ^ (n/(n-1)) ≤ ∫ x, ∏ i, (∫ xᵢ, |Du(update x i xᵢ)|)^(n-1)⁻¹`.
301303
The result then follows from the grid-lines lemma. -/
302-
have : Nontrivial ι :=
303-
Fintype.one_lt_card_iff_nontrivial.mp (by exact_mod_cast hp.one_lt)
304304
have : (1:ℝ) ≤ ↑#ι - 1 := by
305305
have hι : (2:ℝ) ≤ #ι := by exact_mod_cast hp.one_lt
306306
linarith
@@ -316,20 +316,18 @@ theorem lintegral_pow_le_pow_lintegral_fderiv_aux
316316
simp_rw [prod_const, card_univ]
317317
norm_cast
318318
_ ≤ ∫⁻ x, ∏ i, (∫⁻ xᵢ, ‖fderiv ℝ u (update x i xᵢ)‖₊) ^ ((1 : ℝ) / (#ι - 1 : ℝ)) := ?_
319-
_ ≤ (∫⁻ x, ‖fderiv ℝ u x‖₊) ^ p :=
319+
_ ≤ (∫⁻ x, ‖fderiv ℝ u x‖₊) ^ p := by
320320
-- apply the grid-lines lemma
321-
lintegral_prod_lintegral_pow_le _ hp (by fun_prop)
321+
apply lintegral_prod_lintegral_pow_le _ hp
322+
have : Continuous (fderiv ℝ u) := hu.continuous_fderiv le_rfl
323+
fun_prop
322324
-- we estimate |u x| using the fundamental theorem of calculus.
323325
gcongr with x i
324326
calc (‖u x‖₊ : ℝ≥0∞)
325-
= (‖∫ xᵢ in Iic (x i), deriv (u ∘ update x i) xᵢ‖₊ : ℝ≥0∞) := by
326-
-- apply the half-infinite fundamental theorem of calculus
327-
have h3u : ContDiff ℝ 1 (u ∘ update x i) := hu.comp (by convert contDiff_update 1 x i)
328-
have h4u : HasCompactSupport (u ∘ update x i) :=
329-
h2u.comp_closedEmbedding (closedEmbedding_update x i)
330-
simp [HasCompactSupport.integral_Iic_deriv_eq h3u h4u (x i)]
331-
_ ≤ ∫⁻ xᵢ in Iic (x i), ‖deriv (u ∘ update x i) xᵢ‖₊ :=
332-
ennnorm_integral_le_lintegral_ennnorm _ -- apply the triangle inequality
327+
_ ≤ ∫⁻ xᵢ in Iic (x i), ‖deriv (u ∘ update x i) xᵢ‖₊ := by
328+
apply le_trans (by simp) (HasCompactSupport.ennnorm_le_lintegral_Ici_deriv _ _ _)
329+
· exact hu.comp (by convert contDiff_update 1 x i)
330+
· exact h2u.comp_closedEmbedding (closedEmbedding_update x i)
333331
_ ≤ ∫⁻ xᵢ, (‖fderiv ℝ u (update x i xᵢ)‖₊ : ℝ≥0∞) := ?_
334332
gcongr with y; swap; exact Measure.restrict_le_self
335333
-- bound the derivative which appears
@@ -420,6 +418,7 @@ theorem lintegral_pow_le_pow_lintegral_fderiv {u : E → F}
420418
* (∫⁻ x, ‖fderiv ℝ u x‖₊ ∂(volume : Measure (ι → ℝ)).map e.symm) ^ p := by
421419
congr
422420
rw [lintegral_map _ e.symm.continuous.measurable]
421+
have : Continuous (fderiv ℝ u) := hu.continuous_fderiv le_rfl
423422
fun_prop
424423
rw [← ENNReal.mul_le_mul_left h3c ENNReal.coe_ne_top, ← mul_assoc, ← ENNReal.coe_mul, ← hC,
425424
ENNReal.coe_mul] at this

0 commit comments

Comments
 (0)