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

tactic: have :
  Tendsto (fun η : ℝ≥0∞ => LpAddConst p * (η + η)) (𝓝[>] 0) (𝓝 (LpAddConst p * (0 + 0))) :=
  (ENNReal.Tendsto.const_mul (tendsto_id.add tendsto_id)
        (Or.inr (LpAddConst_lt_top p).ne)).mono_left
    nhdsWithin_le_nhds
state_before: α : Type u_1
E : Type u_2
F : Type ?u.3035161
G : Type ?u.3035164
m m0 : MeasurableSpace α
p✝ : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
p δ : ℝ≥0∞
hδ : δ ≠ 0
⊢ ∃ η,
    0 < η ∧
      ∀ (f g : α → E),
        AEStronglyMeasurable f μ → AEStronglyMeasurable g μ → snorm f p μ ≤ η → snorm g p μ ≤ η → snorm (f + g) p μ < δ

tactic: simp only [add_zero, MulZeroClass.mul_zero] at this
state_before: α : Type u_1
E : Type u_2
F : Type ?u.3035161
G : Type ?u.3035164
m m0 : MeasurableSpace α
p✝ : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
p δ : ℝ≥0∞
hδ : δ ≠ 0
this : Tendsto (fun η => LpAddConst p * (η + η)) (𝓝[Set.Ioi 0] 0) (𝓝 (LpAddConst p * (0 + 0)))
⊢ ∃ η,
    0 < η ∧
      ∀ (f g : α → E),
        AEStronglyMeasurable f μ → AEStronglyMeasurable g μ → snorm f p μ ≤ η → snorm g p μ ≤ η → snorm (f + g) p μ < δ

tactic: rcases (((tendsto_order.1 this).2 δ hδ.bot_lt).and self_mem_nhdsWithin).exists with ⟨η, hη, ηpos⟩
state_before: α : Type u_1
E : Type u_2
F : Type ?u.3035161
G : Type ?u.3035164
m m0 : MeasurableSpace α
p✝ : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
p δ : ℝ≥0∞
hδ : δ ≠ 0
this : Tendsto (fun η => LpAddConst p * (η + η)) (𝓝[Set.Ioi 0] 0) (𝓝 0)
⊢ ∃ η,
    0 < η ∧
      ∀ (f g : α → E),
        AEStronglyMeasurable f μ → AEStronglyMeasurable g μ → snorm f p μ ≤ η → snorm g p μ ≤ η → snorm (f + g) p μ < δ

tactic: refine' ⟨η, ηpos, fun f g hf hg Hf Hg => _⟩
state_before: case intro.intro
α : Type u_1
E : Type u_2
F : Type ?u.3035161
G : Type ?u.3035164
m m0 : MeasurableSpace α
p✝ : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
p δ : ℝ≥0∞
hδ : δ ≠ 0
this : Tendsto (fun η => LpAddConst p * (η + η)) (𝓝[Set.Ioi 0] 0) (𝓝 0)
η : ℝ≥0∞
hη : LpAddConst p * (η + η) < δ
ηpos : 0 < η
⊢ ∃ η,
    0 < η ∧
      ∀ (f g : α → E),
        AEStronglyMeasurable f μ → AEStronglyMeasurable g μ → snorm f p μ ≤ η → snorm g p μ ≤ η → snorm (f + g) p μ < δ

tactic: calc
  snorm (f + g) p μ ≤ LpAddConst p * (snorm f p μ + snorm g p μ) := snorm_add_le' hf hg p
  _ ≤ LpAddConst p * (η + η) := (mul_le_mul_of_nonneg_left (add_le_add Hf Hg) bot_le)
  _ < δ := hη
state_before: case intro.intro
α : Type u_1
E : Type u_2
F : Type ?u.3035161
G : Type ?u.3035164
m m0 : MeasurableSpace α
p✝ : ℝ≥0∞
q : ℝ
μ ν : Measure α
inst✝² : NormedAddCommGroup E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedAddCommGroup G
p δ : ℝ≥0∞
hδ : δ ≠ 0
this : Tendsto (fun η => LpAddConst p * (η + η)) (𝓝[Set.Ioi 0] 0) (𝓝 0)
η : ℝ≥0∞
hη : LpAddConst p * (η + η) < δ
ηpos : 0 < η
f g : α → E
hf : AEStronglyMeasurable f μ
hg : AEStronglyMeasurable g μ
Hf : snorm f p μ ≤ η
Hg : snorm g p μ ≤ η
⊢ snorm (f + g) p μ < δ