Imports
/-
Copyright (c) 2026 Gregory J. Loges. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Gregory J. Loges
-/
module
public import Physlib.SpaceAndTime.Space.IsDistBounded
public import Physlib.SpaceAndTime.Space.Module
public import Mathlib.MeasureTheory.Constructions.HaarToSphere
public import Mathlib.Analysis.SpecialFunctions.ImproperIntegralsIntegrability of norm powers on subsets of Space
i. Overview
This module contains results on the integrability of x ↦ ‖x‖ᵖ for real exponents p on subsets of
Space d.
The integrability of x ↦ ‖x‖ᵖ on ball 0 b and (ball 0 b)ᶜ follows from the 1d results
integrableOn_Ioo_rpow_iff and integrableOn_Ioi_rpow_iff after changing to spherical coordinates.
ii. Key results
integrableOn_norm_rpow_iff_of_isBounded_nhds: Necessary and sufficient condition for
integrability on a set s which is a bounded neighborhood of the origin.
integrableOn_norm_rpow_of_isBounded_compl_nhds: Integrability for all bounded sets s
with 0 ∉ closure s.
integrableOn_norm_rpow_of_compl_nhds: A sufficient condition for integrability on s
with 0 ∉ closure s.
radial_norm_power_spherical_integral_eq_space_integral: The spherical-coordinate integral
identity for integer powers of the norm against a Schwartz map.
iii. Table of contents
iv. References
@[expose] public sectionprivate lemma npow_indicator_rpow_eq {n : ℕ} {s : Set ℝ} (hs : 0 ∉ s) (p : ℝ) :
(fun r ↦ r ^ n • s.indicator (fun r ↦ r ^ p) r) = s.indicator (fun r ↦ r ^ (n + p)) := n:ℕs:Set ℝhs:0 ∉ sp:ℝ⊢ (fun r => r ^ n • s.indicator (fun r => r ^ p) r) = s.indicator fun r => r ^ (↑n + p)
n:ℕs:Set ℝhs:0 ∉ sp:ℝr:ℝ⊢ r ^ n • s.indicator (fun r => r ^ p) r = s.indicator (fun r => r ^ (↑n + p)) r
n:ℕs:Set ℝhs:0 ∉ sp:ℝr:ℝhr:r ∈ s⊢ r ^ n • s.indicator (fun r => r ^ p) r = s.indicator (fun r => r ^ (↑n + p)) rn:ℕs:Set ℝhs:0 ∉ sp:ℝr:ℝhr:r ∉ s⊢ r ^ n • s.indicator (fun r => r ^ p) r = s.indicator (fun r => r ^ (↑n + p)) r
n:ℕs:Set ℝhs:0 ∉ sp:ℝr:ℝhr:r ∈ s⊢ r ^ n • s.indicator (fun r => r ^ p) r = s.indicator (fun r => r ^ (↑n + p)) r All goals completed! 🐙
n:ℕs:Set ℝhs:0 ∉ sp:ℝr:ℝhr:r ∉ s⊢ r ^ n • s.indicator (fun r => r ^ p) r = s.indicator (fun r => r ^ (↑n + p)) r All goals completed! 🐙All goals completed! 🐙
private lemma radial_jacobian_zpow
{d p : ℕ} [NeZero d] {q : ℤ} (hp_int : (p : ℤ) = q + (d : ℤ))
(hp_pos : 0 < p) {r : ℝ} (hr : 0 < r) :
r ^ (d - 1) * r ^ q = r ^ (p - 1) := by d:ℕp:ℕinst✝:NeZero dq:ℤhp_int:↑p = q + ↑dhp_pos:0 < pr:ℝhr:0 < r⊢ r ^ (d - 1) * r ^ q = r ^ (p - 1)
have hz : r ≠ 0 := ne_of_gt hr d:ℕp:ℕinst✝:NeZero dq:ℤhp_int:↑p = q + ↑dhp_pos:0 < pr:ℝhr:0 < rhz:r ≠ 0⊢ r ^ (d - 1) * r ^ q = r ^ (p - 1)
calc
r ^ (d - 1) * r ^ q
= r ^ ((d - 1 : ℤ) + q) := by d:ℕp:ℕinst✝:NeZero dq:ℤhp_int:↑p = q + ↑dhp_pos:0 < pr:ℝhr:0 < rhz:r ≠ 0⊢ r ^ (d - 1) * r ^ q = r ^ (↑d - 1 + q)
rw [← Nat.cast_pred (Nat.pos_of_neZero d), d:ℕp:ℕinst✝:NeZero dq:ℤhp_int:↑p = q + ↑dhp_pos:0 < pr:ℝhr:0 < rhz:r ≠ 0⊢ r ^ (d - 1) * r ^ q = r ^ (↑(d - 1) + q) All goals completed! 🐙 ← zpow_natCast, d:ℕp:ℕinst✝:NeZero dq:ℤhp_int:↑p = q + ↑dhp_pos:0 < pr:ℝhr:0 < rhz:r ≠ 0⊢ r ^ ↑(d - 1) * r ^ q = r ^ (↑(d - 1) + q) All goals completed! 🐙 ← zpow_add₀ hz d:ℕp:ℕinst✝:NeZero dq:ℤhp_int:↑p = q + ↑dhp_pos:0 < pr:ℝhr:0 < rhz:r ≠ 0⊢ r ^ (↑(d - 1) + q) = r ^ (↑(d - 1) + q) All goals completed! 🐙] All goals completed! 🐙
_ = r ^ ((p - 1 : ℕ) : ℤ) := by d:ℕp:ℕinst✝:NeZero dq:ℤhp_int:↑p = q + ↑dhp_pos:0 < pr:ℝhr:0 < rhz:r ≠ 0⊢ r ^ (↑d - 1 + q) = r ^ ↑(p - 1)
congr 1 e_a d:ℕp:ℕinst✝:NeZero dq:ℤhp_int:↑p = q + ↑dhp_pos:0 < pr:ℝhr:0 < rhz:r ≠ 0⊢ ↑d - 1 + q = ↑(p - 1); omega All goals completed! 🐙
_ = r ^ (p - 1) := by d:ℕp:ℕinst✝:NeZero dq:ℤhp_int:↑p = q + ↑dhp_pos:0 < pr:ℝhr:0 < rhz:r ≠ 0⊢ r ^ ↑(p - 1) = r ^ (p - 1)
rw [zpow_natCast d:ℕp:ℕinst✝:NeZero dq:ℤhp_int:↑p = q + ↑dhp_pos:0 < pr:ℝhr:0 < rhz:r ≠ 0⊢ r ^ (p - 1) = r ^ (p - 1) All goals completed! 🐙] All goals completed! 🐙
lemma radial_norm_power_spherical_integral_eq_space_integral
{d p : ℕ} [NeZero d] {q : ℤ} (hp_int : (p : ℤ) = q + (d : ℤ))
(hp_pos : 0 < p) (η : 𝓢(Space d, ℝ)) :
∫ x : Space d, η x * ‖x‖ ^ q =
∫ (n : ↑(Metric.sphere (0 : Space d) 1)),
∫ (r : Set.Ioi (0 : ℝ)),
r.1 ^ (p - 1) * η (r.1 • n.1)
∂(.comap Subtype.val volume)
∂(volume (α := Space d).toSphere) := by d:ℕp:ℕinst✝:NeZero dq:ℤhp_int:↑p = q + ↑dhp_pos:0 < pη:𝓢(Space d, ℝ)⊢ ∫ (x : Space d), η x * ‖x‖ ^ q =
∫ (n : ↑(Metric.sphere 0 1)),
∫ (r : ↑(Set.Ioi 0)), ↑r ^ (p - 1) * η (↑r • ↑n) ∂Measure.comap Subtype.val volume ∂volume.toSphere
have hf : Integrable (fun x : Space d => η x * ‖x‖ ^ q) volume :=
IsDistBounded.integrable_space_mul (IsDistBounded.pow q (by d:ℕp:ℕinst✝:NeZero dq:ℤhp_int:↑p = q + ↑dhp_pos:0 < pη:𝓢(Space d, ℝ)⊢ -↑(d - 1) ≤ q d:ℕp:ℕinst✝:NeZero dq:ℤhp_int:↑p = q + ↑dhp_pos:0 < pη:𝓢(Space d, ℝ)hf:Integrable (fun x => η x * ‖x‖ ^ q) volume⊢ ∫ (x : Space d), η x * ‖x‖ ^ q =
∫ (n : ↑(Metric.sphere 0 1)),
∫ (r : ↑(Set.Ioi 0)), ↑r ^ (p - 1) * η (↑r • ↑n) ∂Measure.comap Subtype.val volume ∂volume.toSphere omega All goals completed! 🐙 d:ℕp:ℕinst✝:NeZero dq:ℤhp_int:↑p = q + ↑dhp_pos:0 < pη:𝓢(Space d, ℝ)hf:Integrable (fun x => η x * ‖x‖ ^ q) volume⊢ ∫ (x : Space d), η x * ‖x‖ ^ q =
∫ (n : ↑(Metric.sphere 0 1)),
∫ (r : ↑(Set.Ioi 0)), ↑r ^ (p - 1) * η (↑r • ↑n) ∂Measure.comap Subtype.val volume ∂volume.toSphere)) η d:ℕp:ℕinst✝:NeZero dq:ℤhp_int:↑p = q + ↑dhp_pos:0 < pη:𝓢(Space d, ℝ)hf:Integrable (fun x => η x * ‖x‖ ^ q) volume⊢ ∫ (x : Space d), η x * ‖x‖ ^ q =
∫ (n : ↑(Metric.sphere 0 1)),
∫ (r : ↑(Set.Ioi 0)), ↑r ^ (p - 1) * η (↑r • ↑n) ∂Measure.comap Subtype.val volume ∂volume.toSphere
rw [integral_volume_eq_spherical_integral
(d := d) (fun x : Space d => η x * ‖x‖ ^ q) hf d:ℕp:ℕinst✝:NeZero dq:ℤhp_int:↑p = q + ↑dhp_pos:0 < pη:𝓢(Space d, ℝ)hf:Integrable (fun x => η x * ‖x‖ ^ q) volume⊢ ∫ (n : ↑(Metric.sphere 0 1)),
∫ (r : ↑(Set.Ioi 0)),
↑r ^ (d - 1) • (η (↑r • ↑n) * ‖↑r • ↑n‖ ^ q) ∂Measure.comap Subtype.val volume ∂volume.toSphere =
∫ (n : ↑(Metric.sphere 0 1)),
∫ (r : ↑(Set.Ioi 0)), ↑r ^ (p - 1) * η (↑r • ↑n) ∂Measure.comap Subtype.val volume ∂volume.toSphere d:ℕp:ℕinst✝:NeZero dq:ℤhp_int:↑p = q + ↑dhp_pos:0 < pη:𝓢(Space d, ℝ)hf:Integrable (fun x => η x * ‖x‖ ^ q) volume⊢ ∫ (n : ↑(Metric.sphere 0 1)),
∫ (r : ↑(Set.Ioi 0)),
↑r ^ (d - 1) • (η (↑r • ↑n) * ‖↑r • ↑n‖ ^ q) ∂Measure.comap Subtype.val volume ∂volume.toSphere =
∫ (n : ↑(Metric.sphere 0 1)),
∫ (r : ↑(Set.Ioi 0)), ↑r ^ (p - 1) * η (↑r • ↑n) ∂Measure.comap Subtype.val volume ∂volume.toSphere] d:ℕp:ℕinst✝:NeZero dq:ℤhp_int:↑p = q + ↑dhp_pos:0 < pη:𝓢(Space d, ℝ)hf:Integrable (fun x => η x * ‖x‖ ^ q) volume⊢ ∫ (n : ↑(Metric.sphere 0 1)),
∫ (r : ↑(Set.Ioi 0)),
↑r ^ (d - 1) • (η (↑r • ↑n) * ‖↑r • ↑n‖ ^ q) ∂Measure.comap Subtype.val volume ∂volume.toSphere =
∫ (n : ↑(Metric.sphere 0 1)),
∫ (r : ↑(Set.Ioi 0)), ↑r ^ (p - 1) * η (↑r • ↑n) ∂Measure.comap Subtype.val volume ∂volume.toSphere
congr e_f d:ℕp:ℕinst✝:NeZero dq:ℤhp_int:↑p = q + ↑dhp_pos:0 < pη:𝓢(Space d, ℝ)hf:Integrable (fun x => η x * ‖x‖ ^ q) volume⊢ (fun n => ∫ (r : ↑(Set.Ioi 0)), ↑r ^ (d - 1) • (η (↑r • ↑n) * ‖↑r • ↑n‖ ^ q) ∂Measure.comap Subtype.val volume) =
fun n => ∫ (r : ↑(Set.Ioi 0)), ↑r ^ (p - 1) * η (↑r • ↑n) ∂Measure.comap Subtype.val volume
funext n e_f d:ℕp:ℕinst✝:NeZero dq:ℤhp_int:↑p = q + ↑dhp_pos:0 < pη:𝓢(Space d, ℝ)hf:Integrable (fun x => η x * ‖x‖ ^ q) volumen:↑(Metric.sphere 0 1)⊢ ∫ (r : ↑(Set.Ioi 0)), ↑r ^ (d - 1) • (η (↑r • ↑n) * ‖↑r • ↑n‖ ^ q) ∂Measure.comap Subtype.val volume =
∫ (r : ↑(Set.Ioi 0)), ↑r ^ (p - 1) * η (↑r • ↑n) ∂Measure.comap Subtype.val volume
congr e_f.e_f d:ℕp:ℕinst✝:NeZero dq:ℤhp_int:↑p = q + ↑dhp_pos:0 < pη:𝓢(Space d, ℝ)hf:Integrable (fun x => η x * ‖x‖ ^ q) volumen:↑(Metric.sphere 0 1)⊢ (fun r => ↑r ^ (d - 1) • (η (↑r • ↑n) * ‖↑r • ↑n‖ ^ q)) = fun r => ↑r ^ (p - 1) * η (↑r • ↑n)
funext r e_f.e_f d:ℕp:ℕinst✝:NeZero dq:ℤhp_int:↑p = q + ↑dhp_pos:0 < pη:𝓢(Space d, ℝ)hf:Integrable (fun x => η x * ‖x‖ ^ q) volumen:↑(Metric.sphere 0 1)r:↑(Set.Ioi 0)⊢ ↑r ^ (d - 1) • (η (↑r • ↑n) * ‖↑r • ↑n‖ ^ q) = ↑r ^ (p - 1) * η (↑r • ↑n)
have hr : 0 < (r : ℝ) := r.2 e_f.e_f d:ℕp:ℕinst✝:NeZero dq:ℤhp_int:↑p = q + ↑dhp_pos:0 < pη:𝓢(Space d, ℝ)hf:Integrable (fun x => η x * ‖x‖ ^ q) volumen:↑(Metric.sphere 0 1)r:↑(Set.Ioi 0)hr:0 < ↑r⊢ ↑r ^ (d - 1) • (η (↑r • ↑n) * ‖↑r • ↑n‖ ^ q) = ↑r ^ (p - 1) * η (↑r • ↑n)
have hnorm := norm_smul_sphere n (le_of_lt hr) e_f.e_f d:ℕp:ℕinst✝:NeZero dq:ℤhp_int:↑p = q + ↑dhp_pos:0 < pη:𝓢(Space d, ℝ)hf:Integrable (fun x => η x * ‖x‖ ^ q) volumen:↑(Metric.sphere 0 1)r:↑(Set.Ioi 0)hr:0 < ↑rhnorm:‖↑r • ↑n‖ = ↑r⊢ ↑r ^ (d - 1) • (η (↑r • ↑n) * ‖↑r • ↑n‖ ^ q) = ↑r ^ (p - 1) * η (↑r • ↑n)
simp only [smul_eq_mul] e_f.e_f d:ℕp:ℕinst✝:NeZero dq:ℤhp_int:↑p = q + ↑dhp_pos:0 < pη:𝓢(Space d, ℝ)hf:Integrable (fun x => η x * ‖x‖ ^ q) volumen:↑(Metric.sphere 0 1)r:↑(Set.Ioi 0)hr:0 < ↑rhnorm:‖↑r • ↑n‖ = ↑r⊢ ↑r ^ (d - 1) * (η (↑r • ↑n) * ‖↑r • ↑n‖ ^ q) = ↑r ^ (p - 1) * η (↑r • ↑n)
rw [hnorm, e_f.e_f d:ℕp:ℕinst✝:NeZero dq:ℤhp_int:↑p = q + ↑dhp_pos:0 < pη:𝓢(Space d, ℝ)hf:Integrable (fun x => η x * ‖x‖ ^ q) volumen:↑(Metric.sphere 0 1)r:↑(Set.Ioi 0)hr:0 < ↑rhnorm:‖↑r • ↑n‖ = ↑r⊢ ↑r ^ (d - 1) * (η (↑r • ↑n) * ↑r ^ q) = ↑r ^ (p - 1) * η (↑r • ↑n) e_f.e_f d:ℕp:ℕinst✝:NeZero dq:ℤhp_int:↑p = q + ↑dhp_pos:0 < pη:𝓢(Space d, ℝ)hf:Integrable (fun x => η x * ‖x‖ ^ q) volumen:↑(Metric.sphere 0 1)r:↑(Set.Ioi 0)hr:0 < ↑rhnorm:‖↑r • ↑n‖ = ↑r⊢ ↑r ^ (d - 1) * (η (↑r • ↑n) * ↑r ^ q) = ↑r ^ (d - 1) * ↑r ^ q * η (↑r • ↑n) ← radial_jacobian_zpow hp_int hp_pos hr e_f.e_f d:ℕp:ℕinst✝:NeZero dq:ℤhp_int:↑p = q + ↑dhp_pos:0 < pη:𝓢(Space d, ℝ)hf:Integrable (fun x => η x * ‖x‖ ^ q) volumen:↑(Metric.sphere 0 1)r:↑(Set.Ioi 0)hr:0 < ↑rhnorm:‖↑r • ↑n‖ = ↑r⊢ ↑r ^ (d - 1) * (η (↑r • ↑n) * ↑r ^ q) = ↑r ^ (d - 1) * ↑r ^ q * η (↑r • ↑n)e_f.e_f d:ℕp:ℕinst✝:NeZero dq:ℤhp_int:↑p = q + ↑dhp_pos:0 < pη:𝓢(Space d, ℝ)hf:Integrable (fun x => η x * ‖x‖ ^ q) volumen:↑(Metric.sphere 0 1)r:↑(Set.Ioi 0)hr:0 < ↑rhnorm:‖↑r • ↑n‖ = ↑r⊢ ↑r ^ (d - 1) * (η (↑r • ↑n) * ↑r ^ q) = ↑r ^ (d - 1) * ↑r ^ q * η (↑r • ↑n)]e_f.e_f d:ℕp:ℕinst✝:NeZero dq:ℤhp_int:↑p = q + ↑dhp_pos:0 < pη:𝓢(Space d, ℝ)hf:Integrable (fun x => η x * ‖x‖ ^ q) volumen:↑(Metric.sphere 0 1)r:↑(Set.Ioi 0)hr:0 < ↑rhnorm:‖↑r • ↑n‖ = ↑r⊢ ↑r ^ (d - 1) * (η (↑r • ↑n) * ↑r ^ q) = ↑r ^ (d - 1) * ↑r ^ q * η (↑r • ↑n)
ring All goals completed! 🐙
The function x ↦ ‖x‖ᵖ is integrable on {x : Space d | 0 ≤ ‖x‖ < b} iff 0 < d + p.
lemma integrableOn_norm_rpow_ball_iff {d : ℕ} [NeZero d] {b : ℝ} (hb : 0 < b) (p : ℝ) :
IntegrableOn (fun x : Space d ↦ ‖x‖ ^ p) (Metric.ball 0 b) ↔ 0 < d + p := by d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝ⊢ IntegrableOn (fun x => ‖x‖ ^ p) (Metric.ball 0 b) volume ↔ 0 < ↑d + p
let f : Space d → ENNReal := (Metric.ball 0 b).indicator (fun x ↦ ‖‖x‖ ^ p‖ₑ) d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑ⊢ IntegrableOn (fun x => ‖x‖ ^ p) (Metric.ball 0 b) volume ↔ 0 < ↑d + p
let g : ℝ → ℝ := (Set.Ioo 0 b).indicator (fun r ↦ r ^ p) d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ p⊢ IntegrableOn (fun x => ‖x‖ ^ p) (Metric.ball 0 b) volume ↔ 0 < ↑d + p
have hfg : f =ᵐ[volume] fun x ↦ ‖g ‖x‖‖ₑ := by
apply ae_iff.mpr d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ p⊢ volume {a | ¬f a = (fun x => ‖g ‖x‖‖ₑ) a} = 0 d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ phfg:f =ᵐ[volume] fun x => ‖g ‖x‖‖ₑ⊢ IntegrableOn (fun x => ‖x‖ ^ p) (Metric.ball 0 b) volume ↔ 0 < ↑d + p
suffices {x | f x ≠ ‖g ‖x‖‖ₑ} = if p = 0 then {0} else ∅ by d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ pthis:{x | f x ≠ ‖g ‖x‖‖ₑ} = if p = 0 then {0} else ∅⊢ volume {a | ¬f a = (fun x => ‖g ‖x‖‖ₑ) a} = 0 d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ p⊢ {x | f x ≠ ‖g ‖x‖‖ₑ} = if p = 0 then {0} else ∅ d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ phfg:f =ᵐ[volume] fun x => ‖g ‖x‖‖ₑ⊢ IntegrableOn (fun x => ‖x‖ ^ p) (Metric.ball 0 b) volume ↔ 0 < ↑d + p by_cases p = 0 pos d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ pthis:{x | f x ≠ ‖g ‖x‖‖ₑ} = if p = 0 then {0} else ∅h✝:p = 0⊢ volume {a | ¬f a = (fun x => ‖g ‖x‖‖ₑ) a} = 0neg d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ pthis:{x | f x ≠ ‖g ‖x‖‖ₑ} = if p = 0 then {0} else ∅h✝:¬p = 0⊢ volume {a | ¬f a = (fun x => ‖g ‖x‖‖ₑ) a} = 0 d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ p⊢ {x | f x ≠ ‖g ‖x‖‖ₑ} = if p = 0 then {0} else ∅ d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ phfg:f =ᵐ[volume] fun x => ‖g ‖x‖‖ₑ⊢ IntegrableOn (fun x => ‖x‖ ^ p) (Metric.ball 0 b) volume ↔ 0 < ↑d + p <;> pos d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ pthis:{x | f x ≠ ‖g ‖x‖‖ₑ} = if p = 0 then {0} else ∅h✝:p = 0⊢ volume {a | ¬f a = (fun x => ‖g ‖x‖‖ₑ) a} = 0neg d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ pthis:{x | f x ≠ ‖g ‖x‖‖ₑ} = if p = 0 then {0} else ∅h✝:¬p = 0⊢ volume {a | ¬f a = (fun x => ‖g ‖x‖‖ₑ) a} = 0 d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ p⊢ {x | f x ≠ ‖g ‖x‖‖ₑ} = if p = 0 then {0} else ∅ d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ phfg:f =ᵐ[volume] fun x => ‖g ‖x‖‖ₑ⊢ IntegrableOn (fun x => ‖x‖ ^ p) (Metric.ball 0 b) volume ↔ 0 < ↑d + p simp_all d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ p⊢ {x | f x ≠ ‖g ‖x‖‖ₑ} = if p = 0 then {0} else ∅ d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ phfg:f =ᵐ[volume] fun x => ‖g ‖x‖‖ₑ⊢ IntegrableOn (fun x => ‖x‖ ^ p) (Metric.ball 0 b) volume ↔ 0 < ↑d + p d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ p⊢ {x | f x ≠ ‖g ‖x‖‖ₑ} = if p = 0 then {0} else ∅ d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ phfg:f =ᵐ[volume] fun x => ‖g ‖x‖‖ₑ⊢ IntegrableOn (fun x => ‖x‖ ^ p) (Metric.ball 0 b) volume ↔ 0 < ↑d + p
ext x d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ px:Space d⊢ x ∈ {x | f x ≠ ‖g ‖x‖‖ₑ} ↔ x ∈ if p = 0 then {0} else ∅ d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ phfg:f =ᵐ[volume] fun x => ‖g ‖x‖‖ₑ⊢ IntegrableOn (fun x => ‖x‖ ^ p) (Metric.ball 0 b) volume ↔ 0 < ↑d + p
by_cases ‖x‖ ∈ Set.Ioo 0 b pos d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ px:Space dh✝:‖x‖ ∈ Set.Ioo 0 b⊢ x ∈ {x | f x ≠ ‖g ‖x‖‖ₑ} ↔ x ∈ if p = 0 then {0} else ∅neg d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ px:Space dh✝:‖x‖ ∉ Set.Ioo 0 b⊢ x ∈ {x | f x ≠ ‖g ‖x‖‖ₑ} ↔ x ∈ if p = 0 then {0} else ∅ d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ phfg:f =ᵐ[volume] fun x => ‖g ‖x‖‖ₑ⊢ IntegrableOn (fun x => ‖x‖ ^ p) (Metric.ball 0 b) volume ↔ 0 < ↑d + p
· pos d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ px:Space dh✝:‖x‖ ∈ Set.Ioo 0 b⊢ x ∈ {x | f x ≠ ‖g ‖x‖‖ₑ} ↔ x ∈ if p = 0 then {0} else ∅ d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ phfg:f =ᵐ[volume] fun x => ‖g ‖x‖‖ₑ⊢ IntegrableOn (fun x => ‖x‖ ^ p) (Metric.ball 0 b) volume ↔ 0 < ↑d + p simp_all [f, g] All goals completed! 🐙 d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ phfg:f =ᵐ[volume] fun x => ‖g ‖x‖‖ₑ⊢ IntegrableOn (fun x => ‖x‖ ^ p) (Metric.ball 0 b) volume ↔ 0 < ↑d + p
· neg d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ px:Space dh✝:‖x‖ ∉ Set.Ioo 0 b⊢ x ∈ {x | f x ≠ ‖g ‖x‖‖ₑ} ↔ x ∈ if p = 0 then {0} else ∅ d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ phfg:f =ᵐ[volume] fun x => ‖g ‖x‖‖ₑ⊢ IntegrableOn (fun x => ‖x‖ ^ p) (Metric.ball 0 b) volume ↔ 0 < ↑d + p by_cases x = 0 pos d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ px:Space dh✝¹:‖x‖ ∉ Set.Ioo 0 bh✝:x = 0⊢ x ∈ {x | f x ≠ ‖g ‖x‖‖ₑ} ↔ x ∈ if p = 0 then {0} else ∅neg d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ px:Space dh✝¹:‖x‖ ∉ Set.Ioo 0 bh✝:¬x = 0⊢ x ∈ {x | f x ≠ ‖g ‖x‖‖ₑ} ↔ x ∈ if p = 0 then {0} else ∅ d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ phfg:f =ᵐ[volume] fun x => ‖g ‖x‖‖ₑ⊢ IntegrableOn (fun x => ‖x‖ ^ p) (Metric.ball 0 b) volume ↔ 0 < ↑d + p <;> pos d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ px:Space dh✝¹:‖x‖ ∉ Set.Ioo 0 bh✝:x = 0⊢ x ∈ {x | f x ≠ ‖g ‖x‖‖ₑ} ↔ x ∈ if p = 0 then {0} else ∅neg d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ px:Space dh✝¹:‖x‖ ∉ Set.Ioo 0 bh✝:¬x = 0⊢ x ∈ {x | f x ≠ ‖g ‖x‖‖ₑ} ↔ x ∈ if p = 0 then {0} else ∅ d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ phfg:f =ᵐ[volume] fun x => ‖g ‖x‖‖ₑ⊢ IntegrableOn (fun x => ‖x‖ ^ p) (Metric.ball 0 b) volume ↔ 0 < ↑d + p simp_all [f, g, Real.zero_rpow_eq_iff] d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ phfg:f =ᵐ[volume] fun x => ‖g ‖x‖‖ₑ⊢ IntegrableOn (fun x => ‖x‖ ^ p) (Metric.ball 0 b) volume ↔ 0 < ↑d + p d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ phfg:f =ᵐ[volume] fun x => ‖g ‖x‖‖ₑ⊢ IntegrableOn (fun x => ‖x‖ ^ p) (Metric.ball 0 b) volume ↔ 0 < ↑d + p
trans Integrable (fun x : Space d ↦ g ‖x‖) d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ phfg:f =ᵐ[volume] fun x => ‖g ‖x‖‖ₑ⊢ IntegrableOn (fun x => ‖x‖ ^ p) (Metric.ball 0 b) volume ↔ Integrable (fun x => g ‖x‖) volumed:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ phfg:f =ᵐ[volume] fun x => ‖g ‖x‖‖ₑ⊢ Integrable (fun x => g ‖x‖) volume ↔ 0 < ↑d + p
· d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ phfg:f =ᵐ[volume] fun x => ‖g ‖x‖‖ₑ⊢ IntegrableOn (fun x => ‖x‖ ^ p) (Metric.ball 0 b) volume ↔ Integrable (fun x => g ‖x‖) volume refine and_congr ?_ ?_ refine_1 d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ phfg:f =ᵐ[volume] fun x => ‖g ‖x‖‖ₑ⊢ AEStronglyMeasurable (fun x => ‖x‖ ^ p) (volume.restrict (Metric.ball 0 b)) ↔
AEStronglyMeasurable (fun x => g ‖x‖) volumerefine_2 d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ phfg:f =ᵐ[volume] fun x => ‖g ‖x‖‖ₑ⊢ HasFiniteIntegral (fun x => ‖x‖ ^ p) (volume.restrict (Metric.ball 0 b)) ↔ HasFiniteIntegral (fun x => g ‖x‖) volume
· refine_1 d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ phfg:f =ᵐ[volume] fun x => ‖g ‖x‖‖ₑ⊢ AEStronglyMeasurable (fun x => ‖x‖ ^ p) (volume.restrict (Metric.ball 0 b)) ↔
AEStronglyMeasurable (fun x => g ‖x‖) volume refine iff_of_true ?_ ?_ refine_1.refine_1 d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ phfg:f =ᵐ[volume] fun x => ‖g ‖x‖‖ₑ⊢ AEStronglyMeasurable (fun x => ‖x‖ ^ p) (volume.restrict (Metric.ball 0 b))refine_1.refine_2 d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ phfg:f =ᵐ[volume] fun x => ‖g ‖x‖‖ₑ⊢ AEStronglyMeasurable (fun x => g ‖x‖) volume
repeat exact StronglyMeasurable.aestronglyMeasurable (by d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ phfg:f =ᵐ[volume] fun x => ‖g ‖x‖‖ₑ⊢ StronglyMeasurable fun x => g ‖x‖ measurability All goals completed! 🐙)
· refine_2 d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ phfg:f =ᵐ[volume] fun x => ‖g ‖x‖‖ₑ⊢ HasFiniteIntegral (fun x => ‖x‖ ^ p) (volume.restrict (Metric.ball 0 b)) ↔ HasFiniteIntegral (fun x => g ‖x‖) volume rw [HasFiniteIntegral, refine_2 d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ phfg:f =ᵐ[volume] fun x => ‖g ‖x‖‖ₑ⊢ ∫⁻ (a : Space d) in Metric.ball 0 b, ‖‖a‖ ^ p‖ₑ < ⊤ ↔ HasFiniteIntegral (fun x => g ‖x‖) volume refine_2 d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ phfg:f =ᵐ[volume] fun x => ‖g ‖x‖‖ₑ⊢ ∫⁻ (a : Space d), ‖g ‖a‖‖ₑ < ⊤ ↔ HasFiniteIntegral (fun x => g ‖x‖) volume ← lintegral_indicator measurableSet_ball, refine_2 d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ phfg:f =ᵐ[volume] fun x => ‖g ‖x‖‖ₑ⊢ ∫⁻ (a : Space d), (Metric.ball 0 b).indicator (fun a => ‖‖a‖ ^ p‖ₑ) a < ⊤ ↔ HasFiniteIntegral (fun x => g ‖x‖) volumerefine_2 d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ phfg:f =ᵐ[volume] fun x => ‖g ‖x‖‖ₑ⊢ ∫⁻ (a : Space d), ‖g ‖a‖‖ₑ < ⊤ ↔ HasFiniteIntegral (fun x => g ‖x‖) volume lintegral_congr_ae hfg refine_2 d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ phfg:f =ᵐ[volume] fun x => ‖g ‖x‖‖ₑ⊢ ∫⁻ (a : Space d), ‖g ‖a‖‖ₑ < ⊤ ↔ HasFiniteIntegral (fun x => g ‖x‖) volumerefine_2 d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ phfg:f =ᵐ[volume] fun x => ‖g ‖x‖‖ₑ⊢ ∫⁻ (a : Space d), ‖g ‖a‖‖ₑ < ⊤ ↔ HasFiniteIntegral (fun x => g ‖x‖) volume]refine_2 d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ phfg:f =ᵐ[volume] fun x => ‖g ‖x‖‖ₑ⊢ ∫⁻ (a : Space d), ‖g ‖a‖‖ₑ < ⊤ ↔ HasFiniteIntegral (fun x => g ‖x‖) volume
rfl All goals completed! 🐙
trans IntegrableOn (fun r => r ^ (d - 1 + p)) (Set.Ioo 0 b) d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ phfg:f =ᵐ[volume] fun x => ‖g ‖x‖‖ₑ⊢ Integrable (fun x => g ‖x‖) volume ↔ IntegrableOn (fun r => r ^ (↑d - 1 + p)) (Set.Ioo 0 b) volumed:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ phfg:f =ᵐ[volume] fun x => ‖g ‖x‖‖ₑ⊢ IntegrableOn (fun r => r ^ (↑d - 1 + p)) (Set.Ioo 0 b) volume ↔ 0 < ↑d + p
· d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ phfg:f =ᵐ[volume] fun x => ‖g ‖x‖‖ₑ⊢ Integrable (fun x => g ‖x‖) volume ↔ IntegrableOn (fun r => r ^ (↑d - 1 + p)) (Set.Ioo 0 b) volume have hInter : Set.Ioo 0 b ∩ Set.Ioi 0 = Set.Ioo 0 b := by d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝ⊢ IntegrableOn (fun x => ‖x‖ ^ p) (Metric.ball 0 b) volume ↔ 0 < ↑d + p d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ phfg:f =ᵐ[volume] fun x => ‖g ‖x‖‖ₑhInter:Set.Ioo 0 b ∩ Set.Ioi 0 = Set.Ioo 0 b⊢ Integrable (fun x => g ‖x‖) volume ↔ IntegrableOn (fun r => r ^ (↑d - 1 + p)) (Set.Ioo 0 b) volume ext d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ phfg:f =ᵐ[volume] fun x => ‖g ‖x‖‖ₑx✝:ℝ⊢ x✝ ∈ Set.Ioo 0 b ∩ Set.Ioi 0 ↔ x✝ ∈ Set.Ioo 0 b d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ phfg:f =ᵐ[volume] fun x => ‖g ‖x‖‖ₑhInter:Set.Ioo 0 b ∩ Set.Ioi 0 = Set.Ioo 0 b⊢ Integrable (fun x => g ‖x‖) volume ↔ IntegrableOn (fun r => r ^ (↑d - 1 + p)) (Set.Ioo 0 b) volume; grind d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ phfg:f =ᵐ[volume] fun x => ‖g ‖x‖‖ₑhInter:Set.Ioo 0 b ∩ Set.Ioi 0 = Set.Ioo 0 b⊢ Integrable (fun x => g ‖x‖) volume ↔ IntegrableOn (fun r => r ^ (↑d - 1 + p)) (Set.Ioo 0 b) volume d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ phfg:f =ᵐ[volume] fun x => ‖g ‖x‖‖ₑhInter:Set.Ioo 0 b ∩ Set.Ioi 0 = Set.Ioo 0 b⊢ Integrable (fun x => g ‖x‖) volume ↔ IntegrableOn (fun r => r ^ (↑d - 1 + p)) (Set.Ioo 0 b) volume
simp_rw [ d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ phfg:f =ᵐ[volume] fun x => ‖g ‖x‖‖ₑhInter:Set.Ioo 0 b ∩ Set.Ioi 0 = Set.Ioo 0 b⊢ Integrable (fun x => g ‖x‖) volume ↔ IntegrableOn (fun r => r ^ (↑d - 1 + p)) (Set.Ioo 0 b) volumeintegrable_fun_norm_addHaar, d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ phfg:f =ᵐ[volume] fun x => ‖g ‖x‖‖ₑhInter:Set.Ioo 0 b ∩ Set.Ioi 0 = Set.Ioo 0 b⊢ IntegrableOn (fun y => y ^ (Module.finrank ℝ (Space d) - 1) • g y) (Set.Ioi 0) volume ↔
IntegrableOn (fun r => r ^ (↑d - 1 + p)) (Set.Ioo 0 b) volume g, d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ phfg:f =ᵐ[volume] fun x => ‖g ‖x‖‖ₑhInter:Set.Ioo 0 b ∩ Set.Ioi 0 = Set.Ioo 0 b⊢ IntegrableOn (fun y => y ^ (Module.finrank ℝ (Space d) - 1) • (Set.Ioo 0 b).indicator (fun r => r ^ p) y) (Set.Ioi 0)
volume ↔
IntegrableOn (fun r => r ^ (↑d - 1 + p)) (Set.Ioo 0 b) volume Space.finrank_eq_dim, d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ phfg:f =ᵐ[volume] fun x => ‖g ‖x‖‖ₑhInter:Set.Ioo 0 b ∩ Set.Ioi 0 = Set.Ioo 0 b⊢ IntegrableOn (fun y => y ^ (d - 1) • (Set.Ioo 0 b).indicator (fun r => r ^ p) y) (Set.Ioi 0) volume ↔
IntegrableOn (fun r => r ^ (↑d - 1 + p)) (Set.Ioo 0 b) volume
npow_indicator_rpow_eq (Set.left_notMem_Ioo), d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ phfg:f =ᵐ[volume] fun x => ‖g ‖x‖‖ₑhInter:Set.Ioo 0 b ∩ Set.Ioi 0 = Set.Ioo 0 b⊢ IntegrableOn ((Set.Ioo 0 b).indicator fun r => r ^ (↑(d - 1) + p)) (Set.Ioi 0) volume ↔
IntegrableOn (fun r => r ^ (↑d - 1 + p)) (Set.Ioo 0 b) volume
_root_.MeasureTheory.integrableOn_indicator_iff measurableSet_Ioo, d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ phfg:f =ᵐ[volume] fun x => ‖g ‖x‖‖ₑhInter:Set.Ioo 0 b ∩ Set.Ioi 0 = Set.Ioo 0 b⊢ IntegrableOn (fun r => r ^ (↑(d - 1) + p)) (Set.Ioo 0 b ∩ Set.Ioi 0) volume ↔
IntegrableOn (fun r => r ^ (↑d - 1 + p)) (Set.Ioo 0 b) volume hInter, d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ phfg:f =ᵐ[volume] fun x => ‖g ‖x‖‖ₑhInter:Set.Ioo 0 b ∩ Set.Ioi 0 = Set.Ioo 0 b⊢ IntegrableOn (fun r => r ^ (↑(d - 1) + p)) (Set.Ioo 0 b) volume ↔
IntegrableOn (fun r => r ^ (↑d - 1 + p)) (Set.Ioo 0 b) volume
Nat.cast_pred (Nat.pos_of_neZero d) All goals completed! 🐙]
rw [intervalIntegral.integrableOn_Ioo_rpow_iff hb, d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ phfg:f =ᵐ[volume] fun x => ‖g ‖x‖‖ₑ⊢ -1 < ↑d - 1 + p ↔ 0 < ↑d + p d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ phfg:f =ᵐ[volume] fun x => ‖g ‖x‖‖ₑ⊢ 0 < 1 + (↑d - 1 + p) ↔ 0 < ↑d + p neg_lt_iff_pos_add' d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ phfg:f =ᵐ[volume] fun x => ‖g ‖x‖‖ₑ⊢ 0 < 1 + (↑d - 1 + p) ↔ 0 < ↑d + p d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ phfg:f =ᵐ[volume] fun x => ‖g ‖x‖‖ₑ⊢ 0 < 1 + (↑d - 1 + p) ↔ 0 < ↑d + p] d:ℕinst✝:NeZero db:ℝhb:0 < bp:ℝf:Space d → ENNReal := (Metric.ball 0 b).indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ioo 0 b).indicator fun r => r ^ phfg:f =ᵐ[volume] fun x => ‖g ‖x‖‖ₑ⊢ 0 < 1 + (↑d - 1 + p) ↔ 0 < ↑d + p
ring_nf All goals completed! 🐙
The function x ↦ ‖x‖ᵖ is integrable on {x : Space d | 0 < a ≤ ‖x‖} iff d + p < 0.
lemma integrableOn_norm_rpow_ball_compl_iff {d : ℕ} [NeZero d] {a : ℝ} (ha : 0 < a) (p : ℝ) :
IntegrableOn (fun x : Space d ↦ ‖x‖ ^ p) (Metric.ball 0 a)ᶜ ↔ d + p < 0 := by d:ℕinst✝:NeZero da:ℝha:0 < ap:ℝ⊢ IntegrableOn (fun x => ‖x‖ ^ p) (Metric.ball 0 a)ᶜ volume ↔ ↑d + p < 0
let f : Space d → ENNReal := (Metric.ball 0 a)ᶜ.indicator (fun x ↦ ‖‖x‖ ^ p‖ₑ) d:ℕinst✝:NeZero da:ℝha:0 < ap:ℝf:Space d → ENNReal := (Metric.ball 0 a)ᶜ.indicator fun x => ‖‖x‖ ^ p‖ₑ⊢ IntegrableOn (fun x => ‖x‖ ^ p) (Metric.ball 0 a)ᶜ volume ↔ ↑d + p < 0
let g : ℝ → ℝ := (Set.Ici a).indicator (fun r ↦ r ^ p) d:ℕinst✝:NeZero da:ℝha:0 < ap:ℝf:Space d → ENNReal := (Metric.ball 0 a)ᶜ.indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ici a).indicator fun r => r ^ p⊢ IntegrableOn (fun x => ‖x‖ ^ p) (Metric.ball 0 a)ᶜ volume ↔ ↑d + p < 0
have hfg : f = fun x ↦ ‖g ‖x‖‖ₑ := by ext x d:ℕinst✝:NeZero da:ℝha:0 < ap:ℝf:Space d → ENNReal := (Metric.ball 0 a)ᶜ.indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ici a).indicator fun r => r ^ px:Space d⊢ f x = ‖g ‖x‖‖ₑ d:ℕinst✝:NeZero da:ℝha:0 < ap:ℝf:Space d → ENNReal := (Metric.ball 0 a)ᶜ.indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ici a).indicator fun r => r ^ phfg:f = fun x => ‖g ‖x‖‖ₑ⊢ IntegrableOn (fun x => ‖x‖ ^ p) (Metric.ball 0 a)ᶜ volume ↔ ↑d + p < 0; by_cases ‖x‖ ∈ Set.Ici a pos d:ℕinst✝:NeZero da:ℝha:0 < ap:ℝf:Space d → ENNReal := (Metric.ball 0 a)ᶜ.indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ici a).indicator fun r => r ^ px:Space dh✝:‖x‖ ∈ Set.Ici a⊢ f x = ‖g ‖x‖‖ₑneg d:ℕinst✝:NeZero da:ℝha:0 < ap:ℝf:Space d → ENNReal := (Metric.ball 0 a)ᶜ.indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ici a).indicator fun r => r ^ px:Space dh✝:‖x‖ ∉ Set.Ici a⊢ f x = ‖g ‖x‖‖ₑ d:ℕinst✝:NeZero da:ℝha:0 < ap:ℝf:Space d → ENNReal := (Metric.ball 0 a)ᶜ.indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ici a).indicator fun r => r ^ phfg:f = fun x => ‖g ‖x‖‖ₑ⊢ IntegrableOn (fun x => ‖x‖ ^ p) (Metric.ball 0 a)ᶜ volume ↔ ↑d + p < 0 <;> pos d:ℕinst✝:NeZero da:ℝha:0 < ap:ℝf:Space d → ENNReal := (Metric.ball 0 a)ᶜ.indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ici a).indicator fun r => r ^ px:Space dh✝:‖x‖ ∈ Set.Ici a⊢ f x = ‖g ‖x‖‖ₑneg d:ℕinst✝:NeZero da:ℝha:0 < ap:ℝf:Space d → ENNReal := (Metric.ball 0 a)ᶜ.indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ici a).indicator fun r => r ^ px:Space dh✝:‖x‖ ∉ Set.Ici a⊢ f x = ‖g ‖x‖‖ₑ d:ℕinst✝:NeZero da:ℝha:0 < ap:ℝf:Space d → ENNReal := (Metric.ball 0 a)ᶜ.indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ici a).indicator fun r => r ^ phfg:f = fun x => ‖g ‖x‖‖ₑ⊢ IntegrableOn (fun x => ‖x‖ ^ p) (Metric.ball 0 a)ᶜ volume ↔ ↑d + p < 0 simp_all [f, g] d:ℕinst✝:NeZero da:ℝha:0 < ap:ℝf:Space d → ENNReal := (Metric.ball 0 a)ᶜ.indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ici a).indicator fun r => r ^ phfg:f = fun x => ‖g ‖x‖‖ₑ⊢ IntegrableOn (fun x => ‖x‖ ^ p) (Metric.ball 0 a)ᶜ volume ↔ ↑d + p < 0 d:ℕinst✝:NeZero da:ℝha:0 < ap:ℝf:Space d → ENNReal := (Metric.ball 0 a)ᶜ.indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ici a).indicator fun r => r ^ phfg:f = fun x => ‖g ‖x‖‖ₑ⊢ IntegrableOn (fun x => ‖x‖ ^ p) (Metric.ball 0 a)ᶜ volume ↔ ↑d + p < 0
trans Integrable (fun x : Space d ↦ g ‖x‖) d:ℕinst✝:NeZero da:ℝha:0 < ap:ℝf:Space d → ENNReal := (Metric.ball 0 a)ᶜ.indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ici a).indicator fun r => r ^ phfg:f = fun x => ‖g ‖x‖‖ₑ⊢ IntegrableOn (fun x => ‖x‖ ^ p) (Metric.ball 0 a)ᶜ volume ↔ Integrable (fun x => g ‖x‖) volumed:ℕinst✝:NeZero da:ℝha:0 < ap:ℝf:Space d → ENNReal := (Metric.ball 0 a)ᶜ.indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ici a).indicator fun r => r ^ phfg:f = fun x => ‖g ‖x‖‖ₑ⊢ Integrable (fun x => g ‖x‖) volume ↔ ↑d + p < 0
· d:ℕinst✝:NeZero da:ℝha:0 < ap:ℝf:Space d → ENNReal := (Metric.ball 0 a)ᶜ.indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ici a).indicator fun r => r ^ phfg:f = fun x => ‖g ‖x‖‖ₑ⊢ IntegrableOn (fun x => ‖x‖ ^ p) (Metric.ball 0 a)ᶜ volume ↔ Integrable (fun x => g ‖x‖) volume refine and_congr ?_ ?_ refine_1 d:ℕinst✝:NeZero da:ℝha:0 < ap:ℝf:Space d → ENNReal := (Metric.ball 0 a)ᶜ.indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ici a).indicator fun r => r ^ phfg:f = fun x => ‖g ‖x‖‖ₑ⊢ AEStronglyMeasurable (fun x => ‖x‖ ^ p) (volume.restrict (Metric.ball 0 a)ᶜ) ↔
AEStronglyMeasurable (fun x => g ‖x‖) volumerefine_2 d:ℕinst✝:NeZero da:ℝha:0 < ap:ℝf:Space d → ENNReal := (Metric.ball 0 a)ᶜ.indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ici a).indicator fun r => r ^ phfg:f = fun x => ‖g ‖x‖‖ₑ⊢ HasFiniteIntegral (fun x => ‖x‖ ^ p) (volume.restrict (Metric.ball 0 a)ᶜ) ↔ HasFiniteIntegral (fun x => g ‖x‖) volume
· refine_1 d:ℕinst✝:NeZero da:ℝha:0 < ap:ℝf:Space d → ENNReal := (Metric.ball 0 a)ᶜ.indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ici a).indicator fun r => r ^ phfg:f = fun x => ‖g ‖x‖‖ₑ⊢ AEStronglyMeasurable (fun x => ‖x‖ ^ p) (volume.restrict (Metric.ball 0 a)ᶜ) ↔
AEStronglyMeasurable (fun x => g ‖x‖) volume refine iff_of_true ?_ ?_ refine_1.refine_1 d:ℕinst✝:NeZero da:ℝha:0 < ap:ℝf:Space d → ENNReal := (Metric.ball 0 a)ᶜ.indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ici a).indicator fun r => r ^ phfg:f = fun x => ‖g ‖x‖‖ₑ⊢ AEStronglyMeasurable (fun x => ‖x‖ ^ p) (volume.restrict (Metric.ball 0 a)ᶜ)refine_1.refine_2 d:ℕinst✝:NeZero da:ℝha:0 < ap:ℝf:Space d → ENNReal := (Metric.ball 0 a)ᶜ.indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ici a).indicator fun r => r ^ phfg:f = fun x => ‖g ‖x‖‖ₑ⊢ AEStronglyMeasurable (fun x => g ‖x‖) volume
repeat exact StronglyMeasurable.aestronglyMeasurable (by d:ℕinst✝:NeZero da:ℝha:0 < ap:ℝf:Space d → ENNReal := (Metric.ball 0 a)ᶜ.indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ici a).indicator fun r => r ^ phfg:f = fun x => ‖g ‖x‖‖ₑ⊢ StronglyMeasurable fun x => g ‖x‖ measurability All goals completed! 🐙)
· refine_2 d:ℕinst✝:NeZero da:ℝha:0 < ap:ℝf:Space d → ENNReal := (Metric.ball 0 a)ᶜ.indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ici a).indicator fun r => r ^ phfg:f = fun x => ‖g ‖x‖‖ₑ⊢ HasFiniteIntegral (fun x => ‖x‖ ^ p) (volume.restrict (Metric.ball 0 a)ᶜ) ↔ HasFiniteIntegral (fun x => g ‖x‖) volume dsimp [HasFiniteIntegral] refine_2 d:ℕinst✝:NeZero da:ℝha:0 < ap:ℝf:Space d → ENNReal := (Metric.ball 0 a)ᶜ.indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ici a).indicator fun r => r ^ phfg:f = fun x => ‖g ‖x‖‖ₑ⊢ ∫⁻ (a : Space d) in (Metric.ball 0 a)ᶜ, ‖‖a‖ ^ p‖ₑ < ⊤ ↔ ∫⁻ (a : Space d), ‖g ‖a‖‖ₑ < ⊤
rw [← lintegral_indicator (by d:ℕinst✝:NeZero da:ℝha:0 < ap:ℝf:Space d → ENNReal := (Metric.ball 0 a)ᶜ.indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ici a).indicator fun r => r ^ phfg:f = fun x => ‖g ‖x‖‖ₑ⊢ MeasurableSet (Metric.ball 0 a)ᶜ All goals completed! 🐙 measurability All goals completed! 🐙 All goals completed! 🐙), lintegral_congr_ae hfg.eventuallyEq refine_2 d:ℕinst✝:NeZero da:ℝha:0 < ap:ℝf:Space d → ENNReal := (Metric.ball 0 a)ᶜ.indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ici a).indicator fun r => r ^ phfg:f = fun x => ‖g ‖x‖‖ₑ⊢ ∫⁻ (a : Space d), ‖g ‖a‖‖ₑ < ⊤ ↔ ∫⁻ (a : Space d), ‖g ‖a‖‖ₑ < ⊤ All goals completed! 🐙] All goals completed! 🐙
trans IntegrableOn (fun r => r ^ (d - 1 + p)) (Set.Ici a) d:ℕinst✝:NeZero da:ℝha:0 < ap:ℝf:Space d → ENNReal := (Metric.ball 0 a)ᶜ.indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ici a).indicator fun r => r ^ phfg:f = fun x => ‖g ‖x‖‖ₑ⊢ Integrable (fun x => g ‖x‖) volume ↔ IntegrableOn (fun r => r ^ (↑d - 1 + p)) (Set.Ici a) volumed:ℕinst✝:NeZero da:ℝha:0 < ap:ℝf:Space d → ENNReal := (Metric.ball 0 a)ᶜ.indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ici a).indicator fun r => r ^ phfg:f = fun x => ‖g ‖x‖‖ₑ⊢ IntegrableOn (fun r => r ^ (↑d - 1 + p)) (Set.Ici a) volume ↔ ↑d + p < 0
· d:ℕinst✝:NeZero da:ℝha:0 < ap:ℝf:Space d → ENNReal := (Metric.ball 0 a)ᶜ.indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ici a).indicator fun r => r ^ phfg:f = fun x => ‖g ‖x‖‖ₑ⊢ Integrable (fun x => g ‖x‖) volume ↔ IntegrableOn (fun r => r ^ (↑d - 1 + p)) (Set.Ici a) volume have hInter : Set.Ici a ∩ Set.Ioi 0 = Set.Ici a := by d:ℕinst✝:NeZero da:ℝha:0 < ap:ℝ⊢ IntegrableOn (fun x => ‖x‖ ^ p) (Metric.ball 0 a)ᶜ volume ↔ ↑d + p < 0 d:ℕinst✝:NeZero da:ℝha:0 < ap:ℝf:Space d → ENNReal := (Metric.ball 0 a)ᶜ.indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ici a).indicator fun r => r ^ phfg:f = fun x => ‖g ‖x‖‖ₑhInter:Set.Ici a ∩ Set.Ioi 0 = Set.Ici a⊢ Integrable (fun x => g ‖x‖) volume ↔ IntegrableOn (fun r => r ^ (↑d - 1 + p)) (Set.Ici a) volume ext d:ℕinst✝:NeZero da:ℝha:0 < ap:ℝf:Space d → ENNReal := (Metric.ball 0 a)ᶜ.indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ici a).indicator fun r => r ^ phfg:f = fun x => ‖g ‖x‖‖ₑx✝:ℝ⊢ x✝ ∈ Set.Ici a ∩ Set.Ioi 0 ↔ x✝ ∈ Set.Ici a d:ℕinst✝:NeZero da:ℝha:0 < ap:ℝf:Space d → ENNReal := (Metric.ball 0 a)ᶜ.indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ici a).indicator fun r => r ^ phfg:f = fun x => ‖g ‖x‖‖ₑhInter:Set.Ici a ∩ Set.Ioi 0 = Set.Ici a⊢ Integrable (fun x => g ‖x‖) volume ↔ IntegrableOn (fun r => r ^ (↑d - 1 + p)) (Set.Ici a) volume; grind d:ℕinst✝:NeZero da:ℝha:0 < ap:ℝf:Space d → ENNReal := (Metric.ball 0 a)ᶜ.indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ici a).indicator fun r => r ^ phfg:f = fun x => ‖g ‖x‖‖ₑhInter:Set.Ici a ∩ Set.Ioi 0 = Set.Ici a⊢ Integrable (fun x => g ‖x‖) volume ↔ IntegrableOn (fun r => r ^ (↑d - 1 + p)) (Set.Ici a) volume d:ℕinst✝:NeZero da:ℝha:0 < ap:ℝf:Space d → ENNReal := (Metric.ball 0 a)ᶜ.indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ici a).indicator fun r => r ^ phfg:f = fun x => ‖g ‖x‖‖ₑhInter:Set.Ici a ∩ Set.Ioi 0 = Set.Ici a⊢ Integrable (fun x => g ‖x‖) volume ↔ IntegrableOn (fun r => r ^ (↑d - 1 + p)) (Set.Ici a) volume
simp_rw [ d:ℕinst✝:NeZero da:ℝha:0 < ap:ℝf:Space d → ENNReal := (Metric.ball 0 a)ᶜ.indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ici a).indicator fun r => r ^ phfg:f = fun x => ‖g ‖x‖‖ₑhInter:Set.Ici a ∩ Set.Ioi 0 = Set.Ici a⊢ Integrable (fun x => g ‖x‖) volume ↔ IntegrableOn (fun r => r ^ (↑d - 1 + p)) (Set.Ici a) volumeintegrable_fun_norm_addHaar, d:ℕinst✝:NeZero da:ℝha:0 < ap:ℝf:Space d → ENNReal := (Metric.ball 0 a)ᶜ.indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ici a).indicator fun r => r ^ phfg:f = fun x => ‖g ‖x‖‖ₑhInter:Set.Ici a ∩ Set.Ioi 0 = Set.Ici a⊢ IntegrableOn (fun y => y ^ (Module.finrank ℝ (Space d) - 1) • g y) (Set.Ioi 0) volume ↔
IntegrableOn (fun r => r ^ (↑d - 1 + p)) (Set.Ici a) volume g, d:ℕinst✝:NeZero da:ℝha:0 < ap:ℝf:Space d → ENNReal := (Metric.ball 0 a)ᶜ.indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ici a).indicator fun r => r ^ phfg:f = fun x => ‖g ‖x‖‖ₑhInter:Set.Ici a ∩ Set.Ioi 0 = Set.Ici a⊢ IntegrableOn (fun y => y ^ (Module.finrank ℝ (Space d) - 1) • (Set.Ici a).indicator (fun r => r ^ p) y) (Set.Ioi 0)
volume ↔
IntegrableOn (fun r => r ^ (↑d - 1 + p)) (Set.Ici a) volume Space.finrank_eq_dim, d:ℕinst✝:NeZero da:ℝha:0 < ap:ℝf:Space d → ENNReal := (Metric.ball 0 a)ᶜ.indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ici a).indicator fun r => r ^ phfg:f = fun x => ‖g ‖x‖‖ₑhInter:Set.Ici a ∩ Set.Ioi 0 = Set.Ici a⊢ IntegrableOn (fun y => y ^ (d - 1) • (Set.Ici a).indicator (fun r => r ^ p) y) (Set.Ioi 0) volume ↔
IntegrableOn (fun r => r ^ (↑d - 1 + p)) (Set.Ici a) volume
npow_indicator_rpow_eq (Set.notMem_Ici.mpr ha), d:ℕinst✝:NeZero da:ℝha:0 < ap:ℝf:Space d → ENNReal := (Metric.ball 0 a)ᶜ.indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ici a).indicator fun r => r ^ phfg:f = fun x => ‖g ‖x‖‖ₑhInter:Set.Ici a ∩ Set.Ioi 0 = Set.Ici a⊢ IntegrableOn ((Set.Ici a).indicator fun r => r ^ (↑(d - 1) + p)) (Set.Ioi 0) volume ↔
IntegrableOn (fun r => r ^ (↑d - 1 + p)) (Set.Ici a) volume
_root_.MeasureTheory.integrableOn_indicator_iff measurableSet_Ici, d:ℕinst✝:NeZero da:ℝha:0 < ap:ℝf:Space d → ENNReal := (Metric.ball 0 a)ᶜ.indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ici a).indicator fun r => r ^ phfg:f = fun x => ‖g ‖x‖‖ₑhInter:Set.Ici a ∩ Set.Ioi 0 = Set.Ici a⊢ IntegrableOn (fun r => r ^ (↑(d - 1) + p)) (Set.Ici a ∩ Set.Ioi 0) volume ↔
IntegrableOn (fun r => r ^ (↑d - 1 + p)) (Set.Ici a) volume hInter, d:ℕinst✝:NeZero da:ℝha:0 < ap:ℝf:Space d → ENNReal := (Metric.ball 0 a)ᶜ.indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ici a).indicator fun r => r ^ phfg:f = fun x => ‖g ‖x‖‖ₑhInter:Set.Ici a ∩ Set.Ioi 0 = Set.Ici a⊢ IntegrableOn (fun r => r ^ (↑(d - 1) + p)) (Set.Ici a) volume ↔
IntegrableOn (fun r => r ^ (↑d - 1 + p)) (Set.Ici a) volume
Nat.cast_pred (Nat.pos_of_neZero d) All goals completed! 🐙]
rw [integrableOn_Ici_iff_integrableOn_Ioi, d:ℕinst✝:NeZero da:ℝha:0 < ap:ℝf:Space d → ENNReal := (Metric.ball 0 a)ᶜ.indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ici a).indicator fun r => r ^ phfg:f = fun x => ‖g ‖x‖‖ₑ⊢ IntegrableOn (fun r => r ^ (↑d - 1 + p)) (Set.Ioi a) volume ↔ ↑d + p < 0 d:ℕinst✝:NeZero da:ℝha:0 < ap:ℝf:Space d → ENNReal := (Metric.ball 0 a)ᶜ.indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ici a).indicator fun r => r ^ phfg:f = fun x => ‖g ‖x‖‖ₑ⊢ ↑d - 1 + p + 1 < 0 ↔ ↑d + p < 0 integrableOn_Ioi_rpow_iff ha, d:ℕinst✝:NeZero da:ℝha:0 < ap:ℝf:Space d → ENNReal := (Metric.ball 0 a)ᶜ.indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ici a).indicator fun r => r ^ phfg:f = fun x => ‖g ‖x‖‖ₑ⊢ ↑d - 1 + p < -1 ↔ ↑d + p < 0 d:ℕinst✝:NeZero da:ℝha:0 < ap:ℝf:Space d → ENNReal := (Metric.ball 0 a)ᶜ.indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ici a).indicator fun r => r ^ phfg:f = fun x => ‖g ‖x‖‖ₑ⊢ ↑d - 1 + p + 1 < 0 ↔ ↑d + p < 0 lt_neg_iff_add_neg d:ℕinst✝:NeZero da:ℝha:0 < ap:ℝf:Space d → ENNReal := (Metric.ball 0 a)ᶜ.indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ici a).indicator fun r => r ^ phfg:f = fun x => ‖g ‖x‖‖ₑ⊢ ↑d - 1 + p + 1 < 0 ↔ ↑d + p < 0 d:ℕinst✝:NeZero da:ℝha:0 < ap:ℝf:Space d → ENNReal := (Metric.ball 0 a)ᶜ.indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ici a).indicator fun r => r ^ phfg:f = fun x => ‖g ‖x‖‖ₑ⊢ ↑d - 1 + p + 1 < 0 ↔ ↑d + p < 0] d:ℕinst✝:NeZero da:ℝha:0 < ap:ℝf:Space d → ENNReal := (Metric.ball 0 a)ᶜ.indicator fun x => ‖‖x‖ ^ p‖ₑg:ℝ → ℝ := (Set.Ici a).indicator fun r => r ^ phfg:f = fun x => ‖g ‖x‖‖ₑ⊢ ↑d - 1 + p + 1 < 0 ↔ ↑d + p < 0
ring_nf All goals completed! 🐙
The function x ↦ ‖x‖ᵖ is integrable on the shell {x : Space d | 0 < a ≤ ‖x‖ ∧ ‖x‖ < b}.
lemma integrableOn_norm_rpow_shell {d : ℕ} {a : ℝ} (ha : 0 < a) (b p : ℝ) :
IntegrableOn (fun x : Space d ↦ ‖x‖ ^ p) ((Metric.ball 0 b) ∩ (Metric.ball 0 a)ᶜ) := by d:ℕa:ℝha:0 < ab:ℝp:ℝ⊢ IntegrableOn (fun x => ‖x‖ ^ p) (Metric.ball 0 b ∩ (Metric.ball 0 a)ᶜ) volume
refine ⟨StronglyMeasurable.aestronglyMeasurable (by d:ℕa:ℝha:0 < ab:ℝp:ℝ⊢ StronglyMeasurable fun x => ‖x‖ ^ p measurability All goals completed! 🐙), ?_⟩
by_cases hab : a < b pos d:ℕa:ℝha:0 < ab:ℝp:ℝhab:a < b⊢ HasFiniteIntegral (fun x => ‖x‖ ^ p) (volume.restrict (Metric.ball 0 b ∩ (Metric.ball 0 a)ᶜ))neg d:ℕa:ℝha:0 < ab:ℝp:ℝhab:¬a < b⊢ HasFiniteIntegral (fun x => ‖x‖ ^ p) (volume.restrict (Metric.ball 0 b ∩ (Metric.ball 0 a)ᶜ))
· pos d:ℕa:ℝha:0 < ab:ℝp:ℝhab:a < b⊢ HasFiniteIntegral (fun x => ‖x‖ ^ p) (volume.restrict (Metric.ball 0 b ∩ (Metric.ball 0 a)ᶜ)) refine setLIntegral_lt_top_of_le_nnreal ?_ ?_ pos.refine_1 d:ℕa:ℝha:0 < ab:ℝp:ℝhab:a < b⊢ volume (Metric.ball 0 b ∩ (Metric.ball 0 a)ᶜ) ≠ ⊤pos.refine_2 d:ℕa:ℝha:0 < ab:ℝp:ℝhab:a < b⊢ ∃ y, ∀ x ∈ Metric.ball 0 b ∩ (Metric.ball 0 a)ᶜ, ‖(fun x => ‖x‖ ^ p) x‖ₑ ≤ ↑y
· pos.refine_1 d:ℕa:ℝha:0 < ab:ℝp:ℝhab:a < b⊢ volume (Metric.ball 0 b ∩ (Metric.ball 0 a)ᶜ) ≠ ⊤ exact measure_inter_ne_top_of_left_ne_top measure_ball_ne_top All goals completed! 🐙
· pos.refine_2 d:ℕa:ℝha:0 < ab:ℝp:ℝhab:a < b⊢ ∃ y, ∀ x ∈ Metric.ball 0 b ∩ (Metric.ball 0 a)ᶜ, ‖(fun x => ‖x‖ ^ p) x‖ₑ ≤ ↑y use ‖max (a ^ p) (b ^ p)‖₊ h d:ℕa:ℝha:0 < ab:ℝp:ℝhab:a < b⊢ ∀ x ∈ Metric.ball 0 b ∩ (Metric.ball 0 a)ᶜ, ‖(fun x => ‖x‖ ^ p) x‖ₑ ≤ ↑‖max (a ^ p) (b ^ p)‖₊
intro x hx h d:ℕa:ℝha:0 < ab:ℝp:ℝhab:a < bx:Space dhx:x ∈ Metric.ball 0 b ∩ (Metric.ball 0 a)ᶜ⊢ ‖(fun x => ‖x‖ ^ p) x‖ₑ ≤ ↑‖max (a ^ p) (b ^ p)‖₊
simp only [Set.mem_inter_iff, Metric.mem_ball, dist_zero_right, Set.mem_compl_iff] at hx h d:ℕa:ℝha:0 < ab:ℝp:ℝhab:a < bx:Space dhx:‖x‖ < b ∧ ¬‖x‖ < a⊢ ‖(fun x => ‖x‖ ^ p) x‖ₑ ≤ ↑‖max (a ^ p) (b ^ p)‖₊
rw [enorm_le_coe h d:ℕa:ℝha:0 < ab:ℝp:ℝhab:a < bx:Space dhx:‖x‖ < b ∧ ¬‖x‖ < a⊢ ‖(fun x => ‖x‖ ^ p) x‖₊ ≤ ‖max (a ^ p) (b ^ p)‖₊ h d:ℕa:ℝha:0 < ab:ℝp:ℝhab:a < bx:Space dhx:‖x‖ < b ∧ ¬‖x‖ < a⊢ ‖(fun x => ‖x‖ ^ p) x‖₊ ≤ ‖max (a ^ p) (b ^ p)‖₊] h d:ℕa:ℝha:0 < ab:ℝp:ℝhab:a < bx:Space dhx:‖x‖ < b ∧ ¬‖x‖ < a⊢ ‖(fun x => ‖x‖ ^ p) x‖₊ ≤ ‖max (a ^ p) (b ^ p)‖₊
refine abs_le_abs_of_nonneg (Real.rpow_nonneg (norm_nonneg x) p) ?_ h d:ℕa:ℝha:0 < ab:ℝp:ℝhab:a < bx:Space dhx:‖x‖ < b ∧ ¬‖x‖ < a⊢ ‖x‖ ^ p ≤ max (a ^ p) (b ^ p)
rw [le_sup_iff h d:ℕa:ℝha:0 < ab:ℝp:ℝhab:a < bx:Space dhx:‖x‖ < b ∧ ¬‖x‖ < a⊢ ‖x‖ ^ p ≤ a ^ p ∨ ‖x‖ ^ p ≤ b ^ p h d:ℕa:ℝha:0 < ab:ℝp:ℝhab:a < bx:Space dhx:‖x‖ < b ∧ ¬‖x‖ < a⊢ ‖x‖ ^ p ≤ a ^ p ∨ ‖x‖ ^ p ≤ b ^ p]h d:ℕa:ℝha:0 < ab:ℝp:ℝhab:a < bx:Space dhx:‖x‖ < b ∧ ¬‖x‖ < a⊢ ‖x‖ ^ p ≤ a ^ p ∨ ‖x‖ ^ p ≤ b ^ p
by_cases hp : 0 ≤ p pos d:ℕa:ℝha:0 < ab:ℝp:ℝhab:a < bx:Space dhx:‖x‖ < b ∧ ¬‖x‖ < ahp:0 ≤ p⊢ ‖x‖ ^ p ≤ a ^ p ∨ ‖x‖ ^ p ≤ b ^ pneg d:ℕa:ℝha:0 < ab:ℝp:ℝhab:a < bx:Space dhx:‖x‖ < b ∧ ¬‖x‖ < ahp:¬0 ≤ p⊢ ‖x‖ ^ p ≤ a ^ p ∨ ‖x‖ ^ p ≤ b ^ p
· pos d:ℕa:ℝha:0 < ab:ℝp:ℝhab:a < bx:Space dhx:‖x‖ < b ∧ ¬‖x‖ < ahp:0 ≤ p⊢ ‖x‖ ^ p ≤ a ^ p ∨ ‖x‖ ^ p ≤ b ^ p exact Or.inr <| Real.rpow_le_rpow (norm_nonneg x) (by d:ℕa:ℝha:0 < ab:ℝp:ℝhab:a < bx:Space dhx:‖x‖ < b ∧ ¬‖x‖ < ahp:0 ≤ p⊢ ‖x‖ ≤ b linarith All goals completed! 🐙) hp
· neg d:ℕa:ℝha:0 < ab:ℝp:ℝhab:a < bx:Space dhx:‖x‖ < b ∧ ¬‖x‖ < ahp:¬0 ≤ p⊢ ‖x‖ ^ p ≤ a ^ p ∨ ‖x‖ ^ p ≤ b ^ p exact Or.inl <| Real.rpow_le_rpow_of_nonpos ha (by d:ℕa:ℝha:0 < ab:ℝp:ℝhab:a < bx:Space dhx:‖x‖ < b ∧ ¬‖x‖ < ahp:¬0 ≤ p⊢ a ≤ ‖x‖ linarith All goals completed! 🐙) (by d:ℕa:ℝha:0 < ab:ℝp:ℝhab:a < bx:Space dhx:‖x‖ < b ∧ ¬‖x‖ < ahp:¬0 ≤ p⊢ p ≤ 0 linarith All goals completed! 🐙)
· neg d:ℕa:ℝha:0 < ab:ℝp:ℝhab:¬a < b⊢ HasFiniteIntegral (fun x => ‖x‖ ^ p) (volume.restrict (Metric.ball 0 b ∩ (Metric.ball 0 a)ᶜ)) suffices (Metric.ball 0 b) ∩ (Metric.ball 0 a)ᶜ = (∅ : Set (Space d)) by d:ℕa:ℝha:0 < ab:ℝp:ℝhab:¬a < bthis:Metric.ball 0 b ∩ (Metric.ball 0 a)ᶜ = ∅⊢ HasFiniteIntegral (fun x => ‖x‖ ^ p) (volume.restrict (Metric.ball 0 b ∩ (Metric.ball 0 a)ᶜ)) neg d:ℕa:ℝha:0 < ab:ℝp:ℝhab:¬a < b⊢ Metric.ball 0 b ∩ (Metric.ball 0 a)ᶜ = ∅ simp [this]neg d:ℕa:ℝha:0 < ab:ℝp:ℝhab:¬a < b⊢ Metric.ball 0 b ∩ (Metric.ball 0 a)ᶜ = ∅neg d:ℕa:ℝha:0 < ab:ℝp:ℝhab:¬a < b⊢ Metric.ball 0 b ∩ (Metric.ball 0 a)ᶜ = ∅
ext x neg d:ℕa:ℝha:0 < ab:ℝp:ℝhab:¬a < bx:Space d⊢ x ∈ Metric.ball 0 b ∩ (Metric.ball 0 a)ᶜ ↔ x ∈ ∅
have : ‖x‖ < b → ‖x‖ < a := fun _ ↦ by d:ℕa:ℝha:0 < ab:ℝp:ℝhab:¬a < bx:Space dx✝:‖x‖ < b⊢ ‖x‖ < a neg d:ℕa:ℝha:0 < ab:ℝp:ℝhab:¬a < bx:Space dthis:‖x‖ < b → ‖x‖ < a⊢ x ∈ Metric.ball 0 b ∩ (Metric.ball 0 a)ᶜ ↔ x ∈ ∅ linarithneg d:ℕa:ℝha:0 < ab:ℝp:ℝhab:¬a < bx:Space dthis:‖x‖ < b → ‖x‖ < a⊢ x ∈ Metric.ball 0 b ∩ (Metric.ball 0 a)ᶜ ↔ x ∈ ∅neg d:ℕa:ℝha:0 < ab:ℝp:ℝhab:¬a < bx:Space dthis:‖x‖ < b → ‖x‖ < a⊢ x ∈ Metric.ball 0 b ∩ (Metric.ball 0 a)ᶜ ↔ x ∈ ∅
simpa All goals completed! 🐙
The function x ↦ ‖x‖ᵖ is integrable on a bounded neighborhood of the origin
iff 0 < d + p.
lemma integrableOn_norm_rpow_iff_of_isBounded_nhds {d : ℕ} [NeZero d] {s : Set (Space d)}
(hs : Bornology.IsBounded s) (hs' : s ∈ nhds 0) (p : ℝ) :
IntegrableOn (fun x : Space d ↦ ‖x‖ ^ p) s ↔ 0 < d + p := by d:ℕinst✝:NeZero ds:Set (Space d)hs:Bornology.IsBounded shs':s ∈ nhds 0p:ℝ⊢ IntegrableOn (fun x => ‖x‖ ^ p) s volume ↔ 0 < ↑d + p
obtain ⟨a, ha, ha'⟩ := Metric.eventually_nhds_iff_ball.mp hs' d:ℕinst✝:NeZero ds:Set (Space d)hs:Bornology.IsBounded shs':s ∈ nhds 0p:ℝa:ℝha:a > 0ha':∀ y ∈ Metric.ball 0 a, s y⊢ IntegrableOn (fun x => ‖x‖ ^ p) s volume ↔ 0 < ↑d + p
obtain ⟨b, hb, hb'⟩ := Bornology.IsBounded.subset_ball_lt hs 0 0 d:ℕinst✝:NeZero ds:Set (Space d)hs:Bornology.IsBounded shs':s ∈ nhds 0p:ℝa:ℝha:a > 0ha':∀ y ∈ Metric.ball 0 a, s yb:ℝhb:0 < bhb':s ⊆ Metric.ball 0 b⊢ IntegrableOn (fun x => ‖x‖ ^ p) s volume ↔ 0 < ↑d + p
constructor mp d:ℕinst✝:NeZero ds:Set (Space d)hs:Bornology.IsBounded shs':s ∈ nhds 0p:ℝa:ℝha:a > 0ha':∀ y ∈ Metric.ball 0 a, s yb:ℝhb:0 < bhb':s ⊆ Metric.ball 0 b⊢ IntegrableOn (fun x => ‖x‖ ^ p) s volume → 0 < ↑d + pmpr d:ℕinst✝:NeZero ds:Set (Space d)hs:Bornology.IsBounded shs':s ∈ nhds 0p:ℝa:ℝha:a > 0ha':∀ y ∈ Metric.ball 0 a, s yb:ℝhb:0 < bhb':s ⊆ Metric.ball 0 b⊢ 0 < ↑d + p → IntegrableOn (fun x => ‖x‖ ^ p) s volume <;> mp d:ℕinst✝:NeZero ds:Set (Space d)hs:Bornology.IsBounded shs':s ∈ nhds 0p:ℝa:ℝha:a > 0ha':∀ y ∈ Metric.ball 0 a, s yb:ℝhb:0 < bhb':s ⊆ Metric.ball 0 b⊢ IntegrableOn (fun x => ‖x‖ ^ p) s volume → 0 < ↑d + pmpr d:ℕinst✝:NeZero ds:Set (Space d)hs:Bornology.IsBounded shs':s ∈ nhds 0p:ℝa:ℝha:a > 0ha':∀ y ∈ Metric.ball 0 a, s yb:ℝhb:0 < bhb':s ⊆ Metric.ball 0 b⊢ 0 < ↑d + p → IntegrableOn (fun x => ‖x‖ ^ p) s volume intro h mpr d:ℕinst✝:NeZero ds:Set (Space d)hs:Bornology.IsBounded shs':s ∈ nhds 0p:ℝa:ℝha:a > 0ha':∀ y ∈ Metric.ball 0 a, s yb:ℝhb:0 < bhb':s ⊆ Metric.ball 0 bh:0 < ↑d + p⊢ IntegrableOn (fun x => ‖x‖ ^ p) s volume
· mp d:ℕinst✝:NeZero ds:Set (Space d)hs:Bornology.IsBounded shs':s ∈ nhds 0p:ℝa:ℝha:a > 0ha':∀ y ∈ Metric.ball 0 a, s yb:ℝhb:0 < bhb':s ⊆ Metric.ball 0 bh:IntegrableOn (fun x => ‖x‖ ^ p) s volume⊢ 0 < ↑d + p exact (integrableOn_norm_rpow_ball_iff ha p).mp (IntegrableOn.mono_set h ha') All goals completed! 🐙
· mpr d:ℕinst✝:NeZero ds:Set (Space d)hs:Bornology.IsBounded shs':s ∈ nhds 0p:ℝa:ℝha:a > 0ha':∀ y ∈ Metric.ball 0 a, s yb:ℝhb:0 < bhb':s ⊆ Metric.ball 0 bh:0 < ↑d + p⊢ IntegrableOn (fun x => ‖x‖ ^ p) s volume exact IntegrableOn.mono_set ((integrableOn_norm_rpow_ball_iff hb p).mpr h) hb' All goals completed! 🐙
The function x ↦ ‖x‖ᵖ is integrable on a bounded subset with the origin in its exterior.
lemma integrableOn_norm_rpow_of_isBounded_compl_nhds {d : ℕ} {s : Set (Space d)}
(hs : Bornology.IsBounded s) (hs' : sᶜ ∈ nhds 0) (p : ℝ) :
IntegrableOn (fun x : Space d ↦ ‖x‖ ^ p) s := by d:ℕs:Set (Space d)hs:Bornology.IsBounded shs':sᶜ ∈ nhds 0p:ℝ⊢ IntegrableOn (fun x => ‖x‖ ^ p) s volume
obtain ⟨a, ha, ha'⟩ := Metric.eventually_nhds_iff_ball.mp hs' d:ℕs:Set (Space d)hs:Bornology.IsBounded shs':sᶜ ∈ nhds 0p:ℝa:ℝha:a > 0ha':∀ y ∈ Metric.ball 0 a, y ∉ s⊢ IntegrableOn (fun x => ‖x‖ ^ p) s volume
obtain ⟨b, hb, hb'⟩ := Bornology.IsBounded.subset_ball_lt hs 0 0 d:ℕs:Set (Space d)hs:Bornology.IsBounded shs':sᶜ ∈ nhds 0p:ℝa:ℝha:a > 0ha':∀ y ∈ Metric.ball 0 a, y ∉ sb:ℝhb:0 < bhb':s ⊆ Metric.ball 0 b⊢ IntegrableOn (fun x => ‖x‖ ^ p) s volume
have hsc : s ⊆ (Metric.ball 0 a)ᶜ := Set.subset_compl_comm.mp ha' d:ℕs:Set (Space d)hs:Bornology.IsBounded shs':sᶜ ∈ nhds 0p:ℝa:ℝha:a > 0ha':∀ y ∈ Metric.ball 0 a, y ∉ sb:ℝhb:0 < bhb':s ⊆ Metric.ball 0 bhsc:s ⊆ (Metric.ball 0 a)ᶜ⊢ IntegrableOn (fun x => ‖x‖ ^ p) s volume
exact IntegrableOn.mono_set (integrableOn_norm_rpow_shell ha b p) (Set.subset_inter hb' hsc) All goals completed! 🐙
The function x ↦ ‖x‖ᵖ is integrable on a subset with the origin in its exterior provided
the decay at infinity is fast enough.
lemma integrableOn_norm_rpow_of_compl_nhds {d : ℕ} [NeZero d] {s : Set (Space d)}
(hs : sᶜ ∈ nhds 0) {p : ℝ} (h : d + p < 0) : IntegrableOn (fun x : Space d ↦ ‖x‖ ^ p) s := by d:ℕinst✝:NeZero ds:Set (Space d)hs:sᶜ ∈ nhds 0p:ℝh:↑d + p < 0⊢ IntegrableOn (fun x => ‖x‖ ^ p) s volume
obtain ⟨a, ha, ha'⟩ := Metric.eventually_nhds_iff_ball.mp hs d:ℕinst✝:NeZero ds:Set (Space d)hs:sᶜ ∈ nhds 0p:ℝh:↑d + p < 0a:ℝha:a > 0ha':∀ y ∈ Metric.ball 0 a, y ∉ s⊢ IntegrableOn (fun x => ‖x‖ ^ p) s volume
have hs' : s ⊆ (Metric.ball 0 a)ᶜ := Set.subset_compl_comm.mp ha' d:ℕinst✝:NeZero ds:Set (Space d)hs:sᶜ ∈ nhds 0p:ℝh:↑d + p < 0a:ℝha:a > 0ha':∀ y ∈ Metric.ball 0 a, y ∉ shs':s ⊆ (Metric.ball 0 a)ᶜ⊢ IntegrableOn (fun x => ‖x‖ ^ p) s volume
exact IntegrableOn.mono_set ((integrableOn_norm_rpow_ball_compl_iff ha p).mpr h) hs' All goals completed! 🐙