Theorem: tendsto_integral_exp_inner_smul_cocompact
File: Mathlib/Analysis/Fourier/RiemannLebesgueLemma.lean

Proof steps:
state_before: E : Type u_1
V : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℂ E
f : V → E
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : MeasurableSpace V
inst✝³ : BorelSpace V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : FiniteDimensional ℝ V
inst✝ : CompleteSpace E
⊢ Tendsto (fun w => ∫ (v : V), 𝐞 (-⟪v, w⟫_ℝ) • f v) (cocompact V) (𝓝 0)
state_after: case pos
E : Type u_1
V : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℂ E
f : V → E
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : MeasurableSpace V
inst✝³ : BorelSpace V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : FiniteDimensional ℝ V
inst✝ : CompleteSpace E
hfi : Integrable f volume
⊢ Tendsto (fun w => ∫ (v : V), 𝐞 (-⟪v, w⟫_ℝ) • f v) (cocompact V) (𝓝 0)

case neg
E : Type u_1
V : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℂ E
f : V → E
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : MeasurableSpace V
inst✝³ : BorelSpace V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : FiniteDimensional ℝ V
inst✝ : CompleteSpace E
hfi : ¬Integrable f volume
⊢ Tendsto (fun w => ∫ (v : V), 𝐞 (-⟪v, w⟫_ℝ) • f v) (cocompact V) (𝓝 0)
tactic: by_cases hfi : Integrable f
state_before: case pos
E : Type u_1
V : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℂ E
f : V → E
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : MeasurableSpace V
inst✝³ : BorelSpace V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : FiniteDimensional ℝ V
inst✝ : CompleteSpace E
hfi : Integrable f volume
⊢ Tendsto (fun w => ∫ (v : V), 𝐞 (-⟪v, w⟫_ℝ) • f v) (cocompact V) (𝓝 0)

case neg
E : Type u_1
V : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℂ E
f : V → E
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : MeasurableSpace V
inst✝³ : BorelSpace V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : FiniteDimensional ℝ V
inst✝ : CompleteSpace E
hfi : ¬Integrable f volume
⊢ Tendsto (fun w => ∫ (v : V), 𝐞 (-⟪v, w⟫_ℝ) • f v) (cocompact V) (𝓝 0)
state_after: case neg
E : Type u_1
V : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℂ E
f : V → E
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : MeasurableSpace V
inst✝³ : BorelSpace V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : FiniteDimensional ℝ V
inst✝ : CompleteSpace E
hfi : ¬Integrable f volume
⊢ Tendsto (fun w => ∫ (v : V), 𝐞 (-⟪v, w⟫_ℝ) • f v) (cocompact V) (𝓝 0)

case pos
E : Type u_1
V : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℂ E
f : V → E
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : MeasurableSpace V
inst✝³ : BorelSpace V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : FiniteDimensional ℝ V
inst✝ : CompleteSpace E
hfi : Integrable f volume
⊢ Tendsto (fun w => ∫ (v : V), 𝐞 (-⟪v, w⟫_ℝ) • f v) (cocompact V) (𝓝 0)
tactic: swap
state_before: case pos
E : Type u_1
V : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℂ E
f : V → E
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : MeasurableSpace V
inst✝³ : BorelSpace V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : FiniteDimensional ℝ V
inst✝ : CompleteSpace E
hfi : Integrable f volume
⊢ Tendsto (fun w => ∫ (v : V), 𝐞 (-⟪v, w⟫_ℝ) • f v) (cocompact V) (𝓝 0)
state_after: case pos
E : Type u_1
V : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℂ E
f : V → E
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : MeasurableSpace V
inst✝³ : BorelSpace V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : FiniteDimensional ℝ V
inst✝ : CompleteSpace E
hfi : Integrable f volume
ε : ℝ
hε : ε > 0
⊢ ∀ᶠ (x : V) in cocompact V, dist (∫ (v : V), 𝐞 (-⟪v, x⟫_ℝ) • f v) 0 < ε
tactic: refine Metric.tendsto_nhds.mpr fun ε hε => ?_
state_before: case pos
E : Type u_1
V : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℂ E
f : V → E
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : MeasurableSpace V
inst✝³ : BorelSpace V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : FiniteDimensional ℝ V
inst✝ : CompleteSpace E
hfi : Integrable f volume
ε : ℝ
hε : ε > 0
⊢ ∀ᶠ (x : V) in cocompact V, dist (∫ (v : V), 𝐞 (-⟪v, x⟫_ℝ) • f v) 0 < ε
state_after: case pos.intro.intro.intro.intro
E : Type u_1
V : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℂ E
f : V → E
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : MeasurableSpace V
inst✝³ : BorelSpace V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : FiniteDimensional ℝ V
inst✝ : CompleteSpace E
hfi : Integrable f volume
ε : ℝ
hε : ε > 0
g : V → E
hg_supp : HasCompactSupport g
hfg : ∫ (x : V), ‖f x - g x‖ ≤ ε / 2
hg_cont : Continuous g
⊢ ∀ᶠ (x : V) in cocompact V, dist (∫ (v : V), 𝐞 (-⟪v, x⟫_ℝ) • f v) 0 < ε
tactic: obtain ⟨g, hg_supp, hfg, hg_cont, -⟩ :=
    hfi.exists_hasCompactSupport_integral_sub_le (div_pos hε two_pos)
state_before: case pos.intro.intro.intro.intro
E : Type u_1
V : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℂ E
f : V → E
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : MeasurableSpace V
inst✝³ : BorelSpace V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : FiniteDimensional ℝ V
inst✝ : CompleteSpace E
hfi : Integrable f volume
ε : ℝ
hε : ε > 0
g : V → E
hg_supp : HasCompactSupport g
hfg : ∫ (x : V), ‖f x - g x‖ ≤ ε / 2
hg_cont : Continuous g
⊢ ∀ᶠ (x : V) in cocompact V, dist (∫ (v : V), 𝐞 (-⟪v, x⟫_ℝ) • f v) 0 < ε
state_after: case pos.intro.intro.intro.intro
E : Type u_1
V : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℂ E
f : V → E
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : MeasurableSpace V
inst✝³ : BorelSpace V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : FiniteDimensional ℝ V
inst✝ : CompleteSpace E
hfi : Integrable f volume
ε : ℝ
hε : ε > 0
g : V → E
hg_supp : HasCompactSupport g
hfg : ∫ (x : V), ‖f x - g x‖ ≤ ε / 2
hg_cont : Continuous g
w : V
hI : dist (∫ (v : V), 𝐞 (-⟪v, w⟫_ℝ) • g v) 0 < ε / 2
⊢ dist (∫ (v : V), 𝐞 (-⟪v, w⟫_ℝ) • f v) 0 < ε
tactic: refine
    ((Metric.tendsto_nhds.mp
            (tendsto_integral_exp_inner_smul_cocompact_of_continuous_compact_support hg_cont
              hg_supp))
          _ (div_pos hε two_pos)).mp
      (eventually_of_forall fun w hI => ?_)
state_before: case pos.intro.intro.intro.intro
E : Type u_1
V : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℂ E
f : V → E
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : MeasurableSpace V
inst✝³ : BorelSpace V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : FiniteDimensional ℝ V
inst✝ : CompleteSpace E
hfi : Integrable f volume
ε : ℝ
hε : ε > 0
g : V → E
hg_supp : HasCompactSupport g
hfg : ∫ (x : V), ‖f x - g x‖ ≤ ε / 2
hg_cont : Continuous g
w : V
hI : dist (∫ (v : V), 𝐞 (-⟪v, w⟫_ℝ) • g v) 0 < ε / 2
⊢ dist (∫ (v : V), 𝐞 (-⟪v, w⟫_ℝ) • f v) 0 < ε
state_after: case pos.intro.intro.intro.intro
E : Type u_1
V : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℂ E
f : V → E
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : MeasurableSpace V
inst✝³ : BorelSpace V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : FiniteDimensional ℝ V
inst✝ : CompleteSpace E
hfi : Integrable f volume
ε : ℝ
hε : ε > 0
g : V → E
hg_supp : HasCompactSupport g
hfg : ∫ (x : V), ‖f x - g x‖ ≤ ε / 2
hg_cont : Continuous g
w : V
hI : ‖(∫ (v : V), 𝐞 (-⟪v, w⟫_ℝ) • g v) - 0‖ < ε / 2
⊢ ‖(∫ (v : V), 𝐞 (-⟪v, w⟫_ℝ) • f v) - 0‖ < ε
tactic: rw [dist_eq_norm] at hI ⊢
state_before: case pos.intro.intro.intro.intro
E : Type u_1
V : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℂ E
f : V → E
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : MeasurableSpace V
inst✝³ : BorelSpace V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : FiniteDimensional ℝ V
inst✝ : CompleteSpace E
hfi : Integrable f volume
ε : ℝ
hε : ε > 0
g : V → E
hg_supp : HasCompactSupport g
hfg : ∫ (x : V), ‖f x - g x‖ ≤ ε / 2
hg_cont : Continuous g
w : V
hI : ‖(∫ (v : V), 𝐞 (-⟪v, w⟫_ℝ) • g v) - 0‖ < ε / 2
⊢ ‖(∫ (v : V), 𝐞 (-⟪v, w⟫_ℝ) • f v) - 0‖ < ε
state_after: case pos.intro.intro.intro.intro
E : Type u_1
V : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℂ E
f : V → E
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : MeasurableSpace V
inst✝³ : BorelSpace V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : FiniteDimensional ℝ V
inst✝ : CompleteSpace E
hfi : Integrable f volume
ε : ℝ
hε : ε > 0
g : V → E
hg_supp : HasCompactSupport g
hfg : ∫ (x : V), ‖f x - g x‖ ≤ ε / 2
hg_cont : Continuous g
w : V
hI : ‖(∫ (v : V), 𝐞 (-⟪v, w⟫_ℝ) • g v) - 0‖ < ε / 2
this : ‖(∫ (v : V), 𝐞 (-⟪v, w⟫_ℝ) • f v) - ∫ (v : V), 𝐞 (-⟪v, w⟫_ℝ) • g v‖ ≤ ε / 2
⊢ ‖(∫ (v : V), 𝐞 (-⟪v, w⟫_ℝ) • f v) - 0‖ < ε
tactic: have : ‖(∫ v, 𝐞 (-⟪v, w⟫) • f v) - ∫ v, 𝐞 (-⟪v, w⟫) • g v‖ ≤ ε / 2 := by
    refine le_trans ?_ hfg
    simp_rw [← integral_sub ((Real.fourierIntegral_convergent_iff w).2 hfi)
      ((Real.fourierIntegral_convergent_iff w).2 (hg_cont.integrable_of_hasCompactSupport hg_supp)),
      ← smul_sub, ← Pi.sub_apply]
    exact VectorFourier.norm_fourierIntegral_le_integral_norm 𝐞 _ bilinFormOfRealInner (f - g) w
state_before: case pos.intro.intro.intro.intro
E : Type u_1
V : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℂ E
f : V → E
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : MeasurableSpace V
inst✝³ : BorelSpace V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : FiniteDimensional ℝ V
inst✝ : CompleteSpace E
hfi : Integrable f volume
ε : ℝ
hε : ε > 0
g : V → E
hg_supp : HasCompactSupport g
hfg : ∫ (x : V), ‖f x - g x‖ ≤ ε / 2
hg_cont : Continuous g
w : V
hI : ‖(∫ (v : V), 𝐞 (-⟪v, w⟫_ℝ) • g v) - 0‖ < ε / 2
this : ‖(∫ (v : V), 𝐞 (-⟪v, w⟫_ℝ) • f v) - ∫ (v : V), 𝐞 (-⟪v, w⟫_ℝ) • g v‖ ≤ ε / 2
⊢ ‖(∫ (v : V), 𝐞 (-⟪v, w⟫_ℝ) • f v) - 0‖ < ε
state_after: case pos.intro.intro.intro.intro
E : Type u_1
V : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℂ E
f : V → E
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : MeasurableSpace V
inst✝³ : BorelSpace V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : FiniteDimensional ℝ V
inst✝ : CompleteSpace E
hfi : Integrable f volume
ε : ℝ
hε : ε > 0
g : V → E
hg_supp : HasCompactSupport g
hfg : ∫ (x : V), ‖f x - g x‖ ≤ ε / 2
hg_cont : Continuous g
w : V
hI : ‖(∫ (v : V), 𝐞 (-⟪v, w⟫_ℝ) • g v) - 0‖ < ε / 2
this :
  ‖(∫ (v : V), 𝐞 (-⟪v, w⟫_ℝ) • f v) - ∫ (v : V), 𝐞 (-⟪v, w⟫_ℝ) • g v‖ + ‖(∫ (v : V), 𝐞 (-⟪v, w⟫_ℝ) • g v) - 0‖ <
    ε / 2 + ε / 2
⊢ ‖(∫ (v : V), 𝐞 (-⟪v, w⟫_ℝ) • f v) - 0‖ < ε
tactic: replace := add_lt_add_of_le_of_lt this hI
state_before: case pos.intro.intro.intro.intro
E : Type u_1
V : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℂ E
f : V → E
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : MeasurableSpace V
inst✝³ : BorelSpace V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : FiniteDimensional ℝ V
inst✝ : CompleteSpace E
hfi : Integrable f volume
ε : ℝ
hε : ε > 0
g : V → E
hg_supp : HasCompactSupport g
hfg : ∫ (x : V), ‖f x - g x‖ ≤ ε / 2
hg_cont : Continuous g
w : V
hI : ‖(∫ (v : V), 𝐞 (-⟪v, w⟫_ℝ) • g v) - 0‖ < ε / 2
this :
  ‖(∫ (v : V), 𝐞 (-⟪v, w⟫_ℝ) • f v) - ∫ (v : V), 𝐞 (-⟪v, w⟫_ℝ) • g v‖ + ‖(∫ (v : V), 𝐞 (-⟪v, w⟫_ℝ) • g v) - 0‖ <
    ε / 2 + ε / 2
⊢ ‖(∫ (v : V), 𝐞 (-⟪v, w⟫_ℝ) • f v) - 0‖ < ε
state_after: case pos.intro.intro.intro.intro
E : Type u_1
V : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℂ E
f : V → E
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : MeasurableSpace V
inst✝³ : BorelSpace V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : FiniteDimensional ℝ V
inst✝ : CompleteSpace E
hfi : Integrable f volume
ε : ℝ
hε : ε > 0
g : V → E
hg_supp : HasCompactSupport g
hfg : ∫ (x : V), ‖f x - g x‖ ≤ ε / 2
hg_cont : Continuous g
w : V
hI : ‖(∫ (v : V), 𝐞 (-⟪v, w⟫_ℝ) • g v) - 0‖ < ε / 2
this : ‖(∫ (v : V), 𝐞 (-⟪v, w⟫_ℝ) • f v) - ∫ (v : V), 𝐞 (-⟪v, w⟫_ℝ) • g v‖ + ‖(∫ (v : V), 𝐞 (-⟪v, w⟫_ℝ) • g v) - 0‖ < ε
⊢ ‖(∫ (v : V), 𝐞 (-⟪v, w⟫_ℝ) • f v) - 0‖ < ε
tactic: rw [add_halves] at this
state_before: case pos.intro.intro.intro.intro
E : Type u_1
V : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℂ E
f : V → E
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : MeasurableSpace V
inst✝³ : BorelSpace V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : FiniteDimensional ℝ V
inst✝ : CompleteSpace E
hfi : Integrable f volume
ε : ℝ
hε : ε > 0
g : V → E
hg_supp : HasCompactSupport g
hfg : ∫ (x : V), ‖f x - g x‖ ≤ ε / 2
hg_cont : Continuous g
w : V
hI : ‖(∫ (v : V), 𝐞 (-⟪v, w⟫_ℝ) • g v) - 0‖ < ε / 2
this : ‖(∫ (v : V), 𝐞 (-⟪v, w⟫_ℝ) • f v) - ∫ (v : V), 𝐞 (-⟪v, w⟫_ℝ) • g v‖ + ‖(∫ (v : V), 𝐞 (-⟪v, w⟫_ℝ) • g v) - 0‖ < ε
⊢ ‖(∫ (v : V), 𝐞 (-⟪v, w⟫_ℝ) • f v) - 0‖ < ε
state_after: case pos.intro.intro.intro.intro
E : Type u_1
V : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℂ E
f : V → E
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : MeasurableSpace V
inst✝³ : BorelSpace V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : FiniteDimensional ℝ V
inst✝ : CompleteSpace E
hfi : Integrable f volume
ε : ℝ
hε : ε > 0
g : V → E
hg_supp : HasCompactSupport g
hfg : ∫ (x : V), ‖f x - g x‖ ≤ ε / 2
hg_cont : Continuous g
w : V
hI : ‖(∫ (v : V), 𝐞 (-⟪v, w⟫_ℝ) • g v) - 0‖ < ε / 2
this : ‖(∫ (v : V), 𝐞 (-⟪v, w⟫_ℝ) • f v) - ∫ (v : V), 𝐞 (-⟪v, w⟫_ℝ) • g v‖ + ‖(∫ (v : V), 𝐞 (-⟪v, w⟫_ℝ) • g v) - 0‖ < ε
⊢ ‖(∫ (v : V), 𝐞 (-⟪v, w⟫_ℝ) • f v) - 0‖ =
    ‖((∫ (v : V), 𝐞 (-⟪v, w⟫_ℝ) • f v) - ∫ (v : V), 𝐞 (-⟪v, w⟫_ℝ) • g v) + ((∫ (v : V), 𝐞 (-⟪v, w⟫_ℝ) • g v) - 0)‖
tactic: refine ((le_of_eq ?_).trans (norm_add_le _ _)).trans_lt this
state_before: case pos.intro.intro.intro.intro
E : Type u_1
V : Type u_2
inst✝⁷ : NormedAddCommGroup E
inst✝⁶ : NormedSpace ℂ E
f : V → E
inst✝⁵ : NormedAddCommGroup V
inst✝⁴ : MeasurableSpace V
inst✝³ : BorelSpace V
inst✝² : InnerProductSpace ℝ V
inst✝¹ : FiniteDimensional ℝ V
inst✝ : CompleteSpace E
hfi : Integrable f volume
ε : ℝ
hε : ε > 0
g : V → E
hg_supp : HasCompactSupport g
hfg : ∫ (x : V), ‖f x - g x‖ ≤ ε / 2
hg_cont : Continuous g
w : V
hI : ‖(∫ (v : V), 𝐞 (-⟪v, w⟫_ℝ) • g v) - 0‖ < ε / 2
this : ‖(∫ (v : V), 𝐞 (-⟪v, w⟫_ℝ) • f v) - ∫ (v : V), 𝐞 (-⟪v, w⟫_ℝ) • g v‖ + ‖(∫ (v : V), 𝐞 (-⟪v, w⟫_ℝ) • g v) - 0‖ < ε
⊢ ‖(∫ (v : V), 𝐞 (-⟪v, w⟫_ℝ) • f v) - 0‖ =
    ‖((∫ (v : V), 𝐞 (-⟪v, w⟫_ℝ) • f v) - ∫ (v : V), 𝐞 (-⟪v, w⟫_ℝ) • g v) + ((∫ (v : V), 𝐞 (-⟪v, w⟫_ℝ) • g v) - 0)‖
state_after: no goals
tactic: simp only [sub_zero, sub_add_cancel]