hex

10.6. How the certificate is checked🔗

The elaborator does the search at elaboration time with the compiled isolator, then emits a term the kernel re-checks. It does not ask the kernel to redo the search. The emitted term reifies the Sturm chain once as an array of integer-coefficient polynomials. The root-count fields reduce to sign-variation counts against that fixed chain: one count per interval for unique_root, and an endpoint-at-infinity count for the root total. These are decide-checked polynomial evaluations over the integers, so their kernel cost grows with the degree and the endpoint sizes, not with the number of bisections the search performed. The ordered field is cheaper still — an adjacent-pair comparison of the dyadic endpoints, no polynomial evaluation at all.

The interval endpoints are presented as reduced rational literals, and the identification of the emitted literals with the isolator's dyadic endpoints is stated over . This keeps rational normalization, and its Nat.gcd, away from the kernel, which is what makes endpoint extraction a plain rfl even for the refined fractional endpoints above.