Documentation

HexRealRootsMathlib.SquareFreeCore

theorem HexRealRootsMathlib.isRoot_left_iff_of_mul_of_dvd_derivative {K : Type u_1} [Field K] [CharZero K] {q c r : Polynomial K} (hq : q 0) (hqcr : q = c * r) (hrd : r Polynomial.derivative q) (a : K) :
c.IsRoot a q.IsRoot a

Field-generic square-free-core root transfer. Over a characteristic-zero field, if q = c * r (with q ≠ 0) and r divides the derivative q', then a point is a root of c iff it is a root of q. The root-multiplicity argument: at a root a of multiplicity m ≥ 1, q' has multiplicity m − 1 (characteristic zero), so r ∣ q' forces the r-multiplicity of a below m, leaving c with multiplicity at least one; conversely any root of c is a root of the product q. Hex-free; a candidate Mathlib contribution.

aeval at a real point of an embedded integer polynomial is the evaluation of its real cast.

The real cast is the composition of the rational cast with ℚ → ℝ.

Executable-to-real divisibility. The real cast of the repeated part divides the derivative of the real cast of the primitive part: the executable rational divisibility, transported through and then ℚ → ℝ.

Square-free core preserves real roots. A nonzero integer polynomial and its executable square-free core have exactly the same real roots, stated through aeval at real points. Shared with the rcf decision procedure (step 3) and consumed by the isolate_roots elaborator to reduce to square-free input.