Skip to content

feat(IK): prove LSeries_liouville_eq#1533

Open
giuseppesorge wants to merge 2 commits into
AlexKontorovich:mainfrom
giuseppesorge:liouville-lseries-eq
Open

feat(IK): prove LSeries_liouville_eq#1533
giuseppesorge wants to merge 2 commits into
AlexKontorovich:mainfrom
giuseppesorge:liouville-lseries-eq

Conversation

@giuseppesorge

@giuseppesorge giuseppesorge commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

Summary

Proves LSeries_liouville_eq (#1286): for Re s > 1, the Dirichlet series of the Liouville function λ equals ζ(2s)/ζ(s).

Approach

λ is completely multiplicative with λ(p) = -1, so the summand n ↦ λ(n)·n^(-s) is a ℕ →*₀ ℂ. By the Euler product for completely multiplicative functions it factors as ∏ₚ (1 - λ(p)p^(-s))⁻¹ = ∏ₚ (1 + p^(-s))⁻¹. Multiplying with the Euler product of ζ(s) (HasProd.mul) and identifying the result with that of ζ(2s) (HasProd.unique, via (1-p^(-s))⁻¹(1+p^(-s))⁻¹ = (1-p^(-2s))⁻¹) gives ζ(s)·L(λ,s) = ζ(2s); dividing by ζ(s) ≠ 0 yields the result. Same high-level EulerProduct approach as the existing two_pow_omega lemmas.

On the helper lemmas (duplication with Mathlib)

This file defines its own ArithmeticFunction.liouville rather than importing Mathlib's
Mathlib.NumberTheory.ArithmeticFunction.Liouville, so Mathlib's lemmas about liouville are not in scope here. I
therefore re-prove the small facts I need — liouville_apply, liouville_apply_one, liouville_apply_mul,
liouville_norm_le — which mirror Mathlib's. The cleaner long-term fix would be to have this file use Mathlib's
liouville (dropping the local definition and these helpers), but that touches the existing liouville definition, its
blueprint node, and the other liouville_* lemmas, so I kept this PR focused on LSeries_liouville_eq. Happy to make that
refactor instead if you prefer.

AI assistance

This proof was developed with AI assistance (Claude).

Closes #1286

@giuseppesorge

Copy link
Copy Markdown
Contributor Author

awaiting-review

@giuseppesorge

Copy link
Copy Markdown
Contributor Author

Added a small follow-up commit (1d7e31c) that fixes a typo in the existing informal blueprint proof of this node: the
intermediate Euler product was written as ∏_p (1 - p^{-s})^{-1}(1 - p^{-2s}), which evaluates to ζ(s)/ζ(2s) rather than ζ(2s)/ζ(s). The text now matches the formalised proof.

Prove that the Dirichlet series of the Liouville function equals
zeta(2s)/zeta(s) for Re s > 1, via the Euler product of the completely
multiplicative summand n -> lambda(n) * n^(-s), combined with the Euler
products of zeta(s) and zeta(2s).

Adds elementary lemmas on the Liouville function (liouville_apply,
liouville_apply_one, liouville_apply_mul, liouville_norm_le) and the
summand machinery (liouvilleSummandHom, summable_liouvilleSummand,
tsum_liouvilleSummand).
The previous informal proof had a typo in the intermediate Euler product
(it evaluated to zeta(s)/zeta(2s)). Rewrite it to match the formalised proof:
zeta(s) * L(lambda, s) = zeta(2s) via (1 - p^-s)(1 + p^-s) = 1 - p^-2s.
@giuseppesorge giuseppesorge force-pushed the liouville-lseries-eq branch from 1d7e31c to 811a8c3 Compare June 13, 2026 00:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[IK]: Prove LSeries_liouville_eq

1 participant