An irreducible divisor of a primitive integer polynomial has positive executable degree. Constant irreducibles are excluded by primitivity of the target.
Proof state corresponding to one invocation of searchDirectAux.
The current target is nonzero.
The current target divides the original square-free polynomial.
- partition : DirectSupportPartition core B data support target
The remaining modular indices partition the factors of the target.
- localNodup : localFactors.Nodup
No lifted-factor index occurs twice in the remaining list.
- localSupport : localFactors.toFinset = liftedSubsetOfModPSubset data (core.directLiftData B data) ⋯ support
The remaining list contains exactly the lifted indices of
support.
Instances For
The accepted head split is precisely the irreducible support containing the head, and its remaining list is the exact support complement.
Semantic contract for a completed direct recursive search.
The returned factors multiply to the target polynomial.
- irreducible (factor : Hex.ZPoly) : factor ∈ factors → Irreducible (HexPolyZMathlib.toPolynomial factor)
Every returned factor is irreducible.
- normalized (factor : Hex.ZPoly) : factor ∈ factors → Hex.normalizeFactorSign factor = factor
Every returned factor uses the chosen sign normalization.
- degreePos (factor : Hex.ZPoly) : factor ∈ factors → 0 < Hex.DensePoly.natDegree factor
Every returned factor has positive degree.
Instances For
Every completed recursive direct search is an irreducible factorization of its current target. A resource decline has no mathematical claim.
End-to-end contract for the public direct search over the one full lifted basis.
The executable validity guard is implied by the proved direct-search contract.
A successful run from a selected direct prime is an irreducible factorization of its indexed direct-coordinate polynomial.
A successful run of the sole classical engine is an irreducible factorization of its indexed direct-coordinate polynomial.