Theorem: MeasureTheory.Lp.snorm'_lim_le_liminf_snorm'
File: Mathlib/MeasureTheory/Function/LpSpace.lean

tactic: rw [snorm'_lim_eq_lintegral_liminf hp_pos.le h_lim]
state_before: α : Type u_2
E✝ : Type ?u.8107923
F : Type ?u.8107926
G : Type ?u.8107929
m m0 : MeasurableSpace α
p✝ : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝³ : NormedAddCommGroup E✝
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedAddCommGroup G
E : Type u_1
inst✝ : NormedAddCommGroup E
f : ℕ → α → E
p : ℝ
hp_pos : 0 < p
hf : ∀ (n : ℕ), AEStronglyMeasurable (f n) μ
f_lim : α → E
h_lim : ∀ᵐ (x : α) ∂μ, Tendsto (fun n => f n x) atTop (𝓝 (f_lim x))
⊢ snorm' f_lim p μ ≤ liminf (fun n => snorm' (f n) p μ) atTop

tactic: rw [← ENNReal.le_rpow_one_div_iff (by simp [hp_pos] : 0 < 1 / p), one_div_one_div]
state_before: α : Type u_2
E✝ : Type ?u.8107923
F : Type ?u.8107926
G : Type ?u.8107929
m m0 : MeasurableSpace α
p✝ : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝³ : NormedAddCommGroup E✝
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedAddCommGroup G
E : Type u_1
inst✝ : NormedAddCommGroup E
f : ℕ → α → E
p : ℝ
hp_pos : 0 < p
hf : ∀ (n : ℕ), AEStronglyMeasurable (f n) μ
f_lim : α → E
h_lim : ∀ᵐ (x : α) ∂μ, Tendsto (fun n => f n x) atTop (𝓝 (f_lim x))
⊢ (∫⁻ (a : α), liminf (fun m => ↑‖f m a‖₊ ^ p) atTop ∂μ) ^ (1 / p) ≤ liminf (fun n => snorm' (f n) p μ) atTop

tactic: refine (lintegral_liminf_le' fun m => (hf m).ennnorm.pow_const _).trans_eq ?_
state_before: α : Type u_2
E✝ : Type ?u.8107923
F : Type ?u.8107926
G : Type ?u.8107929
m m0 : MeasurableSpace α
p✝ : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝³ : NormedAddCommGroup E✝
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedAddCommGroup G
E : Type u_1
inst✝ : NormedAddCommGroup E
f : ℕ → α → E
p : ℝ
hp_pos : 0 < p
hf : ∀ (n : ℕ), AEStronglyMeasurable (f n) μ
f_lim : α → E
h_lim : ∀ᵐ (x : α) ∂μ, Tendsto (fun n => f n x) atTop (𝓝 (f_lim x))
⊢ (∫⁻ (a : α), liminf (fun m => ↑‖f m a‖₊ ^ p) atTop ∂μ) ≤ liminf (fun n => snorm' (f n) p μ) atTop ^ p

tactic: have h_pow_liminf :
  (atTop.liminf fun n => snorm' (f n) p μ) ^ p = atTop.liminf fun n => snorm' (f n) p μ ^ p := by
  have h_rpow_mono := ENNReal.strictMono_rpow_of_pos hp_pos
  have h_rpow_surj := (ENNReal.rpow_left_bijective hp_pos.ne.symm).2
  refine' (h_rpow_mono.orderIsoOfSurjective _ h_rpow_surj).liminf_apply _ _ _ _
  all_goals isBoundedDefault
state_before: α : Type u_2
E✝ : Type ?u.8107923
F : Type ?u.8107926
G : Type ?u.8107929
m m0 : MeasurableSpace α
p✝ : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝³ : NormedAddCommGroup E✝
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedAddCommGroup G
E : Type u_1
inst✝ : NormedAddCommGroup E
f : ℕ → α → E
p : ℝ
hp_pos : 0 < p
hf : ∀ (n : ℕ), AEStronglyMeasurable (f n) μ
f_lim : α → E
h_lim : ∀ᵐ (x : α) ∂μ, Tendsto (fun n => f n x) atTop (𝓝 (f_lim x))
⊢ liminf (fun n => ∫⁻ (a : α), ↑‖f n a‖₊ ^ p ∂μ) atTop = liminf (fun n => snorm' (f n) p μ) atTop ^ p

tactic: rw [h_pow_liminf]
state_before: α : Type u_2
E✝ : Type ?u.8107923
F : Type ?u.8107926
G : Type ?u.8107929
m m0 : MeasurableSpace α
p✝ : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝³ : NormedAddCommGroup E✝
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedAddCommGroup G
E : Type u_1
inst✝ : NormedAddCommGroup E
f : ℕ → α → E
p : ℝ
hp_pos : 0 < p
hf : ∀ (n : ℕ), AEStronglyMeasurable (f n) μ
f_lim : α → E
h_lim : ∀ᵐ (x : α) ∂μ, Tendsto (fun n => f n x) atTop (𝓝 (f_lim x))
h_pow_liminf : liminf (fun n => snorm' (f n) p μ) atTop ^ p = liminf (fun n => snorm' (f n) p μ ^ p) atTop
⊢ liminf (fun n => ∫⁻ (a : α), ↑‖f n a‖₊ ^ p ∂μ) atTop = liminf (fun n => snorm' (f n) p μ) atTop ^ p

tactic: simp_rw [snorm', ← ENNReal.rpow_mul, one_div, inv_mul_cancel hp_pos.ne.symm, ENNReal.rpow_one]
state_before: α : Type u_2
E✝ : Type ?u.8107923
F : Type ?u.8107926
G : Type ?u.8107929
m m0 : MeasurableSpace α
p✝ : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝³ : NormedAddCommGroup E✝
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedAddCommGroup G
E : Type u_1
inst✝ : NormedAddCommGroup E
f : ℕ → α → E
p : ℝ
hp_pos : 0 < p
hf : ∀ (n : ℕ), AEStronglyMeasurable (f n) μ
f_lim : α → E
h_lim : ∀ᵐ (x : α) ∂μ, Tendsto (fun n => f n x) atTop (𝓝 (f_lim x))
h_pow_liminf : liminf (fun n => snorm' (f n) p μ) atTop ^ p = liminf (fun n => snorm' (f n) p μ ^ p) atTop
⊢ liminf (fun n => ∫⁻ (a : α), ↑‖f n a‖₊ ^ p ∂μ) atTop = liminf (fun n => snorm' (f n) p μ ^ p) atTop

tactic: simp [hp_pos]
state_before: α : Type u_2
E✝ : Type ?u.8107923
F : Type ?u.8107926
G : Type ?u.8107929
m m0 : MeasurableSpace α
p✝ : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝³ : NormedAddCommGroup E✝
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedAddCommGroup G
E : Type u_1
inst✝ : NormedAddCommGroup E
f : ℕ → α → E
p : ℝ
hp_pos : 0 < p
hf : ∀ (n : ℕ), AEStronglyMeasurable (f n) μ
f_lim : α → E
h_lim : ∀ᵐ (x : α) ∂μ, Tendsto (fun n => f n x) atTop (𝓝 (f_lim x))
⊢ 0 < 1 / p

tactic: have h_rpow_mono := ENNReal.strictMono_rpow_of_pos hp_pos
state_before: α : Type u_2
E✝ : Type ?u.8107923
F : Type ?u.8107926
G : Type ?u.8107929
m m0 : MeasurableSpace α
p✝ : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝³ : NormedAddCommGroup E✝
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedAddCommGroup G
E : Type u_1
inst✝ : NormedAddCommGroup E
f : ℕ → α → E
p : ℝ
hp_pos : 0 < p
hf : ∀ (n : ℕ), AEStronglyMeasurable (f n) μ
f_lim : α → E
h_lim : ∀ᵐ (x : α) ∂μ, Tendsto (fun n => f n x) atTop (𝓝 (f_lim x))
⊢ liminf (fun n => snorm' (f n) p μ) atTop ^ p = liminf (fun n => snorm' (f n) p μ ^ p) atTop

tactic: have h_rpow_surj := (ENNReal.rpow_left_bijective hp_pos.ne.symm).2
state_before: α : Type u_2
E✝ : Type ?u.8107923
F : Type ?u.8107926
G : Type ?u.8107929
m m0 : MeasurableSpace α
p✝ : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝³ : NormedAddCommGroup E✝
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedAddCommGroup G
E : Type u_1
inst✝ : NormedAddCommGroup E
f : ℕ → α → E
p : ℝ
hp_pos : 0 < p
hf : ∀ (n : ℕ), AEStronglyMeasurable (f n) μ
f_lim : α → E
h_lim : ∀ᵐ (x : α) ∂μ, Tendsto (fun n => f n x) atTop (𝓝 (f_lim x))
h_rpow_mono : StrictMono fun x => x ^ p
⊢ liminf (fun n => snorm' (f n) p μ) atTop ^ p = liminf (fun n => snorm' (f n) p μ ^ p) atTop

tactic: refine' (h_rpow_mono.orderIsoOfSurjective _ h_rpow_surj).liminf_apply _ _ _ _
state_before: α : Type u_2
E✝ : Type ?u.8107923
F : Type ?u.8107926
G : Type ?u.8107929
m m0 : MeasurableSpace α
p✝ : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝³ : NormedAddCommGroup E✝
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedAddCommGroup G
E : Type u_1
inst✝ : NormedAddCommGroup E
f : ℕ → α → E
p : ℝ
hp_pos : 0 < p
hf : ∀ (n : ℕ), AEStronglyMeasurable (f n) μ
f_lim : α → E
h_lim : ∀ᵐ (x : α) ∂μ, Tendsto (fun n => f n x) atTop (𝓝 (f_lim x))
h_rpow_mono : StrictMono fun x => x ^ p
h_rpow_surj : Function.Surjective fun y => y ^ p
⊢ liminf (fun n => snorm' (f n) p μ) atTop ^ p = liminf (fun n => snorm' (f n) p μ ^ p) atTop

tactic: all_goals isBoundedDefault
state_before: case refine'_1
α : Type u_2
E✝ : Type ?u.8107923
F : Type ?u.8107926
G : Type ?u.8107929
m m0 : MeasurableSpace α
p✝ : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝³ : NormedAddCommGroup E✝
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedAddCommGroup G
E : Type u_1
inst✝ : NormedAddCommGroup E
f : ℕ → α → E
p : ℝ
hp_pos : 0 < p
hf : ∀ (n : ℕ), AEStronglyMeasurable (f n) μ
f_lim : α → E
h_lim : ∀ᵐ (x : α) ∂μ, Tendsto (fun n => f n x) atTop (𝓝 (f_lim x))
h_rpow_mono : StrictMono fun x => x ^ p
h_rpow_surj : Function.Surjective fun y => y ^ p
⊢ IsBoundedUnder (fun x x_1 => x ≥ x_1) atTop fun n => snorm' (f n) p μ

case refine'_2
α : Type u_2
E✝ : Type ?u.8107923
F : Type ?u.8107926
G : Type ?u.8107929
m m0 : MeasurableSpace α
p✝ : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝³ : NormedAddCommGroup E✝
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedAddCommGroup G
E : Type u_1
inst✝ : NormedAddCommGroup E
f : ℕ → α → E
p : ℝ
hp_pos : 0 < p
hf : ∀ (n : ℕ), AEStronglyMeasurable (f n) μ
f_lim : α → E
h_lim : ∀ᵐ (x : α) ∂μ, Tendsto (fun n => f n x) atTop (𝓝 (f_lim x))
h_rpow_mono : StrictMono fun x => x ^ p
h_rpow_surj : Function.Surjective fun y => y ^ p
⊢ IsCoboundedUnder (fun x x_1 => x ≥ x_1) atTop fun n => snorm' (f n) p μ

case refine'_3
α : Type u_2
E✝ : Type ?u.8107923
F : Type ?u.8107926
G : Type ?u.8107929
m m0 : MeasurableSpace α
p✝ : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝³ : NormedAddCommGroup E✝
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedAddCommGroup G
E : Type u_1
inst✝ : NormedAddCommGroup E
f : ℕ → α → E
p : ℝ
hp_pos : 0 < p
hf : ∀ (n : ℕ), AEStronglyMeasurable (f n) μ
f_lim : α → E
h_lim : ∀ᵐ (x : α) ∂μ, Tendsto (fun n => f n x) atTop (𝓝 (f_lim x))
h_rpow_mono : StrictMono fun x => x ^ p
h_rpow_surj : Function.Surjective fun y => y ^ p
⊢ IsBoundedUnder (fun x x_1 => x ≥ x_1) atTop fun x =>
    ↑(StrictMono.orderIsoOfSurjective (fun x => x ^ p) h_rpow_mono h_rpow_surj) (snorm' (f x) p μ)

case refine'_4
α : Type u_2
E✝ : Type ?u.8107923
F : Type ?u.8107926
G : Type ?u.8107929
m m0 : MeasurableSpace α
p✝ : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝³ : NormedAddCommGroup E✝
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedAddCommGroup G
E : Type u_1
inst✝ : NormedAddCommGroup E
f : ℕ → α → E
p : ℝ
hp_pos : 0 < p
hf : ∀ (n : ℕ), AEStronglyMeasurable (f n) μ
f_lim : α → E
h_lim : ∀ᵐ (x : α) ∂μ, Tendsto (fun n => f n x) atTop (𝓝 (f_lim x))
h_rpow_mono : StrictMono fun x => x ^ p
h_rpow_surj : Function.Surjective fun y => y ^ p
⊢ IsCoboundedUnder (fun x x_1 => x ≥ x_1) atTop fun x =>
    ↑(StrictMono.orderIsoOfSurjective (fun x => x ^ p) h_rpow_mono h_rpow_surj) (snorm' (f x) p μ)

tactic: isBoundedDefault
state_before: case refine'_4
α : Type u_2
E✝ : Type ?u.8107923
F : Type ?u.8107926
G : Type ?u.8107929
m m0 : MeasurableSpace α
p✝ : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝³ : NormedAddCommGroup E✝
inst✝² : NormedAddCommGroup F
inst✝¹ : NormedAddCommGroup G
E : Type u_1
inst✝ : NormedAddCommGroup E
f : ℕ → α → E
p : ℝ
hp_pos : 0 < p
hf : ∀ (n : ℕ), AEStronglyMeasurable (f n) μ
f_lim : α → E
h_lim : ∀ᵐ (x : α) ∂μ, Tendsto (fun n => f n x) atTop (𝓝 (f_lim x))
h_rpow_mono : StrictMono fun x => x ^ p
h_rpow_surj : Function.Surjective fun y => y ^ p
⊢ IsCoboundedUnder (fun x x_1 => x ≥ x_1) atTop fun x =>
    ↑(StrictMono.orderIsoOfSurjective (fun x => x ^ p) h_rpow_mono h_rpow_surj) (snorm' (f x) p μ)