Squarefree homogenizations and the reflection #
Candidates for Mathlib.Algebra.Polynomial.Homogenize: when the homogenization of a polynomial is
squarefree, and the homogenization of its reflection.
Main statements #
Polynomial.homogenize_eq_homogenize_natDegree_mul: the homogenizations ofpof degreen ≥ p.natDegreeare that of degreep.natDegreetimes powers of the second variable.Polynomial.squarefree_of_squarefree_homogenize: over a commutative semiring without zero divisors, a polynomial with a squarefree homogenization is squarefree.Polynomial.squarefree_homogenize_iff: for a polynomialpover a domain andn ≥ p.natDegree, the homogenization of degreenis squarefree if and only ifpis squarefree andn ≤ p.natDegree + 1.Polynomial.homogenize_reflect: the homogenization of degreenof the reflection ofpin degreenis that ofpwith the two variables exchanged, for everypandn.Polynomial.squarefree_homogenize_reflect_iff: so the reflection does not change whether the homogenization is squarefree.Polynomial.squarefree_homogenize_iff_squarefree_reflect: forn ≥ p.natDegree, the homogenization of degreenof a polynomial over a domain is squarefree exactly when the reflection ofpin degreenis, ifnexceeds the degree of the reflection by at most one.
Proof #
For n ≥ p.natDegree + 2, X 1 ^ 2 divides the homogenization
(Polynomial.homogenize_eq_homogenize_natDegree_mul), and if a * a divides p, the square of the
homogenization of a divides it (Polynomial.squarefree_of_squarefree_homogenize). Conversely, let
A * A divide the homogenization for n ≤ p.natDegree + 1: then A is homogeneous
(MvPolynomial.IsHomogeneous.of_mul_left), X 1 does not divide it, since
X 1 ^ (n - p.natDegree) is the largest power of X 1 that divides the homogenization
(Polynomial.not_X_one_dvd_homogenize_natDegree), and the square of its value at (X, 1) divides
p, so that this value is a unit; hence A is a unit. The reflection compares the coefficients of
the two homogenizations, and the exchange of the variables is a ring automorphism, which preserves
squarefreeness (MulEquiv.squarefree_iff). Mathlib's file does not import squarefreeness.
For n ≥ p.natDegree, the homogenization of degree n of p is that of degree p.natDegree
times the power n - p.natDegree of the second variable.
The second variable does not divide the homogenization of degree p.natDegree of a polynomial
p ≠ 0: the coefficient of X 0 ^ p.natDegree there is the leading coefficient of p, while every
multiple of X 1 has the coefficient 0 there.
A polynomial over a commutative semiring without zero divisors is squarefree if some
homogenization of it is, of degree n ≥ p.natDegree.
The homogenization of degree n of the reflection of p in degree n is that of p with
the two variables exchanged, for every p and n: both see only the coefficients of p up to
n.
The homogenization of degree n ≥ p.natDegree of a polynomial p over a domain is squarefree
if and only if p is squarefree and n exceeds the degree of p by at most one; for larger n,
X 1 ^ 2 divides it.
For n ≥ p.natDegree, the homogenization of degree n of a polynomial p over a domain is
squarefree exactly when the reflection of p in degree n is, if n exceeds the degree of the
reflection by at most one: the homogenization of degree n of the reflection is that of p with
the variables exchanged (Polynomial.homogenize_reflect).