File: Mathlib/NumberTheory/LSeries/RiemannZeta.lean

full_name: completedRiemannZeta₀
code: /-- The completed Riemann zeta function with its poles removed, `Λ(s) + 1 / s - 1 / (s - 1)`. -/
def completedRiemannZeta₀ (s : ℂ) : ℂ 
goal: ℂ

full_name: completedRiemannZeta
code: /-- The completed Riemann zeta function, `Λ(s)`, which satisfies
`Λ(s) = π ^ (-s / 2) Γ(s / 2) ζ(s)` (up to a minor correction at `s = 0`). -/
def completedRiemannZeta (s : ℂ) : ℂ 
goal: ℂ

full_name: HurwitzZeta.completedHurwitzZetaEven_zero
code: lemma HurwitzZeta.completedHurwitzZetaEven_zero (s : ℂ) :
    completedHurwitzZetaEven 0 s = completedRiemannZeta s 
goal: HurwitzZeta.completedHurwitzZetaEven 0 s = completedRiemannZeta s

full_name: HurwitzZeta.completedHurwitzZetaEven₀_zero
code: lemma HurwitzZeta.completedHurwitzZetaEven₀_zero (s : ℂ) :
    completedHurwitzZetaEven₀ 0 s = completedRiemannZeta₀ s 
goal: HurwitzZeta.completedHurwitzZetaEven₀ 0 s = completedRiemannZeta₀ s

full_name: HurwitzZeta.completedCosZeta_zero
code: lemma HurwitzZeta.completedCosZeta_zero (s : ℂ) :
    completedCosZeta 0 s = completedRiemannZeta s 
goal: HurwitzZeta.completedCosZeta 0 s = completedRiemannZeta s

full_name: HurwitzZeta.completedCosZeta₀_zero
code: lemma HurwitzZeta.completedCosZeta₀_zero (s : ℂ) :
    completedCosZeta₀ 0 s = completedRiemannZeta₀ s 
goal: HurwitzZeta.completedCosZeta₀ 0 s = completedRiemannZeta₀ s

full_name: completedRiemannZeta_eq
code: lemma completedRiemannZeta_eq (s : ℂ) :
    completedRiemannZeta s = completedRiemannZeta₀ s - 1 / s - 1 / (1 - s) 
goal: completedRiemannZeta s = completedRiemannZeta₀ s - 1 / s - 1 / (1 - s)

full_name: differentiable_completedZeta₀
code: /-- The modified completed Riemann zeta function `Λ(s) + 1 / s + 1 / (1 - s)` is entire. -/
theorem differentiable_completedZeta₀ : Differentiable ℂ completedRiemannZeta₀ 
goal: Differentiable ℂ completedRiemannZeta₀

full_name: differentiableAt_completedZeta
code: /-- The completed Riemann zeta function `Λ(s)` is differentiable away from `s = 0` and `s = 1`. -/
theorem differentiableAt_completedZeta {s : ℂ} (hs : s ≠ 0) (hs' : s ≠ 1) :
    DifferentiableAt ℂ completedRiemannZeta s 
goal: DifferentiableAt ℂ completedRiemannZeta s

full_name: completedRiemannZeta₀_one_sub
code: /-- Riemann zeta functional equation, formulated for `Λ₀`: for any complex `s` we have
`Λ₀(1 - s) = Λ₀ s`. -/
theorem completedRiemannZeta₀_one_sub (s : ℂ) :
    completedRiemannZeta₀ (1 - s) = completedRiemannZeta₀ s 
goal: completedRiemannZeta₀ (1 - s) = completedRiemannZeta₀ s

full_name: completedRiemannZeta_one_sub
code: /-- Riemann zeta functional equation, formulated for `Λ`: for any complex `s` we have
`Λ (1 - s) = Λ s`. -/
theorem completedRiemannZeta_one_sub (s : ℂ) :
    completedRiemannZeta (1 - s) = completedRiemannZeta s 
goal: completedRiemannZeta (1 - s) = completedRiemannZeta s

full_name: completedRiemannZeta_residue_one
code: /-- The residue of `Λ(s)` at `s = 1` is equal to `1`. -/
lemma completedRiemannZeta_residue_one :
    Tendsto (fun s ↦ (s - 1) * completedRiemannZeta s) (𝓝[≠] 1) (𝓝 1) 
goal: Filter.Tendsto (fun s => (s - 1) * completedRiemannZeta s) (𝓝[≠] 1) (𝓝 1)

full_name: riemannZeta
code: /-- The Riemann zeta function `ζ(s)`. -/
def riemannZeta 
goal: ℂ

full_name: HurwitzZeta.hurwitzZetaEven_zero
code: lemma HurwitzZeta.hurwitzZetaEven_zero : hurwitzZetaEven 0 = riemannZeta 
goal: HurwitzZeta.hurwitzZetaEven 0 = riemannZeta

full_name: HurwitzZeta.cosZeta_zero
code: lemma HurwitzZeta.cosZeta_zero : cosZeta 0 = riemannZeta 
goal: HurwitzZeta.cosZeta 0 = riemannZeta

full_name: HurwitzZeta.hurwitzZeta_zero
code: lemma HurwitzZeta.hurwitzZeta_zero : hurwitzZeta 0 = riemannZeta 
goal: HurwitzZeta.hurwitzZeta 0 = riemannZeta

full_name: HurwitzZeta.expZeta_zero
code: lemma HurwitzZeta.expZeta_zero : expZeta 0 = riemannZeta 
goal: HurwitzZeta.expZeta 0 = riemannZeta

full_name: differentiableAt_riemannZeta
code: /-- The Riemann zeta function is differentiable away from `s = 1`. -/
theorem differentiableAt_riemannZeta {s : ℂ} (hs' : s ≠ 1) : DifferentiableAt ℂ riemannZeta s 
goal: DifferentiableAt ℂ riemannZeta s

full_name: riemannZeta_zero
code: /-- We have `ζ(0) = -1 / 2`. -/
theorem riemannZeta_zero : riemannZeta 0 = -1 / 2 
goal: riemannZeta 0 = -1 / 2

full_name: riemannZeta_def_of_ne_zero
code: lemma riemannZeta_def_of_ne_zero {s : ℂ} (hs : s ≠ 0) :
    riemannZeta s = completedRiemannZeta s / Gammaℝ s 
goal: riemannZeta s = completedRiemannZeta s / s.Gammaℝ

full_name: riemannZeta_neg_two_mul_nat_add_one
code: /-- The trivial zeroes of the zeta function. -/
theorem riemannZeta_neg_two_mul_nat_add_one (n : ℕ) : riemannZeta (-2 * (n + 1)) = 0 
goal: riemannZeta (-2 * (↑n + 1)) = 0

full_name: riemannZeta_one_sub
code: /-- Riemann zeta functional equation, formulated for `ζ`: if `1 - s ∉ ℕ`, then we have
`ζ (1 - s) = 2 ^ (1 - s) * π ^ (-s) * Γ s * sin (π * (1 - s) / 2) * ζ s`. -/
theorem riemannZeta_one_sub {s : ℂ} (hs : ∀ n : ℕ, s ≠ -n) (hs' : s ≠ 1) :
    riemannZeta (1 - s) = 2 * (2 * π) ^ (-s) * Gamma s * cos (π * s / 2) * riemannZeta s 
goal: riemannZeta (1 - s) = 2 * (2 * ↑π) ^ (-s) * Complex.Gamma s * Complex.cos (↑π * s / 2) * riemannZeta s

full_name: RiemannHypothesis
code: /-- A formal statement of the **Riemann hypothesis** – constructing a term of this type is worth a
million dollars. -/
def RiemannHypothesis : Prop 
goal: Prop

full_name: completedZeta_eq_tsum_of_one_lt_re
code: theorem completedZeta_eq_tsum_of_one_lt_re {s : ℂ} (hs : 1 < re s) :
    completedRiemannZeta s =
      (π : ℂ) ^ (-s / 2) * Gamma (s / 2) * ∑' n : ℕ, 1 / (n : ℂ) ^ s 
goal: completedRiemannZeta s = ↑π ^ (-s / 2) * Complex.Gamma (s / 2) * ∑' (n : ℕ), 1 / ↑n ^ s

full_name: zeta_eq_tsum_one_div_nat_cpow
code: /-- The Riemann zeta function agrees with the naive Dirichlet-series definition when the latter
converges. (Note that this is false without the assumption: when `re s ≤ 1` the sum is divergent,
and we use a different definition to obtain the analytic continuation to all `s`.) -/
theorem zeta_eq_tsum_one_div_nat_cpow {s : ℂ} (hs : 1 < re s) :
    riemannZeta s = ∑' n : ℕ, 1 / (n : ℂ) ^ s 
goal: riemannZeta s = ∑' (n : ℕ), 1 / ↑n ^ s

full_name: zeta_eq_tsum_one_div_nat_add_one_cpow
code: /-- Alternate formulation of `zeta_eq_tsum_one_div_nat_cpow` with a `+ 1` (to avoid relying
on mathlib's conventions for `0 ^ s`).  -/
theorem zeta_eq_tsum_one_div_nat_add_one_cpow {s : ℂ} (hs : 1 < re s) :
    riemannZeta s = ∑' n : ℕ, 1 / (n + 1 : ℂ) ^ s 
goal: riemannZeta s = ∑' (n : ℕ), 1 / (↑n + 1) ^ s

full_name: zeta_nat_eq_tsum_of_gt_one
code: /-- Special case of `zeta_eq_tsum_one_div_nat_cpow` when the argument is in `ℕ`, so the power
function can be expressed using naïve `pow` rather than `cpow`. -/
theorem zeta_nat_eq_tsum_of_gt_one {k : ℕ} (hk : 1 < k) :
    riemannZeta k = ∑' n : ℕ, 1 / (n : ℂ) ^ k 
goal: riemannZeta ↑k = ∑' (n : ℕ), 1 / ↑n ^ k

full_name: riemannZeta_residue_one
code: /-- The residue of `ζ(s)` at `s = 1` is equal to 1. -/
lemma riemannZeta_residue_one : Tendsto (fun s ↦ (s - 1) * riemannZeta s) (𝓝[≠] 1) (𝓝 1) 
goal: Filter.Tendsto (fun s => (s - 1) * riemannZeta s) (𝓝[≠] 1) (𝓝 1)