Skip to content

feat: add Sturm's theorem eval problem#273

Open
kim-em wants to merge 1 commit into
mainfrom
eval/sturm
Open

feat: add Sturm's theorem eval problem#273
kim-em wants to merge 1 commit into
mainfrom
eval/sturm

Conversation

@kim-em
Copy link
Copy Markdown
Collaborator

@kim-em kim-em commented May 19, 2026

This PR adds Sturm's theorem as a new lean-eval challenge problem — §97 of Oliver Knill's Some Fundamental Theorems in Mathematics.

For a squarefree real polynomial p and an interval (a, b) whose endpoints are not roots of p, the number of distinct roots of p in (a, b) equals σ(a) − σ(b), the drop in the number of sign variations of the Sturm chain.

The problem defines the Sturm chain (p₀ = p, p₁ = p', pₖ₊₁ = −(pₖ₋₁ mod pₖ)), the sign-change counter, and the variation function σ — mathlib has none of them. The chain uses the negated-remainder convention, for which the count is σ(a) − σ(b).

Cross-checked against the Isabelle/HOL formalization (Manuel Eberl, AFP entry Sturm_Sequences), which proves the same classical distinct-root form; our statement takes Squarefree p as an explicit hypothesis (the core case).

🤖 Prepared with Claude Code

This PR adds Sturm's theorem (§97 of Knill's "Some Fundamental Theorems
in Mathematics") as a new eval problem: the number of distinct real
roots of a squarefree real polynomial in an open interval equals the
drop in sign variations of its Sturm chain. The Sturm chain, the
sign-variation counter, and the variation function are defined in the
problem; mathlib has none of them.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant