Theorem: MeasureTheory.ae_eq_zero_of_snorm'_eq_zero
File: Mathlib/MeasureTheory/Function/LpSeminorm/Basic.lean

tactic: rw [snorm', ENNReal.rpow_eq_zero_iff] at h
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
f : α → E
hq0 : 0 ≤ q
hf : AEStronglyMeasurable f μ
h : snorm' f q μ = 0
⊢ f =ᶠ[ae μ] 0
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
f : α → E
hq0 : 0 ≤ q
hf : AEStronglyMeasurable f μ
h : ∫⁻ (a : α), ↑‖f a‖₊ ^ q ∂μ = 0 ∧ 0 < 1 / q ∨ ∫⁻ (a : α), ↑‖f a‖₊ ^ q ∂μ = ⊤ ∧ 1 / q < 0
⊢ f =ᶠ[ae μ] 0

tactic: cases h with
| inl h =>
  rw [lintegral_eq_zero_iff' (hf.ennnorm.pow_const q)] at h
  refine h.left.mono fun x hx => ?_
  rw [Pi.zero_apply, ENNReal.rpow_eq_zero_iff] at hx
  cases hx with
  | inl hx =>
    cases' hx with hx _
    rwa [← ENNReal.coe_zero, ENNReal.coe_inj, nnnorm_eq_zero] at hx
  | inr hx =>
    exact absurd hx.left ENNReal.coe_ne_top
| inr h =>
  exfalso
  rw [one_div, inv_lt_zero] at h
  exact hq0.not_lt h.right
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
f : α → E
hq0 : 0 ≤ q
hf : AEStronglyMeasurable f μ
h : ∫⁻ (a : α), ↑‖f a‖₊ ^ q ∂μ = 0 ∧ 0 < 1 / q ∨ ∫⁻ (a : α), ↑‖f a‖₊ ^ q ∂μ = ⊤ ∧ 1 / q < 0
⊢ f =ᶠ[ae μ] 0
state_after: no goals

tactic: rw [lintegral_eq_zero_iff' (hf.ennnorm.pow_const q)] at h
state_before: case inl
α : 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
f : α → E
hq0 : 0 ≤ q
hf : AEStronglyMeasurable f μ
h : ∫⁻ (a : α), ↑‖f a‖₊ ^ q ∂μ = 0 ∧ 0 < 1 / q
⊢ f =ᶠ[ae μ] 0
state_after: case inl
α : 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
f : α → E
hq0 : 0 ≤ q
hf : AEStronglyMeasurable f μ
h : (fun x => ↑‖f x‖₊ ^ q) =ᶠ[ae μ] 0 ∧ 0 < 1 / q
⊢ f =ᶠ[ae μ] 0

tactic: refine h.left.mono fun x hx => ?_
state_before: case inl
α : 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
f : α → E
hq0 : 0 ≤ q
hf : AEStronglyMeasurable f μ
h : (fun x => ↑‖f x‖₊ ^ q) =ᶠ[ae μ] 0 ∧ 0 < 1 / q
⊢ f =ᶠ[ae μ] 0
state_after: case inl
α : 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
f : α → E
hq0 : 0 ≤ q
hf : AEStronglyMeasurable f μ
h : (fun x => ↑‖f x‖₊ ^ q) =ᶠ[ae μ] 0 ∧ 0 < 1 / q
x : α
hx : (fun x => ↑‖f x‖₊ ^ q) x = 0 x
⊢ f x = 0 x

tactic: rw [Pi.zero_apply, ENNReal.rpow_eq_zero_iff] at hx
state_before: case inl
α : 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
f : α → E
hq0 : 0 ≤ q
hf : AEStronglyMeasurable f μ
h : (fun x => ↑‖f x‖₊ ^ q) =ᶠ[ae μ] 0 ∧ 0 < 1 / q
x : α
hx : (fun x => ↑‖f x‖₊ ^ q) x = 0 x
⊢ f x = 0 x
state_after: case inl
α : 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
f : α → E
hq0 : 0 ≤ q
hf : AEStronglyMeasurable f μ
h : (fun x => ↑‖f x‖₊ ^ q) =ᶠ[ae μ] 0 ∧ 0 < 1 / q
x : α
hx : ↑‖f x‖₊ = 0 ∧ 0 < q ∨ ↑‖f x‖₊ = ⊤ ∧ q < 0
⊢ f x = 0 x

tactic: cases hx with
| inl hx =>
  cases' hx with hx _
  rwa [← ENNReal.coe_zero, ENNReal.coe_inj, nnnorm_eq_zero] at hx
| inr hx =>
  exact absurd hx.left ENNReal.coe_ne_top
state_before: case inl
α : 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
f : α → E
hq0 : 0 ≤ q
hf : AEStronglyMeasurable f μ
h : (fun x => ↑‖f x‖₊ ^ q) =ᶠ[ae μ] 0 ∧ 0 < 1 / q
x : α
hx : ↑‖f x‖₊ = 0 ∧ 0 < q ∨ ↑‖f x‖₊ = ⊤ ∧ q < 0
⊢ f x = 0 x
state_after: no goals

tactic: cases' hx with hx _
state_before: case inl.inl
α : 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
f : α → E
hq0 : 0 ≤ q
hf : AEStronglyMeasurable f μ
h : (fun x => ↑‖f x‖₊ ^ q) =ᶠ[ae μ] 0 ∧ 0 < 1 / q
x : α
hx : ↑‖f x‖₊ = 0 ∧ 0 < q
⊢ f x = 0 x
state_after: case inl.inl.intro
α : 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
f : α → E
hq0 : 0 ≤ q
hf : AEStronglyMeasurable f μ
h : (fun x => ↑‖f x‖₊ ^ q) =ᶠ[ae μ] 0 ∧ 0 < 1 / q
x : α
hx : ↑‖f x‖₊ = 0
right✝ : 0 < q
⊢ f x = 0 x

tactic: rwa [← ENNReal.coe_zero, ENNReal.coe_inj, nnnorm_eq_zero] at hx
state_before: case inl.inl.intro
α : 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
f : α → E
hq0 : 0 ≤ q
hf : AEStronglyMeasurable f μ
h : (fun x => ↑‖f x‖₊ ^ q) =ᶠ[ae μ] 0 ∧ 0 < 1 / q
x : α
hx : ↑‖f x‖₊ = 0
right✝ : 0 < q
⊢ f x = 0 x
state_after: no goals

tactic: exact absurd hx.left ENNReal.coe_ne_top
state_before: case inl.inr
α : 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
f : α → E
hq0 : 0 ≤ q
hf : AEStronglyMeasurable f μ
h : (fun x => ↑‖f x‖₊ ^ q) =ᶠ[ae μ] 0 ∧ 0 < 1 / q
x : α
hx : ↑‖f x‖₊ = ⊤ ∧ q < 0
⊢ f x = 0 x
state_after: no goals

tactic: exfalso
state_before: case inr
α : 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
f : α → E
hq0 : 0 ≤ q
hf : AEStronglyMeasurable f μ
h : ∫⁻ (a : α), ↑‖f a‖₊ ^ q ∂μ = ⊤ ∧ 1 / q < 0
⊢ f =ᶠ[ae μ] 0
state_after: case inr
α : 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
f : α → E
hq0 : 0 ≤ q
hf : AEStronglyMeasurable f μ
h : ∫⁻ (a : α), ↑‖f a‖₊ ^ q ∂μ = ⊤ ∧ 1 / q < 0
⊢ False

tactic: rw [one_div, inv_lt_zero] at h
state_before: case inr
α : 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
f : α → E
hq0 : 0 ≤ q
hf : AEStronglyMeasurable f μ
h : ∫⁻ (a : α), ↑‖f a‖₊ ^ q ∂μ = ⊤ ∧ 1 / q < 0
⊢ False
state_after: case inr
α : 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
f : α → E
hq0 : 0 ≤ q
hf : AEStronglyMeasurable f μ
h : ∫⁻ (a : α), ↑‖f a‖₊ ^ q ∂μ = ⊤ ∧ q < 0
⊢ False

tactic: exact hq0.not_lt h.right
state_before: case inr
α : 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
f : α → E
hq0 : 0 ≤ q
hf : AEStronglyMeasurable f μ
h : ∫⁻ (a : α), ↑‖f a‖₊ ^ q ∂μ = ⊤ ∧ q < 0
⊢ False
state_after: no goals