Documentation

TauCeti.Algebra.Polynomial.Sturm.Infinity

Sturm–Tarski with infinite endpoints #

Leading coefficients and degree parity compute the sign variations at both infinities. Together with one-sided signs at finite endpoints, these give half-line and whole-field Sturm–Tarski identities for signed remainder chains and for Polynomial.sturmSeq, including root counts. Finite endpoints may be roots of any chain entry.

noncomputable def TauCeti.Sturm.signVariationsAtTop {R : Type u_1} [Semiring R] [LinearOrder R] (cs : List (Polynomial R)) :

Sign variations at positive infinity.

Equations
Instances For

    Unfold positive-infinity variations as variations of the leading coefficients.

    Matching the leading-coefficient signs realizes positive-infinity variations.

    noncomputable def TauCeti.Sturm.signVariationsAtBot {R : Type u_1} [Ring R] [LinearOrder R] (cs : List (Polynomial R)) :

    Sign variations at negative infinity.

    Equations
    Instances For

      Unfold negative-infinity variations using leading coefficients and degree parity.

      Matching the parity-adjusted leading signs realizes negative-infinity variations.

      theorem TauCeti.Sturm.exists_signVariationsAtTop {R : Type u_1} [Field R] [LinearOrder R] [IsStrictOrderedRing R] (cs : List (Polynomial R)) :
      ∃ (B : R), ∀ (x : R), B < x → signVariationsAt cs x = signVariationsAtTop cs

      The variation count stabilizes at positive infinity, even for lists containing zero.

      The variation count stabilizes at negative infinity, even for lists containing zero.

      theorem TauCeti.Sturm.exists_atTop {R : Type u_1} [Field R] [LinearOrder R] [IsStrictOrderedRing R] (cs : List (Polynomial R)) (hne : ∀ p ∈ cs, p ≠ 0) :
      ∃ (B : R), (∀ (x : R), B < x → signVariationsAt cs x = signVariationsAtTop cs) ∧ ∀ p ∈ cs, ∀ (r : R), Polynomial.eval r p = 0 → r ≤ B

      Far enough to the right, finite evaluation realizes the infinity signs and lies beyond every chain root. The bound belongs to the ordered field itself.

      theorem TauCeti.Sturm.exists_atBot {R : Type u_1} [Field R] [LinearOrder R] [IsStrictOrderedRing R] (cs : List (Polynomial R)) (hne : ∀ p ∈ cs, p ≠ 0) :
      ∃ (B : R), (∀ x < B, signVariationsAt cs x = signVariationsAtBot cs) ∧ ∀ p ∈ cs, ∀ (r : R), Polynomial.eval r p = 0 → B ≤ r

      Far enough to the left, finite evaluation realizes the negative-infinity variations, and every chain root lies above the bound.

      theorem TauCeti.Sturm.sum_sign_Ioi {R : Type u_1} [Field R] [LinearOrder R] [IsStrictOrderedRing R] [IsRealClosed R] {p f : Polynomial R} {cs : List (Polynomial R)} (h : IsSignedRemainderSeq (p :: cs)) (hseed : IsTarskiSeed p f (cs.head?.getD 0)) (a : R) :
      ↑(signVariationsRight (p :: cs) a) - ↑(signVariationsAtTop (p :: cs)) = ∑ r ∈ p.roots.toFinset with a < r, ↑(SignType.sign (Polynomial.eval r f))

      Sturm–Tarski on (a, ∞), using right-hand variations at any finite endpoint.

      theorem TauCeti.Sturm.sum_sign_Iio {R : Type u_1} [Field R] [LinearOrder R] [IsStrictOrderedRing R] [IsRealClosed R] {p f : Polynomial R} {cs : List (Polynomial R)} (h : IsSignedRemainderSeq (p :: cs)) (hseed : IsTarskiSeed p f (cs.head?.getD 0)) (b : R) :
      ↑(signVariationsAtBot (p :: cs)) - ↑(signVariationsLeft (p :: cs) b) = ∑ r ∈ p.roots.toFinset with r < b, ↑(SignType.sign (Polynomial.eval r f))

      Sturm–Tarski on (-∞, b), using left-hand variations at any finite endpoint.

      theorem TauCeti.Sturm.sum_sign_univ {R : Type u_1} [Field R] [LinearOrder R] [IsStrictOrderedRing R] [IsRealClosed R] {p f : Polynomial R} {cs : List (Polynomial R)} (h : IsSignedRemainderSeq (p :: cs)) (hseed : IsTarskiSeed p f (cs.head?.getD 0)) :
      ↑(signVariationsAtBot (p :: cs)) - ↑(signVariationsAtTop (p :: cs)) = ∑ r ∈ p.roots.toFinset, ↑(SignType.sign (Polynomial.eval r f))

      Sturm–Tarski on the whole real closed field.

      Sturm–Tarski for Mathlib's sequence on (a, ∞), even when a is a root.

      Sturm–Tarski for Mathlib's sequence on (-∞, b), even when b is a root.

      Sturm–Tarski for Mathlib's signed remainder sequence on the whole real closed field.

      Sturm counting of distinct roots in (a, ∞), with no restriction on the endpoint.

      Sturm counting of distinct roots in (-∞, b), with no restriction on the endpoint.

      Classical Sturm counting of all distinct roots of a nonzero polynomial. For p = 0 both sides are zero: sturmSeq 0 _ = [] and Polynomial.roots 0 = 0 by convention.