Extract an atom from a certified result, failing on clusters.
Equations
- (Hex.Certified.atom iso).asAtom? = some iso
- (Hex.Certified.cluster cl).asAtom? = none
Instances For
Refine every component to precision at least target and require the
circumscribed discs of the certified squares to be pairwise disjoint. Before
completenessDepth, refinement is global so rootless survivor halos rejoin the
root-bearing component. The fuel is sized from the worklist's coarsest
precision so the loop reaches stopDepth p target. none means the full
emission condition was not reached within that fuel bound.
Equations
- One or more equations did not get rendered due to their size.
Instances For
All-atoms output for polynomials with only simple roots: run
Hex.isolateAll? from Hex.Component.cauchy with
target := max atom_prec (separationDepth p), and require every result to
be an atom. none if Hex.isolateAll? fails or (impossible for squarefree
p, proven in the companion) some result is a k ≥ 2 cluster.
Hex.HasOnlySimpleRoots does not force positive degree, so the degenerate
inputs are pinned here: a nonzero constant returns some #[] (no roots to
isolate), and the zero polynomial returns none.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Start a local search for one simple root from a caller-selected square and
refine its atom to at
least max atomPrec (mahlerPrec p). This is a deliberately local search:
unlike Hex.ZPoly.isolateComplexRoots?, it neither certifies every root nor establishes
pairwise disjointness against roots outside the returned atom. The
self-contained Hex.AtomCertificate is exactly the weaker fact
needed by Hex.SimpleRoot.mk. The returned atom is not promised to
lie inside seed; seed selects the initial search region. none means
the search was exhausted or the bounded search did not find an atom.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Refine a refined isolation, staying in the refined type and returning
the proof that the result isolates the same root. The refinement target
is floored at mahlerPrec p so the subtype re-wrap always succeeds on a
some, and the identity proof comes from the decidable Intersects
re-check via Quot.sound. This is the threading-pattern operation the
SimpleRoot module docstring describes: refine once, store the returned
representative, and substitute it wherever the original was used.
Equations
- One or more equations did not get rendered due to their size.