Theorem: MeasureTheory.snorm_le_of_ae_nnnorm_bound
File: Mathlib/MeasureTheory/Function/LpSeminorm.lean

tactic: by_cases hμ : μ = 0
state_before: α : Type u_1
E : Type ?u.1436902
F : Type u_2
G : Type ?u.1436908
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
f : α → F
C : ℝ≥0
hfC : ∀ᵐ (x : α) ∂μ, ‖f x‖₊ ≤ C
⊢ snorm f p μ ≤ C • ↑↑μ Set.univ ^ (ENNReal.toReal p)⁻¹

tactic: haveI : μ.ae.NeBot := ae_neBot.mpr hμ
state_before: case neg
α : Type u_1
E : Type ?u.1436902
F : Type u_2
G : Type ?u.1436908
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
f : α → F
C : ℝ≥0
hfC : ∀ᵐ (x : α) ∂μ, ‖f x‖₊ ≤ C
hμ : ¬μ = 0
⊢ snorm f p μ ≤ C • ↑↑μ Set.univ ^ (ENNReal.toReal p)⁻¹

tactic: by_cases hp : p = 0
state_before: case neg
α : Type u_1
E : Type ?u.1436902
F : Type u_2
G : Type ?u.1436908
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
f : α → F
C : ℝ≥0
hfC : ∀ᵐ (x : α) ∂μ, ‖f x‖₊ ≤ C
hμ : ¬μ = 0
this : NeBot (Measure.ae μ)
⊢ snorm f p μ ≤ C • ↑↑μ Set.univ ^ (ENNReal.toReal p)⁻¹

tactic: have : ∀ᵐ x ∂μ, ‖f x‖₊ ≤ ‖(C : ℝ)‖₊ := hfC.mono fun x hx => hx.trans_eq C.nnnorm_eq.symm
state_before: case neg
α : Type u_1
E : Type ?u.1436902
F : Type u_2
G : Type ?u.1436908
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
f : α → F
C : ℝ≥0
hfC : ∀ᵐ (x : α) ∂μ, ‖f x‖₊ ≤ C
hμ : ¬μ = 0
this : NeBot (Measure.ae μ)
hp : ¬p = 0
⊢ snorm f p μ ≤ C • ↑↑μ Set.univ ^ (ENNReal.toReal p)⁻¹

tactic: refine' (snorm_mono_ae this).trans_eq _
state_before: case neg
α : Type u_1
E : Type ?u.1436902
F : Type u_2
G : Type ?u.1436908
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
f : α → F
C : ℝ≥0
hfC : ∀ᵐ (x : α) ∂μ, ‖f x‖₊ ≤ C
hμ : ¬μ = 0
this✝ : NeBot (Measure.ae μ)
hp : ¬p = 0
this : ∀ᵐ (x : α) ∂μ, ‖f x‖₊ ≤ ‖↑C‖₊
⊢ snorm f p μ ≤ C • ↑↑μ Set.univ ^ (ENNReal.toReal p)⁻¹

tactic: rw [snorm_const _ hp hμ, C.nnnorm_eq, one_div, ENNReal.smul_def, smul_eq_mul]
state_before: case neg
α : Type u_1
E : Type ?u.1436902
F : Type u_2
G : Type ?u.1436908
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
f : α → F
C : ℝ≥0
hfC : ∀ᵐ (x : α) ∂μ, ‖f x‖₊ ≤ C
hμ : ¬μ = 0
this✝ : NeBot (Measure.ae μ)
hp : ¬p = 0
this : ∀ᵐ (x : α) ∂μ, ‖f x‖₊ ≤ ‖↑C‖₊
⊢ snorm (fun x => ↑C) p μ = C • ↑↑μ Set.univ ^ (ENNReal.toReal p)⁻¹

tactic: simp [hμ]
state_before: case pos
α : Type u_1
E : Type ?u.1436902
F : Type u_2
G : Type ?u.1436908
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
f : α → F
C : ℝ≥0
hfC : ∀ᵐ (x : α) ∂μ, ‖f x‖₊ ≤ C
hμ : μ = 0
⊢ snorm f p μ ≤ C • ↑↑μ Set.univ ^ (ENNReal.toReal p)⁻¹

tactic: simp [hp]
state_before: case pos
α : Type u_1
E : Type ?u.1436902
F : Type u_2
G : Type ?u.1436908
m m0 : MeasurableSpace α
p : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
f : α → F
C : ℝ≥0
hfC : ∀ᵐ (x : α) ∂μ, ‖f x‖₊ ≤ C
hμ : ¬μ = 0
this : NeBot (Measure.ae μ)
hp : p = 0
⊢ snorm f p μ ≤ C • ↑↑μ Set.univ ^ (ENNReal.toReal p)⁻¹