Documentation

HexRealRootsMathlib.Separation

Real value of a dyadic number, through Dyadic.toRat.

Equations
Instances For
    @[simp]

    Dyadic.toReal is the rational cast of toRat. A plain-import restatement of the definition, so downstream modules that do not import all this file can still bridge Dyadic.toReal to the -valued endpoints of an isolation.

    @[reducible, inline]

    The real cast of an executable integer polynomial.

    Equations
    Instances For
      @[reducible, inline]

      The complex cast of an executable integer polynomial.

      Equations
      Instances For
        theorem HexRealRootsMathlib.toRat_shiftLeft (x : Dyadic) (i : ) :
        (x <<< i).toRat = x.toRat * 2 ^ i

        toRat turns a left shift into multiplication by a power of two.

        theorem HexRealRootsMathlib.toRat_shiftRight (x : Dyadic) (i : ) :
        (x >>> i).toRat = x.toRat * 2 ^ (-i)

        toRat turns a right shift into multiplication by a negative power of two.

        @[simp]

        The real value of an integer dyadic is the integer cast.

        @[simp]

        Hex.twoPow k has real value 2 ^ k.

        The real value of a left shift is multiplication by a power of two.

        The real value of a right shift is multiplication by a negative power of two.

        @[simp]

        The real value of the dyadic n / 2ⁱ (an integer shifted right by i bits).

        ceilLog2Nat m is a base-two ceiling: m ≤ 2 ^ (ceilLog2Nat m).

        theorem HexRealRootsMathlib.range_foldl_max_eq_finset_sup (g : ) (m : ) :
        List.foldl (fun (acc i : ) => max acc (g i)) 0 (List.range m) = (Finset.range m).sup g

        The List.range fold used by rootBound to compute the maximum absolute non-leading coefficient equals the corresponding Finset.sup.

        Evaluating the real cast at x is the degree-indexed sum of the integer coefficients cast to . For a literal ofCoeffs this unfolds via Finset.sum_range_succ into an explicit polynomial in x; combined with Polynomial.IsRoot, it turns a root goal into a plain equation ring/norm_num can discharge.

        @[simp]

        Coefficients of the complex cast are the complex casts of the integer coefficients.

        The complex cast preserves the natural degree.

        The complex cast preserves the leading coefficient.

        The complex cast is the map of the integer polynomial.

        The power-of-two Cauchy bound Hex.rootBound p dominates Cauchy's bound.

        Cauchy root bound. Every real root of a nonzero toPolyℝ p lies strictly inside the power-of-two bound Hex.rootBound p.

        theorem HexRealRootsMathlib.norm_pow_sub_pow_le {x y : } {C : } (hx : x C) (hy : y C) (hC : 1 C) (i : ) :
        y ^ i - x ^ i i * C ^ (i - 1) * y - x

        Compatibility forwarding theorem for the generic divided-difference bound.

        theorem HexRealRootsMathlib.sqrt_sum_pow_sq_le (a : ) (N : ) :
        (∑ i : Fin N, a ^ i ^ 2) N * max 1 a ^ (N - 1)

        Compatibility forwarding theorem for the ordinary Vandermonde-column bound.

        theorem HexRealRootsMathlib.sqrt_sum_sub_pow_sq_le {x y : } {C : } (hx : x C) (hy : y C) (hC : 1 C) (N : ) :
        (∑ i : Fin N, y ^ i - x ^ i ^ 2) C ^ (N - 2) * y - x * (∑ i : Fin N, i ^ 2)

        Compatibility forwarding theorem for the differenced Vandermonde-column bound.

        theorem HexRealRootsMathlib.sqrt_sum_sq_le (N : ) :
        (∑ i : Fin N, i ^ 2) N ^ 3

        Compatibility forwarding theorem for the sum-of-squares estimate.

        theorem HexRealRootsMathlib.norm_det_vandermonde_le {N : } (hN : 2 N) (c : ) (α : Fin N) {i₀ i₁ : Fin N} (hne : i₀ i₁) (hle : α i₀ α i₁) :
        c ^ (N - 1) * (Matrix.vandermonde α).det N ^ (N - 1) * (∑ i : Fin N, i ^ 2) * (c * j : Fin N, max 1 α j) ^ (N - 1) * α i₁ - α i₀

        Compatibility forwarding theorem for the isolating-column determinant bound.

        Compatibility forwarding theorem for the off-diagonal root-product identity.

        theorem HexRealRootsMathlib.norm_discr_eq {N : } (α : Fin N) ( : Function.Injective α) {f : Polynomial } (hf : 0 < f.degree) (hsplit : f.Splits) (hroots : f.roots = Multiset.map α Finset.univ.val) :

        Compatibility forwarding theorem for the discriminant/Vandermonde identity.

        theorem HexRealRootsMathlib.pow_le_two_pow_sepExp (n L : ) :
        n ^ (n + 2) * L ^ (n - 1) 2 ^ (((n + 2) * Hex.ceilLog2Nat n + 1) / 2 + (n - 1) * Hex.ceilLog2Nat L)

        The closed-form separation exponent dominates the analytic bound: √n^{n+2} · L^{n-1} ≤ 2^E where E = ((n+2)·⌈log₂ n⌉ + 1)/2 + (n-1)·⌈log₂ L⌉.

        theorem HexRealRootsMathlib.sepPrec_separates (p : Hex.ZPoly) (hsep : (Polynomial.map (Int.castRingHom ) (HexPolyZMathlib.toPolynomial p)).Separable) (z₁ z₂ : ) :
        (toPolyℂ p).IsRoot z₁(toPolyℂ p).IsRoot z₂z₁ z₂2 ^ (-(Hex.sepPrec p)) < z₁ - z₂ / 4

        Mahler's separation bound. For a p whose rational image is separable (equivalently squarefree over ; squareFreeRat_iff discharges this from Hex.SquareFreeRat), any two distinct complex roots of toPolyℂ p are more than 4 · 2^{-sepPrec p} apart. Vacuous for degree ≤ 1 (where sepPrec = 0 and there is at most one root), so the content is the degree ≥ 2 case.