Documentation

HexRealRootsMathlib.SturmCertificate

The algebraic conditions on a signed remainder chain, before checking its seeds.

Instances For
    theorem Sturm.RemainderChain.pair {p : Polynomial } {c : } (hp : p 0) (hc : c 0) :

    Terminate a certificate at a nonzero constant.

    theorem Sturm.RemainderChain.cons {p q r : Polynomial } {tail : List (Polynomial )} {a b : } {d : Polynomial } (h : RemainderChain (q :: r :: tail)) (hp : p 0) (ha : 0 < a) (hb : 0 < b) (hid : Polynomial.C a * p = d * q - Polynomial.C b * r) :
    RemainderChain (p :: q :: r :: tail)

    Prepend a positive multiple of a signed remainder identity.

    theorem Sturm.RemainderChain.isSturmChain {p q : Polynomial } {tail : List (Polynomial )} {a : } (h : RemainderChain (p :: q :: tail)) (ha : 0 < a) (hd : Polynomial.derivative p = Polynomial.C a * q) :
    IsSturmChain p (p :: q :: tail)

    A remainder chain starting with a positive multiple of the derivative is a Sturm chain.

    theorem Sturm.RemainderChain.separable {p q : Polynomial } {tail : List (Polynomial )} {a : } (h : RemainderChain (p :: q :: tail)) (ha : a 0) (hd : Polynomial.derivative p = Polynomial.C a * q) :

    A remainder chain whose second entry is a nonzero multiple of the derivative certifies separability.

    theorem Sturm.RemainderChain.card_rootSet {R : Type u_1} [CommRing R] [Algebra R ] {f : Polynomial R} {p q : Polynomial } {tail : List (Polynomial )} {a : } {n : } (h : RemainderChain (p :: q :: tail)) (ha : 0 < a) (hd : Polynomial.derivative p = Polynomial.C a * q) (hf : Polynomial.map (algebraMap R ) f = p) (hn : sturmVarPosInf (p :: q :: tail) + n = sturmVarNegInf (p :: q :: tail)) :

    Convert the variation count of a checked chain to the number of distinct real roots.