Module

PolynomialRootProximity.lean

Nyll.ValuedFieldTheory.LocalField.DiscreteValuationField.PolynomialRootProximity
2 declarations indexed from sourceView source ↗

A root-proximity estimate over a discrete valuation ring

If a monic polynomial splits over a discrete valuation ring, one of its roots is at least as close to a given point as the polynomial value, after accounting for the derivative at that root. The proof selects a root of maximal additive valuation and compares the remaining factors by the ultrametric inequality.

Repeated roots and zero derivative values are allowed; the statement is in ℕ∞, so the estimate also covers infinite additive valuations.

Declarations

Polynomial.Splits.addVal_multiset_prod_le
Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
open scoped Polynomial
universe u
namespace Polynomial.Splits
theorem addVal_multiset_prod_le
    {R : Type u} [CommRing R] [IsDomain R] [IsDiscreteValuationRing R]
    {α : Type*} (s : Multiset α) (f g : α → R)
    (h :
      ∀ z ∈ s,
        IsDiscreteValuationRing.addVal R (f z) ≤
          IsDiscreteValuationRing.addVal R (g z)) :
    IsDiscreteValuationRing.addVal R ((s.map f).prod) ≤
      IsDiscreteValuationRing.addVal R ((s.map g).prod)
Polynomial.Splits.exists_root_addVal_eval_le_sub_add_derivative

Let p be a nonconstant monic polynomial that splits over a discrete valuation ring. For every x, some root y satisfies

v(p(x)) ≤ v(x - y) + v(p'(y)).

Choosing y with maximal v(x-y) makes every other factor x-z no deeper than y-z; multiplying those inequalities gives the result.

Source context 4 commands

Surrounding namespaces, section variables, and local commands at this declaration.

noncomputable section
open scoped Polynomial
universe u
namespace Polynomial.Splits
theorem exists_root_addVal_eval_le_sub_add_derivative
    {R : Type u} [CommRing R] [IsDomain R] [IsDiscreteValuationRing R]
    (p : R[X]) (hs : p.Splits) (hm : p.Monic)
    (hdeg : p.natDegree ≠ 0) (x : R) :
    ∃ y, y ∈ p.roots ∧
      IsDiscreteValuationRing.addVal R (p.eval x) ≤
        IsDiscreteValuationRing.addVal R (x - y) +
          IsDiscreteValuationRing.addVal R (p.derivative.eval y)