Sign normalization changes an integer polynomial only by a unit.
Distinct irreducible integer factors have disjoint direct modular supports at the selected square-free prime.
The selected direct candidate, expressed on a modular support.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The good-prime leading coefficient remains nonzero in ZMod p, expressed
from the stronger precision-level gcd invariant owned by the direct lift.
Modulo the selected prime, a direct candidate is associated to the product of exactly its selected lifted factors.
The centered lift is congruent to the scaled lifted product. Its content is a
unit modulo p because that mapped polynomial is nonzero; primitive-part and
sign normalization therefore change it only by units. Finally the
leading-coefficient scale is itself a unit.
Divisibility between products of the cached distinct modular factors reflects subset containment.
Structural support containment for the direct candidate.
A normalized nonzero integer polynomial has positive leading coefficient.
Every normalized irreducible divisor of the primitive direct polynomial is recovered exactly from its unique modular support.
The direct support model retained by recursive recombination. Every remaining modular index belongs to exactly one irreducible divisor of the current target, and its direct candidate is that normalized factor.
- targetSquarefree : Squarefree (HexPolyZMathlib.toPolynomial target)
The current target has no repeated irreducible factors.
- existsSupport {factor : Hex.ZPoly} : Irreducible (HexPolyZMathlib.toPolynomial factor) → factor ∣ target → ∃ S ⊆ J, RepresentsIntegerFactorModP data factor S
Every irreducible divisor of the target has a support inside
J. - cover {i : ModPFactorIndex data} : i ∈ J → ∃ (factor : Hex.ZPoly) (S : ModPFactorSubset data), Irreducible (HexPolyZMathlib.toPolynomial factor) ∧ factor ∣ target ∧ S ⊆ J ∧ i ∈ S ∧ RepresentsIntegerFactorModP data factor S ∧ Hex.normalizeFactorSign factor = factor ∧ directSupportCandidate core B data S = factor
Every remaining modular index belongs to a recovered irreducible factor.
- pairwiseDisjoint {f g : Hex.ZPoly} {S T : ModPFactorSubset data} : Irreducible (HexPolyZMathlib.toPolynomial f) → f ∣ target → S ⊆ J → RepresentsIntegerFactorModP data f S → Irreducible (HexPolyZMathlib.toPolynomial g) → g ∣ target → T ⊆ J → RepresentsIntegerFactorModP data g T → ¬Associated (HexPolyZMathlib.toPolynomial f) (HexPolyZMathlib.toPolynomial g) → Disjoint S T
Nonassociated irreducible factors have disjoint modular supports.
- unique {f g : Hex.ZPoly} {S T : ModPFactorSubset data} : Irreducible (HexPolyZMathlib.toPolynomial f) → f ∣ target → S ⊆ J → RepresentsIntegerFactorModP data f S → Irreducible (HexPolyZMathlib.toPolynomial g) → g ∣ target → T ⊆ J → RepresentsIntegerFactorModP data g T → Associated (HexPolyZMathlib.toPolynomial f) (HexPolyZMathlib.toPolynomial g) → S = T
Associated irreducible factors have the same modular support.
Instances For
Construct the initial direct support partition from the selected cached good-prime factorization.
The support containing the distinguished head modular factor.
If an accepted direct candidate contains a modular index, then it contains the irreducible integer factor represented by the true support containing that index.
Factor the accepted candidate in ℤ[X]. The distinguished modular prime
factor divides its mapped normalized-factor product, so it divides the image
of one normalized integer factor. That factor has a support in the direct
partition containing the same modular index. Pairwise disjointness forces it
to be associated to the distinguished true factor.
The modular support of the distinguished true factor is contained in any accepted direct support containing the distinguished modular index.
Remove one emitted irreducible support and transport the partition to the exact quotient without selecting another prime or performing another lift.