Theorem: GaussianFourier.integrable_cexp_neg_mul_sq_norm_add_of_euclideanSpace
File: Mathlib/Analysis/SpecialFunctions/Gaussian/FourierTransform.lean

tactic: have := EuclideanSpace.volume_preserving_measurableEquiv ι
state_before: b : ℂ
V : Type u_1
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : InnerProductSpace ℝ V
inst✝³ : FiniteDimensional ℝ V
inst✝² : MeasurableSpace V
inst✝¹ : BorelSpace V
ι : Type u_2
inst✝ : Fintype ι
hb : 0 < b.re
c : ℂ
w : EuclideanSpace ℝ ι
⊢ Integrable (fun v => cexp (-b * ↑‖v‖ ^ 2 + c * ↑⟪w, v⟫_ℝ)) volume
state_after: b : ℂ
V : Type u_1
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : InnerProductSpace ℝ V
inst✝³ : FiniteDimensional ℝ V
inst✝² : MeasurableSpace V
inst✝¹ : BorelSpace V
ι : Type u_2
inst✝ : Fintype ι
hb : 0 < b.re
c : ℂ
w : EuclideanSpace ℝ ι
this : MeasurePreserving (⇑(EuclideanSpace.measurableEquiv ι)) volume volume
⊢ Integrable (fun v => cexp (-b * ↑‖v‖ ^ 2 + c * ↑⟪w, v⟫_ℝ)) volume

tactic: rw [← MeasurePreserving.integrable_comp_emb this.symm (MeasurableEquiv.measurableEmbedding _)]
state_before: b : ℂ
V : Type u_1
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : InnerProductSpace ℝ V
inst✝³ : FiniteDimensional ℝ V
inst✝² : MeasurableSpace V
inst✝¹ : BorelSpace V
ι : Type u_2
inst✝ : Fintype ι
hb : 0 < b.re
c : ℂ
w : EuclideanSpace ℝ ι
this : MeasurePreserving (⇑(EuclideanSpace.measurableEquiv ι)) volume volume
⊢ Integrable (fun v => cexp (-b * ↑‖v‖ ^ 2 + c * ↑⟪w, v⟫_ℝ)) volume
state_after: b : ℂ
V : Type u_1
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : InnerProductSpace ℝ V
inst✝³ : FiniteDimensional ℝ V
inst✝² : MeasurableSpace V
inst✝¹ : BorelSpace V
ι : Type u_2
inst✝ : Fintype ι
hb : 0 < b.re
c : ℂ
w : EuclideanSpace ℝ ι
this : MeasurePreserving (⇑(EuclideanSpace.measurableEquiv ι)) volume volume
⊢ Integrable ((fun v => cexp (-b * ↑‖v‖ ^ 2 + c * ↑⟪w, v⟫_ℝ)) ∘ ⇑(EuclideanSpace.measurableEquiv ι).symm) volume

tactic: simp only [neg_mul, Function.comp_def]
state_before: b : ℂ
V : Type u_1
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : InnerProductSpace ℝ V
inst✝³ : FiniteDimensional ℝ V
inst✝² : MeasurableSpace V
inst✝¹ : BorelSpace V
ι : Type u_2
inst✝ : Fintype ι
hb : 0 < b.re
c : ℂ
w : EuclideanSpace ℝ ι
this : MeasurePreserving (⇑(EuclideanSpace.measurableEquiv ι)) volume volume
⊢ Integrable ((fun v => cexp (-b * ↑‖v‖ ^ 2 + c * ↑⟪w, v⟫_ℝ)) ∘ ⇑(EuclideanSpace.measurableEquiv ι).symm) volume
state_after: b : ℂ
V : Type u_1
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : InnerProductSpace ℝ V
inst✝³ : FiniteDimensional ℝ V
inst✝² : MeasurableSpace V
inst✝¹ : BorelSpace V
ι : Type u_2
inst✝ : Fintype ι
hb : 0 < b.re
c : ℂ
w : EuclideanSpace ℝ ι
this : MeasurePreserving (⇑(EuclideanSpace.measurableEquiv ι)) volume volume
⊢ Integrable
    (fun x =>
      cexp
        (-(b * ↑‖(EuclideanSpace.measurableEquiv ι).symm x‖ ^ 2) +
          c * ↑⟪w, (EuclideanSpace.measurableEquiv ι).symm x⟫_ℝ))
    volume

tactic: convert integrable_cexp_neg_mul_sum_add hb (fun i ↦ c * w i) using 3 with v
state_before: b : ℂ
V : Type u_1
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : InnerProductSpace ℝ V
inst✝³ : FiniteDimensional ℝ V
inst✝² : MeasurableSpace V
inst✝¹ : BorelSpace V
ι : Type u_2
inst✝ : Fintype ι
hb : 0 < b.re
c : ℂ
w : EuclideanSpace ℝ ι
this : MeasurePreserving (⇑(EuclideanSpace.measurableEquiv ι)) volume volume
⊢ Integrable
    (fun x =>
      cexp
        (-(b * ↑‖(EuclideanSpace.measurableEquiv ι).symm x‖ ^ 2) +
          c * ↑⟪w, (EuclideanSpace.measurableEquiv ι).symm x⟫_ℝ))
    volume
state_after: case h.e'_5.h.h.e'_1
b : ℂ
V : Type u_1
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : InnerProductSpace ℝ V
inst✝³ : FiniteDimensional ℝ V
inst✝² : MeasurableSpace V
inst✝¹ : BorelSpace V
ι : Type u_2
inst✝ : Fintype ι
hb : 0 < b.re
c : ℂ
w : EuclideanSpace ℝ ι
this : MeasurePreserving (⇑(EuclideanSpace.measurableEquiv ι)) volume volume
v : ι → ℝ
⊢ -(b * ↑‖(EuclideanSpace.measurableEquiv ι).symm v‖ ^ 2) + c * ↑⟪w, (EuclideanSpace.measurableEquiv ι).symm v⟫_ℝ =
    -b * ∑ i : ι, ↑(v i) ^ 2 + ∑ i : ι, c * ↑(w i) * ↑(v i)

tactic: simp only [EuclideanSpace.measurableEquiv, MeasurableEquiv.symm_mk, MeasurableEquiv.coe_mk,
  EuclideanSpace.norm_eq, WithLp.equiv_symm_pi_apply, Real.norm_eq_abs, sq_abs, PiLp.inner_apply,
  RCLike.inner_apply, conj_trivial, ofReal_sum, ofReal_mul, Finset.mul_sum, neg_mul,
  Finset.sum_neg_distrib, mul_assoc, add_left_inj, neg_inj]
state_before: case h.e'_5.h.h.e'_1
b : ℂ
V : Type u_1
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : InnerProductSpace ℝ V
inst✝³ : FiniteDimensional ℝ V
inst✝² : MeasurableSpace V
inst✝¹ : BorelSpace V
ι : Type u_2
inst✝ : Fintype ι
hb : 0 < b.re
c : ℂ
w : EuclideanSpace ℝ ι
this : MeasurePreserving (⇑(EuclideanSpace.measurableEquiv ι)) volume volume
v : ι → ℝ
⊢ -(b * ↑‖(EuclideanSpace.measurableEquiv ι).symm v‖ ^ 2) + c * ↑⟪w, (EuclideanSpace.measurableEquiv ι).symm v⟫_ℝ =
    -b * ∑ i : ι, ↑(v i) ^ 2 + ∑ i : ι, c * ↑(w i) * ↑(v i)
state_after: case h.e'_5.h.h.e'_1
b : ℂ
V : Type u_1
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : InnerProductSpace ℝ V
inst✝³ : FiniteDimensional ℝ V
inst✝² : MeasurableSpace V
inst✝¹ : BorelSpace V
ι : Type u_2
inst✝ : Fintype ι
hb : 0 < b.re
c : ℂ
w : EuclideanSpace ℝ ι
this : MeasurePreserving (⇑(EuclideanSpace.measurableEquiv ι)) volume volume
v : ι → ℝ
⊢ b * ↑√(∑ x : ι, v x ^ 2) ^ 2 = ∑ x : ι, b * ↑(v x) ^ 2

tactic: norm_cast
state_before: case h.e'_5.h.h.e'_1
b : ℂ
V : Type u_1
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : InnerProductSpace ℝ V
inst✝³ : FiniteDimensional ℝ V
inst✝² : MeasurableSpace V
inst✝¹ : BorelSpace V
ι : Type u_2
inst✝ : Fintype ι
hb : 0 < b.re
c : ℂ
w : EuclideanSpace ℝ ι
this : MeasurePreserving (⇑(EuclideanSpace.measurableEquiv ι)) volume volume
v : ι → ℝ
⊢ b * ↑√(∑ x : ι, v x ^ 2) ^ 2 = ∑ x : ι, b * ↑(v x) ^ 2
state_after: case h.e'_5.h.h.e'_1
b : ℂ
V : Type u_1
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : InnerProductSpace ℝ V
inst✝³ : FiniteDimensional ℝ V
inst✝² : MeasurableSpace V
inst✝¹ : BorelSpace V
ι : Type u_2
inst✝ : Fintype ι
hb : 0 < b.re
c : ℂ
w : EuclideanSpace ℝ ι
this : MeasurePreserving (⇑(EuclideanSpace.measurableEquiv ι)) volume volume
v : ι → ℝ
⊢ b * ↑(√(∑ x : ι, v x ^ 2) ^ 2) = ∑ x : ι, b * ↑(v x ^ 2)

tactic: rw [sq_sqrt]
state_before: case h.e'_5.h.h.e'_1
b : ℂ
V : Type u_1
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : InnerProductSpace ℝ V
inst✝³ : FiniteDimensional ℝ V
inst✝² : MeasurableSpace V
inst✝¹ : BorelSpace V
ι : Type u_2
inst✝ : Fintype ι
hb : 0 < b.re
c : ℂ
w : EuclideanSpace ℝ ι
this : MeasurePreserving (⇑(EuclideanSpace.measurableEquiv ι)) volume volume
v : ι → ℝ
⊢ b * ↑(√(∑ x : ι, v x ^ 2) ^ 2) = ∑ x : ι, b * ↑(v x ^ 2)
state_after: case h.e'_5.h.h.e'_1
b : ℂ
V : Type u_1
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : InnerProductSpace ℝ V
inst✝³ : FiniteDimensional ℝ V
inst✝² : MeasurableSpace V
inst✝¹ : BorelSpace V
ι : Type u_2
inst✝ : Fintype ι
hb : 0 < b.re
c : ℂ
w : EuclideanSpace ℝ ι
this : MeasurePreserving (⇑(EuclideanSpace.measurableEquiv ι)) volume volume
v : ι → ℝ
⊢ b * ↑(∑ x : ι, v x ^ 2) = ∑ x : ι, b * ↑(v x ^ 2)

case h.e'_5.h.h.e'_1
b : ℂ
V : Type u_1
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : InnerProductSpace ℝ V
inst✝³ : FiniteDimensional ℝ V
inst✝² : MeasurableSpace V
inst✝¹ : BorelSpace V
ι : Type u_2
inst✝ : Fintype ι
hb : 0 < b.re
c : ℂ
w : EuclideanSpace ℝ ι
this : MeasurePreserving (⇑(EuclideanSpace.measurableEquiv ι)) volume volume
v : ι → ℝ
⊢ 0 ≤ ∑ x : ι, v x ^ 2

tactic: simp [Finset.mul_sum]
state_before: case h.e'_5.h.h.e'_1
b : ℂ
V : Type u_1
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : InnerProductSpace ℝ V
inst✝³ : FiniteDimensional ℝ V
inst✝² : MeasurableSpace V
inst✝¹ : BorelSpace V
ι : Type u_2
inst✝ : Fintype ι
hb : 0 < b.re
c : ℂ
w : EuclideanSpace ℝ ι
this : MeasurePreserving (⇑(EuclideanSpace.measurableEquiv ι)) volume volume
v : ι → ℝ
⊢ b * ↑(∑ x : ι, v x ^ 2) = ∑ x : ι, b * ↑(v x ^ 2)
state_after: no goals

tactic: exact Finset.sum_nonneg (fun i _hi ↦ by positivity)
state_before: case h.e'_5.h.h.e'_1
b : ℂ
V : Type u_1
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : InnerProductSpace ℝ V
inst✝³ : FiniteDimensional ℝ V
inst✝² : MeasurableSpace V
inst✝¹ : BorelSpace V
ι : Type u_2
inst✝ : Fintype ι
hb : 0 < b.re
c : ℂ
w : EuclideanSpace ℝ ι
this : MeasurePreserving (⇑(EuclideanSpace.measurableEquiv ι)) volume volume
v : ι → ℝ
⊢ 0 ≤ ∑ x : ι, v x ^ 2
state_after: no goals

tactic: positivity
state_before: b : ℂ
V : Type u_1
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : InnerProductSpace ℝ V
inst✝³ : FiniteDimensional ℝ V
inst✝² : MeasurableSpace V
inst✝¹ : BorelSpace V
ι : Type u_2
inst✝ : Fintype ι
hb : 0 < b.re
c : ℂ
w : EuclideanSpace ℝ ι
this : MeasurePreserving (⇑(EuclideanSpace.measurableEquiv ι)) volume volume
v : ι → ℝ
i : ι
_hi : i ∈ Finset.univ
⊢ 0 ≤ v i ^ 2
state_after: no goals