A complete, certified real-root isolation of P : Polynomial R over ℝ:
n rational intervals, each holding exactly one real root, together covering
every real root, sorted and pairwise disjoint. Props are in aeval form so the
same structure serves R = ℤ (a Hex.ZPoly via
HexPolyZMathlib.toPolynomial), R = ℚ, and R = ℝ.
Constructor
Hex.IsolatedRealRoots.mk.{u_1}
Fields
intervals : Vector (ℚ × ℚ) n
The n isolating intervals (lower, upper], as pairs of rationals.
unique_root : ∀ (i : Fin n), ∃! x, (Polynomial.aeval x) P = 0 ∧ ↑self.intervals[i].1 < x ∧ x ≤ ↑self.intervals[i].2
Each interval holds exactly one real root of P.
covers : ∀ (x : ℝ), (Polynomial.aeval x) P = 0 → ∃ i, ↑self.intervals[i].1 < x ∧ x ≤ ↑self.intervals[i].2
Every real root of P lies in one of the intervals.
ordered : ∀ (i j : Fin n), i < j → self.intervals[i].2 ≤ self.intervals[j].1
The intervals are sorted and pairwise disjoint: the upper endpoint of each
is at most the lower endpoint of every later one. With half-open intervals
this makes n exactly the number of distinct real roots.