A positive three-term Sturm recurrence
C left * a = quotient * b - C right * c.
Equations
- Sturm.ReplayStep a b c = ∃ (left : ℝ) (quotient : Polynomial ℝ) (right : ℝ), 0 < left ∧ 0 < right ∧ Polynomial.C left * a = quotient * b - Polynomial.C right * c
Instances For
Recurrences for a chain of length at least two, ending in a unit.
The recursive shape is convenient both for a compiled array checker to build and for the soundness proof to consume: each constructor adds exactly one supplied three-term identity.
- pair {a b : Polynomial ℝ} (last : IsUnit b) : Replay a b []
- cons {a b c : Polynomial ℝ} {rest : List (Polynomial ℝ)} (step : ReplayStep a b c) (tail : Replay b c rest) : Replay a b (c :: rest)
Instances For
The first two entries of a replay are coprime.
Every consecutive triple in a replay has its supplied positive recurrence.
The last entry of a replay is a unit.
A literal positive recurrence replay gives all generalized Sturm-chain axioms. Nonvanishing is kept explicit because a unit terminal and recurrence identities alone permit a zero entry immediately before a unit.
A literal positive recurrence replay proves squarefreeness by genuine polynomial coprimality of the head and its derivative.
An integer-polynomial instance of a positive three-term recurrence.
Equations
- HexRealRootsMathlib.ZReplayStep a b c = ∃ (left : ℤ) (quotient : Hex.ZPoly) (right : ℤ), 0 < left ∧ 0 < right ∧ Hex.DensePoly.scale left a = quotient * b - Hex.DensePoly.scale right c
Instances For
Checked literal integer identities imply a generalized Sturm chain for the real cast.
Checked literal integer identities prove squarefreeness of the real cast.
Membership in the real half-open interval represented by I.
Equations
Instances For
The multiset of real roots of f in a half-open dyadic interval.
Equations
Instances For
A literal chain's finite variation drop is the exact number of roots in a half-open dyadic interval. This reads the supplied chain directly and never calls the executable chain builder.
A literal chain's variation drop at infinity is the exact total number of real roots.
A checked integer replay gives the exact literal count on an interval.
The array consumed by the executable variation reader is the array conversion of the replay list, so no separate list/array alignment proof is required.
A checked integer replay gives the exact total literal root count.