Theorem: MeasureTheory.snorm_const_lt_top_iff
File: Mathlib/MeasureTheory/Function/LpSeminorm/Basic.lean

tactic: have hp : 0 < p.toReal := ENNReal.toReal_pos hp_ne_zero hp_ne_top
state_before: α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p✝ : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
p : ℝ≥0∞
c : F
hp_ne_zero : p ≠ 0
hp_ne_top : p ≠ ⊤
⊢ snorm (fun x => c) p μ < ⊤ ↔ c = 0 ∨ μ Set.univ < ⊤
state_after: α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p✝ : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
p : ℝ≥0∞
c : F
hp_ne_zero : p ≠ 0
hp_ne_top : p ≠ ⊤
hp : 0 < p.toReal
⊢ snorm (fun x => c) p μ < ⊤ ↔ c = 0 ∨ μ Set.univ < ⊤

tactic: by_cases hμ : μ = 0
state_before: α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p✝ : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
p : ℝ≥0∞
c : F
hp_ne_zero : p ≠ 0
hp_ne_top : p ≠ ⊤
hp : 0 < p.toReal
⊢ snorm (fun x => c) p μ < ⊤ ↔ c = 0 ∨ μ Set.univ < ⊤
state_after: case pos
α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p✝ : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
p : ℝ≥0∞
c : F
hp_ne_zero : p ≠ 0
hp_ne_top : p ≠ ⊤
hp : 0 < p.toReal
hμ : μ = 0
⊢ snorm (fun x => c) p μ < ⊤ ↔ c = 0 ∨ μ Set.univ < ⊤

case neg
α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p✝ : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
p : ℝ≥0∞
c : F
hp_ne_zero : p ≠ 0
hp_ne_top : p ≠ ⊤
hp : 0 < p.toReal
hμ : ¬μ = 0
⊢ snorm (fun x => c) p μ < ⊤ ↔ c = 0 ∨ μ Set.univ < ⊤

tactic: by_cases hc : c = 0
state_before: case neg
α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p✝ : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
p : ℝ≥0∞
c : F
hp_ne_zero : p ≠ 0
hp_ne_top : p ≠ ⊤
hp : 0 < p.toReal
hμ : ¬μ = 0
⊢ snorm (fun x => c) p μ < ⊤ ↔ c = 0 ∨ μ Set.univ < ⊤
state_after: case pos
α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p✝ : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
p : ℝ≥0∞
c : F
hp_ne_zero : p ≠ 0
hp_ne_top : p ≠ ⊤
hp : 0 < p.toReal
hμ : ¬μ = 0
hc : c = 0
⊢ snorm (fun x => c) p μ < ⊤ ↔ c = 0 ∨ μ Set.univ < ⊤

case neg
α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p✝ : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
p : ℝ≥0∞
c : F
hp_ne_zero : p ≠ 0
hp_ne_top : p ≠ ⊤
hp : 0 < p.toReal
hμ : ¬μ = 0
hc : ¬c = 0
⊢ snorm (fun x => c) p μ < ⊤ ↔ c = 0 ∨ μ Set.univ < ⊤

tactic: rw [snorm_const' c hp_ne_zero hp_ne_top]
state_before: case neg
α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p✝ : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
p : ℝ≥0∞
c : F
hp_ne_zero : p ≠ 0
hp_ne_top : p ≠ ⊤
hp : 0 < p.toReal
hμ : ¬μ = 0
hc : ¬c = 0
⊢ snorm (fun x => c) p μ < ⊤ ↔ c = 0 ∨ μ Set.univ < ⊤
state_after: case neg
α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p✝ : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
p : ℝ≥0∞
c : F
hp_ne_zero : p ≠ 0
hp_ne_top : p ≠ ⊤
hp : 0 < p.toReal
hμ : ¬μ = 0
hc : ¬c = 0
⊢ ↑‖c‖₊ * μ Set.univ ^ (1 / p.toReal) < ⊤ ↔ c = 0 ∨ μ Set.univ < ⊤

tactic: by_cases hμ_top : μ Set.univ = ∞
state_before: case neg
α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p✝ : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
p : ℝ≥0∞
c : F
hp_ne_zero : p ≠ 0
hp_ne_top : p ≠ ⊤
hp : 0 < p.toReal
hμ : ¬μ = 0
hc : ¬c = 0
⊢ ↑‖c‖₊ * μ Set.univ ^ (1 / p.toReal) < ⊤ ↔ c = 0 ∨ μ Set.univ < ⊤
state_after: case pos
α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p✝ : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
p : ℝ≥0∞
c : F
hp_ne_zero : p ≠ 0
hp_ne_top : p ≠ ⊤
hp : 0 < p.toReal
hμ : ¬μ = 0
hc : ¬c = 0
hμ_top : μ Set.univ = ⊤
⊢ ↑‖c‖₊ * μ Set.univ ^ (1 / p.toReal) < ⊤ ↔ c = 0 ∨ μ Set.univ < ⊤

case neg
α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p✝ : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
p : ℝ≥0∞
c : F
hp_ne_zero : p ≠ 0
hp_ne_top : p ≠ ⊤
hp : 0 < p.toReal
hμ : ¬μ = 0
hc : ¬c = 0
hμ_top : ¬μ Set.univ = ⊤
⊢ ↑‖c‖₊ * μ Set.univ ^ (1 / p.toReal) < ⊤ ↔ c = 0 ∨ μ Set.univ < ⊤

tactic: rw [ENNReal.mul_lt_top_iff]
state_before: case neg
α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p✝ : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
p : ℝ≥0∞
c : F
hp_ne_zero : p ≠ 0
hp_ne_top : p ≠ ⊤
hp : 0 < p.toReal
hμ : ¬μ = 0
hc : ¬c = 0
hμ_top : ¬μ Set.univ = ⊤
⊢ ↑‖c‖₊ * μ Set.univ ^ (1 / p.toReal) < ⊤ ↔ c = 0 ∨ μ Set.univ < ⊤
state_after: case neg
α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p✝ : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
p : ℝ≥0∞
c : F
hp_ne_zero : p ≠ 0
hp_ne_top : p ≠ ⊤
hp : 0 < p.toReal
hμ : ¬μ = 0
hc : ¬c = 0
hμ_top : ¬μ Set.univ = ⊤
⊢ ↑‖c‖₊ < ⊤ ∧ μ Set.univ ^ (1 / p.toReal) < ⊤ ∨ ↑‖c‖₊ = 0 ∨ μ Set.univ ^ (1 / p.toReal) = 0 ↔ c = 0 ∨ μ Set.univ < ⊤

tactic: simp only [true_and_iff, one_div, ENNReal.rpow_eq_zero_iff, hμ, false_or_iff, or_false_iff,
  ENNReal.coe_lt_top, nnnorm_eq_zero, ENNReal.coe_eq_zero,
  MeasureTheory.Measure.measure_univ_eq_zero, hp, inv_lt_zero, hc, and_false_iff, false_and_iff,
  inv_pos, or_self_iff, hμ_top, Ne.lt_top hμ_top, iff_true_iff]
state_before: case neg
α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p✝ : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
p : ℝ≥0∞
c : F
hp_ne_zero : p ≠ 0
hp_ne_top : p ≠ ⊤
hp : 0 < p.toReal
hμ : ¬μ = 0
hc : ¬c = 0
hμ_top : ¬μ Set.univ = ⊤
⊢ ↑‖c‖₊ < ⊤ ∧ μ Set.univ ^ (1 / p.toReal) < ⊤ ∨ ↑‖c‖₊ = 0 ∨ μ Set.univ ^ (1 / p.toReal) = 0 ↔ c = 0 ∨ μ Set.univ < ⊤
state_after: case neg
α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p✝ : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
p : ℝ≥0∞
c : F
hp_ne_zero : p ≠ 0
hp_ne_top : p ≠ ⊤
hp : 0 < p.toReal
hμ : ¬μ = 0
hc : ¬c = 0
hμ_top : ¬μ Set.univ = ⊤
⊢ μ Set.univ ^ p.toReal⁻¹ < ⊤

tactic: exact ENNReal.rpow_lt_top_of_nonneg (inv_nonneg.mpr hp.le) hμ_top
state_before: case neg
α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p✝ : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
p : ℝ≥0∞
c : F
hp_ne_zero : p ≠ 0
hp_ne_top : p ≠ ⊤
hp : 0 < p.toReal
hμ : ¬μ = 0
hc : ¬c = 0
hμ_top : ¬μ Set.univ = ⊤
⊢ μ Set.univ ^ p.toReal⁻¹ < ⊤
state_after: no goals

tactic: simp only [hμ, Measure.coe_zero, Pi.zero_apply, or_true_iff, ENNReal.zero_lt_top,
  snorm_measure_zero]
state_before: case pos
α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p✝ : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
p : ℝ≥0∞
c : F
hp_ne_zero : p ≠ 0
hp_ne_top : p ≠ ⊤
hp : 0 < p.toReal
hμ : μ = 0
⊢ snorm (fun x => c) p μ < ⊤ ↔ c = 0 ∨ μ Set.univ < ⊤
state_after: no goals

tactic: simp only [hc, true_or_iff, eq_self_iff_true, ENNReal.zero_lt_top, snorm_zero']
state_before: case pos
α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p✝ : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
p : ℝ≥0∞
c : F
hp_ne_zero : p ≠ 0
hp_ne_top : p ≠ ⊤
hp : 0 < p.toReal
hμ : ¬μ = 0
hc : c = 0
⊢ snorm (fun x => c) p μ < ⊤ ↔ c = 0 ∨ μ Set.univ < ⊤
state_after: no goals

tactic: simp [hc, hμ_top, hp]
state_before: case pos
α : Type u_1
E : Type u_2
F : Type u_3
G : Type u_4
m m0 : MeasurableSpace α
p✝ : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
p : ℝ≥0∞
c : F
hp_ne_zero : p ≠ 0
hp_ne_top : p ≠ ⊤
hp : 0 < p.toReal
hμ : ¬μ = 0
hc : ¬c = 0
hμ_top : μ Set.univ = ⊤
⊢ ↑‖c‖₊ * μ Set.univ ^ (1 / p.toReal) < ⊤ ↔ c = 0 ∨ μ Set.univ < ⊤
state_after: no goals