Documentation

HexRootsMathlib.SoftPellet

Coefficients of even powers, with exponents divided by two.

Equations
Instances For

    Coefficients of odd powers, with one X removed and exponents divided by two.

    Equations
    Instances For
      @[simp]

      The Graeffe transform fixes the zero polynomial.

      Recombining the contracted even and odd parts recovers the polynomial.

      Defining identity for one Graeffe step: G(p)(X²) = p(X) p(-X).

      theorem HexRootsMathlib.roots_graeffePoly {p : Polynomial } (hp : p 0) :
      (graeffePoly p).roots = Multiset.map (fun (z : ) => z ^ 2) p.roots

      One Graeffe step squares every complex root, preserving multiplicity.

      A Graeffe step of a nonzero polynomial is nonzero.

      theorem HexRootsMathlib.rootsInDisc_graeffePoly {p : Polynomial } (hp : p 0) (r : ) (hr : 0 r) :

      Squaring all roots and the radius preserves the number of roots in the open disc.

      A coefficient ball encloses z when the coordinate distance from its stored centre is at most its real-valued radius.

      Equations
      Instances For

        A rounded point ball encloses its exact Gaussian-dyadic input.

        theorem HexRootsMathlib.CoeffBall.add_encloses {x y : Hex.CoeffBall} {z w : } (hz : Encloses x z) (hw : Encloses y w) (bits : ) :
        Encloses (Hex.CoeffBall.add bits x y) (z + w)

        Outward-rounded ball addition is sound.

        theorem HexRootsMathlib.CoeffBall.sub_encloses {x y : Hex.CoeffBall} {z w : } (hz : Encloses x z) (hw : Encloses y w) (bits : ) :
        Encloses (Hex.CoeffBall.sub bits x y) (z - w)

        Outward-rounded ball subtraction is sound.

        theorem HexRootsMathlib.CoeffBall.mul_encloses {x y : Hex.CoeffBall} {z w : } (hz : Encloses x z) (hw : Encloses y w) (bits : ) :
        Encloses (Hex.CoeffBall.mul bits x y) (z * w)

        Outward-rounded ball multiplication is sound.

        The executable lower endpoint of an enclosing coefficient ball is below the exact complex modulus.

        The exact complex modulus is below the executable upper endpoint of an enclosing coefficient ball.

        The soft Taylor coefficient encloses the corresponding coefficient of the exact Taylor shift, scaled by h^k.

        The exact polynomial in square-local coordinates. Its unit square has the original square's half-width.

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For

          Every initial coefficient ball encloses the matching coefficient of the exact local polynomial.

          The exact-shift ball constructor encloses the same local polynomial coefficients.

          A coefficient array encloses a polynomial through its stored degree.

          Equations
          Instances For

            The degree bound carried by a complete coefficient-ball enclosure.

            The initial soft Taylor array encloses the complete local polynomial.

            The exact-shift array is also a complete coefficient-ball enclosure.

            A Graeffe step preserves natural degree for nonzero complex polynomials.

            One executable coefficient-ball Graeffe step encloses the exact transform.

            theorem HexRootsMathlib.sum_erase_range {M : Type u_1} [AddCommMonoid M] (f : M) (n k : ) :
            i(Finset.range n).erase k, f i = iFinset.range n, if i = k then 0 else f i

            Writing an omitted summand as an erased range or as an if gives the same finite sum. Shared by the Pellet-style dominance arguments downstream (RootFree, Pellet, Completeness.PelletDyadic).

            theorem HexRootsMathlib.softPelletAt_size {cs : Array Hex.CoeffBall} {k : } {rlo rhi : Dyadic} (h : Hex.softPelletAt cs k rlo rhi = true) :
            k < cs.size

            A successful soft comparison names a stored coefficient.

            A successful three-radius comparison names a stored coefficient.

            theorem HexRootsMathlib.softGraeffeLoop_size {cs : Array Hex.CoeffBall} {bits k rounds : } {rs : Hex.SoftRadii} (h : Hex.softGraeffeLoop bits k rounds cs rs = true) :
            k < cs.size

            Array size is invariant through Graeffe, so any successful loop result still names a coefficient in the initial array.

            A successful soft comparison exposes its strict real endpoint inequality.

            theorem HexRootsMathlib.softPelletAt_dominates {cs : Array Hex.CoeffBall} {q : Polynomial } {k : } {rlo rhi : Dyadic} {r : } (henclose : BallsEnclose cs q) (h : Hex.softPelletAt cs k rlo rhi = true) (hrlo : 0 Dyadic.toReal rlo) (hlo : Dyadic.toReal rlo r) (hhi : r Dyadic.toReal rhi) :
            i(Finset.range cs.size).erase k, q.coeff i * r ^ i < q.coeff k * r ^ k

            Endpoint bounds plus coefficient-ball enclosure imply the exact coefficient dominance required by Pellet's theorem at every real radius in the supplied interval.