File: Mathlib/NumberTheory/LSeries/HurwitzZetaEven.lean

full_name: HurwitzZeta.evenKernel
code: /-- Even Hurwitz zeta kernel (function whose Mellin transform will be the even part of the
completed Hurwit zeta function). See `evenKernel_def` for the defining formula, and
`hasSum_int_evenKernel` for an expression as a sum over `ℤ`. -/
@[irreducible] def evenKernel (a : UnitAddCircle) (x : ℝ) : ℝ 
goal: ℝ

full_name: HurwitzZeta.evenKernel_def
code: lemma evenKernel_def (a x : ℝ) :
    ↑(evenKernel ↑a x) = cexp (-π * a ^ 2 * x) * jacobiTheta₂ (a * I * x) (I * x) 
goal: ↑(HurwitzZeta.evenKernel (↑a) x) = cexp (-↑π * ↑a ^ 2 * ↑x) * jacobiTheta₂ (↑a * Complex.I * ↑x) (Complex.I * ↑x)

full_name: HurwitzZeta.evenKernel_undef
code: /-- For `x ≤ 0` the defining sum diverges, so the kernel is 0. -/
lemma evenKernel_undef (a : UnitAddCircle) {x : ℝ} (hx : x ≤ 0) : evenKernel a x = 0 
goal: HurwitzZeta.evenKernel a x = 0

full_name: HurwitzZeta.cosKernel
code: /-- Cosine Hurwitz zeta kernel. See `cosKernel_def` for the defining formula, and
`hasSum_int_cosKernel` for expression as a sum. -/
@[irreducible] def cosKernel (a : UnitAddCircle) (x : ℝ) : ℝ 
goal: ℝ

full_name: HurwitzZeta.cosKernel_def
code: lemma cosKernel_def (a x : ℝ) : ↑(cosKernel ↑a x) = jacobiTheta₂ a (I * x) 
goal: ↑(HurwitzZeta.cosKernel (↑a) x) = jacobiTheta₂ (↑a) (Complex.I * ↑x)

full_name: HurwitzZeta.cosKernel_undef
code: lemma cosKernel_undef (a : UnitAddCircle) {x : ℝ} (hx : x ≤ 0) : cosKernel a x = 0 
goal: HurwitzZeta.cosKernel a x = 0

full_name: HurwitzZeta.evenKernel_eq_cosKernel_of_zero
code: /-- For `a = 0`, both kernels agree. -/
lemma evenKernel_eq_cosKernel_of_zero : evenKernel 0 = cosKernel 0 
goal: HurwitzZeta.evenKernel 0 = HurwitzZeta.cosKernel 0

full_name: HurwitzZeta.evenKernel_neg
code: lemma evenKernel_neg (a : UnitAddCircle) (x : ℝ) : evenKernel (-a) x = evenKernel a x 
goal: HurwitzZeta.evenKernel (-a) x = HurwitzZeta.evenKernel a x

full_name: HurwitzZeta.cosKernel_neg
code: lemma cosKernel_neg (a : UnitAddCircle) (x : ℝ) : cosKernel (-a) x = cosKernel a x 
goal: HurwitzZeta.cosKernel (-a) x = HurwitzZeta.cosKernel a x

full_name: HurwitzZeta.continuousOn_evenKernel
code: lemma continuousOn_evenKernel (a : UnitAddCircle) : ContinuousOn (evenKernel a) (Ioi 0) 
goal: ContinuousOn (HurwitzZeta.evenKernel a) (Set.Ioi 0)

full_name: HurwitzZeta.continuousOn_cosKernel
code: lemma continuousOn_cosKernel (a : UnitAddCircle) : ContinuousOn (cosKernel a) (Ioi 0) 
goal: ContinuousOn (HurwitzZeta.cosKernel a) (Set.Ioi 0)

full_name: HurwitzZeta.evenKernel_functional_equation
code: lemma evenKernel_functional_equation (a : UnitAddCircle) (x : ℝ) :
    evenKernel a x = 1 / x ^ (1 / 2 : ℝ) * cosKernel a (1 / x) 
goal: HurwitzZeta.evenKernel a x = 1 / x ^ (1 / 2) * HurwitzZeta.cosKernel a (1 / x)

full_name: HurwitzZeta.hasSum_int_evenKernel
code: lemma hasSum_int_evenKernel (a : ℝ) {t : ℝ} (ht : 0 < t) :
    HasSum (fun n : ℤ ↦ rexp (-π * (n + a) ^ 2 * t)) (evenKernel a t) 
goal: HasSum (fun n => rexp (-π * (↑n + a) ^ 2 * t)) (HurwitzZeta.evenKernel (↑a) t)

full_name: HurwitzZeta.hasSum_int_cosKernel
code: lemma hasSum_int_cosKernel (a : ℝ) {t : ℝ} (ht : 0 < t) :
    HasSum (fun n : ℤ ↦ cexp (2 * π * I * a * n) * rexp (-π * n ^ 2 * t)) ↑(cosKernel a t) 
goal: HasSum (fun n => cexp (2 * ↑π * Complex.I * ↑a * ↑n) * ↑(rexp (-π * ↑n ^ 2 * t))) ↑(HurwitzZeta.cosKernel (↑a) t)

full_name: HurwitzZeta.hasSum_int_evenKernel₀
code: /-- Modified version of `hasSum_int_evenKernel` omitting the constant term at `∞`. -/
lemma hasSum_int_evenKernel₀ (a : ℝ) {t : ℝ} (ht : 0 < t) :
    HasSum (fun n : ℤ ↦ if n + a = 0 then 0 else rexp (-π * (n + a) ^ 2 * t))
    (evenKernel a t - if (a : UnitAddCircle) = 0 then 1 else 0) 
goal: HasSum (fun n => if ↑n + a = 0 then 0 else rexp (-π * (↑n + a) ^ 2 * t))
  (HurwitzZeta.evenKernel (↑a) t - if ↑a = 0 then 1 else 0)

full_name: HurwitzZeta.hasSum_int_cosKernel₀
code: lemma hasSum_int_cosKernel₀ (a : ℝ) {t : ℝ} (ht : 0 < t) :
    HasSum (fun n : ℤ ↦ if n = 0 then 0 else cexp (2 * π * I * a * n) * rexp (-π * n ^ 2 * t))
    (↑(cosKernel a t) - 1) 
goal: HasSum (fun n => if n = 0 then 0 else cexp (2 * ↑π * Complex.I * ↑a * ↑n) * ↑(rexp (-π * ↑n ^ 2 * t)))
  (↑(HurwitzZeta.cosKernel (↑a) t) - 1)

full_name: HurwitzZeta.hasSum_nat_cosKernel₀
code: lemma hasSum_nat_cosKernel₀ (a : ℝ) {t : ℝ} (ht : 0 < t) :
    HasSum (fun n : ℕ ↦ 2 * Real.cos (2 * π * a * (n + 1)) * rexp (-π * (n + 1) ^ 2 * t))
    (cosKernel a t - 1) 
goal: HasSum (fun n => 2 * Real.cos (2 * π * a * (↑n + 1)) * rexp (-π * (↑n + 1) ^ 2 * t)) (HurwitzZeta.cosKernel (↑a) t - 1)

full_name: HurwitzZeta.isBigO_atTop_evenKernel_sub
code: /-- The function `evenKernel a - L` has exponential decay at `+∞`, where `L = 1` if
`a = 0` and `L = 0` otherwise. -/
lemma isBigO_atTop_evenKernel_sub (a : UnitAddCircle) : ∃ p : ℝ, 0 < p ∧
    (evenKernel a · - (if a = 0 then 1 else 0)) =O[atTop] (rexp <| -p * ·) 
goal: ∃ p, 0 < p ∧ (fun x => HurwitzZeta.evenKernel a x - if a = 0 then 1 else 0) =O[Filter.atTop] fun x => rexp (-p * x)

full_name: HurwitzZeta.isBigO_atTop_cosKernel_sub
code: /-- The function `cosKernel a - 1` has exponential decay at `+∞`, for any `a`. -/
lemma isBigO_atTop_cosKernel_sub (a : UnitAddCircle) :
    ∃ p, 0 < p ∧ IsBigO atTop (cosKernel a · - 1) (fun x ↦ Real.exp (-p * x)) 
goal: ∃ p, 0 < p ∧ (fun x => HurwitzZeta.cosKernel a x - 1) =O[Filter.atTop] fun x => rexp (-p * x)

full_name: HurwitzZeta.hurwitzEvenFEPair
code: /-- A `WeakFEPair` structure with `f = evenKernel a` and `g = cosKernel a`. -/
def hurwitzEvenFEPair (a : UnitAddCircle) : WeakFEPair ℂ 
goal: WeakFEPair ℂ

full_name: HurwitzZeta.hurwitzEvenFEPair_zero_symm
code: lemma hurwitzEvenFEPair_zero_symm :
    (hurwitzEvenFEPair 0).symm = hurwitzEvenFEPair 0 
goal: (HurwitzZeta.hurwitzEvenFEPair 0).symm = HurwitzZeta.hurwitzEvenFEPair 0

full_name: HurwitzZeta.hurwitzEvenFEPair_neg
code: lemma hurwitzEvenFEPair_neg (a : UnitAddCircle) : hurwitzEvenFEPair (-a) = hurwitzEvenFEPair a 
goal: HurwitzZeta.hurwitzEvenFEPair (-a) = HurwitzZeta.hurwitzEvenFEPair a

full_name: HurwitzZeta.completedHurwitzZetaEven
code: /--
The meromorphic function of `s` which agrees with
`1 / 2 * Gamma (s / 2) * π ^ (-s / 2) * ∑' (n : ℤ), 1 / |n + a| ^ s` for `1 < re s`.
-/
def completedHurwitzZetaEven (a : UnitAddCircle) (s : ℂ) : ℂ 
goal: ℂ

full_name: HurwitzZeta.completedHurwitzZetaEven₀
code: /-- The entire function differing from `completedHurwitzZetaEven a s` by a linear combination of
`1 / s` and `1 / (1 - s)`. -/
def completedHurwitzZetaEven₀ (a : UnitAddCircle) (s : ℂ) : ℂ 
goal: ℂ

full_name: HurwitzZeta.completedHurwitzZetaEven_eq
code: lemma completedHurwitzZetaEven_eq (a : UnitAddCircle) (s : ℂ) :
    completedHurwitzZetaEven a s =
    completedHurwitzZetaEven₀ a s - (if a = 0 then 1 else 0) / s - 1 / (1 - s) 
goal: HurwitzZeta.completedHurwitzZetaEven a s =
  HurwitzZeta.completedHurwitzZetaEven₀ a s - (if a = 0 then 1 else 0) / s - 1 / (1 - s)

full_name: HurwitzZeta.completedCosZeta
code: /--
The meromorphic function of `s` which agrees with
`Gamma (s / 2) * π ^ (-s / 2) * ∑' n : ℕ, cos (2 * π * a * n) / n ^ s` for `1 < re s`.
-/
def completedCosZeta (a : UnitAddCircle) (s : ℂ) : ℂ 
goal: ℂ

full_name: HurwitzZeta.completedCosZeta₀
code: /-- The entire function differing from `completedCosZeta a s` by a linear combination of
`1 / s` and `1 / (1 - s)`. -/
def completedCosZeta₀ (a : UnitAddCircle) (s : ℂ) : ℂ 
goal: ℂ

full_name: HurwitzZeta.completedCosZeta_eq
code: lemma completedCosZeta_eq (a : UnitAddCircle) (s : ℂ) :
    completedCosZeta a s =
    completedCosZeta₀ a s - 1 / s - (if a = 0 then 1 else 0) / (1 - s) 
goal: HurwitzZeta.completedCosZeta a s = HurwitzZeta.completedCosZeta₀ a s - 1 / s - (if a = 0 then 1 else 0) / (1 - s)

full_name: HurwitzZeta.completedHurwitzZetaEven_neg
code: lemma completedHurwitzZetaEven_neg (a : UnitAddCircle) (s : ℂ) :
    completedHurwitzZetaEven (-a) s = completedHurwitzZetaEven a s 
goal: HurwitzZeta.completedHurwitzZetaEven (-a) s = HurwitzZeta.completedHurwitzZetaEven a s

full_name: HurwitzZeta.completedHurwitzZetaEven₀_neg
code: lemma completedHurwitzZetaEven₀_neg (a : UnitAddCircle) (s : ℂ) :
    completedHurwitzZetaEven₀ (-a) s = completedHurwitzZetaEven₀ a s 
goal: HurwitzZeta.completedHurwitzZetaEven₀ (-a) s = HurwitzZeta.completedHurwitzZetaEven₀ a s

full_name: HurwitzZeta.completedCosZeta_neg
code: lemma completedCosZeta_neg (a : UnitAddCircle) (s : ℂ) :
    completedCosZeta (-a) s = completedCosZeta a s 
goal: HurwitzZeta.completedCosZeta (-a) s = HurwitzZeta.completedCosZeta a s

full_name: HurwitzZeta.completedCosZeta₀_neg
code: lemma completedCosZeta₀_neg (a : UnitAddCircle) (s : ℂ) :
    completedCosZeta₀ (-a) s = completedCosZeta₀ a s 
goal: HurwitzZeta.completedCosZeta₀ (-a) s = HurwitzZeta.completedCosZeta₀ a s

full_name: HurwitzZeta.completedHurwitzZetaEven_one_sub
code: /-- Functional equation for the even Hurwitz zeta function. -/
lemma completedHurwitzZetaEven_one_sub (a : UnitAddCircle) (s : ℂ) :
    completedHurwitzZetaEven a (1 - s) = completedCosZeta a s 
goal: HurwitzZeta.completedHurwitzZetaEven a (1 - s) = HurwitzZeta.completedCosZeta a s

full_name: HurwitzZeta.completedHurwitzZetaEven₀_one_sub
code: /-- Functional equation for the even Hurwitz zeta function with poles removed. -/
lemma completedHurwitzZetaEven₀_one_sub (a : UnitAddCircle) (s : ℂ) :
    completedHurwitzZetaEven₀ a (1 - s) = completedCosZeta₀ a s 
goal: HurwitzZeta.completedHurwitzZetaEven₀ a (1 - s) = HurwitzZeta.completedCosZeta₀ a s

full_name: HurwitzZeta.completedCosZeta_one_sub
code: /-- Functional equation for the even Hurwitz zeta function (alternative form). -/
lemma completedCosZeta_one_sub (a : UnitAddCircle) (s : ℂ) :
    completedCosZeta a (1 - s) = completedHurwitzZetaEven a s 
goal: HurwitzZeta.completedCosZeta a (1 - s) = HurwitzZeta.completedHurwitzZetaEven a s

full_name: HurwitzZeta.completedCosZeta₀_one_sub
code: /-- Functional equation for the even Hurwitz zeta function with poles removed (alternative form). -/
lemma completedCosZeta₀_one_sub (a : UnitAddCircle) (s : ℂ) :
    completedCosZeta₀ a (1 - s) = completedHurwitzZetaEven₀ a s 
goal: HurwitzZeta.completedCosZeta₀ a (1 - s) = HurwitzZeta.completedHurwitzZetaEven₀ a s

full_name: HurwitzZeta.differentiableAt_completedHurwitzZetaEven
code: /--
The even Hurwitz completed zeta is differentiable away from `s = 0` and `s = 1` (and also at
`s = 0` if `a ≠ 0`)
-/
lemma differentiableAt_completedHurwitzZetaEven
    (a : UnitAddCircle) {s : ℂ} (hs : s ≠ 0 ∨ a ≠ 0) (hs' : s ≠ 1) :
    DifferentiableAt ℂ (completedHurwitzZetaEven a) s 
goal: DifferentiableAt ℂ (HurwitzZeta.completedHurwitzZetaEven a) s

full_name: HurwitzZeta.differentiable_completedHurwitzZetaEven₀
code: lemma differentiable_completedHurwitzZetaEven₀ (a : UnitAddCircle) :
    Differentiable ℂ (completedHurwitzZetaEven₀ a) 
goal: Differentiable ℂ (HurwitzZeta.completedHurwitzZetaEven₀ a)

full_name: HurwitzZeta.differentiableAt_one_completedHurwitzZetaEven_sub_completedHurwitzZetaEven
code: /-- The difference of two completed even Hurwitz zeta functions is differentiable at `s = 1`. -/
lemma differentiableAt_one_completedHurwitzZetaEven_sub_completedHurwitzZetaEven
    (a b : UnitAddCircle) :
    DifferentiableAt ℂ (fun s ↦ completedHurwitzZetaEven a s - completedHurwitzZetaEven b s) 1 
goal: DifferentiableAt ℂ (fun s => HurwitzZeta.completedHurwitzZetaEven a s - HurwitzZeta.completedHurwitzZetaEven b s) 1

full_name: HurwitzZeta.differentiableAt_completedCosZeta
code: lemma differentiableAt_completedCosZeta
    (a : UnitAddCircle) {s : ℂ} (hs : s ≠ 0) (hs' : s ≠ 1 ∨ a ≠ 0) :
    DifferentiableAt ℂ (completedCosZeta a) s 
goal: DifferentiableAt ℂ (HurwitzZeta.completedCosZeta a) s

full_name: HurwitzZeta.differentiable_completedCosZeta₀
code: lemma differentiable_completedCosZeta₀ (a : UnitAddCircle) :
    Differentiable ℂ (completedCosZeta₀ a) 
goal: Differentiable ℂ (HurwitzZeta.completedCosZeta₀ a)

full_name: _private.Mathlib.NumberTheory.LSeries.HurwitzZetaEven.0.HurwitzZeta.tendsto_div_two_punctured_nhds
code: private lemma tendsto_div_two_punctured_nhds (a : ℂ) :
    Tendsto (fun s : ℂ ↦ s / 2) (𝓝[≠] a) (𝓝[≠] (a / 2)) 
goal: Filter.Tendsto (fun s => s / 2) (𝓝[≠] a) (𝓝[≠] (a / 2))

full_name: HurwitzZeta.completedHurwitzZetaEven_residue_one
code: /-- The residue of `completedHurwitzZetaEven a s` at `s = 1` is equal to `1`. -/
lemma completedHurwitzZetaEven_residue_one (a : UnitAddCircle) :
    Tendsto (fun s ↦ (s - 1) * completedHurwitzZetaEven a s) (𝓝[≠] 1) (𝓝 1) 
goal: Filter.Tendsto (fun s => (s - 1) * HurwitzZeta.completedHurwitzZetaEven a s) (𝓝[≠] 1) (𝓝 1)

full_name: HurwitzZeta.completedHurwitzZetaEven_residue_zero
code: /-- The residue of `completedHurwitzZetaEven a s` at `s = 0` is equal to `-1` if `a = 0`, and `0`
otherwise. -/
lemma completedHurwitzZetaEven_residue_zero (a : UnitAddCircle) :
    Tendsto (fun s ↦ s * completedHurwitzZetaEven a s) (𝓝[≠] 0) (𝓝 (if a = 0 then -1 else 0)) 
goal: Filter.Tendsto (fun s => s * HurwitzZeta.completedHurwitzZetaEven a s) (𝓝[≠] 0) (𝓝 (if a = 0 then -1 else 0))

full_name: HurwitzZeta.completedCosZeta_residue_zero
code: lemma completedCosZeta_residue_zero (a : UnitAddCircle) :
    Tendsto (fun s ↦ s * completedCosZeta a s) (𝓝[≠] 0) (𝓝 (-1)) 
goal: Filter.Tendsto (fun s => s * HurwitzZeta.completedCosZeta a s) (𝓝[≠] 0) (𝓝 (-1))

full_name: HurwitzZeta.hasSum_int_completedCosZeta
code: /-- Formula for `completedCosZeta` as a Dirichlet series in the convergence range
(first version, with sum over `ℤ`). -/
lemma hasSum_int_completedCosZeta (a : ℝ) {s : ℂ} (hs : 1 < re s) :
    HasSum (fun n : ℤ ↦ Gammaℝ s * cexp (2 * π * I * a * n) / (↑|n| : ℂ) ^ s / 2)
    (completedCosZeta a s) 
goal: HasSum (fun n => s.Gammaℝ * cexp (2 * ↑π * Complex.I * ↑a * ↑n) / ↑|n| ^ s / 2) (HurwitzZeta.completedCosZeta (↑a) s)

full_name: HurwitzZeta.hasSum_nat_completedCosZeta
code: /-- Formula for `completedCosZeta` as a Dirichlet series in the convergence range
(second version, with sum over `ℕ`). -/
lemma hasSum_nat_completedCosZeta (a : ℝ) {s : ℂ} (hs : 1 < re s) :
    HasSum (fun n : ℕ ↦ if n = 0 then 0 else Gammaℝ s * Real.cos (2 * π * a * n) / (n : ℂ) ^ s)
    (completedCosZeta a s) 
goal: HasSum (fun n => if n = 0 then 0 else s.Gammaℝ * ↑(Real.cos (2 * π * a * ↑n)) / ↑n ^ s)
  (HurwitzZeta.completedCosZeta (↑a) s)

full_name: HurwitzZeta.hasSum_int_completedHurwitzZetaEven
code: /-- Formula for `completedHurwitzZetaEven` as a Dirichlet series in the convergence range. -/
lemma hasSum_int_completedHurwitzZetaEven (a : ℝ) {s : ℂ} (hs : 1 < re s) :
    HasSum (fun n : ℤ ↦ Gammaℝ s / (↑|n + a| : ℂ) ^ s / 2) (completedHurwitzZetaEven a s) 
goal: HasSum (fun n => s.Gammaℝ / ↑|↑n + a| ^ s / 2) (HurwitzZeta.completedHurwitzZetaEven (↑a) s)

full_name: HurwitzZeta.differentiableAt_update_of_residue
code: /-- Technical lemma which will give us differentiability of Hurwitz zeta at `s = 0`. -/
lemma differentiableAt_update_of_residue
    {Λ : ℂ → ℂ} (hf : ∀ (s : ℂ) (_ : s ≠ 0) (_ : s ≠ 1), DifferentiableAt ℂ Λ s)
    {L : ℂ} (h_lim : Tendsto (fun s ↦ s * Λ s) (𝓝[≠] 0) (𝓝 L)) (s : ℂ) (hs' : s ≠ 1) :
    DifferentiableAt ℂ (Function.update (fun s ↦ Λ s / Gammaℝ s) 0 (L / 2)) s 
goal: DifferentiableAt ℂ (Function.update (fun s => Λ s / s.Gammaℝ) 0 (L / 2)) s

full_name: HurwitzZeta.hurwitzZetaEven
code: /-- The even part of the Hurwitz zeta function, i.e. the meromorphic function of `s` which agrees
with `1 / 2 * ∑' (n : ℤ), 1 / |n + a| ^ s` for `1 < re s`-/
noncomputable def hurwitzZetaEven (a : UnitAddCircle) 
goal: ℂ → ℂ

full_name: HurwitzZeta.hurwitzZetaEven_def_of_ne_or_ne
code: lemma hurwitzZetaEven_def_of_ne_or_ne {a : UnitAddCircle} {s : ℂ} (h : a ≠ 0 ∨ s ≠ 0) :
    hurwitzZetaEven a s = completedHurwitzZetaEven a s / Gammaℝ s 
goal: HurwitzZeta.hurwitzZetaEven a s = HurwitzZeta.completedHurwitzZetaEven a s / s.Gammaℝ

full_name: HurwitzZeta.hurwitzZetaEven_apply_zero
code: lemma hurwitzZetaEven_apply_zero (a : UnitAddCircle) :
    hurwitzZetaEven a 0 = if a = 0 then -1 / 2 else 0 
goal: HurwitzZeta.hurwitzZetaEven a 0 = if a = 0 then -1 / 2 else 0

full_name: HurwitzZeta.hurwitzZetaEven_neg
code: lemma hurwitzZetaEven_neg (a : UnitAddCircle) (s : ℂ) :
    hurwitzZetaEven (-a) s = hurwitzZetaEven a s 
goal: HurwitzZeta.hurwitzZetaEven (-a) s = HurwitzZeta.hurwitzZetaEven a s

full_name: HurwitzZeta.hurwitzZetaEven_neg_two_mul_nat_add_one
code: /-- The trivial zeroes of the even Hurwitz zeta function. -/
theorem hurwitzZetaEven_neg_two_mul_nat_add_one (a : UnitAddCircle) (n : ℕ) :
    hurwitzZetaEven a (-2 * (n + 1)) = 0 
goal: HurwitzZeta.hurwitzZetaEven a (-2 * (↑n + 1)) = 0

full_name: HurwitzZeta.differentiableAt_hurwitzZetaEven
code: /-- The Hurwitz zeta function is differentiable everywhere except at `s = 1`. This is true
even in the delicate case `a = 0` and `s = 0` (where the completed zeta has a pole, but this is
cancelled out by the Gamma factor). -/
lemma differentiableAt_hurwitzZetaEven (a : UnitAddCircle) {s : ℂ} (hs' : s ≠ 1) :
    DifferentiableAt ℂ (hurwitzZetaEven a) s 
goal: DifferentiableAt ℂ (HurwitzZeta.hurwitzZetaEven a) s

full_name: HurwitzZeta.hurwitzZetaEven_residue_one
code: lemma hurwitzZetaEven_residue_one (a : UnitAddCircle) :
    Tendsto (fun s ↦ (s - 1) * hurwitzZetaEven a s) (𝓝[≠] 1) (𝓝 1) 
goal: Filter.Tendsto (fun s => (s - 1) * HurwitzZeta.hurwitzZetaEven a s) (𝓝[≠] 1) (𝓝 1)

full_name: HurwitzZeta.differentiableAt_hurwitzZetaEven_sub_one_div
code: lemma differentiableAt_hurwitzZetaEven_sub_one_div (a : UnitAddCircle) :
    DifferentiableAt ℂ (fun s ↦ hurwitzZetaEven a s - 1 / (s - 1) / Gammaℝ s) 1 
goal: DifferentiableAt ℂ (fun s => HurwitzZeta.hurwitzZetaEven a s - 1 / (s - 1) / s.Gammaℝ) 1

full_name: HurwitzZeta.tendsto_hurwitzZetaEven_sub_one_div_nhds_one
code: /-- Expression for `hurwitzZetaEven a 1` as a limit. (Mathematically `hurwitzZetaEven a 1` is
undefined, but our construction assigns some value to it; this lemma is mostly of interest for
determining what that value is). -/
lemma tendsto_hurwitzZetaEven_sub_one_div_nhds_one (a : UnitAddCircle) :
    Tendsto (fun s ↦ hurwitzZetaEven a s - 1 / (s - 1) / Gammaℝ s) (𝓝 1)
    (𝓝 (hurwitzZetaEven a 1)) 
goal: Filter.Tendsto (fun s => HurwitzZeta.hurwitzZetaEven a s - 1 / (s - 1) / s.Gammaℝ) (𝓝 1)
  (𝓝 (HurwitzZeta.hurwitzZetaEven a 1))

full_name: HurwitzZeta.differentiable_hurwitzZetaEven_sub_hurwitzZetaEven
code: lemma differentiable_hurwitzZetaEven_sub_hurwitzZetaEven (a b : UnitAddCircle) :
    Differentiable ℂ (fun s ↦ hurwitzZetaEven a s - hurwitzZetaEven b s) 
goal: Differentiable ℂ fun s => HurwitzZeta.hurwitzZetaEven a s - HurwitzZeta.hurwitzZetaEven b s

full_name: HurwitzZeta.hasSum_int_hurwitzZetaEven
code: /--
Formula for `hurwitzZetaEven` as a Dirichlet series in the convergence range, with sum over `ℤ`.
-/
lemma hasSum_int_hurwitzZetaEven (a : ℝ) {s : ℂ} (hs : 1 < re s) :
    HasSum (fun n : ℤ ↦ 1 / (↑|n + a| : ℂ) ^ s / 2) (hurwitzZetaEven a s) 
goal: HasSum (fun n => 1 / ↑|↑n + a| ^ s / 2) (HurwitzZeta.hurwitzZetaEven (↑a) s)

full_name: HurwitzZeta.hasSum_nat_hurwitzZetaEven
code: /-- Formula for `hurwitzZetaEven` as a Dirichlet series in the convergence range, with sum over `ℕ`
(version with absolute values) -/
lemma hasSum_nat_hurwitzZetaEven (a : ℝ) {s : ℂ} (hs : 1 < re s) :
    HasSum (fun n : ℕ ↦ (1 / (↑|n + a| : ℂ) ^ s + 1 / (↑|n + 1 - a| : ℂ) ^ s) / 2)
    (hurwitzZetaEven a s) 
goal: HasSum (fun n => (1 / ↑|↑n + a| ^ s + 1 / ↑|↑n + 1 - a| ^ s) / 2) (HurwitzZeta.hurwitzZetaEven (↑a) s)

full_name: HurwitzZeta.hasSum_nat_hurwitzZetaEven_of_mem_Icc
code: /-- Formula for `hurwitzZetaEven` as a Dirichlet series in the convergence range, with sum over `ℕ`
(version without absolute values, assuming `a ∈ Icc 0 1`) -/
lemma hasSum_nat_hurwitzZetaEven_of_mem_Icc {a : ℝ} (ha : a ∈ Icc 0 1) {s : ℂ} (hs : 1 < re s) :
    HasSum (fun n : ℕ ↦ (1 / (n + a : ℂ) ^ s + 1 / (n + 1 - a : ℂ) ^ s) / 2)
    (hurwitzZetaEven a s) 
goal: HasSum (fun n => (1 / (↑n + ↑a) ^ s + 1 / (↑n + 1 - ↑a) ^ s) / 2) (HurwitzZeta.hurwitzZetaEven (↑a) s)

full_name: HurwitzZeta.cosZeta
code: /-- The cosine zeta function, i.e. the meromorphic function of `s` which agrees
with `∑' (n : ℕ), cos (2 * π * a * n) / n ^ s` for `1 < re s`. -/
noncomputable def cosZeta (a : UnitAddCircle) 
goal: ℂ → ℂ

full_name: HurwitzZeta.cosZeta_apply_zero
code: lemma cosZeta_apply_zero (a : UnitAddCircle) : cosZeta a 0 = -1 / 2 
goal: HurwitzZeta.cosZeta a 0 = -1 / 2

full_name: HurwitzZeta.cosZeta_neg
code: lemma cosZeta_neg (a : UnitAddCircle) (s : ℂ) :
    cosZeta (-a) s = cosZeta a s 
goal: HurwitzZeta.cosZeta (-a) s = HurwitzZeta.cosZeta a s

full_name: HurwitzZeta.cosZeta_neg_two_mul_nat_add_one
code: /-- The trivial zeroes of the cosine zeta function. -/
theorem cosZeta_neg_two_mul_nat_add_one (a : UnitAddCircle) (n : ℕ) :
    cosZeta a (-2 * (n + 1)) = 0 
goal: HurwitzZeta.cosZeta a (-2 * (↑n + 1)) = 0

full_name: HurwitzZeta.differentiableAt_cosZeta
code: /-- The cosine zeta function is differentiable everywhere, except at `s = 1` if `a = 0`. -/
lemma differentiableAt_cosZeta (a : UnitAddCircle) {s : ℂ} (hs' : s ≠ 1 ∨ a ≠ 0) :
    DifferentiableAt ℂ (cosZeta a) s 
goal: DifferentiableAt ℂ (HurwitzZeta.cosZeta a) s

full_name: HurwitzZeta.differentiable_cosZeta_of_ne_zero
code: /-- If `a ≠ 0` then the cosine zeta function is entire. -/
lemma differentiable_cosZeta_of_ne_zero {a : UnitAddCircle} (ha : a ≠ 0) :
    Differentiable ℂ (cosZeta a) 
goal: Differentiable ℂ (HurwitzZeta.cosZeta a)

full_name: HurwitzZeta.hasSum_int_cosZeta
code: /-- Formula for `cosZeta` as a Dirichlet series in the convergence range, with sum over `ℤ`. -/
lemma hasSum_int_cosZeta (a : ℝ) {s : ℂ} (hs : 1 < re s) :
    HasSum (fun n : ℤ ↦ cexp (2 * π * I * a * n) / ↑|n| ^ s / 2) (cosZeta a s) 
goal: HasSum (fun n => cexp (2 * ↑π * Complex.I * ↑a * ↑n) / ↑|n| ^ s / 2) (HurwitzZeta.cosZeta (↑a) s)

full_name: HurwitzZeta.hasSum_nat_cosZeta
code: /-- Formula for `cosZeta` as a Dirichlet series in the convergence range, with sum over `ℕ`. -/
lemma hasSum_nat_cosZeta (a : ℝ) {s : ℂ} (hs : 1 < re s) :
    HasSum (fun n : ℕ ↦ Real.cos (2 * π * a * n) / (n : ℂ) ^ s) (cosZeta a s) 
goal: HasSum (fun n => ↑(Real.cos (2 * π * a * ↑n)) / ↑n ^ s) (HurwitzZeta.cosZeta (↑a) s)

full_name: HurwitzZeta.LSeriesHasSum_cos
code: /-- Reformulation of `hasSum_nat_cosZeta` using `LSeriesHasSum`. -/
lemma LSeriesHasSum_cos (a : ℝ) {s : ℂ} (hs : 1 < re s) :
    LSeriesHasSum (Real.cos <| 2 * π * a * ·) s (cosZeta a s) 
goal: LSeriesHasSum (fun x => ↑(Real.cos (2 * π * a * ↑x))) s (HurwitzZeta.cosZeta (↑a) s)

full_name: HurwitzZeta.hurwitzZetaEven_one_sub
code: /-- If `s` is not in `-ℕ`, and either `a ≠ 0` or `s ≠ 1`, then
`hurwitzZetaEven a (1 - s)` is an explicit multiple of `cosZeta s`. -/
lemma hurwitzZetaEven_one_sub (a : UnitAddCircle) {s : ℂ}
    (hs : ∀ (n : ℕ), s ≠ -n) (hs' : a ≠ 0 ∨ s ≠ 1) :
    hurwitzZetaEven a (1 - s) = 2 * (2 * π) ^ (-s) * Gamma s * cos (π * s / 2) * cosZeta a s 
goal: HurwitzZeta.hurwitzZetaEven a (1 - s) =
  2 * (2 * ↑π) ^ (-s) * Complex.Gamma s * Complex.cos (↑π * s / 2) * HurwitzZeta.cosZeta a s

full_name: HurwitzZeta.cosZeta_one_sub
code: /-- If `s` is not of the form `1 - n` for `n ∈ ℕ`, then `cosZeta a (1 - s)` is an explicit
multiple of `hurwitzZetaEven s`. -/
lemma cosZeta_one_sub (a : UnitAddCircle) {s : ℂ} (hs : ∀ (n : ℕ), s ≠ 1 - n) :
    cosZeta a (1 - s) = 2 * (2 * π) ^ (-s) * Gamma s * cos (π * s / 2) * hurwitzZetaEven a s 
goal: HurwitzZeta.cosZeta a (1 - s) =
  2 * (2 * ↑π) ^ (-s) * Complex.Gamma s * Complex.cos (↑π * s / 2) * HurwitzZeta.hurwitzZetaEven a s