Theorem: fourier_add_half_inv_index
File: Mathlib/Analysis/Fourier/AddCircle.lean

tactic: rw [fourier_apply, zsmul_add, ← QuotientAddGroup.mk_zsmul, toCircle_add, coe_mul_unitSphere]
state_before: T : ℝ
n : ℤ
hn : n ≠ 0
hT : 0 < T
x : AddCircle T
⊢ (fourier n) (x + ↑(T / 2 / ↑n)) = -(fourier n) x
state_after: T : ℝ
n : ℤ
hn : n ≠ 0
hT : 0 < T
x : AddCircle T
⊢ ↑(n • x).toCircle * ↑(toCircle ↑(n • (T / 2 / ↑n))) = -(fourier n) x

tactic: have : (n : ℂ) ≠ 0 := by simpa using hn
state_before: T : ℝ
n : ℤ
hn : n ≠ 0
hT : 0 < T
x : AddCircle T
⊢ ↑(n • x).toCircle * ↑(toCircle ↑(n • (T / 2 / ↑n))) = -(fourier n) x
state_after: T : ℝ
n : ℤ
hn : n ≠ 0
hT : 0 < T
x : AddCircle T
this : ↑n ≠ 0
⊢ ↑(n • x).toCircle * ↑(toCircle ↑(n • (T / 2 / ↑n))) = -(fourier n) x

tactic: have : (@toCircle T (n • (T / 2 / n) : ℝ) : ℂ) = -1 := by
  rw [zsmul_eq_mul, toCircle, Function.Periodic.lift_coe, expMapCircle_apply]
  replace hT := Complex.ofReal_ne_zero.mpr hT.ne'
  convert Complex.exp_pi_mul_I using 3
  field_simp; ring
state_before: T : ℝ
n : ℤ
hn : n ≠ 0
hT : 0 < T
x : AddCircle T
this : ↑n ≠ 0
⊢ ↑(n • x).toCircle * ↑(toCircle ↑(n • (T / 2 / ↑n))) = -(fourier n) x
state_after: T : ℝ
n : ℤ
hn : n ≠ 0
hT : 0 < T
x : AddCircle T
this✝ : ↑n ≠ 0
this : ↑(toCircle ↑(n • (T / 2 / ↑n))) = -1
⊢ ↑(n • x).toCircle * ↑(toCircle ↑(n • (T / 2 / ↑n))) = -(fourier n) x

tactic: rw [this]
state_before: T : ℝ
n : ℤ
hn : n ≠ 0
hT : 0 < T
x : AddCircle T
this✝ : ↑n ≠ 0
this : ↑(toCircle ↑(n • (T / 2 / ↑n))) = -1
⊢ ↑(n • x).toCircle * ↑(toCircle ↑(n • (T / 2 / ↑n))) = -(fourier n) x
state_after: T : ℝ
n : ℤ
hn : n ≠ 0
hT : 0 < T
x : AddCircle T
this✝ : ↑n ≠ 0
this : ↑(toCircle ↑(n • (T / 2 / ↑n))) = -1
⊢ ↑(n • x).toCircle * -1 = -(fourier n) x

tactic: simp
state_before: T : ℝ
n : ℤ
hn : n ≠ 0
hT : 0 < T
x : AddCircle T
this✝ : ↑n ≠ 0
this : ↑(toCircle ↑(n • (T / 2 / ↑n))) = -1
⊢ ↑(n • x).toCircle * -1 = -(fourier n) x
state_after: no goals

tactic: simpa using hn
state_before: T : ℝ
n : ℤ
hn : n ≠ 0
hT : 0 < T
x : AddCircle T
⊢ ↑n ≠ 0
state_after: no goals

tactic: rw [zsmul_eq_mul, toCircle, Function.Periodic.lift_coe, expMapCircle_apply]
state_before: T : ℝ
n : ℤ
hn : n ≠ 0
hT : 0 < T
x : AddCircle T
this : ↑n ≠ 0
⊢ ↑(toCircle ↑(n • (T / 2 / ↑n))) = -1
state_after: T : ℝ
n : ℤ
hn : n ≠ 0
hT : 0 < T
x : AddCircle T
this : ↑n ≠ 0
⊢ Complex.exp (↑(2 * π / T * (↑n * (T / 2 / ↑n))) * Complex.I) = -1

tactic: replace hT := Complex.ofReal_ne_zero.mpr hT.ne'
state_before: T : ℝ
n : ℤ
hn : n ≠ 0
hT : 0 < T
x : AddCircle T
this : ↑n ≠ 0
⊢ Complex.exp (↑(2 * π / T * (↑n * (T / 2 / ↑n))) * Complex.I) = -1
state_after: T : ℝ
n : ℤ
hn : n ≠ 0
x : AddCircle T
this : ↑n ≠ 0
hT : ↑T ≠ 0
⊢ Complex.exp (↑(2 * π / T * (↑n * (T / 2 / ↑n))) * Complex.I) = -1

tactic: convert Complex.exp_pi_mul_I using 3
state_before: T : ℝ
n : ℤ
hn : n ≠ 0
x : AddCircle T
this : ↑n ≠ 0
hT : ↑T ≠ 0
⊢ Complex.exp (↑(2 * π / T * (↑n * (T / 2 / ↑n))) * Complex.I) = -1
state_after: case h.e'_2.h.e'_1.h.e'_5
T : ℝ
n : ℤ
hn : n ≠ 0
x : AddCircle T
this : ↑n ≠ 0
hT : ↑T ≠ 0
⊢ ↑(2 * π / T * (↑n * (T / 2 / ↑n))) = ↑π

tactic: field_simp
state_before: case h.e'_2.h.e'_1.h.e'_5
T : ℝ
n : ℤ
hn : n ≠ 0
x : AddCircle T
this : ↑n ≠ 0
hT : ↑T ≠ 0
⊢ ↑(2 * π / T * (↑n * (T / 2 / ↑n))) = ↑π
state_after: case h.e'_2.h.e'_1.h.e'_5
T : ℝ
n : ℤ
hn : n ≠ 0
x : AddCircle T
this : ↑n ≠ 0
hT : ↑T ≠ 0
⊢ 2 * ↑π * (↑n * ↑T) = ↑π * (↑T * (2 * ↑n))

tactic: ring
state_before: case h.e'_2.h.e'_1.h.e'_5
T : ℝ
n : ℤ
hn : n ≠ 0
x : AddCircle T
this : ↑n ≠ 0
hT : ↑T ≠ 0
⊢ 2 * ↑π * (↑n * ↑T) = ↑π * (↑T * (2 * ↑n))
state_after: no goals