Documentation

Mathlib.RingTheory.Polynomial.Content

GCD structures on polynomials #

Definitions and basic results about polynomials over GCD domains, particularly their contents and primitive polynomials.

Main Definitions #

Let p : R[X].

Main Results #

Note #

This has nothing to do with minimal polynomials of primitive elements in finite fields.

A polynomial is primitive when the only constant polynomials dividing it are units. Note: This has nothing to do with minimal polynomials of primitive elements in finite fields.

Instances For
    theorem Polynomial.isPrimitive_iff_isUnit_of_C_dvd {R : Type u_1} [CommSemiring R] {p : Polynomial R} :
    p.IsPrimitive ↔ βˆ€ (r : R), C r ∣ p β†’ IsUnit r
    theorem Polynomial.IsPrimitive.ne_zero {R : Type u_1} [CommSemiring R] [Nontrivial R] {p : Polynomial R} (hp : p.IsPrimitive) :
    p β‰  0
    theorem Polynomial.isPrimitive_of_dvd {R : Type u_1} [CommSemiring R] {p q : Polynomial R} (hp : p.IsPrimitive) (hq : q ∣ p) :
    theorem Irreducible.isPrimitive {R : Type u_1} [CommSemiring R] [NoZeroDivisors R] {p : Polynomial R} (hp : Irreducible p) (hp' : p.natDegree β‰  0) :

    An irreducible nonconstant polynomial over a domain is primitive.

    @[simp]
    theorem Polynomial.isPrimitive_iff_ne_zero {F : Type u_2} [Field F] (p : Polynomial F) :
    p.IsPrimitive ↔ p β‰  0

    In a field, the notion of primitive polynomials is degenerate.

    p.content is the gcd of the coefficients of p.

    Instances For
      @[simp]
      theorem Polynomial.content_X_pow {R : Type u_1} [CommRing R] [NormalizedGCDMonoid R] {k : β„•} :
      (X ^ k).content = 1
      @[simp]
      theorem Polynomial.content_monomial {R : Type u_1} [CommRing R] [NormalizedGCDMonoid R] {r : R} {k : β„•} :
      theorem Polynomial.dvd_content_iff_C_dvd {R : Type u_1} [CommRing R] [NormalizedGCDMonoid R] {p : Polynomial R} {r : R} :
      r ∣ p.content ↔ C r ∣ p
      noncomputable def Polynomial.primPart {R : Type u_1} [CommRing R] [NormalizedGCDMonoid R] (p : Polynomial R) :

      The primitive part of a polynomial p is the primitive polynomial gained by dividing p by p.content. If p = 0, then p.primPart = 1.

      Instances For
        theorem Polynomial.aeval_primPart_eq_zero {R : Type u_1} [CommRing R] [NormalizedGCDMonoid R] {S : Type u_2} [Ring S] [IsDomain S] [Algebra R S] [Module.IsTorsionFree R S] {p : Polynomial R} {s : S} (hpzero : p β‰  0) (hp : (aeval s) p = 0) :
        (aeval s) p.primPart = 0
        theorem Polynomial.evalβ‚‚_primPart_eq_zero {R : Type u_1} [CommRing R] [NormalizedGCDMonoid R] {S : Type u_2} [CommSemiring S] [IsDomain S] {f : R β†’+* S} (hinj : Function.Injective ⇑f) {p : Polynomial R} {s : S} (hpzero : p β‰  0) (hp : evalβ‚‚ f s p = 0) :
        theorem Polynomial.gcd_content_eq_of_dvd_sub {R : Type u_1} [CommRing R] [NormalizedGCDMonoid R] {a : R} {p q : Polynomial R} (h : C a ∣ p - q) :
        @[simp]
        theorem Polynomial.primPart_mul {R : Type u_1} [CommRing R] [NormalizedGCDMonoid R] {p q : Polynomial R} (h0 : p * q β‰  0) :
        (p * q).primPart = p.primPart * q.primPart
        theorem Polynomial.IsPrimitive.dvd_primPart_iff_dvd {R : Type u_1} [CommRing R] [NormalizedGCDMonoid R] {p q : Polynomial R} (hp : p.IsPrimitive) (hq : q β‰  0) :
        p ∣ q.primPart ↔ p ∣ q
        theorem Polynomial.exists_primitive_lcm_of_isPrimitive {R : Type u_1} [CommRing R] [NormalizedGCDMonoid R] {p q : Polynomial R} (hp : p.IsPrimitive) (hq : q.IsPrimitive) :
        βˆƒ (r : Polynomial R), r.IsPrimitive ∧ βˆ€ (s : Polynomial R), p ∣ s ∧ q ∣ s ↔ r ∣ s
        theorem Polynomial.dvd_iff_content_dvd_content_and_primPart_dvd_primPart {R : Type u_1} [CommRing R] [NormalizedGCDMonoid R] {p q : Polynomial R} (hq : q β‰  0) :
        p ∣ q ↔ p.content ∣ q.content ∧ p.primPart ∣ q.primPart
        @[implicit_reducible, instance 100]