Theorem: NNReal.Lp_add_le
File: Mathlib/Analysis/MeanInequalities.lean

tactic: rcases eq_or_lt_of_le hp with (rfl | hp)
state_before: ι : Type u
s : Finset ι
f g : ι → ℝ≥0
p : ℝ
hp : 1 ≤ p
⊢ (∑ i ∈ s, (f i + g i) ^ p) ^ (1 / p) ≤ (∑ i ∈ s, f i ^ p) ^ (1 / p) + (∑ i ∈ s, g i ^ p) ^ (1 / p)
state_after: case inl
ι : Type u
s : Finset ι
f g : ι → ℝ≥0
hp : 1 ≤ 1
⊢ (∑ i ∈ s, (f i + g i) ^ 1) ^ (1 / 1) ≤ (∑ i ∈ s, f i ^ 1) ^ (1 / 1) + (∑ i ∈ s, g i ^ 1) ^ (1 / 1)

case inr
ι : Type u
s : Finset ι
f g : ι → ℝ≥0
p : ℝ
hp✝ : 1 ≤ p
hp : 1 < p
⊢ (∑ i ∈ s, (f i + g i) ^ p) ^ (1 / p) ≤ (∑ i ∈ s, f i ^ p) ^ (1 / p) + (∑ i ∈ s, g i ^ p) ^ (1 / p)

tactic: have hpq := Real.IsConjExponent.conjExponent hp
state_before: case inr
ι : Type u
s : Finset ι
f g : ι → ℝ≥0
p : ℝ
hp✝ : 1 ≤ p
hp : 1 < p
⊢ (∑ i ∈ s, (f i + g i) ^ p) ^ (1 / p) ≤ (∑ i ∈ s, f i ^ p) ^ (1 / p) + (∑ i ∈ s, g i ^ p) ^ (1 / p)
state_after: case inr
ι : Type u
s : Finset ι
f g : ι → ℝ≥0
p : ℝ
hp✝ : 1 ≤ p
hp : 1 < p
hpq : p.IsConjExponent p.conjExponent
⊢ (∑ i ∈ s, (f i + g i) ^ p) ^ (1 / p) ≤ (∑ i ∈ s, f i ^ p) ^ (1 / p) + (∑ i ∈ s, g i ^ p) ^ (1 / p)

tactic: have := isGreatest_Lp s (f + g) hpq
state_before: case inr
ι : Type u
s : Finset ι
f g : ι → ℝ≥0
p : ℝ
hp✝ : 1 ≤ p
hp : 1 < p
hpq : p.IsConjExponent p.conjExponent
⊢ (∑ i ∈ s, (f i + g i) ^ p) ^ (1 / p) ≤ (∑ i ∈ s, f i ^ p) ^ (1 / p) + (∑ i ∈ s, g i ^ p) ^ (1 / p)
state_after: case inr
ι : Type u
s : Finset ι
f g : ι → ℝ≥0
p : ℝ
hp✝ : 1 ≤ p
hp : 1 < p
hpq : p.IsConjExponent p.conjExponent
this :
  IsGreatest ((fun g_1 => ∑ i ∈ s, (f + g) i * g_1 i) '' {g | ∑ i ∈ s, g i ^ p.conjExponent ≤ 1})
    ((∑ i ∈ s, (f + g) i ^ p) ^ (1 / p))
⊢ (∑ i ∈ s, (f i + g i) ^ p) ^ (1 / p) ≤ (∑ i ∈ s, f i ^ p) ^ (1 / p) + (∑ i ∈ s, g i ^ p) ^ (1 / p)

tactic: simp only [Pi.add_apply, add_mul, sum_add_distrib] at this
state_before: case inr
ι : Type u
s : Finset ι
f g : ι → ℝ≥0
p : ℝ
hp✝ : 1 ≤ p
hp : 1 < p
hpq : p.IsConjExponent p.conjExponent
this :
  IsGreatest ((fun g_1 => ∑ i ∈ s, (f + g) i * g_1 i) '' {g | ∑ i ∈ s, g i ^ p.conjExponent ≤ 1})
    ((∑ i ∈ s, (f + g) i ^ p) ^ (1 / p))
⊢ (∑ i ∈ s, (f i + g i) ^ p) ^ (1 / p) ≤ (∑ i ∈ s, f i ^ p) ^ (1 / p) + (∑ i ∈ s, g i ^ p) ^ (1 / p)
state_after: case inr
ι : Type u
s : Finset ι
f g : ι → ℝ≥0
p : ℝ
hp✝ : 1 ≤ p
hp : 1 < p
hpq : p.IsConjExponent p.conjExponent
this :
  IsGreatest ((fun a => ∑ x ∈ s, f x * a x + ∑ x ∈ s, g x * a x) '' {g | ∑ i ∈ s, g i ^ p.conjExponent ≤ 1})
    ((∑ x ∈ s, (f x + g x) ^ p) ^ (1 / p))
⊢ (∑ i ∈ s, (f i + g i) ^ p) ^ (1 / p) ≤ (∑ i ∈ s, f i ^ p) ^ (1 / p) + (∑ i ∈ s, g i ^ p) ^ (1 / p)

tactic: rcases this.1 with ⟨φ, hφ, H⟩
state_before: case inr
ι : Type u
s : Finset ι
f g : ι → ℝ≥0
p : ℝ
hp✝ : 1 ≤ p
hp : 1 < p
hpq : p.IsConjExponent p.conjExponent
this :
  IsGreatest ((fun a => ∑ x ∈ s, f x * a x + ∑ x ∈ s, g x * a x) '' {g | ∑ i ∈ s, g i ^ p.conjExponent ≤ 1})
    ((∑ x ∈ s, (f x + g x) ^ p) ^ (1 / p))
⊢ (∑ i ∈ s, (f i + g i) ^ p) ^ (1 / p) ≤ (∑ i ∈ s, f i ^ p) ^ (1 / p) + (∑ i ∈ s, g i ^ p) ^ (1 / p)
state_after: case inr.intro.intro
ι : Type u
s : Finset ι
f g : ι → ℝ≥0
p : ℝ
hp✝ : 1 ≤ p
hp : 1 < p
hpq : p.IsConjExponent p.conjExponent
this :
  IsGreatest ((fun a => ∑ x ∈ s, f x * a x + ∑ x ∈ s, g x * a x) '' {g | ∑ i ∈ s, g i ^ p.conjExponent ≤ 1})
    ((∑ x ∈ s, (f x + g x) ^ p) ^ (1 / p))
φ : ι → ℝ≥0
hφ : φ ∈ {g | ∑ i ∈ s, g i ^ p.conjExponent ≤ 1}
H : (fun a => ∑ x ∈ s, f x * a x + ∑ x ∈ s, g x * a x) φ = (∑ x ∈ s, (f x + g x) ^ p) ^ (1 / p)
⊢ (∑ i ∈ s, (f i + g i) ^ p) ^ (1 / p) ≤ (∑ i ∈ s, f i ^ p) ^ (1 / p) + (∑ i ∈ s, g i ^ p) ^ (1 / p)

tactic: rw [← H]
state_before: case inr.intro.intro
ι : Type u
s : Finset ι
f g : ι → ℝ≥0
p : ℝ
hp✝ : 1 ≤ p
hp : 1 < p
hpq : p.IsConjExponent p.conjExponent
this :
  IsGreatest ((fun a => ∑ x ∈ s, f x * a x + ∑ x ∈ s, g x * a x) '' {g | ∑ i ∈ s, g i ^ p.conjExponent ≤ 1})
    ((∑ x ∈ s, (f x + g x) ^ p) ^ (1 / p))
φ : ι → ℝ≥0
hφ : φ ∈ {g | ∑ i ∈ s, g i ^ p.conjExponent ≤ 1}
H : (fun a => ∑ x ∈ s, f x * a x + ∑ x ∈ s, g x * a x) φ = (∑ x ∈ s, (f x + g x) ^ p) ^ (1 / p)
⊢ (∑ i ∈ s, (f i + g i) ^ p) ^ (1 / p) ≤ (∑ i ∈ s, f i ^ p) ^ (1 / p) + (∑ i ∈ s, g i ^ p) ^ (1 / p)
state_after: case inr.intro.intro
ι : Type u
s : Finset ι
f g : ι → ℝ≥0
p : ℝ
hp✝ : 1 ≤ p
hp : 1 < p
hpq : p.IsConjExponent p.conjExponent
this :
  IsGreatest ((fun a => ∑ x ∈ s, f x * a x + ∑ x ∈ s, g x * a x) '' {g | ∑ i ∈ s, g i ^ p.conjExponent ≤ 1})
    ((∑ x ∈ s, (f x + g x) ^ p) ^ (1 / p))
φ : ι → ℝ≥0
hφ : φ ∈ {g | ∑ i ∈ s, g i ^ p.conjExponent ≤ 1}
H : (fun a => ∑ x ∈ s, f x * a x + ∑ x ∈ s, g x * a x) φ = (∑ x ∈ s, (f x + g x) ^ p) ^ (1 / p)
⊢ (fun a => ∑ x ∈ s, f x * a x + ∑ x ∈ s, g x * a x) φ ≤ (∑ i ∈ s, f i ^ p) ^ (1 / p) + (∑ i ∈ s, g i ^ p) ^ (1 / p)

tactic: exact
  add_le_add ((isGreatest_Lp s f hpq).2 ⟨φ, hφ, rfl⟩) ((isGreatest_Lp s g hpq).2 ⟨φ, hφ, rfl⟩)
state_before: case inr.intro.intro
ι : Type u
s : Finset ι
f g : ι → ℝ≥0
p : ℝ
hp✝ : 1 ≤ p
hp : 1 < p
hpq : p.IsConjExponent p.conjExponent
this :
  IsGreatest ((fun a => ∑ x ∈ s, f x * a x + ∑ x ∈ s, g x * a x) '' {g | ∑ i ∈ s, g i ^ p.conjExponent ≤ 1})
    ((∑ x ∈ s, (f x + g x) ^ p) ^ (1 / p))
φ : ι → ℝ≥0
hφ : φ ∈ {g | ∑ i ∈ s, g i ^ p.conjExponent ≤ 1}
H : (fun a => ∑ x ∈ s, f x * a x + ∑ x ∈ s, g x * a x) φ = (∑ x ∈ s, (f x + g x) ^ p) ^ (1 / p)
⊢ (fun a => ∑ x ∈ s, f x * a x + ∑ x ∈ s, g x * a x) φ ≤ (∑ i ∈ s, f i ^ p) ^ (1 / p) + (∑ i ∈ s, g i ^ p) ^ (1 / p)
state_after: no goals

tactic: simp [Finset.sum_add_distrib]
state_before: case inl
ι : Type u
s : Finset ι
f g : ι → ℝ≥0
hp : 1 ≤ 1
⊢ (∑ i ∈ s, (f i + g i) ^ 1) ^ (1 / 1) ≤ (∑ i ∈ s, f i ^ 1) ^ (1 / 1) + (∑ i ∈ s, g i ^ 1) ^ (1 / 1)
state_after: no goals