Correctness of the bounded odd-prime auxiliary construction #
The executable loop's invariant, including the primitive-order progress counter.
- irreducible : Irreducible (polyOfBits s.2.2.2)
- stopped : s.2.2.1 = true → ∀ (b : AdjoinRoot (polyOfBits s.2.2.2)), b ^ q ≠ AdjoinRoot.root (polyOfBits s.2.2.2)
- running : s.2.2.1 = false → polyOfBits s.2.2.2 ∣ Polynomial.cyclotomic (q ^ (i + 1)) (ZMod 2)
Instances For
The exact specification of the factorization query made by a valid running state.
On a nonterminal query, the selected factor has precisely the seed degree.
Every executable step either certifies a nonresidue or advances primitive order.
The bounded loop preserves its invariant with one progress count per fuel bit.
A valid state cannot still be running after the seed-degree budget is exhausted.
The initial seed uses exactly its degree plus one coefficients.
Explicit execution of the seed-initialized auxiliary loop.
The polynomial-time auxiliary constructor returns a monic irreducible polynomial of the seed degree whose specified root is an odd-prime nonresidue.
The auxiliary degree is exactly the multiplicative order of two modulo the prime.
The auxiliary degree is coprime to the requested odd prime.