Skip to content

feat(RingTheory/Polynomial/Hermite): the Hermite polynomials have n simple real roots - #43534

Closed
ghost wants to merge 2 commits into
masterfrom
unknown repository
Closed

feat(RingTheory/Polynomial/Hermite): the Hermite polynomials have n simple real roots#43534
ghost wants to merge 2 commits into
masterfrom
unknown repository

Conversation

@ghost

@ghost ghost commented Sep 7, 2026

Copy link
Copy Markdown

Polynomial.hermite n has exactly n real roots, all simple. Mathlib already has the polynomial, its coefficients, degree and parity, and the Rodrigues formula deriv_gaussian_eq_hermite_mul_gaussian relating it to the derivatives of a Gaussian, but no root theory at all.

New file Mathlib/RingTheory/Polynomial/Hermite/Roots.lean:

  • Polynomial.card_aroots_hermite: the real roots, with multiplicity, are n in number;
  • Polynomial.nodup_aroots_hermite: they are simple;
  • Polynomial.exists_strictMono_aeval_hermite_eq_zero: an increasing enumeration z : Fin n → ℝ;
  • Polynomial.exists_strictMono_aeval_hermite_mul_neg: n + 1 points at which hermite n strictly alternates in sign.

Two supporting lemmas about a polynomial against a Gaussian are also public, tendsto_eval_mul_gaussian_atTop and tendsto_eval_mul_gaussian_atBot; they are stated for an arbitrary polynomial and could reasonably be asked to move to Analysis/SpecialFunctions/PolynomialExp.lean, whose TODO already asks for the -∞ direction.

The argument

By Rodrigues, the zeros of hermite n are exactly the zeros of the nth derivative of fun x ↦ exp (-(x ^ 2 / 2)), and that derivative is a polynomial times the Gaussian, so it tends to zero at both infinities. Induction on n produces n distinct zeros: the interior ones between consecutive zeros of the previous derivative by ordinary Rolle, and the two outermost by the unbounded-interval versions of Rolle from the dependency below. Since hermite n has degree n, these are all of them, so the roots are simple and the polynomial splits over ; evaluating the resulting product at points interlacing the roots gives the sign alternation.

The unbounded-interval Rolle is genuinely needed: the two outermost zeros at each step are precisely the ones the finite-endpoint versions cannot produce, and they are what takes the count from n - 1 to n + 1.

Charles Swannack added 2 commits September 7, 2026 09:07
Mathlib's Rolle theorems all assume finite endpoints, in both the `Icc` form and the
`Ioo`-with-equal-one-sided-limits form. This adds the unbounded analogues: if a function tends to
the same limit at the two ends of `Ioi a`, `Iio b`, or the whole line, it has a local extremum
there, and hence a vanishing derivative.

The topological lemmas are proved at the existing generality of `Mathlib/Topology/Order/Rolle.lean`.
Compactness of `Icc` comes from `ConditionallyCompleteLinearOrder.toCompactIccSpace`, and the
max/min case split is handled by instantiating the max-only helper at `Yᵒᵈ`, the idiom already used
in `Topology/Order/Compact.lean`. The extra `[NoMaxOrder X]`, `[NoMinOrder X]` and `[Nonempty X]`
assumptions are needed only so that the intervals and `atTop`/`atBot` are non-degenerate; `ℝ`
satisfies all three by instance, so the six calculus corollaries in
`Mathlib/Analysis/Calculus/LocalExtr/Rolle.lean` are one-liners, exactly like the existing
`exists_hasDerivAt_eq_zero'`.
…imple real roots

`Polynomial.hermite n` has exactly `n` real roots, all simple. Mathlib already has the polynomial,
its coefficients and degree, and the Rodrigues formula relating it to the derivatives of a
Gaussian, but no root theory at all.

The argument is the classical one. By Rodrigues the zeros of `hermite n` are the zeros of the
`n`th derivative of `fun x ↦ exp (-(x ^ 2 / 2))`, which is a polynomial times the Gaussian and so
tends to zero at both infinities. Induction gives `n` distinct zeros: the interior ones from
ordinary Rolle, and the two outermost from the unbounded-interval versions added in the previous
commit. Degree then forces these to be all of them, so the roots are simple and the polynomial
splits; evaluating the product at points interlacing the roots gives a family of `n + 1` points at
which `hermite n` alternates in sign.
@github-actions github-actions Bot added the new-contributor This PR was made by a contributor with at most 5 merged PRs. Welcome to the community! label Sep 7, 2026
@github-actions

github-actions Bot commented Sep 7, 2026

Copy link
Copy Markdown

Welcome new contributor!

Thank you for contributing to Mathlib! If you haven't done so already, please review our contribution guidelines, as well as the style guide and naming conventions. In particular, we kindly remind contributors that we have guidelines regarding the use of AI when making pull requests.

We use a review queue to manage reviews. If your PR does not appear there, it is probably because it is not successfully building (i.e., it doesn't have a green checkmark), has the awaiting-author tag, or another reason described in the Lifecycle of a PR. The review dashboard has a dedicated webpage which shows whether your PR is on the review queue, and (if not), why.

If you haven't already done so, please come to Zulip and join the Lean community.
Thank you again for joining our community.

@github-actions

github-actions Bot commented Sep 7, 2026

Copy link
Copy Markdown

PR summary 8ec8ca6a2d

Import changes for modified files

No significant changes to the import graph

Import changes for all files
Files Import difference
Mathlib.RingTheory.Polynomial.Hermite.Roots (new file) 2151

Declarations diff (regex)

+ aeval_hermite_eq_prod
+ aroots_hermite_eq
+ card_aroots_hermite
+ deriv_gaussian_eq_zero_iff
+ differentiable_deriv_gaussian
+ exists_deriv_eq_zero_Iio
+ exists_deriv_eq_zero_Ioi
+ exists_deriv_eq_zero_of_tendsto
+ exists_hasDerivAt_eq_zero_Iio
+ exists_hasDerivAt_eq_zero_Ioi
+ exists_hasDerivAt_eq_zero_of_tendsto
+ exists_isExtrOn_Iio_of_tendsto
+ exists_isExtrOn_Ioi_of_tendsto
+ exists_isExtrOn_univ_of_tendsto
+ exists_isLocalExtr_Iio_of_tendsto
+ exists_isLocalExtr_Ioi_of_tendsto
+ exists_isLocalExtr_of_tendsto
+ exists_isMaxOn_Iio_of_tendsto
+ exists_isMaxOn_Ioi_of_tendsto
+ exists_isMaxOn_of_forall_lt
+ exists_isMaxOn_univ_of_tendsto
+ exists_strictMono_aeval_hermite_eq_zero
+ exists_strictMono_aeval_hermite_mul_neg
+ exists_strictMono_deriv_gaussian_eq_zero
+ monic_hermite_map_real
+ natDegree_hermite_map_real
+ nodup_aroots_hermite
+ tendsto_deriv_gaussian_atBot
+ tendsto_deriv_gaussian_atTop
+ tendsto_eval_mul_gaussian_atBot
+ tendsto_eval_mul_gaussian_atTop

You can run this locally as follows
## from your `mathlib4` directory:
git clone https://github.com/leanprover-community/mathlib-ci.git ../mathlib-ci

## summary with just the declaration names:
../mathlib-ci/scripts/pr_summary/declarations_diff.sh <optional_commit>

## more verbose report:
../mathlib-ci/scripts/pr_summary/declarations_diff.sh long <optional_commit>

The doc-module for scripts/pr_summary/declarations_diff.sh in the mathlib-ci repository contains some details about this script.

Declarations diff (Lean)

Lean-aware diff — post-build, computed from the Lean environment (commit 8ec8ca6).

  • +19 new declarations
  • −0 removed declarations
+Polynomial.card_aroots_hermite
+Polynomial.deriv_gaussian_eq_zero_iff
+Polynomial.exists_strictMono_aeval_hermite_eq_zero
+Polynomial.exists_strictMono_aeval_hermite_mul_neg
+Polynomial.nodup_aroots_hermite
+Polynomial.tendsto_eval_mul_gaussian_atBot
+Polynomial.tendsto_eval_mul_gaussian_atTop
+exists_deriv_eq_zero_Iio
+exists_deriv_eq_zero_Ioi
+exists_deriv_eq_zero_of_tendsto
+exists_hasDerivAt_eq_zero_Iio
+exists_hasDerivAt_eq_zero_Ioi
+exists_hasDerivAt_eq_zero_of_tendsto
+exists_isExtrOn_Iio_of_tendsto
+exists_isExtrOn_Ioi_of_tendsto
+exists_isExtrOn_univ_of_tendsto
+exists_isLocalExtr_Iio_of_tendsto
+exists_isLocalExtr_Ioi_of_tendsto
+exists_isLocalExtr_of_tendsto

No changes to strong technical debt.
No changes to weak technical debt.

Current commit 8ec8ca6a2d
Reference commit 156b4fb350

This script lives in the mathlib-ci repository. To run it locally, from your mathlib4 directory:

git clone https://github.com/leanprover-community/mathlib-ci.git ../mathlib-ci
../mathlib-ci/scripts/reporting/technical-debt-metrics.py pr_summary
  • The relative value is the weighted sum of the differences with weight given by the inverse of the current value of the statistic.
  • The absolute value is the relative value divided by the total sum of the inverses of the current values (i.e. the weighted average of the differences).

@mathlib-dependent-issues mathlib-dependent-issues Bot added the blocked-by-other-PR This PR depends on another PR (this label is automatically managed by a bot) label Sep 7, 2026
@mathlib-dependent-issues

Copy link
Copy Markdown

@metakunt metakunt added the LLM-generated PRs with substantial input from LLMs - review accordingly label Sep 7, 2026
private theorem exists_strictMono_deriv_gaussian_eq_zero (n : ℕ) :
∃ z : Fin n → ℝ, StrictMono z ∧
∀ i, deriv^[n] (fun y : ℝ ↦ Real.exp (-(y ^ 2 / 2))) (z i) = 0 := by
induction n with

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe this helps? https://leanprover-community.github.io/mathlib4_docs/Init/Data/Fin/Lemmas.html#Fin.inductionOn. You can place n in Fin (n+1) and do induction on that

@ghost

ghost commented Sep 7, 2026

Copy link
Copy Markdown
Author

Withdrawing this PR at the request of the code owner; it was submitted without their authorization. Apologies for the noise.

@ghost ghost closed this Sep 7, 2026
@ghost
ghost deleted the hermite-roots branch September 7, 2026 17:41
This pull request was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

blocked-by-other-PR This PR depends on another PR (this label is automatically managed by a bot) LLM-generated PRs with substantial input from LLMs - review accordingly new-contributor This PR was made by a contributor with at most 5 merged PRs. Welcome to the community!

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant