Gauss's Lemma #
Gauss's Lemma is one of a few results pertaining to irreducibility of primitive polynomials.
Main Results #
IsIntegrallyClosed.eq_map_mul_C_of_dvd
: ifR
is integrally closed,K = Frac(R)
andg : K[X]
divides a monic polynomial with coefficients inR
, theng * (C g.leadingCoeff⁻¹)
has coefficients inR
Polynomial.Monic.irreducible_iff_irreducible_map_fraction_map
: A monic polynomial over an integrally closed domain is irreducible iff it is irreducible in a fraction fieldisIntegrallyClosed_iff'
: Integrally closed domains are precisely the domains for in which Gauss's lemma holds for monic polynomialsPolynomial.IsPrimitive.irreducible_iff_irreducible_map_fraction_map
: A primitive polynomial over a GCD domain is irreducible iff it is irreducible in a fraction fieldPolynomial.IsPrimitive.Int.irreducible_iff_irreducible_map_cast
: A primitive polynomial overℤ
is irreducible iff it is irreducible overℚ
.Polynomial.IsPrimitive.dvd_iff_fraction_map_dvd_fraction_map
: Two primitive polynomials over a GCD domain divide each other iff they do in a fraction field.Polynomial.IsPrimitive.Int.dvd_iff_map_cast_dvd_map_cast
: Two primitive polynomials overℤ
divide each other if they do inℚ
.
theorem
integralClosure.mem_lifts_of_monic_of_dvd_map
{R : Type u_1}
[CommRing R]
(K : Type u_2)
[Field K]
[Algebra R K]
{f : Polynomial R}
(hf : Polynomial.Monic f)
{g : Polynomial K}
(hg : Polynomial.Monic g)
(hd : g ∣ Polynomial.map (algebraMap R K) f)
:
g ∈ Polynomial.lifts (algebraMap { x // x ∈ integralClosure R K } K)
theorem
IsIntegrallyClosed.eq_map_mul_C_of_dvd
{R : Type u_1}
[CommRing R]
(K : Type u_2)
[Field K]
[Algebra R K]
[IsFractionRing R K]
[IsIntegrallyClosed R]
{f : Polynomial R}
(hf : Polynomial.Monic f)
{g : Polynomial K}
(hg : g ∣ Polynomial.map (algebraMap R K) f)
:
∃ g', Polynomial.map (algebraMap R K) g' * ↑Polynomial.C (Polynomial.leadingCoeff g) = g
If K = Frac(R)
and g : K[X]
divides a monic polynomial with coefficients in R
, then
g * (C g.leadingCoeff⁻¹)
has coefficients in R
theorem
Polynomial.IsPrimitive.isUnit_iff_isUnit_map_of_injective
{R : Type u_1}
[CommRing R]
{S : Type u_2}
[CommRing S]
[IsDomain S]
{φ : R →+* S}
(hinj : Function.Injective ↑φ)
{f : Polynomial R}
(hf : Polynomial.IsPrimitive f)
:
IsUnit f ↔ IsUnit (Polynomial.map φ f)
theorem
Polynomial.IsPrimitive.irreducible_of_irreducible_map_of_injective
{R : Type u_1}
[CommRing R]
{S : Type u_2}
[CommRing S]
[IsDomain S]
{φ : R →+* S}
(hinj : Function.Injective ↑φ)
{f : Polynomial R}
(hf : Polynomial.IsPrimitive f)
(h_irr : Irreducible (Polynomial.map φ f))
:
theorem
Polynomial.IsPrimitive.isUnit_iff_isUnit_map
{R : Type u_1}
[CommRing R]
{K : Type u_2}
[Field K]
[Algebra R K]
[IsFractionRing R K]
{p : Polynomial R}
(hp : Polynomial.IsPrimitive p)
:
IsUnit p ↔ IsUnit (Polynomial.map (algebraMap R K) p)
theorem
Polynomial.Monic.irreducible_iff_irreducible_map_fraction_map
{R : Type u_1}
[CommRing R]
{K : Type u_2}
[Field K]
[Algebra R K]
[IsFractionRing R K]
[IsIntegrallyClosed R]
{p : Polynomial R}
(h : Polynomial.Monic p)
:
Irreducible p ↔ Irreducible (Polynomial.map (algebraMap R K) p)
Gauss's Lemma for integrally closed domains states that a monic polynomial is irreducible iff it is irreducible in the fraction field.
theorem
Polynomial.isIntegrallyClosed_iff'
{R : Type u_1}
[CommRing R]
{K : Type u_2}
[Field K]
[Algebra R K]
[IsFractionRing R K]
[IsDomain R]
:
IsIntegrallyClosed R ↔ ∀ (p : Polynomial R), Polynomial.Monic p → (Irreducible p ↔ Irreducible (Polynomial.map (algebraMap R K) p))
Integrally closed domains are precisely the domains for in which Gauss's lemma holds for monic polynomials
theorem
Polynomial.Monic.dvd_of_fraction_map_dvd_fraction_map
{R : Type u_1}
[CommRing R]
{K : Type u_2}
[Field K]
[Algebra R K]
[IsFractionRing R K]
[IsIntegrallyClosed R]
{p : Polynomial R}
{q : Polynomial R}
(hp : Polynomial.Monic p)
(hq : Polynomial.Monic q)
(h : Polynomial.map (algebraMap R K) q ∣ Polynomial.map (algebraMap R K) p)
:
q ∣ p
theorem
Polynomial.Monic.dvd_iff_fraction_map_dvd_fraction_map
{R : Type u_1}
[CommRing R]
{K : Type u_2}
[Field K]
[Algebra R K]
[IsFractionRing R K]
[IsIntegrallyClosed R]
{p : Polynomial R}
{q : Polynomial R}
(hp : Polynomial.Monic p)
(hq : Polynomial.Monic q)
:
Polynomial.map (algebraMap R K) q ∣ Polynomial.map (algebraMap R K) p ↔ q ∣ p
theorem
Polynomial.isUnit_or_eq_zero_of_isUnit_integerNormalization_primPart
{R : Type u_1}
[CommRing R]
{K : Type u_2}
[Field K]
[Algebra R K]
[IsFractionRing R K]
[IsDomain R]
[NormalizedGCDMonoid R]
{p : Polynomial K}
(h0 : p ≠ 0)
(h : IsUnit (Polynomial.primPart (IsLocalization.integerNormalization (nonZeroDivisors R) p)))
:
IsUnit p
theorem
Polynomial.IsPrimitive.irreducible_iff_irreducible_map_fraction_map
{R : Type u_1}
[CommRing R]
{K : Type u_2}
[Field K]
[Algebra R K]
[IsFractionRing R K]
[IsDomain R]
[NormalizedGCDMonoid R]
{p : Polynomial R}
(hp : Polynomial.IsPrimitive p)
:
Irreducible p ↔ Irreducible (Polynomial.map (algebraMap R K) p)
Gauss's Lemma for GCD domains states that a primitive polynomial is irreducible iff it is irreducible in the fraction field.
theorem
Polynomial.IsPrimitive.dvd_of_fraction_map_dvd_fraction_map
{R : Type u_1}
[CommRing R]
{K : Type u_2}
[Field K]
[Algebra R K]
[IsFractionRing R K]
[IsDomain R]
[NormalizedGCDMonoid R]
{p : Polynomial R}
{q : Polynomial R}
(hp : Polynomial.IsPrimitive p)
(hq : Polynomial.IsPrimitive q)
(h_dvd : Polynomial.map (algebraMap R K) p ∣ Polynomial.map (algebraMap R K) q)
:
p ∣ q
theorem
Polynomial.IsPrimitive.dvd_iff_fraction_map_dvd_fraction_map
{R : Type u_1}
[CommRing R]
(K : Type u_2)
[Field K]
[Algebra R K]
[IsFractionRing R K]
[IsDomain R]
[NormalizedGCDMonoid R]
{p : Polynomial R}
{q : Polynomial R}
(hp : Polynomial.IsPrimitive p)
(hq : Polynomial.IsPrimitive q)
:
p ∣ q ↔ Polynomial.map (algebraMap R K) p ∣ Polynomial.map (algebraMap R K) q
theorem
Polynomial.IsPrimitive.Int.irreducible_iff_irreducible_map_cast
{p : Polynomial ℤ}
(hp : Polynomial.IsPrimitive p)
:
Gauss's Lemma for ℤ
states that a primitive integer polynomial is irreducible iff it is
irreducible over ℚ
.
theorem
Polynomial.IsPrimitive.Int.dvd_iff_map_cast_dvd_map_cast
(p : Polynomial ℤ)
(q : Polynomial ℤ)
(hp : Polynomial.IsPrimitive p)
(hq : Polynomial.IsPrimitive q)
:
p ∣ q ↔ Polynomial.map (Int.castRingHom ℚ) p ∣ Polynomial.map (Int.castRingHom ℚ) q