Theorem: Real.hasDerivAt_fourierIntegral
File: Mathlib/Analysis/Fourier/FourierTransformDeriv.lean

Proof steps:
state_before: E : Type u_1
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℂ E
V : Type u_2
inst✝⁴ : NormedAddCommGroup V
inst✝³ : InnerProductSpace ℝ V
inst✝² : FiniteDimensional ℝ V
inst✝¹ : MeasurableSpace V
inst✝ : BorelSpace V
f✝ : V → E
f : ℝ → E
hf : Integrable f volume
hf' : Integrable (fun x => x • f x) volume
w : ℝ
⊢ HasDerivAt (𝓕 f) (𝓕 (fun x => (-2 * ↑π * I * ↑x) • f x) w) w
state_after: E : Type u_1
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℂ E
V : Type u_2
inst✝⁴ : NormedAddCommGroup V
inst✝³ : InnerProductSpace ℝ V
inst✝² : FiniteDimensional ℝ V
inst✝¹ : MeasurableSpace V
inst✝ : BorelSpace V
f✝ : V → E
f : ℝ → E
hf : Integrable f volume
hf' : Integrable (fun x => x • f x) volume
w : ℝ
hf'' : Integrable (fun v => ‖v‖ * ‖f v‖) volume
⊢ HasDerivAt (𝓕 f) (𝓕 (fun x => (-2 * ↑π * I * ↑x) • f x) w) w
tactic: have hf'' : Integrable (fun v : ℝ ↦ ‖v‖ * ‖f v‖) := by simpa only [norm_smul] using hf'.norm
state_before: E : Type u_1
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℂ E
V : Type u_2
inst✝⁴ : NormedAddCommGroup V
inst✝³ : InnerProductSpace ℝ V
inst✝² : FiniteDimensional ℝ V
inst✝¹ : MeasurableSpace V
inst✝ : BorelSpace V
f✝ : V → E
f : ℝ → E
hf : Integrable f volume
hf' : Integrable (fun x => x • f x) volume
w : ℝ
hf'' : Integrable (fun v => ‖v‖ * ‖f v‖) volume
⊢ HasDerivAt (𝓕 f) (𝓕 (fun x => (-2 * ↑π * I * ↑x) • f x) w) w
state_after: E : Type u_1
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℂ E
V : Type u_2
inst✝⁴ : NormedAddCommGroup V
inst✝³ : InnerProductSpace ℝ V
inst✝² : FiniteDimensional ℝ V
inst✝¹ : MeasurableSpace V
inst✝ : BorelSpace V
f✝ : V → E
f : ℝ → E
hf : Integrable f volume
hf' : Integrable (fun x => x • f x) volume
w : ℝ
hf'' : Integrable (fun v => ‖v‖ * ‖f v‖) volume
L : ℝ →L[ℝ] ℝ →L[ℝ] ℝ := ContinuousLinearMap.mul ℝ ℝ
⊢ HasDerivAt (𝓕 f) (𝓕 (fun x => (-2 * ↑π * I * ↑x) • f x) w) w
tactic: let L := ContinuousLinearMap.mul ℝ ℝ
state_before: E : Type u_1
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℂ E
V : Type u_2
inst✝⁴ : NormedAddCommGroup V
inst✝³ : InnerProductSpace ℝ V
inst✝² : FiniteDimensional ℝ V
inst✝¹ : MeasurableSpace V
inst✝ : BorelSpace V
f✝ : V → E
f : ℝ → E
hf : Integrable f volume
hf' : Integrable (fun x => x • f x) volume
w : ℝ
hf'' : Integrable (fun v => ‖v‖ * ‖f v‖) volume
L : ℝ →L[ℝ] ℝ →L[ℝ] ℝ := ContinuousLinearMap.mul ℝ ℝ
⊢ HasDerivAt (𝓕 f) (𝓕 (fun x => (-2 * ↑π * I * ↑x) • f x) w) w
state_after: E : Type u_1
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℂ E
V : Type u_2
inst✝⁴ : NormedAddCommGroup V
inst✝³ : InnerProductSpace ℝ V
inst✝² : FiniteDimensional ℝ V
inst✝¹ : MeasurableSpace V
inst✝ : BorelSpace V
f✝ : V → E
f : ℝ → E
hf : Integrable f volume
hf' : Integrable (fun x => x • f x) volume
w : ℝ
hf'' : Integrable (fun v => ‖v‖ * ‖f v‖) volume
L : ℝ →L[ℝ] ℝ →L[ℝ] ℝ := ContinuousLinearMap.mul ℝ ℝ
h_int : Integrable (fun v => fourierSMulRight L f v) volume
⊢ HasDerivAt (𝓕 f) (𝓕 (fun x => (-2 * ↑π * I * ↑x) • f x) w) w
tactic: have h_int : Integrable fun v ↦ fourierSMulRight L f v := by
    suffices Integrable fun v ↦ ContinuousLinearMap.smulRight (L v) (f v) by
      simpa only [fourierSMulRight, neg_smul, neg_mul, Pi.smul_apply] using this.smul (-2 * π * I)
    convert ((ContinuousLinearMap.ring_lmap_equiv_self ℝ
      E).symm.toContinuousLinearEquiv.toContinuousLinearMap).integrable_comp hf' using 2 with v
    apply ContinuousLinearMap.ext_ring
    rw [ContinuousLinearMap.smulRight_apply, ContinuousLinearMap.mul_apply', mul_one,
      ContinuousLinearMap.map_smul]
    exact congr_arg (fun x ↦ v • x) (one_smul ℝ (f v)).symm
state_before: E : Type u_1
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℂ E
V : Type u_2
inst✝⁴ : NormedAddCommGroup V
inst✝³ : InnerProductSpace ℝ V
inst✝² : FiniteDimensional ℝ V
inst✝¹ : MeasurableSpace V
inst✝ : BorelSpace V
f✝ : V → E
f : ℝ → E
hf : Integrable f volume
hf' : Integrable (fun x => x • f x) volume
w : ℝ
hf'' : Integrable (fun v => ‖v‖ * ‖f v‖) volume
L : ℝ →L[ℝ] ℝ →L[ℝ] ℝ := ContinuousLinearMap.mul ℝ ℝ
h_int : Integrable (fun v => fourierSMulRight L f v) volume
⊢ HasDerivAt (𝓕 f) (𝓕 (fun x => (-2 * ↑π * I * ↑x) • f x) w) w
state_after: E : Type u_1
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℂ E
V : Type u_2
inst✝⁴ : NormedAddCommGroup V
inst✝³ : InnerProductSpace ℝ V
inst✝² : FiniteDimensional ℝ V
inst✝¹ : MeasurableSpace V
inst✝ : BorelSpace V
f✝ : V → E
f : ℝ → E
hf : Integrable f volume
hf' : Integrable (fun x => x • f x) volume
w : ℝ
hf'' : Integrable (fun v => ‖v‖ * ‖f v‖) volume
L : ℝ →L[ℝ] ℝ →L[ℝ] ℝ := ContinuousLinearMap.mul ℝ ℝ
h_int : Integrable (fun v => 𝐞 (-((LinearMap.mul ℝ ℝ) v) w) • fourierSMulRight L f v) volume
⊢ HasDerivAt (𝓕 f) (𝓕 (fun x => (-2 * ↑π * I * ↑x) • f x) w) w
tactic: rw [← VectorFourier.fourierIntegral_convergent_iff continuous_fourierChar L.continuous₂ w]
    at h_int
state_before: E : Type u_1
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℂ E
V : Type u_2
inst✝⁴ : NormedAddCommGroup V
inst✝³ : InnerProductSpace ℝ V
inst✝² : FiniteDimensional ℝ V
inst✝¹ : MeasurableSpace V
inst✝ : BorelSpace V
f✝ : V → E
f : ℝ → E
hf : Integrable f volume
hf' : Integrable (fun x => x • f x) volume
w : ℝ
hf'' : Integrable (fun v => ‖v‖ * ‖f v‖) volume
L : ℝ →L[ℝ] ℝ →L[ℝ] ℝ := ContinuousLinearMap.mul ℝ ℝ
h_int : Integrable (fun v => 𝐞 (-((LinearMap.mul ℝ ℝ) v) w) • fourierSMulRight L f v) volume
⊢ HasDerivAt (𝓕 f) (𝓕 (fun x => (-2 * ↑π * I * ↑x) • f x) w) w
state_after: case h.e'_7
E : Type u_1
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℂ E
V : Type u_2
inst✝⁴ : NormedAddCommGroup V
inst✝³ : InnerProductSpace ℝ V
inst✝² : FiniteDimensional ℝ V
inst✝¹ : MeasurableSpace V
inst✝ : BorelSpace V
f✝ : V → E
f : ℝ → E
hf : Integrable f volume
hf' : Integrable (fun x => x • f x) volume
w : ℝ
hf'' : Integrable (fun v => ‖v‖ * ‖f v‖) volume
L : ℝ →L[ℝ] ℝ →L[ℝ] ℝ := ContinuousLinearMap.mul ℝ ℝ
h_int : Integrable (fun v => 𝐞 (-((LinearMap.mul ℝ ℝ) v) w) • fourierSMulRight L f v) volume
⊢ 𝓕 (fun x => (-2 * ↑π * I * ↑x) • f x) w =
    (VectorFourier.fourierIntegral 𝐞 volume L.toLinearMap₂ (fourierSMulRight L f) w) 1
tactic: convert (VectorFourier.hasFDerivAt_fourierIntegral L hf hf'' w).hasDerivAt using 1
state_before: case h.e'_7
E : Type u_1
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℂ E
V : Type u_2
inst✝⁴ : NormedAddCommGroup V
inst✝³ : InnerProductSpace ℝ V
inst✝² : FiniteDimensional ℝ V
inst✝¹ : MeasurableSpace V
inst✝ : BorelSpace V
f✝ : V → E
f : ℝ → E
hf : Integrable f volume
hf' : Integrable (fun x => x • f x) volume
w : ℝ
hf'' : Integrable (fun v => ‖v‖ * ‖f v‖) volume
L : ℝ →L[ℝ] ℝ →L[ℝ] ℝ := ContinuousLinearMap.mul ℝ ℝ
h_int : Integrable (fun v => 𝐞 (-((LinearMap.mul ℝ ℝ) v) w) • fourierSMulRight L f v) volume
⊢ 𝓕 (fun x => (-2 * ↑π * I * ↑x) • f x) w =
    (VectorFourier.fourierIntegral 𝐞 volume L.toLinearMap₂ (fourierSMulRight L f) w) 1
state_after: case h.e'_7
E : Type u_1
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℂ E
V : Type u_2
inst✝⁴ : NormedAddCommGroup V
inst✝³ : InnerProductSpace ℝ V
inst✝² : FiniteDimensional ℝ V
inst✝¹ : MeasurableSpace V
inst✝ : BorelSpace V
f✝ : V → E
f : ℝ → E
hf : Integrable f volume
hf' : Integrable (fun x => x • f x) volume
w : ℝ
hf'' : Integrable (fun v => ‖v‖ * ‖f v‖) volume
L : ℝ →L[ℝ] ℝ →L[ℝ] ℝ := ContinuousLinearMap.mul ℝ ℝ
h_int : Integrable (fun v => 𝐞 (-((LinearMap.mul ℝ ℝ) v) w) • fourierSMulRight L f v) volume
⊢ 𝓕 (fun x => (-2 * ↑π * I * ↑x) • f x) w =
    ∫ (x : ℝ), (𝐞 (-((LinearMap.mul ℝ ℝ) x) w) • fourierSMulRight L f x) 1 ∂volume
tactic: erw [ContinuousLinearMap.integral_apply h_int]
state_before: case h.e'_7
E : Type u_1
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℂ E
V : Type u_2
inst✝⁴ : NormedAddCommGroup V
inst✝³ : InnerProductSpace ℝ V
inst✝² : FiniteDimensional ℝ V
inst✝¹ : MeasurableSpace V
inst✝ : BorelSpace V
f✝ : V → E
f : ℝ → E
hf : Integrable f volume
hf' : Integrable (fun x => x • f x) volume
w : ℝ
hf'' : Integrable (fun v => ‖v‖ * ‖f v‖) volume
L : ℝ →L[ℝ] ℝ →L[ℝ] ℝ := ContinuousLinearMap.mul ℝ ℝ
h_int : Integrable (fun v => 𝐞 (-((LinearMap.mul ℝ ℝ) v) w) • fourierSMulRight L f v) volume
⊢ 𝓕 (fun x => (-2 * ↑π * I * ↑x) • f x) w =
    ∫ (x : ℝ), (𝐞 (-((LinearMap.mul ℝ ℝ) x) w) • fourierSMulRight L f x) 1 ∂volume
state_after: case h.e'_7
E : Type u_1
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℂ E
V : Type u_2
inst✝⁴ : NormedAddCommGroup V
inst✝³ : InnerProductSpace ℝ V
inst✝² : FiniteDimensional ℝ V
inst✝¹ : MeasurableSpace V
inst✝ : BorelSpace V
f✝ : V → E
f : ℝ → E
hf : Integrable f volume
hf' : Integrable (fun x => x • f x) volume
w : ℝ
hf'' : Integrable (fun v => ‖v‖ * ‖f v‖) volume
L : ℝ →L[ℝ] ℝ →L[ℝ] ℝ := ContinuousLinearMap.mul ℝ ℝ
h_int : Integrable (fun v => 𝐞 (-((LinearMap.mul ℝ ℝ) v) w) • fourierSMulRight L f v) volume
⊢ 𝓕 (fun x => -2 • ↑π • I • ↑x • f x) w = ∫ (x : ℝ), 𝐞 (-((LinearMap.mul ℝ ℝ) x) w) • -2 • ↑π • I • x • f x ∂volume
tactic: simp_rw [ContinuousLinearMap.smul_apply, fourierSMulRight, ContinuousLinearMap.smul_apply,
    ContinuousLinearMap.smulRight_apply, L, ContinuousLinearMap.mul_apply', mul_one,
    ← neg_mul, mul_smul]
state_before: case h.e'_7
E : Type u_1
inst✝⁶ : NormedAddCommGroup E
inst✝⁵ : NormedSpace ℂ E
V : Type u_2
inst✝⁴ : NormedAddCommGroup V
inst✝³ : InnerProductSpace ℝ V
inst✝² : FiniteDimensional ℝ V
inst✝¹ : MeasurableSpace V
inst✝ : BorelSpace V
f✝ : V → E
f : ℝ → E
hf : Integrable f volume
hf' : Integrable (fun x => x • f x) volume
w : ℝ
hf'' : Integrable (fun v => ‖v‖ * ‖f v‖) volume
L : ℝ →L[ℝ] ℝ →L[ℝ] ℝ := ContinuousLinearMap.mul ℝ ℝ
h_int : Integrable (fun v => 𝐞 (-((LinearMap.mul ℝ ℝ) v) w) • fourierSMulRight L f v) volume
⊢ 𝓕 (fun x => -2 • ↑π • I • ↑x • f x) w = ∫ (x : ℝ), 𝐞 (-((LinearMap.mul ℝ ℝ) x) w) • -2 • ↑π • I • x • f x ∂volume
state_after: no goals
tactic: rfl