Theorem: MeasureTheory.SimpleFunc.memℒp_approxOn
File: Mathlib/MeasureTheory/Function/SimpleFuncDenseLp.lean

tactic: refine' ⟨(approxOn f fmeas s y₀ h₀ n).aestronglyMeasurable, _⟩
state_before: α : Type ?u.604444
β : Type u_2
ι : Type ?u.604450
E : Type u_1
F : Type ?u.604456
𝕜 : Type ?u.604459
inst✝⁵ : MeasurableSpace β
inst✝⁴ : MeasurableSpace E
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
q : ℝ
p : ℝ≥0∞
inst✝¹ : BorelSpace E
f : β → E
μ : Measure β
fmeas : Measurable f
hf : Memℒp f p
s : Set E
y₀ : E
h₀ : y₀ ∈ s
inst✝ : SeparableSpace ↑s
hi₀ : Memℒp (fun x => y₀) p
n : ℕ
⊢ Memℒp (↑(approxOn f fmeas s y₀ h₀ n)) p

tactic: suffices snorm (fun x => approxOn f fmeas s y₀ h₀ n x - y₀) p μ < ⊤ by
  have : Memℒp (fun x => approxOn f fmeas s y₀ h₀ n x - y₀) p μ :=
    ⟨(approxOn f fmeas s y₀ h₀ n - const β y₀).aestronglyMeasurable, this⟩
  convert snorm_add_lt_top this hi₀
  ext x
  simp
state_before: α : Type ?u.604444
β : Type u_2
ι : Type ?u.604450
E : Type u_1
F : Type ?u.604456
𝕜 : Type ?u.604459
inst✝⁵ : MeasurableSpace β
inst✝⁴ : MeasurableSpace E
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
q : ℝ
p : ℝ≥0∞
inst✝¹ : BorelSpace E
f : β → E
μ : Measure β
fmeas : Measurable f
hf : Memℒp f p
s : Set E
y₀ : E
h₀ : y₀ ∈ s
inst✝ : SeparableSpace ↑s
hi₀ : Memℒp (fun x => y₀) p
n : ℕ
⊢ snorm (↑(approxOn f fmeas s y₀ h₀ n)) p μ < ⊤

tactic: have hf' : Memℒp (fun x => ‖f x - y₀‖) p μ := by
  have h_meas : Measurable fun x => ‖f x - y₀‖ := by
    simp only [← dist_eq_norm]
    exact (continuous_id.dist continuous_const).measurable.comp fmeas
  refine' ⟨h_meas.aemeasurable.aestronglyMeasurable, _⟩
  rw [snorm_norm]
  convert snorm_add_lt_top hf hi₀.neg with x
  simp [sub_eq_add_neg]
state_before: α : Type ?u.604444
β : Type u_2
ι : Type ?u.604450
E : Type u_1
F : Type ?u.604456
𝕜 : Type ?u.604459
inst✝⁵ : MeasurableSpace β
inst✝⁴ : MeasurableSpace E
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
q : ℝ
p : ℝ≥0∞
inst✝¹ : BorelSpace E
f : β → E
μ : Measure β
fmeas : Measurable f
hf : Memℒp f p
s : Set E
y₀ : E
h₀ : y₀ ∈ s
inst✝ : SeparableSpace ↑s
hi₀ : Memℒp (fun x => y₀) p
n : ℕ
⊢ snorm (fun x => ↑(approxOn f fmeas s y₀ h₀ n) x - y₀) p μ < ⊤

tactic: have : ∀ᵐ x ∂μ, ‖approxOn f fmeas s y₀ h₀ n x - y₀‖ ≤ ‖‖f x - y₀‖ + ‖f x - y₀‖‖ := by
  refine' eventually_of_forall _
  intro x
  convert norm_approxOn_y₀_le fmeas h₀ x n using 1
  rw [Real.norm_eq_abs, abs_of_nonneg]
  exact add_nonneg (norm_nonneg _) (norm_nonneg _)
state_before: α : Type ?u.604444
β : Type u_2
ι : Type ?u.604450
E : Type u_1
F : Type ?u.604456
𝕜 : Type ?u.604459
inst✝⁵ : MeasurableSpace β
inst✝⁴ : MeasurableSpace E
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
q : ℝ
p : ℝ≥0∞
inst✝¹ : BorelSpace E
f : β → E
μ : Measure β
fmeas : Measurable f
hf : Memℒp f p
s : Set E
y₀ : E
h₀ : y₀ ∈ s
inst✝ : SeparableSpace ↑s
hi₀ : Memℒp (fun x => y₀) p
n : ℕ
hf' : Memℒp (fun x => ‖f x - y₀‖) p
⊢ snorm (fun x => ↑(approxOn f fmeas s y₀ h₀ n) x - y₀) p μ < ⊤

tactic: calc
  snorm (fun x => approxOn f fmeas s y₀ h₀ n x - y₀) p μ ≤
      snorm (fun x => ‖f x - y₀‖ + ‖f x - y₀‖) p μ :=
    snorm_mono_ae this
  _ < ⊤ := snorm_add_lt_top hf' hf'
state_before: α : Type ?u.604444
β : Type u_2
ι : Type ?u.604450
E : Type u_1
F : Type ?u.604456
𝕜 : Type ?u.604459
inst✝⁵ : MeasurableSpace β
inst✝⁴ : MeasurableSpace E
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
q : ℝ
p : ℝ≥0∞
inst✝¹ : BorelSpace E
f : β → E
μ : Measure β
fmeas : Measurable f
hf : Memℒp f p
s : Set E
y₀ : E
h₀ : y₀ ∈ s
inst✝ : SeparableSpace ↑s
hi₀ : Memℒp (fun x => y₀) p
n : ℕ
hf' : Memℒp (fun x => ‖f x - y₀‖) p
this : ∀ᵐ (x : β) ∂μ, ‖↑(approxOn f fmeas s y₀ h₀ n) x - y₀‖ ≤ ‖‖f x - y₀‖ + ‖f x - y₀‖‖
⊢ snorm (fun x => ↑(approxOn f fmeas s y₀ h₀ n) x - y₀) p μ < ⊤

tactic: have : Memℒp (fun x => approxOn f fmeas s y₀ h₀ n x - y₀) p μ :=
  ⟨(approxOn f fmeas s y₀ h₀ n - const β y₀).aestronglyMeasurable, this⟩
state_before: α : Type ?u.604444
β : Type u_2
ι : Type ?u.604450
E : Type u_1
F : Type ?u.604456
𝕜 : Type ?u.604459
inst✝⁵ : MeasurableSpace β
inst✝⁴ : MeasurableSpace E
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
q : ℝ
p : ℝ≥0∞
inst✝¹ : BorelSpace E
f : β → E
μ : Measure β
fmeas : Measurable f
hf : Memℒp f p
s : Set E
y₀ : E
h₀ : y₀ ∈ s
inst✝ : SeparableSpace ↑s
hi₀ : Memℒp (fun x => y₀) p
n : ℕ
this : snorm (fun x => ↑(approxOn f fmeas s y₀ h₀ n) x - y₀) p μ < ⊤
⊢ snorm (↑(approxOn f fmeas s y₀ h₀ n)) p μ < ⊤

tactic: convert snorm_add_lt_top this hi₀
state_before: α : Type ?u.604444
β : Type u_2
ι : Type ?u.604450
E : Type u_1
F : Type ?u.604456
𝕜 : Type ?u.604459
inst✝⁵ : MeasurableSpace β
inst✝⁴ : MeasurableSpace E
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
q : ℝ
p : ℝ≥0∞
inst✝¹ : BorelSpace E
f : β → E
μ : Measure β
fmeas : Measurable f
hf : Memℒp f p
s : Set E
y₀ : E
h₀ : y₀ ∈ s
inst✝ : SeparableSpace ↑s
hi₀ : Memℒp (fun x => y₀) p
n : ℕ
this✝ : snorm (fun x => ↑(approxOn f fmeas s y₀ h₀ n) x - y₀) p μ < ⊤
this : Memℒp (fun x => ↑(approxOn f fmeas s y₀ h₀ n) x - y₀) p
⊢ snorm (↑(approxOn f fmeas s y₀ h₀ n)) p μ < ⊤

tactic: ext x
state_before: case h.e'_3.h.e'_5
α : Type ?u.604444
β : Type u_2
ι : Type ?u.604450
E : Type u_1
F : Type ?u.604456
𝕜 : Type ?u.604459
inst✝⁵ : MeasurableSpace β
inst✝⁴ : MeasurableSpace E
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
q : ℝ
p : ℝ≥0∞
inst✝¹ : BorelSpace E
f : β → E
μ : Measure β
fmeas : Measurable f
hf : Memℒp f p
s : Set E
y₀ : E
h₀ : y₀ ∈ s
inst✝ : SeparableSpace ↑s
hi₀ : Memℒp (fun x => y₀) p
n : ℕ
this✝ : snorm (fun x => ↑(approxOn f fmeas s y₀ h₀ n) x - y₀) p μ < ⊤
this : Memℒp (fun x => ↑(approxOn f fmeas s y₀ h₀ n) x - y₀) p
⊢ ↑(approxOn f fmeas s y₀ h₀ n) = (fun x => ↑(approxOn f fmeas s y₀ h₀ n) x - y₀) + fun x => y₀

tactic: simp
state_before: case h.e'_3.h.e'_5.h
α : Type ?u.604444
β : Type u_2
ι : Type ?u.604450
E : Type u_1
F : Type ?u.604456
𝕜 : Type ?u.604459
inst✝⁵ : MeasurableSpace β
inst✝⁴ : MeasurableSpace E
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
q : ℝ
p : ℝ≥0∞
inst✝¹ : BorelSpace E
f : β → E
μ : Measure β
fmeas : Measurable f
hf : Memℒp f p
s : Set E
y₀ : E
h₀ : y₀ ∈ s
inst✝ : SeparableSpace ↑s
hi₀ : Memℒp (fun x => y₀) p
n : ℕ
this✝ : snorm (fun x => ↑(approxOn f fmeas s y₀ h₀ n) x - y₀) p μ < ⊤
this : Memℒp (fun x => ↑(approxOn f fmeas s y₀ h₀ n) x - y₀) p
x : β
⊢ ↑(approxOn f fmeas s y₀ h₀ n) x = ((fun x => ↑(approxOn f fmeas s y₀ h₀ n) x - y₀) + fun x => y₀) x

tactic: have h_meas : Measurable fun x => ‖f x - y₀‖ := by
  simp only [← dist_eq_norm]
  exact (continuous_id.dist continuous_const).measurable.comp fmeas
state_before: α : Type ?u.604444
β : Type u_2
ι : Type ?u.604450
E : Type u_1
F : Type ?u.604456
𝕜 : Type ?u.604459
inst✝⁵ : MeasurableSpace β
inst✝⁴ : MeasurableSpace E
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
q : ℝ
p : ℝ≥0∞
inst✝¹ : BorelSpace E
f : β → E
μ : Measure β
fmeas : Measurable f
hf : Memℒp f p
s : Set E
y₀ : E
h₀ : y₀ ∈ s
inst✝ : SeparableSpace ↑s
hi₀ : Memℒp (fun x => y₀) p
n : ℕ
⊢ Memℒp (fun x => ‖f x - y₀‖) p

tactic: refine' ⟨h_meas.aemeasurable.aestronglyMeasurable, _⟩
state_before: α : Type ?u.604444
β : Type u_2
ι : Type ?u.604450
E : Type u_1
F : Type ?u.604456
𝕜 : Type ?u.604459
inst✝⁵ : MeasurableSpace β
inst✝⁴ : MeasurableSpace E
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
q : ℝ
p : ℝ≥0∞
inst✝¹ : BorelSpace E
f : β → E
μ : Measure β
fmeas : Measurable f
hf : Memℒp f p
s : Set E
y₀ : E
h₀ : y₀ ∈ s
inst✝ : SeparableSpace ↑s
hi₀ : Memℒp (fun x => y₀) p
n : ℕ
h_meas : Measurable fun x => ‖f x - y₀‖
⊢ Memℒp (fun x => ‖f x - y₀‖) p

tactic: rw [snorm_norm]
state_before: α : Type ?u.604444
β : Type u_2
ι : Type ?u.604450
E : Type u_1
F : Type ?u.604456
𝕜 : Type ?u.604459
inst✝⁵ : MeasurableSpace β
inst✝⁴ : MeasurableSpace E
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
q : ℝ
p : ℝ≥0∞
inst✝¹ : BorelSpace E
f : β → E
μ : Measure β
fmeas : Measurable f
hf : Memℒp f p
s : Set E
y₀ : E
h₀ : y₀ ∈ s
inst✝ : SeparableSpace ↑s
hi₀ : Memℒp (fun x => y₀) p
n : ℕ
h_meas : Measurable fun x => ‖f x - y₀‖
⊢ snorm (fun x => ‖f x - y₀‖) p μ < ⊤

tactic: convert snorm_add_lt_top hf hi₀.neg with x
state_before: α : Type ?u.604444
β : Type u_2
ι : Type ?u.604450
E : Type u_1
F : Type ?u.604456
𝕜 : Type ?u.604459
inst✝⁵ : MeasurableSpace β
inst✝⁴ : MeasurableSpace E
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
q : ℝ
p : ℝ≥0∞
inst✝¹ : BorelSpace E
f : β → E
μ : Measure β
fmeas : Measurable f
hf : Memℒp f p
s : Set E
y₀ : E
h₀ : y₀ ∈ s
inst✝ : SeparableSpace ↑s
hi₀ : Memℒp (fun x => y₀) p
n : ℕ
h_meas : Measurable fun x => ‖f x - y₀‖
⊢ snorm (fun x => f x - y₀) p μ < ⊤

tactic: simp [sub_eq_add_neg]
state_before: case h.e'_3.h.e'_5.h
α : Type ?u.604444
β : Type u_2
ι : Type ?u.604450
E : Type u_1
F : Type ?u.604456
𝕜 : Type ?u.604459
inst✝⁵ : MeasurableSpace β
inst✝⁴ : MeasurableSpace E
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
q : ℝ
p : ℝ≥0∞
inst✝¹ : BorelSpace E
f : β → E
μ : Measure β
fmeas : Measurable f
hf : Memℒp f p
s : Set E
y₀ : E
h₀ : y₀ ∈ s
inst✝ : SeparableSpace ↑s
hi₀ : Memℒp (fun x => y₀) p
n : ℕ
h_meas : Measurable fun x => ‖f x - y₀‖
x : β
⊢ f x - y₀ = (f + -fun x => y₀) x

tactic: simp only [← dist_eq_norm]
state_before: α : Type ?u.604444
β : Type u_2
ι : Type ?u.604450
E : Type u_1
F : Type ?u.604456
𝕜 : Type ?u.604459
inst✝⁵ : MeasurableSpace β
inst✝⁴ : MeasurableSpace E
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
q : ℝ
p : ℝ≥0∞
inst✝¹ : BorelSpace E
f : β → E
μ : Measure β
fmeas : Measurable f
hf : Memℒp f p
s : Set E
y₀ : E
h₀ : y₀ ∈ s
inst✝ : SeparableSpace ↑s
hi₀ : Memℒp (fun x => y₀) p
n : ℕ
⊢ Measurable fun x => ‖f x - y₀‖

tactic: exact (continuous_id.dist continuous_const).measurable.comp fmeas
state_before: α : Type ?u.604444
β : Type u_2
ι : Type ?u.604450
E : Type u_1
F : Type ?u.604456
𝕜 : Type ?u.604459
inst✝⁵ : MeasurableSpace β
inst✝⁴ : MeasurableSpace E
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
q : ℝ
p : ℝ≥0∞
inst✝¹ : BorelSpace E
f : β → E
μ : Measure β
fmeas : Measurable f
hf : Memℒp f p
s : Set E
y₀ : E
h₀ : y₀ ∈ s
inst✝ : SeparableSpace ↑s
hi₀ : Memℒp (fun x => y₀) p
n : ℕ
⊢ Measurable fun x => dist (f x) y₀

tactic: refine' eventually_of_forall _
state_before: α : Type ?u.604444
β : Type u_2
ι : Type ?u.604450
E : Type u_1
F : Type ?u.604456
𝕜 : Type ?u.604459
inst✝⁵ : MeasurableSpace β
inst✝⁴ : MeasurableSpace E
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
q : ℝ
p : ℝ≥0∞
inst✝¹ : BorelSpace E
f : β → E
μ : Measure β
fmeas : Measurable f
hf : Memℒp f p
s : Set E
y₀ : E
h₀ : y₀ ∈ s
inst✝ : SeparableSpace ↑s
hi₀ : Memℒp (fun x => y₀) p
n : ℕ
hf' : Memℒp (fun x => ‖f x - y₀‖) p
⊢ ∀ᵐ (x : β) ∂μ, ‖↑(approxOn f fmeas s y₀ h₀ n) x - y₀‖ ≤ ‖‖f x - y₀‖ + ‖f x - y₀‖‖

tactic: intro x
state_before: α : Type ?u.604444
β : Type u_2
ι : Type ?u.604450
E : Type u_1
F : Type ?u.604456
𝕜 : Type ?u.604459
inst✝⁵ : MeasurableSpace β
inst✝⁴ : MeasurableSpace E
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
q : ℝ
p : ℝ≥0∞
inst✝¹ : BorelSpace E
f : β → E
μ : Measure β
fmeas : Measurable f
hf : Memℒp f p
s : Set E
y₀ : E
h₀ : y₀ ∈ s
inst✝ : SeparableSpace ↑s
hi₀ : Memℒp (fun x => y₀) p
n : ℕ
hf' : Memℒp (fun x => ‖f x - y₀‖) p
⊢ ∀ (x : β), ‖↑(approxOn f fmeas s y₀ h₀ n) x - y₀‖ ≤ ‖‖f x - y₀‖ + ‖f x - y₀‖‖

tactic: convert norm_approxOn_y₀_le fmeas h₀ x n using 1
state_before: α : Type ?u.604444
β : Type u_2
ι : Type ?u.604450
E : Type u_1
F : Type ?u.604456
𝕜 : Type ?u.604459
inst✝⁵ : MeasurableSpace β
inst✝⁴ : MeasurableSpace E
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
q : ℝ
p : ℝ≥0∞
inst✝¹ : BorelSpace E
f : β → E
μ : Measure β
fmeas : Measurable f
hf : Memℒp f p
s : Set E
y₀ : E
h₀ : y₀ ∈ s
inst✝ : SeparableSpace ↑s
hi₀ : Memℒp (fun x => y₀) p
n : ℕ
hf' : Memℒp (fun x => ‖f x - y₀‖) p
x : β
⊢ ‖↑(approxOn f fmeas s y₀ h₀ n) x - y₀‖ ≤ ‖‖f x - y₀‖ + ‖f x - y₀‖‖

tactic: rw [Real.norm_eq_abs, abs_of_nonneg]
state_before: case h.e'_4
α : Type ?u.604444
β : Type u_2
ι : Type ?u.604450
E : Type u_1
F : Type ?u.604456
𝕜 : Type ?u.604459
inst✝⁵ : MeasurableSpace β
inst✝⁴ : MeasurableSpace E
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
q : ℝ
p : ℝ≥0∞
inst✝¹ : BorelSpace E
f : β → E
μ : Measure β
fmeas : Measurable f
hf : Memℒp f p
s : Set E
y₀ : E
h₀ : y₀ ∈ s
inst✝ : SeparableSpace ↑s
hi₀ : Memℒp (fun x => y₀) p
n : ℕ
hf' : Memℒp (fun x => ‖f x - y₀‖) p
x : β
⊢ ‖‖f x - y₀‖ + ‖f x - y₀‖‖ = ‖f x - y₀‖ + ‖f x - y₀‖

tactic: exact add_nonneg (norm_nonneg _) (norm_nonneg _)
state_before: case h.e'_4
α : Type ?u.604444
β : Type u_2
ι : Type ?u.604450
E : Type u_1
F : Type ?u.604456
𝕜 : Type ?u.604459
inst✝⁵ : MeasurableSpace β
inst✝⁴ : MeasurableSpace E
inst✝³ : NormedAddCommGroup E
inst✝² : NormedAddCommGroup F
q : ℝ
p : ℝ≥0∞
inst✝¹ : BorelSpace E
f : β → E
μ : Measure β
fmeas : Measurable f
hf : Memℒp f p
s : Set E
y₀ : E
h₀ : y₀ ∈ s
inst✝ : SeparableSpace ↑s
hi₀ : Memℒp (fun x => y₀) p
n : ℕ
hf' : Memℒp (fun x => ‖f x - y₀‖) p
x : β
⊢ 0 ≤ ‖f x - y₀‖ + ‖f x - y₀‖