Theorem: MeasureTheory.exists_Lp_half
File: Mathlib/MeasureTheory/Function/LpSeminorm/TriangleInequality.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
m : MeasurableSpace α
inst✝ : NormedAddCommGroup E
p✝ : ℝ≥0∞
q : ℝ
μ : Measure α
f g : α → E
p δ : ℝ≥0∞
hδ : δ ≠ 0
⊢ ∃ η,
    0 < η ∧
      ∀ (f g : α → E),
        AEStronglyMeasurable f μ → AEStronglyMeasurable g μ → snorm f p μ ≤ η → snorm g p μ ≤ η → snorm (f + g) p μ < δ
state_after: α : Type u_1
E : Type u_2
m : MeasurableSpace α
inst✝ : NormedAddCommGroup E
p✝ : ℝ≥0∞
q : ℝ
μ : Measure α
f g : α → E
p δ : ℝ≥0∞
hδ : δ ≠ 0
this : Tendsto (fun η => LpAddConst p * (η + η)) (𝓝[>] 0) (𝓝 (LpAddConst p * (0 + 0)))
⊢ ∃ η,
    0 < η ∧
      ∀ (f g : α → E),
        AEStronglyMeasurable f μ → AEStronglyMeasurable g μ → snorm f p μ ≤ η → snorm g p μ ≤ η → snorm (f + g) p μ < δ

tactic: simp only [add_zero, mul_zero] at this
state_before: α : Type u_1
E : Type u_2
m : MeasurableSpace α
inst✝ : NormedAddCommGroup E
p✝ : ℝ≥0∞
q : ℝ
μ : Measure α
f g : α → E
p δ : ℝ≥0∞
hδ : δ ≠ 0
this : Tendsto (fun η => LpAddConst p * (η + η)) (𝓝[>] 0) (𝓝 (LpAddConst p * (0 + 0)))
⊢ ∃ η,
    0 < η ∧
      ∀ (f g : α → E),
        AEStronglyMeasurable f μ → AEStronglyMeasurable g μ → snorm f p μ ≤ η → snorm g p μ ≤ η → snorm (f + g) p μ < δ
state_after: α : Type u_1
E : Type u_2
m : MeasurableSpace α
inst✝ : NormedAddCommGroup E
p✝ : ℝ≥0∞
q : ℝ
μ : Measure α
f g : α → E
p δ : ℝ≥0∞
hδ : δ ≠ 0
this : Tendsto (fun η => 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
m : MeasurableSpace α
inst✝ : NormedAddCommGroup E
p✝ : ℝ≥0∞
q : ℝ
μ : Measure α
f g : α → E
p δ : ℝ≥0∞
hδ : δ ≠ 0
this : Tendsto (fun η => LpAddConst p * (η + η)) (𝓝[>] 0) (𝓝 0)
⊢ ∃ η,
    0 < η ∧
      ∀ (f g : α → E),
        AEStronglyMeasurable f μ → AEStronglyMeasurable g μ → snorm f p μ ≤ η → snorm g p μ ≤ η → snorm (f + g) p μ < δ
state_after: case intro.intro
α : Type u_1
E : Type u_2
m : MeasurableSpace α
inst✝ : NormedAddCommGroup E
p✝ : ℝ≥0∞
q : ℝ
μ : Measure α
f g : α → E
p δ : ℝ≥0∞
hδ : δ ≠ 0
this : Tendsto (fun η => LpAddConst p * (η + η)) (𝓝[>] 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: refine ⟨η, ηpos, fun f g hf hg Hf Hg => ?_⟩
state_before: case intro.intro
α : Type u_1
E : Type u_2
m : MeasurableSpace α
inst✝ : NormedAddCommGroup E
p✝ : ℝ≥0∞
q : ℝ
μ : Measure α
f g : α → E
p δ : ℝ≥0∞
hδ : δ ≠ 0
this : Tendsto (fun η => LpAddConst p * (η + η)) (𝓝[>] 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 μ < δ
state_after: case intro.intro
α : Type u_1
E : Type u_2
m : MeasurableSpace α
inst✝ : NormedAddCommGroup E
p✝ : ℝ≥0∞
q : ℝ
μ : Measure α
f✝ g✝ : α → E
p δ : ℝ≥0∞
hδ : δ ≠ 0
this : Tendsto (fun η => LpAddConst p * (η + η)) (𝓝[>] 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 μ < δ

tactic: calc
  snorm (f + g) p μ ≤ LpAddConst p * (snorm f p μ + snorm g p μ) := snorm_add_le' hf hg p
  _ ≤ LpAddConst p * (η + η) := by gcongr
  _ < δ := hη
state_before: case intro.intro
α : Type u_1
E : Type u_2
m : MeasurableSpace α
inst✝ : NormedAddCommGroup E
p✝ : ℝ≥0∞
q : ℝ
μ : Measure α
f✝ g✝ : α → E
p δ : ℝ≥0∞
hδ : δ ≠ 0
this : Tendsto (fun η => LpAddConst p * (η + η)) (𝓝[>] 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 μ < δ
state_after: no goals

tactic: gcongr
state_before: α : Type u_1
E : Type u_2
m : MeasurableSpace α
inst✝ : NormedAddCommGroup E
p✝ : ℝ≥0∞
q : ℝ
μ : Measure α
f✝ g✝ : α → E
p δ : ℝ≥0∞
hδ : δ ≠ 0
this : Tendsto (fun η => LpAddConst p * (η + η)) (𝓝[>] 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 μ ≤ η
⊢ LpAddConst p * (snorm f p μ + snorm g p μ) ≤ LpAddConst p * (η + η)
state_after: no goals