Hadamard's bound applied to the Sylvester matrix defining the integer resultant.
A coefficientwise integer bound on two polynomials gives a completely elementary resultant bound. This is the Leibniz/Sylvester estimate used by the executable BHKS precision cap.
If the first d columns of an integer matrix are entrywise divisible by m,
then m ^ d divides the determinant.
The Fin (d + n) indexing matches the two natural Sylvester column blocks:
j.castAdd n addresses the left block of d columns, while the remaining
columns are unconstrained.
If any specified d distinct columns of an integer matrix are entrywise
divisible by m, then m ^ d divides the determinant.
Abstract Sylvester-column valuation criterion for integer resultants.
If a determinant-preserving Sylvester column transformation produces d
distinct columns whose entries are all divisible by m, then m ^ d divides
the resultant. This is the determinant argument needed by the CLD/logarithmic
derivative argument: downstream code supplies the transformed matrix and column
divisibility witnesses directly, without assuming that the selected local
factor divides the auxiliary polynomial modulo m.
Prime-power form of dvd_resultant_of_sylvester_cols.
The hypotheses deliberately mention only the Sylvester-column valuation data.
For BHKS/CLD use, the selected monic local factor q of degree d explains
where the d column directions come from, while the actual CLD coefficient
congruences are packaged in hcols. No divisibility hypothesis
q.map _ ∣ H.map _ is required.
Replacing a column of a square matrix by A.mulVec w; the linear combination
of all columns with coefficients w; multiplies the determinant by the
coefficient w p of the replaced column.
This is the determinant-preserving column-operation mechanism: when the
replaced column appears in the combination with a unit coefficient (w p = 1,
the monic-triangular case), the determinant is preserved exactly. It is the
column-form repackaging of Matrix.det_updateCol_sum against mulVec.
Mignotte-style coefficient bound on the integer resultant of two
polynomials: bound the absolute value of Polynomial.resultant f g by the
product of the polynomial coefficient l2norms, with the standard exponents
appearing in BHKS.
The upstream resultant nonvanishing theorem specialized to integer polynomials.
Mapping an integer resultant to ℚ agrees with taking the resultant after
mapping both input polynomials to ℚ.
The integer resultant vanishes exactly when the rationally transported polynomials are nontrivially non-coprime.
Contrapositive form useful when the BHKS method proves coprimality after
transporting an integer-polynomial pair to ℚ.
An integer resultant against a monic polynomial is nonzero when no monic irreducible integer factor of the first polynomial divides the second.
The proof extracts a monic irreducible factor of the rational gcd, descends it through Gauss's lemma, and uses monic division to descend divisibility of the possibly non-primitive second polynomial.
An integer resultant against a nonzero polynomial is nonzero when no irreducible integer factor of the first polynomial divides the second.
This is the direct-coordinate form of
int_resultant_ne_zero_of_no_monic_irreducible_common_factor: a primitive
nonmonic input has no reason to admit monic integer factors. A hypothetical
rational common factor is cleared of denominators, replaced by its primitive
part, and descended through Gauss's lemma.
Integer witnesses from a ZMod n divisibility of mapped integer polynomials.
If q divides f after reducing both modulo n, then there are honest integer
polynomial witnesses a, r with f = q * a + C n * r. No monicity hypothesis is
needed: surjectivity of ℤ → ZMod n lifts the modular quotient, and the residual
f - q * a is coefficientwise divisible by n.
A shifted polynomial belongs to degreeLT when its natural degree is
strictly below the bound.
Negated shifted-polynomial version of
mul_X_pow_mem_degreeLT_of_natDegree_lt, used by the left component of the
common-factor Sylvester syzygy.
Common-factor syzygy for the Sylvester map.
If f = q * a and g = q * b, then the shifted pair
(-a * X^t, b * X^t) is killed by the Sylvester map for (f, g). Later
column-reduction work uses the q.natDegree shifts of this identity after
reducing explicit quotient/remainder witnesses modulo m.
Scalar-shifted common-factor syzygy for the Sylvester map.
When f and g share the factor q only after reducing modulo a scalar c
; recorded by the explicit witnesses f = q * a + C c * r and
g = q * b + C c * s; the shifted pair (-a * X^t, b * X^t) is no longer
killed by the Sylvester map, but its image is the scalar multiple
C c * ((r * b - s * a) * X^t).
This is the correspondence from the exact syzygy sylvesterMap_commonFactor_syzygy
(the c = 0 case) to the divisibility used by the column-reduction proof: the
linear combination of Sylvester columns selected by (-a * X^t, b * X^t) is
entrywise divisible by c. Taking t < q.natDegree shifts gives d
independent such combinations.
Each entry of the Sylvester column combination selected by the shifted
common-factor direction (-a * X^t, b * X^t) is the scalar c times a fixed
coefficient.
The coordinate vector of the direction in the product basis multiplies the
Sylvester matrix to the coordinate vector of the image
C c * ((r * b - s * a) * X^t) (sylvesterMap_commonFactor_smul), whose
coefficients are visibly c-multiples. Hence the selected column combination
is entrywise divisible by c: this is the per-entry input the determinant
column-reduction needs once the q.natDegree shifts are assembled.
The monic-triangular column-reduction step for the Sylvester matrix.
Write w for the coordinate vector of the shifted common-factor direction
(-a * X^t, b * X^t). Replacing column p of the Sylvester matrix S by the
combination S.mulVec w (the syzygy column):
multiplies the determinant by the pivot coefficient
w p(det_updateCol_mulVec); in the monic-triangular casew p = 1this is a determinant-preserving operation, andproduces a column whose every entry is divisible by the scalar
c(sylvester_mulVec_commonFactor_smul).
Assembling this step over the d = q.natDegree shifts t < d, with the pivots
chosen so each w p = 1, gives the matrix A' of the column-reduction target:
A'.det = S.det with d columns entrywise divisible by c. The remaining work
is the bookkeeping that the chosen pivots carry unit coefficients (a leading
coefficient of the cofactor, hence 1 under the monic hypothesis) and that the
combinations reference only as-yet-unreplaced columns.
General Sylvester column-image identity.
The Sylvester matrix applied (mulVec) to the coordinate vector of a direction
(u, w) in the product basis reads off, entry by entry, the coefficients of the
image polynomial f * w + g * u under the Sylvester map. This is the
direction-independent argument behind the common-factor specialisation
sylvester_mulVec_commonFactor_smul: divisibility of a selected column
combination reduces to divisibility of the coefficients of f * w + g * u.
Each entry of the Sylvester column combination selected by the CLD syzygy
direction (q * X^t, -q' * X^t) is divisible by the scalar c.
The CLD syzygy hypothesis records that the monic selected factor q of f
satisfies g * q - f * q' = C c * z; for the BHKS application c = p ^ k, f
the input polynomial, g the auxiliary polynomial, and the congruence supplied
by cldQuotientMod_congr_mul_derivative (rearranged so the divisor q does not
have to divide the auxiliary polynomial g). The selected column combination is
the coordinate image of (q * X^t, -q' * X^t), whose Sylvester image is
(g * q - f * q') * X^t = C c * (z * X^t); visibly a c-multiple entrywise.
This is the per-entry input the determinant column-reduction needs once the
d = q.natDegree shifts t < d are assembled into the d selected columns.
Value of degreeLT.basisProd's coordinate functional on a left-block index:
the coordinate at i₁.castAdd n reads off the i₁-th coefficient of the first
component.
Value of degreeLT.basisProd's coordinate functional on a right-block index:
the coordinate at i₂.natAdd m reads off the i₂-th coefficient of the second
component.
The column-reduction transformation matrix for the common-factor Sylvester reduction.
In the natural Fin (m + n) Sylvester column layout, columns m + (n - d) .. m + n - 1 (the top d columns of the f-shift block) are the pivot columns.
This matrix is the identity except on those d pivot columns, where column
m + (n - d) + t carries the coordinate vector of the shifted common-factor
direction (-a * X^t, b * X^t); its left m entries are the coefficients of
-a * X^t, its right n entries those of b * X^t.
Multiplying the Sylvester matrix S on the right by this matrix replaces each
pivot column by the syzygy combination S.mulVec (direction) while leaving the
others fixed. The matrix is upper triangular with diagonal entry b.coeff (n-d)
at each pivot (and 1 elsewhere), so det = (b.coeff (n-d)) ^ d; under a monic
cofactor b this diagonal entry is 1 and the determinant is preserved.
Equations
- One or more equations did not get rendered due to their size.
Instances For
colReduceTransform is upper triangular: below-diagonal entries vanish. The
pivot columns are supported on rows ≤ the pivot because -a * X^t lives in
degreeLT m (left block, all rows < m ≤ pivot) and b * X^t has degree
≤ (n - d) + t (right block, capped at the pivot row), using b.natDegree ≤ n - d.
The determinant of colReduceTransform is (b.coeff (n - d)) ^ d.
The pivot column m + (n - d) + t of colReduceTransform is the coordinate
vector of the shifted common-factor direction (-a * X^t, b * X^t) in
degreeLT.basisProd.
Assembled common-factor column reduction for the Sylvester matrix.
Write S = sylvester (q*a + C c*r) (q*b + C c*s) m n for the Sylvester matrix of
two polynomials sharing the factor q modulo the scalar c (recorded by the
explicit witnesses f = q*a + C c*r, g = q*b + C c*s). Right-multiplying S by
colReduceTransform a b m n d produces a matrix A' whose
determinant is
(b.coeff (n - d)) ^ d * S.det; the cofactor leading coefficient raised to thed = q.natDegreeshifts; under a monic cofactorb(sob.coeff (n - d) = 1) this is exactlyS.det, andtop
df-shift columns (the pivotsm + (n - d) + tfort : Fin d) are entrywise divisible byc.
This is the matrix A' that #6858 feeds to det_dvd_of_left_cols_dvd (after a
column reindex moving the d divisible columns to the front) to obtain
c ^ d ∣ S.det = ± resultant. The degree side conditions a.natDegree + d ≤ m,
b.natDegree + d ≤ n are the natural cofactor-degree bounds (deg a = m - d,
deg b = n - d); hf, hg bound the witnessed polynomials.
Explicit-witness common-factor divisibility for integer resultants.
If f and g share a monic degree-d factor q modulo m, recorded by
integer witnesses f = q*a + C m*r and g = q*b + C m*s, and the cofactor
pivot is coprime to m, then m ^ d divides the integer resultant. The
column transform contributes pivot ^ d; coprimality cancels that harmless
factor from the determinant divisibility.
Monic-cofactor form of commonFactor_dvd_resultant: if the right cofactor b
is monic and has the expected degree g.natDegree - d, then the pivot
coefficient required by the column reduction is automatically 1.
BHKS Lemma 3.2 modular-resultant divisibility, in the form downstream Hensel/CLD code consumes.
If a monic degree-d polynomial q divides both f and g after reduction
modulo p ^ k, with the leading coefficient of nonzero f a unit modulo
p ^ k and d not exceeding either degree, then
p ^ (k * d) divides the integer resultant of f and g.
The exponent is k * d, not merely k: the monic common factor q contributes
d independent Sylvester column directions, each carrying one factor of the
modulus p ^ k, so the column reduction (commonFactor_dvd_resultant) turns
those d directions into (p ^ k) ^ d = p ^ (k * d) dividing the resultant.
The leading coefficient of f supplies the coprime pivot the reduction needs;
the result is read off the swapped pair via Polynomial.resultant_comm.
Common-factor resultant divisibility without an auxiliary-degree hypothesis.
If the auxiliary has degree at least the monic modular common factor, this is
pow_dvd_resultant_of_map_dvd. Otherwise modular divisibility by that monic
factor forces the entire auxiliary to vanish modulo p^k; hence it is a scalar
multiple of p^k, and resultant homogeneity supplies at least d copies of
that scalar because d ≤ f.natDegree.
The CLD-syzygy column-reduction transform for the Sylvester matrix.
In the Fin (m + n) layout of sylvester f g m n, the left block columns
d, d+1, …, 2d-1 are the pivot columns. Column d + t carries the coordinate
vector of the shifted CLD-syzygy direction (q * X^t, -q' * X^t) in
degreeLT.basisProd: its left m entries are the coefficients of the monic
q * X^t, its right n entries those of -q' * X^t. Every other column is the
identity column.
Right-multiplying sylvester f g m n by this matrix replaces each pivot column
with the syzygy combination S.mulVec (direction) (entrywise divisible by the
syzygy scalar, via sylvester_mulVec_cld_syzygy) while leaving the others
fixed. The matrix is block-lower-triangular for the left/right partition; its
top-right block vanishes because the right columns stay identity; and its left
diagonal block is upper triangular with the monic leading 1 of q * X^t on
the diagonal, so det = 1. Unlike colReduceTransform, the monic pivot here is
the left component q, so the matrix is not triangular under the natural
order; the determinant is read off the block decomposition.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The determinant of cldColReduceTransform is 1: the left diagonal block is
upper triangular with the monic leading coefficient of q on its diagonal, and
the top-right block vanishes (the right columns are identity).
The pivot column d + t (in the left block) of cldColReduceTransform is the
coordinate vector of the shifted CLD-syzygy direction (q * X^t, -q' * X^t) in
degreeLT.basisProd.
CLD-syzygy resultant divisibility (BHKS Lemma 3.2, scalar form).
If a monic degree-d polynomial q and a witness z record the CLD syzygy
g * q - f * q' = C c * z, then c ^ d divides the integer resultant of f
and g. Crucially, no divisibility hypothesis q ∣ g (or its modular form) is
assumed: the syzygy provides d Sylvester column directions
(q * X^t, -q' * X^t) whose images are c-multiples, and the monic leading 1
of each q * X^t makes the column-reduction transform determinant-preserving.
The degree bounds are intrinsic to the syzygy method: the d shifts of q * X^t
must lie in degreeLT f.natDegree (forcing 2 * d ≤ f.natDegree), and the d
shifts of -q' * X^t must lie in degreeLT g.natDegree (forcing
2 * d ≤ g.natDegree + 1). The first is the deg input ≥ 2d constraint flagged
in BHKS Lemma 3.2; the second is the analogous bound on the auxiliary-polynomial
degree, which downstream callers must also discharge (or fall back to the
cut-based argument for small factors).
Prime-power form of cld_syzygy_dvd_resultant (BHKS Lemma 3.2, as consumed by
the Hensel/CLD layer). With the syzygy scalar c = p ^ k, the d column
directions each carry one factor of p ^ k, so p ^ (k * d) divides the
resultant. No hypothesis that the selected factor divides the auxiliary
polynomial modulo p ^ k is required.