File: Mathlib/NumberTheory/LSeries/HurwitzZeta.lean

full_name: HurwitzZeta.hurwitzZeta
code: /-- The Hurwitz zeta function, which is the meromorphic continuation of
`∑ (n : ℕ), 1 / (n + a) ^ s` if `0 ≤ a ≤ 1`. See `hasSum_hurwitzZeta_of_one_lt_re` for the relation
to the Dirichlet series in the convergence range. -/
noncomputable def hurwitzZeta (a : UnitAddCircle) (s : ℂ) 
goal: ℂ

full_name: HurwitzZeta.hurwitzZetaEven_eq
code: lemma hurwitzZetaEven_eq (a : UnitAddCircle) (s : ℂ) :
    hurwitzZetaEven a s = (hurwitzZeta a s + hurwitzZeta (-a) s) / 2 
goal: HurwitzZeta.hurwitzZetaEven a s = (HurwitzZeta.hurwitzZeta a s + HurwitzZeta.hurwitzZeta (-a) s) / 2

full_name: HurwitzZeta.hurwitzZetaOdd_eq
code: lemma hurwitzZetaOdd_eq (a : UnitAddCircle) (s : ℂ) :
    hurwitzZetaOdd a s = (hurwitzZeta a s - hurwitzZeta (-a) s) / 2 
goal: HurwitzZeta.hurwitzZetaOdd a s = (HurwitzZeta.hurwitzZeta a s - HurwitzZeta.hurwitzZeta (-a) s) / 2

full_name: HurwitzZeta.differentiableAt_hurwitzZeta
code: /-- The Hurwitz zeta function is differentiable away from `s = 1`. -/
lemma differentiableAt_hurwitzZeta (a : UnitAddCircle) {s : ℂ} (hs : s ≠ 1) :
    DifferentiableAt ℂ (hurwitzZeta a) s 
goal: DifferentiableAt ℂ (HurwitzZeta.hurwitzZeta a) s

full_name: HurwitzZeta.hasSum_hurwitzZeta_of_one_lt_re
code: /-- Formula for `hurwitzZeta s` as a Dirichlet series in the convergence range. We
restrict to `a ∈ Icc 0 1` to simplify the statement. -/
lemma hasSum_hurwitzZeta_of_one_lt_re {a : ℝ} (ha : a ∈ Icc 0 1) {s : ℂ} (hs : 1 < re s) :
    HasSum (fun n : ℕ ↦ 1 / (n + a : ℂ) ^ s) (hurwitzZeta a s) 
goal: HasSum (fun n => 1 / (↑n + ↑a) ^ s) (HurwitzZeta.hurwitzZeta (↑a) s)

full_name: HurwitzZeta.hurwitzZeta_residue_one
code: /-- The residue of the Hurwitz zeta function at `s = 1` is `1`. -/
lemma hurwitzZeta_residue_one (a : UnitAddCircle) :
    Tendsto (fun s ↦ (s - 1) * hurwitzZeta a s) (𝓝[≠] 1) (𝓝 1) 
goal: Filter.Tendsto (fun s => (s - 1) * HurwitzZeta.hurwitzZeta a s) (𝓝[≠] 1) (𝓝 1)

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

full_name: HurwitzZeta.tendsto_hurwitzZeta_sub_one_div_nhds_one
code: /-- Expression for `hurwitzZeta a 1` as a limit. (Mathematically `hurwitzZeta 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_hurwitzZeta_sub_one_div_nhds_one (a : UnitAddCircle) :
    Tendsto (fun s ↦ hurwitzZeta a s - 1 / (s - 1) / Gammaℝ s) (𝓝 1) (𝓝 (hurwitzZeta a 1)) 
goal: Filter.Tendsto (fun s => HurwitzZeta.hurwitzZeta a s - 1 / (s - 1) / s.Gammaℝ) (𝓝 1) (𝓝 (HurwitzZeta.hurwitzZeta a 1))

full_name: HurwitzZeta.differentiable_hurwitzZeta_sub_hurwitzZeta
code: /-- The difference of two Hurwitz zeta functions is differentiable everywhere. -/
lemma differentiable_hurwitzZeta_sub_hurwitzZeta (a b : UnitAddCircle) :
    Differentiable ℂ (fun s ↦ hurwitzZeta a s - hurwitzZeta b s) 
goal: Differentiable ℂ fun s => HurwitzZeta.hurwitzZeta a s - HurwitzZeta.hurwitzZeta b s

full_name: HurwitzZeta.expZeta
code: /-- Meromorphic continuation of the series `∑' (n : ℕ), exp (2 * π * I * a * n) / n ^ s`.  See
`hasSum_expZeta_of_one_lt_re` for the relation to the Dirichlet series. -/
noncomputable def expZeta (a : UnitAddCircle) (s : ℂ) 
goal: ℂ

full_name: HurwitzZeta.cosZeta_eq
code: lemma cosZeta_eq (a : UnitAddCircle) (s : ℂ) :
    cosZeta a s = (expZeta a s + expZeta (-a) s) / 2 
goal: HurwitzZeta.cosZeta a s = (HurwitzZeta.expZeta a s + HurwitzZeta.expZeta (-a) s) / 2

full_name: HurwitzZeta.sinZeta_eq
code: lemma sinZeta_eq (a : UnitAddCircle) (s : ℂ) :
    sinZeta a s = (expZeta a s - expZeta (-a) s) / (2 * I) 
goal: HurwitzZeta.sinZeta a s = (HurwitzZeta.expZeta a s - HurwitzZeta.expZeta (-a) s) / (2 * Complex.I)

full_name: HurwitzZeta.hasSum_expZeta_of_one_lt_re
code: lemma hasSum_expZeta_of_one_lt_re (a : ℝ) {s : ℂ} (hs : 1 < re s) :
    HasSum (fun n : ℕ ↦ cexp (2 * π * I * a * n) / n ^ s) (expZeta a s) 
goal: HasSum (fun n => cexp (2 * ↑π * Complex.I * ↑a * ↑n) / ↑n ^ s) (HurwitzZeta.expZeta (↑a) s)

full_name: HurwitzZeta.differentiableAt_expZeta
code: lemma differentiableAt_expZeta (a : UnitAddCircle) (s : ℂ) (hs : s ≠ 1 ∨ a ≠ 0) :
    DifferentiableAt ℂ (expZeta a) s 
goal: DifferentiableAt ℂ (HurwitzZeta.expZeta a) s

full_name: HurwitzZeta.differentiable_expZeta_of_ne_zero
code: /-- If `a ≠ 0` then the exponential zeta function is analytic everywhere. -/
lemma differentiable_expZeta_of_ne_zero {a : UnitAddCircle} (ha : a ≠ 0) :
    Differentiable ℂ (expZeta a) 
goal: Differentiable ℂ (HurwitzZeta.expZeta a)

full_name: HurwitzZeta.LSeriesHasSum_exp
code: /-- Reformulation of `hasSum_expZeta_of_one_lt_re` using `LSeriesHasSum`. -/
lemma LSeriesHasSum_exp (a : ℝ) {s : ℂ} (hs : 1 < re s) :
    LSeriesHasSum (cexp <| 2 * π * I * a * ·) s (expZeta a s) 
goal: LSeriesHasSum (fun x => cexp (2 * ↑π * Complex.I * ↑a * ↑x)) s (HurwitzZeta.expZeta (↑a) s)

full_name: HurwitzZeta.hurwitzZeta_one_sub
code: lemma hurwitzZeta_one_sub (a : UnitAddCircle) {s : ℂ}
    (hs : ∀ (n : ℕ), s ≠ -n) (hs' : a ≠ 0 ∨ s ≠ 1) :
    hurwitzZeta a (1 - s) = (2 * π) ^ (-s) * Gamma s *
    (exp (-π * I * s / 2) * expZeta a s + exp (π * I * s / 2) * expZeta (-a) s) 
goal: HurwitzZeta.hurwitzZeta a (1 - s) =
  (2 * ↑π) ^ (-s) * Complex.Gamma s *
    (cexp (-↑π * Complex.I * s / 2) * HurwitzZeta.expZeta a s +
      cexp (↑π * Complex.I * s / 2) * HurwitzZeta.expZeta (-a) s)

full_name: HurwitzZeta.expZeta_one_sub
code: /-- Functional equation for the exponential zeta function. -/
lemma expZeta_one_sub (a : UnitAddCircle) {s : ℂ} (hs : ∀ (n : ℕ), s ≠ 1 - n) :
    expZeta a (1 - s) = (2 * π) ^ (-s) * Gamma s *
    (exp (π * I * s / 2) * hurwitzZeta a s + exp (-π * I * s / 2) * hurwitzZeta (-a) s) 
goal: HurwitzZeta.expZeta a (1 - s) =
  (2 * ↑π) ^ (-s) * Complex.Gamma s *
    (cexp (↑π * Complex.I * s / 2) * HurwitzZeta.hurwitzZeta a s +
      cexp (-↑π * Complex.I * s / 2) * HurwitzZeta.hurwitzZeta (-a) s)