Theorem: VectorFourier.fourierIntegral_comp_add_right
File: Mathlib/Analysis/Fourier/FourierTransform.lean

tactic: ext1 w
state_before: 𝕜 : Type u_2
inst✝¹⁰ : CommRing 𝕜
V : Type u_1
inst✝⁹ : AddCommGroup V
inst✝⁸ : Module 𝕜 V
inst✝⁷ : MeasurableSpace V
W : Type u_3
inst✝⁶ : AddCommGroup W
inst✝⁵ : Module 𝕜 W
E : Type u_4
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℂ E
inst✝² : CompleteSpace E
inst✝¹ : MeasurableAdd V
e : Multiplicative 𝕜 →* { x // x ∈ 𝕊 }
μ : MeasureTheory.Measure V
inst✝ : Measure.IsAddRightInvariant μ
L : V →ₗ[𝕜] W →ₗ[𝕜] 𝕜
f : V → E
v₀ : V
⊢ fourierIntegral e μ L (f ∘ fun v => v + v₀) = fun w =>
    ↑(↑e (↑Multiplicative.ofAdd (↑(↑L v₀) w))) • fourierIntegral e μ L f w

tactic: dsimp only [fourierIntegral, Function.comp_apply]
state_before: case h
𝕜 : Type u_2
inst✝¹⁰ : CommRing 𝕜
V : Type u_1
inst✝⁹ : AddCommGroup V
inst✝⁸ : Module 𝕜 V
inst✝⁷ : MeasurableSpace V
W : Type u_3
inst✝⁶ : AddCommGroup W
inst✝⁵ : Module 𝕜 W
E : Type u_4
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℂ E
inst✝² : CompleteSpace E
inst✝¹ : MeasurableAdd V
e : Multiplicative 𝕜 →* { x // x ∈ 𝕊 }
μ : MeasureTheory.Measure V
inst✝ : Measure.IsAddRightInvariant μ
L : V →ₗ[𝕜] W →ₗ[𝕜] 𝕜
f : V → E
v₀ : V
w : W
⊢ fourierIntegral e μ L (f ∘ fun v => v + v₀) w = ↑(↑e (↑Multiplicative.ofAdd (↑(↑L v₀) w))) • fourierIntegral e μ L f w

tactic: conv in L _ => rw [← add_sub_cancel v v₀]
state_before: case h
𝕜 : Type u_2
inst✝¹⁰ : CommRing 𝕜
V : Type u_1
inst✝⁹ : AddCommGroup V
inst✝⁸ : Module 𝕜 V
inst✝⁷ : MeasurableSpace V
W : Type u_3
inst✝⁶ : AddCommGroup W
inst✝⁵ : Module 𝕜 W
E : Type u_4
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℂ E
inst✝² : CompleteSpace E
inst✝¹ : MeasurableAdd V
e : Multiplicative 𝕜 →* { x // x ∈ 𝕊 }
μ : MeasureTheory.Measure V
inst✝ : Measure.IsAddRightInvariant μ
L : V →ₗ[𝕜] W →ₗ[𝕜] 𝕜
f : V → E
v₀ : V
w : W
⊢ (∫ (v : V), ↑(↑e (↑Multiplicative.ofAdd (-↑(↑L v) w))) • f (v + v₀) ∂μ) =
    ↑(↑e (↑Multiplicative.ofAdd (↑(↑L v₀) w))) • ∫ (v : V), ↑(↑e (↑Multiplicative.ofAdd (-↑(↑L v) w))) • f v ∂μ

tactic: rw [integral_add_right_eq_self fun v : V => e[-L (v - v₀) w] • f v]
state_before: case h
𝕜 : Type u_2
inst✝¹⁰ : CommRing 𝕜
V : Type u_1
inst✝⁹ : AddCommGroup V
inst✝⁸ : Module 𝕜 V
inst✝⁷ : MeasurableSpace V
W : Type u_3
inst✝⁶ : AddCommGroup W
inst✝⁵ : Module 𝕜 W
E : Type u_4
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℂ E
inst✝² : CompleteSpace E
inst✝¹ : MeasurableAdd V
e : Multiplicative 𝕜 →* { x // x ∈ 𝕊 }
μ : MeasureTheory.Measure V
inst✝ : Measure.IsAddRightInvariant μ
L : V →ₗ[𝕜] W →ₗ[𝕜] 𝕜
f : V → E
v₀ : V
w : W
⊢ (∫ (v : V), ↑(↑e (↑Multiplicative.ofAdd (-↑(↑L (v + v₀ - v₀)) w))) • f (v + v₀) ∂μ) =
    ↑(↑e (↑Multiplicative.ofAdd (↑(↑L v₀) w))) • ∫ (v : V), ↑(↑e (↑Multiplicative.ofAdd (-↑(↑L v) w))) • f v ∂μ

tactic: dsimp only
state_before: case h
𝕜 : Type u_2
inst✝¹⁰ : CommRing 𝕜
V : Type u_1
inst✝⁹ : AddCommGroup V
inst✝⁸ : Module 𝕜 V
inst✝⁷ : MeasurableSpace V
W : Type u_3
inst✝⁶ : AddCommGroup W
inst✝⁵ : Module 𝕜 W
E : Type u_4
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℂ E
inst✝² : CompleteSpace E
inst✝¹ : MeasurableAdd V
e : Multiplicative 𝕜 →* { x // x ∈ 𝕊 }
μ : MeasureTheory.Measure V
inst✝ : Measure.IsAddRightInvariant μ
L : V →ₗ[𝕜] W →ₗ[𝕜] 𝕜
f : V → E
v₀ : V
w : W
⊢ (∫ (x : V), ↑(↑e (↑Multiplicative.ofAdd (-↑(↑L (x - v₀)) w))) • f x ∂μ) =
    ↑(↑e (↑Multiplicative.ofAdd (↑(↑L v₀) w))) • ∫ (v : V), ↑(↑e (↑Multiplicative.ofAdd (-↑(↑L v) w))) • f v ∂μ

tactic: rw [← integral_smul]
state_before: case h
𝕜 : Type u_2
inst✝¹⁰ : CommRing 𝕜
V : Type u_1
inst✝⁹ : AddCommGroup V
inst✝⁸ : Module 𝕜 V
inst✝⁷ : MeasurableSpace V
W : Type u_3
inst✝⁶ : AddCommGroup W
inst✝⁵ : Module 𝕜 W
E : Type u_4
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℂ E
inst✝² : CompleteSpace E
inst✝¹ : MeasurableAdd V
e : Multiplicative 𝕜 →* { x // x ∈ 𝕊 }
μ : MeasureTheory.Measure V
inst✝ : Measure.IsAddRightInvariant μ
L : V →ₗ[𝕜] W →ₗ[𝕜] 𝕜
f : V → E
v₀ : V
w : W
⊢ (∫ (x : V), ↑(↑e (↑Multiplicative.ofAdd (-↑(↑L (x - v₀)) w))) • f x ∂μ) =
    ↑(↑e (↑Multiplicative.ofAdd (↑(↑L v₀) w))) • ∫ (v : V), ↑(↑e (↑Multiplicative.ofAdd (-↑(↑L v) w))) • f v ∂μ

tactic: congr 1 with v
state_before: case h
𝕜 : Type u_2
inst✝¹⁰ : CommRing 𝕜
V : Type u_1
inst✝⁹ : AddCommGroup V
inst✝⁸ : Module 𝕜 V
inst✝⁷ : MeasurableSpace V
W : Type u_3
inst✝⁶ : AddCommGroup W
inst✝⁵ : Module 𝕜 W
E : Type u_4
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℂ E
inst✝² : CompleteSpace E
inst✝¹ : MeasurableAdd V
e : Multiplicative 𝕜 →* { x // x ∈ 𝕊 }
μ : MeasureTheory.Measure V
inst✝ : Measure.IsAddRightInvariant μ
L : V →ₗ[𝕜] W →ₗ[𝕜] 𝕜
f : V → E
v₀ : V
w : W
⊢ (∫ (x : V), ↑(↑e (↑Multiplicative.ofAdd (-↑(↑L (x - v₀)) w))) • f x ∂μ) =
    ∫ (a : V), ↑(↑e (↑Multiplicative.ofAdd (↑(↑L v₀) w))) • ↑(↑e (↑Multiplicative.ofAdd (-↑(↑L a) w))) • f a ∂μ

tactic: rw [← smul_assoc, smul_eq_mul, ← Submonoid.coe_mul, ← e.map_mul, ← ofAdd_add, ←
  LinearMap.neg_apply, ← sub_eq_add_neg, ← LinearMap.sub_apply, LinearMap.map_sub, neg_sub]
state_before: case h.e_f.h
𝕜 : Type u_2
inst✝¹⁰ : CommRing 𝕜
V : Type u_1
inst✝⁹ : AddCommGroup V
inst✝⁸ : Module 𝕜 V
inst✝⁷ : MeasurableSpace V
W : Type u_3
inst✝⁶ : AddCommGroup W
inst✝⁵ : Module 𝕜 W
E : Type u_4
inst✝⁴ : NormedAddCommGroup E
inst✝³ : NormedSpace ℂ E
inst✝² : CompleteSpace E
inst✝¹ : MeasurableAdd V
e : Multiplicative 𝕜 →* { x // x ∈ 𝕊 }
μ : MeasureTheory.Measure V
inst✝ : Measure.IsAddRightInvariant μ
L : V →ₗ[𝕜] W →ₗ[𝕜] 𝕜
f : V → E
v₀ : V
w : W
v : V
⊢ ↑(↑e (↑Multiplicative.ofAdd (-↑(↑L (v - v₀)) w))) • f v =
    ↑(↑e (↑Multiplicative.ofAdd (↑(↑L v₀) w))) • ↑(↑e (↑Multiplicative.ofAdd (-↑(↑L v) w))) • f v