Commit 2022-12-06 17:02 fa256f00
View on Github →feat(data/polynomial): irreducibility criteria for (quadratic) monic polynomials (#17664)
- To show a monic polynomial
p
over a commutative semiring without zero divisors is irreducible, it suffices to show thatp ≠ 1
and that there doesn't exist a factorization into the product of two monic polynomials of positive degrees:monic.irreducible_iff_nat_degree
. - If such a factorization exists, one of the polynomial must have degree less than or equal to
p.nat_degree / 2
:monic.irreducible_iff_nat_degree'
. - To show a quadratic monic polynomial
p
is reducible, it suffices to it doesn't factor as(X+c)(X+c')
, i.e. there don't existc
andc'
that add up to the 1st coefficient and multiply up to the 0th coefficient:not_irreducible_iff_exists_add_mul_eq_coeff
. - Define the ring homomorphism
constant_coeff
in coeff.lean which is analogous to mv_polynomial.constant_coeff; use it to golf and generalizeis_unit_C
andeq_one_of_is_unit_of_monic
in monic.lean and various lemmas in ring_division.lean. - Add
monic.is_unit_iff
. - Golf some lemmas in erase_lead.lean. Inspired by #17631