Theorem: MeasureTheory.snorm_indicator_eq_snorm_restrict
File: Mathlib/MeasureTheory/Function/LpSpace.lean

tactic: by_cases hp_zero : p = 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
c : E
f✝ : α → E
hf : AEStronglyMeasurable f✝ μ
s : Set α
f : α → F
hs : MeasurableSet s
⊢ snorm (s.indicator f) p μ = snorm f p (μ.restrict s)
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
c : E
f✝ : α → E
hf : AEStronglyMeasurable f✝ μ
s : Set α
f : α → F
hs : MeasurableSet s
hp_zero : p = 0
⊢ snorm (s.indicator f) p μ = snorm f p (μ.restrict s)

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
c : E
f✝ : α → E
hf : AEStronglyMeasurable f✝ μ
s : Set α
f : α → F
hs : MeasurableSet s
hp_zero : ¬p = 0
⊢ snorm (s.indicator f) p μ = snorm f p (μ.restrict s)

tactic: by_cases hp_top : p = ∞
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
c : E
f✝ : α → E
hf : AEStronglyMeasurable f✝ μ
s : Set α
f : α → F
hs : MeasurableSet s
hp_zero : ¬p = 0
⊢ snorm (s.indicator f) p μ = snorm f p (μ.restrict s)
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
c : E
f✝ : α → E
hf : AEStronglyMeasurable f✝ μ
s : Set α
f : α → F
hs : MeasurableSet s
hp_zero : ¬p = 0
hp_top : p = ⊤
⊢ snorm (s.indicator f) p μ = snorm f p (μ.restrict s)

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
c : E
f✝ : α → E
hf : AEStronglyMeasurable f✝ μ
s : Set α
f : α → F
hs : MeasurableSet s
hp_zero : ¬p = 0
hp_top : ¬p = ⊤
⊢ snorm (s.indicator f) p μ = snorm f p (μ.restrict s)

tactic: simp_rw [snorm_eq_lintegral_rpow_nnnorm hp_zero hp_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
c : E
f✝ : α → E
hf : AEStronglyMeasurable f✝ μ
s : Set α
f : α → F
hs : MeasurableSet s
hp_zero : ¬p = 0
hp_top : ¬p = ⊤
⊢ snorm (s.indicator f) p μ = snorm f p (μ.restrict s)
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
c : E
f✝ : α → E
hf : AEStronglyMeasurable f✝ μ
s : Set α
f : α → F
hs : MeasurableSet s
hp_zero : ¬p = 0
hp_top : ¬p = ⊤
⊢ (∫⁻ (x : α), ↑‖s.indicator f x‖₊ ^ p.toReal ∂μ) ^ (1 / p.toReal) =
    (∫⁻ (x : α) in s, ↑‖f x‖₊ ^ p.toReal ∂μ) ^ (1 / p.toReal)

tactic: suffices (∫⁻ x, (‖s.indicator f x‖₊ : ℝ≥0∞) ^ p.toReal ∂μ) =
    ∫⁻ x in s, (‖f x‖₊ : ℝ≥0∞) ^ p.toReal ∂μ by rw [this]
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
c : E
f✝ : α → E
hf : AEStronglyMeasurable f✝ μ
s : Set α
f : α → F
hs : MeasurableSet s
hp_zero : ¬p = 0
hp_top : ¬p = ⊤
⊢ (∫⁻ (x : α), ↑‖s.indicator f x‖₊ ^ p.toReal ∂μ) ^ (1 / p.toReal) =
    (∫⁻ (x : α) in s, ↑‖f x‖₊ ^ p.toReal ∂μ) ^ (1 / p.toReal)
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
c : E
f✝ : α → E
hf : AEStronglyMeasurable f✝ μ
s : Set α
f : α → F
hs : MeasurableSet s
hp_zero : ¬p = 0
hp_top : ¬p = ⊤
⊢ ∫⁻ (x : α), ↑‖s.indicator f x‖₊ ^ p.toReal ∂μ = ∫⁻ (x : α) in s, ↑‖f x‖₊ ^ p.toReal ∂μ

tactic: rw [← lintegral_indicator _ hs]
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
c : E
f✝ : α → E
hf : AEStronglyMeasurable f✝ μ
s : Set α
f : α → F
hs : MeasurableSet s
hp_zero : ¬p = 0
hp_top : ¬p = ⊤
⊢ ∫⁻ (x : α), ↑‖s.indicator f x‖₊ ^ p.toReal ∂μ = ∫⁻ (x : α) in s, ↑‖f x‖₊ ^ p.toReal ∂μ
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
c : E
f✝ : α → E
hf : AEStronglyMeasurable f✝ μ
s : Set α
f : α → F
hs : MeasurableSet s
hp_zero : ¬p = 0
hp_top : ¬p = ⊤
⊢ ∫⁻ (x : α), ↑‖s.indicator f x‖₊ ^ p.toReal ∂μ = ∫⁻ (a : α), s.indicator (fun x => ↑‖f x‖₊ ^ p.toReal) a ∂μ

tactic: congr
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
c : E
f✝ : α → E
hf : AEStronglyMeasurable f✝ μ
s : Set α
f : α → F
hs : MeasurableSet s
hp_zero : ¬p = 0
hp_top : ¬p = ⊤
⊢ ∫⁻ (x : α), ↑‖s.indicator f x‖₊ ^ p.toReal ∂μ = ∫⁻ (a : α), s.indicator (fun x => ↑‖f x‖₊ ^ p.toReal) a ∂μ
state_after: case neg.e_f
α : 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
c : E
f✝ : α → E
hf : AEStronglyMeasurable f✝ μ
s : Set α
f : α → F
hs : MeasurableSet s
hp_zero : ¬p = 0
hp_top : ¬p = ⊤
⊢ (fun x => ↑‖s.indicator f x‖₊ ^ p.toReal) = fun a => s.indicator (fun x => ↑‖f x‖₊ ^ p.toReal) a

tactic: simp_rw [nnnorm_indicator_eq_indicator_nnnorm, ENNReal.coe_indicator]
state_before: case neg.e_f
α : 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
c : E
f✝ : α → E
hf : AEStronglyMeasurable f✝ μ
s : Set α
f : α → F
hs : MeasurableSet s
hp_zero : ¬p = 0
hp_top : ¬p = ⊤
⊢ (fun x => ↑‖s.indicator f x‖₊ ^ p.toReal) = fun a => s.indicator (fun x => ↑‖f x‖₊ ^ p.toReal) a
state_after: case neg.e_f
α : 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
c : E
f✝ : α → E
hf : AEStronglyMeasurable f✝ μ
s : Set α
f : α → F
hs : MeasurableSet s
hp_zero : ¬p = 0
hp_top : ¬p = ⊤
⊢ (fun x => s.indicator (fun x => ↑‖f x‖₊) x ^ p.toReal) = fun a => s.indicator (fun x => ↑‖f x‖₊ ^ p.toReal) a

tactic: have h_zero : (fun x => x ^ p.toReal) (0 : ℝ≥0∞) = 0 := by
  simp [ENNReal.toReal_pos hp_zero hp_top]
state_before: case neg.e_f
α : 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
c : E
f✝ : α → E
hf : AEStronglyMeasurable f✝ μ
s : Set α
f : α → F
hs : MeasurableSet s
hp_zero : ¬p = 0
hp_top : ¬p = ⊤
⊢ (fun x => s.indicator (fun x => ↑‖f x‖₊) x ^ p.toReal) = fun a => s.indicator (fun x => ↑‖f x‖₊ ^ p.toReal) a
state_after: case neg.e_f
α : 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
c : E
f✝ : α → E
hf : AEStronglyMeasurable f✝ μ
s : Set α
f : α → F
hs : MeasurableSet s
hp_zero : ¬p = 0
hp_top : ¬p = ⊤
h_zero : (fun x => x ^ p.toReal) 0 = 0
⊢ (fun x => s.indicator (fun x => ↑‖f x‖₊) x ^ p.toReal) = fun a => s.indicator (fun x => ↑‖f x‖₊ ^ p.toReal) a

tactic: exact (Set.indicator_comp_of_zero (g := fun x : ℝ≥0∞ => x ^ p.toReal) h_zero).symm
state_before: case neg.e_f
α : 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
c : E
f✝ : α → E
hf : AEStronglyMeasurable f✝ μ
s : Set α
f : α → F
hs : MeasurableSet s
hp_zero : ¬p = 0
hp_top : ¬p = ⊤
h_zero : (fun x => x ^ p.toReal) 0 = 0
⊢ (fun x => s.indicator (fun x => ↑‖f x‖₊) x ^ p.toReal) = fun a => s.indicator (fun x => ↑‖f x‖₊ ^ p.toReal) a
state_after: no goals

tactic: simp only [hp_zero, snorm_exponent_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
c : E
f✝ : α → E
hf : AEStronglyMeasurable f✝ μ
s : Set α
f : α → F
hs : MeasurableSet s
hp_zero : p = 0
⊢ snorm (s.indicator f) p μ = snorm f p (μ.restrict s)
state_after: no goals

tactic: simp_rw [hp_top, snorm_exponent_top]
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
c : E
f✝ : α → E
hf : AEStronglyMeasurable f✝ μ
s : Set α
f : α → F
hs : MeasurableSet s
hp_zero : ¬p = 0
hp_top : p = ⊤
⊢ snorm (s.indicator f) p μ = snorm f p (μ.restrict s)
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
c : E
f✝ : α → E
hf : AEStronglyMeasurable f✝ μ
s : Set α
f : α → F
hs : MeasurableSet s
hp_zero : ¬p = 0
hp_top : p = ⊤
⊢ snormEssSup (s.indicator f) μ = snormEssSup f (μ.restrict s)

tactic: exact snormEssSup_indicator_eq_snormEssSup_restrict hs
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
c : E
f✝ : α → E
hf : AEStronglyMeasurable f✝ μ
s : Set α
f : α → F
hs : MeasurableSet s
hp_zero : ¬p = 0
hp_top : p = ⊤
⊢ snormEssSup (s.indicator f) μ = snormEssSup f (μ.restrict s)
state_after: no goals

tactic: rw [this]
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
c : E
f✝ : α → E
hf : AEStronglyMeasurable f✝ μ
s : Set α
f : α → F
hs : MeasurableSet s
hp_zero : ¬p = 0
hp_top : ¬p = ⊤
this : ∫⁻ (x : α), ↑‖s.indicator f x‖₊ ^ p.toReal ∂μ = ∫⁻ (x : α) in s, ↑‖f x‖₊ ^ p.toReal ∂μ
⊢ (∫⁻ (x : α), ↑‖s.indicator f x‖₊ ^ p.toReal ∂μ) ^ (1 / p.toReal) =
    (∫⁻ (x : α) in s, ↑‖f x‖₊ ^ p.toReal ∂μ) ^ (1 / p.toReal)
state_after: no goals

tactic: simp [ENNReal.toReal_pos hp_zero hp_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
c : E
f✝ : α → E
hf : AEStronglyMeasurable f✝ μ
s : Set α
f : α → F
hs : MeasurableSet s
hp_zero : ¬p = 0
hp_top : ¬p = ⊤
⊢ (fun x => x ^ p.toReal) 0 = 0
state_after: no goals