Theorem: MeasureTheory.lintegral_prod_lintegral_pow_le
File: Mathlib/Analysis/FunctionalSpaces/SobolevInequality.lean

tactic: have : Nontrivial ι :=
  Fintype.one_lt_card_iff_nontrivial.mp (by exact_mod_cast hp.one_lt)
state_before: ι : Type u_1
inst✝³ : Fintype ι
inst✝² : DecidableEq ι
A : ι → Type u_2
inst✝¹ : (i : ι) → MeasurableSpace (A i)
μ : (i : ι) → Measure (A i)
inst✝ : ∀ (i : ι), SigmaFinite (μ i)
p : ℝ
hp : (↑#ι).IsConjExponent p
f : ((a : ι) → A a) → ℝ≥0∞
hf : Measurable f
⊢ ∫⁻ (x : (i : ι) → A i), ∏ i : ι, (∫⁻ (xᵢ : A i), f (update x i xᵢ) ∂μ i) ^ (1 / (↑#ι - 1)) ∂Measure.pi μ ≤
    (∫⁻ (x : (i : ι) → A i), f x ∂Measure.pi μ) ^ p
state_after: ι : Type u_1
inst✝³ : Fintype ι
inst✝² : DecidableEq ι
A : ι → Type u_2
inst✝¹ : (i : ι) → MeasurableSpace (A i)
μ : (i : ι) → Measure (A i)
inst✝ : ∀ (i : ι), SigmaFinite (μ i)
p : ℝ
hp : (↑#ι).IsConjExponent p
f : ((a : ι) → A a) → ℝ≥0∞
hf : Measurable f
this : Nontrivial ι
⊢ ∫⁻ (x : (i : ι) → A i), ∏ i : ι, (∫⁻ (xᵢ : A i), f (update x i xᵢ) ∂μ i) ^ (1 / (↑#ι - 1)) ∂Measure.pi μ ≤
    (∫⁻ (x : (i : ι) → A i), f x ∂Measure.pi μ) ^ p

tactic: have h0 : (1:ℝ) < #ι := by norm_cast; exact Fintype.one_lt_card
state_before: ι : Type u_1
inst✝³ : Fintype ι
inst✝² : DecidableEq ι
A : ι → Type u_2
inst✝¹ : (i : ι) → MeasurableSpace (A i)
μ : (i : ι) → Measure (A i)
inst✝ : ∀ (i : ι), SigmaFinite (μ i)
p : ℝ
hp : (↑#ι).IsConjExponent p
f : ((a : ι) → A a) → ℝ≥0∞
hf : Measurable f
this : Nontrivial ι
⊢ ∫⁻ (x : (i : ι) → A i), ∏ i : ι, (∫⁻ (xᵢ : A i), f (update x i xᵢ) ∂μ i) ^ (1 / (↑#ι - 1)) ∂Measure.pi μ ≤
    (∫⁻ (x : (i : ι) → A i), f x ∂Measure.pi μ) ^ p
state_after: ι : Type u_1
inst✝³ : Fintype ι
inst✝² : DecidableEq ι
A : ι → Type u_2
inst✝¹ : (i : ι) → MeasurableSpace (A i)
μ : (i : ι) → Measure (A i)
inst✝ : ∀ (i : ι), SigmaFinite (μ i)
p : ℝ
hp : (↑#ι).IsConjExponent p
f : ((a : ι) → A a) → ℝ≥0∞
hf : Measurable f
this : Nontrivial ι
h0 : 1 < ↑#ι
⊢ ∫⁻ (x : (i : ι) → A i), ∏ i : ι, (∫⁻ (xᵢ : A i), f (update x i xᵢ) ∂μ i) ^ (1 / (↑#ι - 1)) ∂Measure.pi μ ≤
    (∫⁻ (x : (i : ι) → A i), f x ∂Measure.pi μ) ^ p

tactic: have h1 : (0:ℝ) < #ι - 1 := by linarith
state_before: ι : Type u_1
inst✝³ : Fintype ι
inst✝² : DecidableEq ι
A : ι → Type u_2
inst✝¹ : (i : ι) → MeasurableSpace (A i)
μ : (i : ι) → Measure (A i)
inst✝ : ∀ (i : ι), SigmaFinite (μ i)
p : ℝ
hp : (↑#ι).IsConjExponent p
f : ((a : ι) → A a) → ℝ≥0∞
hf : Measurable f
this : Nontrivial ι
h0 : 1 < ↑#ι
⊢ ∫⁻ (x : (i : ι) → A i), ∏ i : ι, (∫⁻ (xᵢ : A i), f (update x i xᵢ) ∂μ i) ^ (1 / (↑#ι - 1)) ∂Measure.pi μ ≤
    (∫⁻ (x : (i : ι) → A i), f x ∂Measure.pi μ) ^ p
state_after: ι : Type u_1
inst✝³ : Fintype ι
inst✝² : DecidableEq ι
A : ι → Type u_2
inst✝¹ : (i : ι) → MeasurableSpace (A i)
μ : (i : ι) → Measure (A i)
inst✝ : ∀ (i : ι), SigmaFinite (μ i)
p : ℝ
hp : (↑#ι).IsConjExponent p
f : ((a : ι) → A a) → ℝ≥0∞
hf : Measurable f
this : Nontrivial ι
h0 : 1 < ↑#ι
h1 : 0 < ↑#ι - 1
⊢ ∫⁻ (x : (i : ι) → A i), ∏ i : ι, (∫⁻ (xᵢ : A i), f (update x i xᵢ) ∂μ i) ^ (1 / (↑#ι - 1)) ∂Measure.pi μ ≤
    (∫⁻ (x : (i : ι) → A i), f x ∂Measure.pi μ) ^ p

tactic: have h2 : 0 ≤ ((1 : ℝ) / (#ι - 1 : ℝ)) := by positivity
state_before: ι : Type u_1
inst✝³ : Fintype ι
inst✝² : DecidableEq ι
A : ι → Type u_2
inst✝¹ : (i : ι) → MeasurableSpace (A i)
μ : (i : ι) → Measure (A i)
inst✝ : ∀ (i : ι), SigmaFinite (μ i)
p : ℝ
hp : (↑#ι).IsConjExponent p
f : ((a : ι) → A a) → ℝ≥0∞
hf : Measurable f
this : Nontrivial ι
h0 : 1 < ↑#ι
h1 : 0 < ↑#ι - 1
⊢ ∫⁻ (x : (i : ι) → A i), ∏ i : ι, (∫⁻ (xᵢ : A i), f (update x i xᵢ) ∂μ i) ^ (1 / (↑#ι - 1)) ∂Measure.pi μ ≤
    (∫⁻ (x : (i : ι) → A i), f x ∂Measure.pi μ) ^ p
state_after: ι : Type u_1
inst✝³ : Fintype ι
inst✝² : DecidableEq ι
A : ι → Type u_2
inst✝¹ : (i : ι) → MeasurableSpace (A i)
μ : (i : ι) → Measure (A i)
inst✝ : ∀ (i : ι), SigmaFinite (μ i)
p : ℝ
hp : (↑#ι).IsConjExponent p
f : ((a : ι) → A a) → ℝ≥0∞
hf : Measurable f
this : Nontrivial ι
h0 : 1 < ↑#ι
h1 : 0 < ↑#ι - 1
h2 : 0 ≤ 1 / (↑#ι - 1)
⊢ ∫⁻ (x : (i : ι) → A i), ∏ i : ι, (∫⁻ (xᵢ : A i), f (update x i xᵢ) ∂μ i) ^ (1 / (↑#ι - 1)) ∂Measure.pi μ ≤
    (∫⁻ (x : (i : ι) → A i), f x ∂Measure.pi μ) ^ p

tactic: have h3 : (#ι - 1 : ℝ) * ((1 : ℝ) / (#ι - 1 : ℝ)) ≤ 1 := by field_simp
state_before: ι : Type u_1
inst✝³ : Fintype ι
inst✝² : DecidableEq ι
A : ι → Type u_2
inst✝¹ : (i : ι) → MeasurableSpace (A i)
μ : (i : ι) → Measure (A i)
inst✝ : ∀ (i : ι), SigmaFinite (μ i)
p : ℝ
hp : (↑#ι).IsConjExponent p
f : ((a : ι) → A a) → ℝ≥0∞
hf : Measurable f
this : Nontrivial ι
h0 : 1 < ↑#ι
h1 : 0 < ↑#ι - 1
h2 : 0 ≤ 1 / (↑#ι - 1)
⊢ ∫⁻ (x : (i : ι) → A i), ∏ i : ι, (∫⁻ (xᵢ : A i), f (update x i xᵢ) ∂μ i) ^ (1 / (↑#ι - 1)) ∂Measure.pi μ ≤
    (∫⁻ (x : (i : ι) → A i), f x ∂Measure.pi μ) ^ p
state_after: ι : Type u_1
inst✝³ : Fintype ι
inst✝² : DecidableEq ι
A : ι → Type u_2
inst✝¹ : (i : ι) → MeasurableSpace (A i)
μ : (i : ι) → Measure (A i)
inst✝ : ∀ (i : ι), SigmaFinite (μ i)
p : ℝ
hp : (↑#ι).IsConjExponent p
f : ((a : ι) → A a) → ℝ≥0∞
hf : Measurable f
this : Nontrivial ι
h0 : 1 < ↑#ι
h1 : 0 < ↑#ι - 1
h2 : 0 ≤ 1 / (↑#ι - 1)
h3 : (↑#ι - 1) * (1 / (↑#ι - 1)) ≤ 1
⊢ ∫⁻ (x : (i : ι) → A i), ∏ i : ι, (∫⁻ (xᵢ : A i), f (update x i xᵢ) ∂μ i) ^ (1 / (↑#ι - 1)) ∂Measure.pi μ ≤
    (∫⁻ (x : (i : ι) → A i), f x ∂Measure.pi μ) ^ p

tactic: have h4 : p = 1 + 1 / (↑#ι - 1) := by field_simp; rw [mul_comm, hp.sub_one_mul_conj]
state_before: ι : Type u_1
inst✝³ : Fintype ι
inst✝² : DecidableEq ι
A : ι → Type u_2
inst✝¹ : (i : ι) → MeasurableSpace (A i)
μ : (i : ι) → Measure (A i)
inst✝ : ∀ (i : ι), SigmaFinite (μ i)
p : ℝ
hp : (↑#ι).IsConjExponent p
f : ((a : ι) → A a) → ℝ≥0∞
hf : Measurable f
this : Nontrivial ι
h0 : 1 < ↑#ι
h1 : 0 < ↑#ι - 1
h2 : 0 ≤ 1 / (↑#ι - 1)
h3 : (↑#ι - 1) * (1 / (↑#ι - 1)) ≤ 1
⊢ ∫⁻ (x : (i : ι) → A i), ∏ i : ι, (∫⁻ (xᵢ : A i), f (update x i xᵢ) ∂μ i) ^ (1 / (↑#ι - 1)) ∂Measure.pi μ ≤
    (∫⁻ (x : (i : ι) → A i), f x ∂Measure.pi μ) ^ p
state_after: ι : Type u_1
inst✝³ : Fintype ι
inst✝² : DecidableEq ι
A : ι → Type u_2
inst✝¹ : (i : ι) → MeasurableSpace (A i)
μ : (i : ι) → Measure (A i)
inst✝ : ∀ (i : ι), SigmaFinite (μ i)
p : ℝ
hp : (↑#ι).IsConjExponent p
f : ((a : ι) → A a) → ℝ≥0∞
hf : Measurable f
this : Nontrivial ι
h0 : 1 < ↑#ι
h1 : 0 < ↑#ι - 1
h2 : 0 ≤ 1 / (↑#ι - 1)
h3 : (↑#ι - 1) * (1 / (↑#ι - 1)) ≤ 1
h4 : p = 1 + 1 / (↑#ι - 1)
⊢ ∫⁻ (x : (i : ι) → A i), ∏ i : ι, (∫⁻ (xᵢ : A i), f (update x i xᵢ) ∂μ i) ^ (1 / (↑#ι - 1)) ∂Measure.pi μ ≤
    (∫⁻ (x : (i : ι) → A i), f x ∂Measure.pi μ) ^ p

tactic: rw [h4]
state_before: ι : Type u_1
inst✝³ : Fintype ι
inst✝² : DecidableEq ι
A : ι → Type u_2
inst✝¹ : (i : ι) → MeasurableSpace (A i)
μ : (i : ι) → Measure (A i)
inst✝ : ∀ (i : ι), SigmaFinite (μ i)
p : ℝ
hp : (↑#ι).IsConjExponent p
f : ((a : ι) → A a) → ℝ≥0∞
hf : Measurable f
this : Nontrivial ι
h0 : 1 < ↑#ι
h1 : 0 < ↑#ι - 1
h2 : 0 ≤ 1 / (↑#ι - 1)
h3 : (↑#ι - 1) * (1 / (↑#ι - 1)) ≤ 1
h4 : p = 1 + 1 / (↑#ι - 1)
⊢ ∫⁻ (x : (i : ι) → A i), ∏ i : ι, (∫⁻ (xᵢ : A i), f (update x i xᵢ) ∂μ i) ^ (1 / (↑#ι - 1)) ∂Measure.pi μ ≤
    (∫⁻ (x : (i : ι) → A i), f x ∂Measure.pi μ) ^ p
state_after: ι : Type u_1
inst✝³ : Fintype ι
inst✝² : DecidableEq ι
A : ι → Type u_2
inst✝¹ : (i : ι) → MeasurableSpace (A i)
μ : (i : ι) → Measure (A i)
inst✝ : ∀ (i : ι), SigmaFinite (μ i)
p : ℝ
hp : (↑#ι).IsConjExponent p
f : ((a : ι) → A a) → ℝ≥0∞
hf : Measurable f
this : Nontrivial ι
h0 : 1 < ↑#ι
h1 : 0 < ↑#ι - 1
h2 : 0 ≤ 1 / (↑#ι - 1)
h3 : (↑#ι - 1) * (1 / (↑#ι - 1)) ≤ 1
h4 : p = 1 + 1 / (↑#ι - 1)
⊢ ∫⁻ (x : (i : ι) → A i), ∏ i : ι, (∫⁻ (xᵢ : A i), f (update x i xᵢ) ∂μ i) ^ (1 / (↑#ι - 1)) ∂Measure.pi μ ≤
    (∫⁻ (x : (i : ι) → A i), f x ∂Measure.pi μ) ^ (1 + 1 / (↑#ι - 1))

tactic: convert lintegral_mul_prod_lintegral_pow_le μ h2 h3 hf using 2
state_before: ι : Type u_1
inst✝³ : Fintype ι
inst✝² : DecidableEq ι
A : ι → Type u_2
inst✝¹ : (i : ι) → MeasurableSpace (A i)
μ : (i : ι) → Measure (A i)
inst✝ : ∀ (i : ι), SigmaFinite (μ i)
p : ℝ
hp : (↑#ι).IsConjExponent p
f : ((a : ι) → A a) → ℝ≥0∞
hf : Measurable f
this : Nontrivial ι
h0 : 1 < ↑#ι
h1 : 0 < ↑#ι - 1
h2 : 0 ≤ 1 / (↑#ι - 1)
h3 : (↑#ι - 1) * (1 / (↑#ι - 1)) ≤ 1
h4 : p = 1 + 1 / (↑#ι - 1)
⊢ ∫⁻ (x : (i : ι) → A i), ∏ i : ι, (∫⁻ (xᵢ : A i), f (update x i xᵢ) ∂μ i) ^ (1 / (↑#ι - 1)) ∂Measure.pi μ ≤
    (∫⁻ (x : (i : ι) → A i), f x ∂Measure.pi μ) ^ (1 + 1 / (↑#ι - 1))
state_after: case h.e'_3.h.e'_4
ι : Type u_1
inst✝³ : Fintype ι
inst✝² : DecidableEq ι
A : ι → Type u_2
inst✝¹ : (i : ι) → MeasurableSpace (A i)
μ : (i : ι) → Measure (A i)
inst✝ : ∀ (i : ι), SigmaFinite (μ i)
p : ℝ
hp : (↑#ι).IsConjExponent p
f : ((a : ι) → A a) → ℝ≥0∞
hf : Measurable f
this : Nontrivial ι
h0 : 1 < ↑#ι
h1 : 0 < ↑#ι - 1
h2 : 0 ≤ 1 / (↑#ι - 1)
h3 : (↑#ι - 1) * (1 / (↑#ι - 1)) ≤ 1
h4 : p = 1 + 1 / (↑#ι - 1)
⊢ (fun x => ∏ i : ι, (∫⁻ (xᵢ : A i), f (update x i xᵢ) ∂μ i) ^ (1 / (↑#ι - 1))) = fun x =>
    f x ^ (1 - (↑#ι - 1) * (1 / (↑#ι - 1))) * ∏ i : ι, (∫⁻ (xᵢ : A i), f (update x i xᵢ) ∂μ i) ^ (1 / (↑#ι - 1))

tactic: field_simp
state_before: case h.e'_3.h.e'_4
ι : Type u_1
inst✝³ : Fintype ι
inst✝² : DecidableEq ι
A : ι → Type u_2
inst✝¹ : (i : ι) → MeasurableSpace (A i)
μ : (i : ι) → Measure (A i)
inst✝ : ∀ (i : ι), SigmaFinite (μ i)
p : ℝ
hp : (↑#ι).IsConjExponent p
f : ((a : ι) → A a) → ℝ≥0∞
hf : Measurable f
this : Nontrivial ι
h0 : 1 < ↑#ι
h1 : 0 < ↑#ι - 1
h2 : 0 ≤ 1 / (↑#ι - 1)
h3 : (↑#ι - 1) * (1 / (↑#ι - 1)) ≤ 1
h4 : p = 1 + 1 / (↑#ι - 1)
⊢ (fun x => ∏ i : ι, (∫⁻ (xᵢ : A i), f (update x i xᵢ) ∂μ i) ^ (1 / (↑#ι - 1))) = fun x =>
    f x ^ (1 - (↑#ι - 1) * (1 / (↑#ι - 1))) * ∏ i : ι, (∫⁻ (xᵢ : A i), f (update x i xᵢ) ∂μ i) ^ (1 / (↑#ι - 1))
state_after: no goals

tactic: exact_mod_cast hp.one_lt
state_before: ι : Type u_1
inst✝³ : Fintype ι
inst✝² : DecidableEq ι
A : ι → Type u_2
inst✝¹ : (i : ι) → MeasurableSpace (A i)
μ : (i : ι) → Measure (A i)
inst✝ : ∀ (i : ι), SigmaFinite (μ i)
p : ℝ
hp : (↑#ι).IsConjExponent p
f : ((a : ι) → A a) → ℝ≥0∞
hf : Measurable f
⊢ 1 < #ι
state_after: no goals

tactic: norm_cast
state_before: ι : Type u_1
inst✝³ : Fintype ι
inst✝² : DecidableEq ι
A : ι → Type u_2
inst✝¹ : (i : ι) → MeasurableSpace (A i)
μ : (i : ι) → Measure (A i)
inst✝ : ∀ (i : ι), SigmaFinite (μ i)
p : ℝ
hp : (↑#ι).IsConjExponent p
f : ((a : ι) → A a) → ℝ≥0∞
hf : Measurable f
this : Nontrivial ι
⊢ 1 < ↑#ι
state_after: ι : Type u_1
inst✝³ : Fintype ι
inst✝² : DecidableEq ι
A : ι → Type u_2
inst✝¹ : (i : ι) → MeasurableSpace (A i)
μ : (i : ι) → Measure (A i)
inst✝ : ∀ (i : ι), SigmaFinite (μ i)
p : ℝ
hp : (↑#ι).IsConjExponent p
f : ((a : ι) → A a) → ℝ≥0∞
hf : Measurable f
this : Nontrivial ι
⊢ 1 < #ι

tactic: exact Fintype.one_lt_card
state_before: ι : Type u_1
inst✝³ : Fintype ι
inst✝² : DecidableEq ι
A : ι → Type u_2
inst✝¹ : (i : ι) → MeasurableSpace (A i)
μ : (i : ι) → Measure (A i)
inst✝ : ∀ (i : ι), SigmaFinite (μ i)
p : ℝ
hp : (↑#ι).IsConjExponent p
f : ((a : ι) → A a) → ℝ≥0∞
hf : Measurable f
this : Nontrivial ι
⊢ 1 < #ι
state_after: no goals

tactic: linarith
state_before: ι : Type u_1
inst✝³ : Fintype ι
inst✝² : DecidableEq ι
A : ι → Type u_2
inst✝¹ : (i : ι) → MeasurableSpace (A i)
μ : (i : ι) → Measure (A i)
inst✝ : ∀ (i : ι), SigmaFinite (μ i)
p : ℝ
hp : (↑#ι).IsConjExponent p
f : ((a : ι) → A a) → ℝ≥0∞
hf : Measurable f
this : Nontrivial ι
h0 : 1 < ↑#ι
⊢ 0 < ↑#ι - 1
state_after: no goals

tactic: positivity
state_before: ι : Type u_1
inst✝³ : Fintype ι
inst✝² : DecidableEq ι
A : ι → Type u_2
inst✝¹ : (i : ι) → MeasurableSpace (A i)
μ : (i : ι) → Measure (A i)
inst✝ : ∀ (i : ι), SigmaFinite (μ i)
p : ℝ
hp : (↑#ι).IsConjExponent p
f : ((a : ι) → A a) → ℝ≥0∞
hf : Measurable f
this : Nontrivial ι
h0 : 1 < ↑#ι
h1 : 0 < ↑#ι - 1
⊢ 0 ≤ 1 / (↑#ι - 1)
state_after: no goals

tactic: field_simp
state_before: ι : Type u_1
inst✝³ : Fintype ι
inst✝² : DecidableEq ι
A : ι → Type u_2
inst✝¹ : (i : ι) → MeasurableSpace (A i)
μ : (i : ι) → Measure (A i)
inst✝ : ∀ (i : ι), SigmaFinite (μ i)
p : ℝ
hp : (↑#ι).IsConjExponent p
f : ((a : ι) → A a) → ℝ≥0∞
hf : Measurable f
this : Nontrivial ι
h0 : 1 < ↑#ι
h1 : 0 < ↑#ι - 1
h2 : 0 ≤ 1 / (↑#ι - 1)
⊢ (↑#ι - 1) * (1 / (↑#ι - 1)) ≤ 1
state_after: no goals

tactic: field_simp
state_before: ι : Type u_1
inst✝³ : Fintype ι
inst✝² : DecidableEq ι
A : ι → Type u_2
inst✝¹ : (i : ι) → MeasurableSpace (A i)
μ : (i : ι) → Measure (A i)
inst✝ : ∀ (i : ι), SigmaFinite (μ i)
p : ℝ
hp : (↑#ι).IsConjExponent p
f : ((a : ι) → A a) → ℝ≥0∞
hf : Measurable f
this : Nontrivial ι
h0 : 1 < ↑#ι
h1 : 0 < ↑#ι - 1
h2 : 0 ≤ 1 / (↑#ι - 1)
h3 : (↑#ι - 1) * (1 / (↑#ι - 1)) ≤ 1
⊢ p = 1 + 1 / (↑#ι - 1)
state_after: ι : Type u_1
inst✝³ : Fintype ι
inst✝² : DecidableEq ι
A : ι → Type u_2
inst✝¹ : (i : ι) → MeasurableSpace (A i)
μ : (i : ι) → Measure (A i)
inst✝ : ∀ (i : ι), SigmaFinite (μ i)
p : ℝ
hp : (↑#ι).IsConjExponent p
f : ((a : ι) → A a) → ℝ≥0∞
hf : Measurable f
this : Nontrivial ι
h0 : 1 < ↑#ι
h1 : 0 < ↑#ι - 1
h2 : 0 ≤ 1 / (↑#ι - 1)
h3 : (↑#ι - 1) * (1 / (↑#ι - 1)) ≤ 1
⊢ p * (↑#ι - 1) = ↑#ι

tactic: rw [mul_comm, hp.sub_one_mul_conj]
state_before: ι : Type u_1
inst✝³ : Fintype ι
inst✝² : DecidableEq ι
A : ι → Type u_2
inst✝¹ : (i : ι) → MeasurableSpace (A i)
μ : (i : ι) → Measure (A i)
inst✝ : ∀ (i : ι), SigmaFinite (μ i)
p : ℝ
hp : (↑#ι).IsConjExponent p
f : ((a : ι) → A a) → ℝ≥0∞
hf : Measurable f
this : Nontrivial ι
h0 : 1 < ↑#ι
h1 : 0 < ↑#ι - 1
h2 : 0 ≤ 1 / (↑#ι - 1)
h3 : (↑#ι - 1) * (1 / (↑#ι - 1)) ≤ 1
⊢ p * (↑#ι - 1) = ↑#ι
state_after: no goals