Eisenstein's criterion
A proof of a slight generalisation of Eisenstein's criterion for the irreducibility of a polynomial over an integral domain.
theorem
polynomial.eisenstein_criterion_aux.map_eq_C_mul_X_pow_of_forall_coeff_mem
{R : Type u_1}
[integral_domain R]
{f : polynomial R}
{P : ideal R} :
(∀ (n : ℕ), ↑n < f.degree → f.coeff n ∈ P) → f ≠ 0 → polynomial.map (ideal.quotient.mk P) f = ⇑polynomial.C (⇑(ideal.quotient.mk P) f.leading_coeff) * polynomial.X ^ f.nat_degree
theorem
polynomial.eisenstein_criterion_aux.le_nat_degree_of_map_eq_mul_X_pow
{R : Type u_1}
[integral_domain R]
{n : ℕ}
{P : ideal R}
(hP : P.is_prime)
{q : polynomial R}
{c : polynomial P.quotient} :
polynomial.map (ideal.quotient.mk P) q = c * polynomial.X ^ n → c.degree = 0 → n ≤ q.nat_degree
theorem
polynomial.eisenstein_criterion_aux.eval_zero_mem_ideal_of_eq_mul_X_pow
{R : Type u_1}
[integral_domain R]
{n : ℕ}
{P : ideal R}
{q : polynomial R}
{c : polynomial P.quotient} :
polynomial.map (ideal.quotient.mk P) q = c * polynomial.X ^ n → 0 < n → polynomial.eval 0 q ∈ P
theorem
polynomial.eisenstein_criterion_aux.is_unit_of_nat_degree_eq_zero_of_forall_dvd_is_unit
{R : Type u_1}
[integral_domain R]
{p q : polynomial R} :
(∀ (x : R), ⇑polynomial.C x ∣ p * q → is_unit x) → p.nat_degree = 0 → is_unit p
theorem
polynomial.irreducible_of_eisenstein_criterion
{R : Type u_1}
[integral_domain R]
{f : polynomial R}
{P : ideal R} :
If f
is a non constant polynomial with coefficients in R
, and P
is a prime ideal in R
,
then if every coefficient in R
except the leading coefficient is in P
, and
the trailing coefficient is not in P^2
and no non units in R
divide f
, then f
is
irreducible.