Documentation

Mathlib.RingTheory.Polynomial.Basic

Ring-theoretic supplement of Algebra.Polynomial. #

Main results #

The R-submodule of R[X] consisting of polynomials of degree ≀ n.

Equations
    Instances For

      The R-submodule of R[X] consisting of polynomials of degree < n.

      Equations
        Instances For
          def Polynomial.degreeLTEquiv (R : Type u_2) [Semiring R] (n : β„•) :
          β†₯(degreeLT R n) ≃ₗ[R] Fin n β†’ R

          The first n coefficients on degreeLT n form a linear equivalence with Fin n β†’ R.

          Equations
            Instances For
              theorem Polynomial.eval_eq_sum_degreeLTEquiv {R : Type u} [Semiring R] {n : β„•} {p : Polynomial R} (hp : p ∈ degreeLT R n) (x : R) :
              eval x p = βˆ‘ i : Fin n, (degreeLTEquiv R n) ⟨p, hp⟩ i * x ^ ↑i

              The equivalence between monic polynomials of degree n and polynomials of degree less than n, formed by adding a term X ^ n.

              Equations
                Instances For
                  theorem Polynomial.exists_degree_le_of_mem_span {R : Type u} [Semiring R] {s : Set (Polynomial R)} {p : Polynomial R} (hs : s.Nonempty) (hp : p ∈ Submodule.span R s) :
                  βˆƒ p' ∈ s, p.degree ≀ p'.degree

                  For every polynomial p in the span of a set s : Set R[X], there exists a polynomial of p' ∈ s with higher degree. See also Polynomial.exists_degree_le_of_mem_span_of_finite.

                  theorem Polynomial.exists_degree_le_of_mem_span_of_finite {R : Type u} [Semiring R] {s : Set (Polynomial R)} (s_fin : s.Finite) (hs : s.Nonempty) :
                  βˆƒ p' ∈ s, βˆ€ p ∈ Submodule.span R s, p.degree ≀ p'.degree

                  A stronger version of Polynomial.exists_degree_le_of_mem_span under the assumption that the set s : R[X] is finite. There exists a polynomial p' ∈ s whose degree dominates the degree of every element of p ∈ span R s.

                  theorem Polynomial.span_le_degreeLE_of_finite {R : Type u} [Semiring R] {s : Set (Polynomial R)} (s_fin : s.Finite) :
                  βˆƒ (n : β„•), Submodule.span R s ≀ degreeLE R ↑n

                  The span of every finite set of polynomials is contained in a degreeLE n for some n.

                  theorem Polynomial.span_of_finite_le_degreeLT {R : Type u} [Semiring R] {s : Set (Polynomial R)} (s_fin : s.Finite) :
                  βˆƒ (n : β„•), Submodule.span R s ≀ degreeLT R n

                  The span of every finite set of polynomials is contained in a degreeLT n for some n.

                  If R is a nontrivial ring, the polynomials R[X] are not finite as an R-module. When R is a field, this is equivalent to R[X] being an infinite-dimensional vector space over R.

                  theorem Polynomial.geom_sum_X_comp_X_add_one_eq_sum {R : Type u} [Semiring R] (n : β„•) :
                  (βˆ‘ i ∈ Finset.range n, X ^ i).comp (X + 1) = βˆ‘ i ∈ Finset.range n, ↑(n.choose (i + 1)) * X ^ i
                  theorem Polynomial.Monic.geom_sum {R : Type u} [Semiring R] {P : Polynomial R} (hP : P.Monic) (hdeg : 0 < P.natDegree) {n : β„•} (hn : n β‰  0) :
                  (βˆ‘ i ∈ Finset.range n, P ^ i).Monic
                  theorem Polynomial.Monic.geom_sum' {R : Type u} [Semiring R] {P : Polynomial R} (hP : P.Monic) (hdeg : 0 < P.degree) {n : β„•} (hn : n β‰  0) :
                  (βˆ‘ i ∈ Finset.range n, P ^ i).Monic
                  theorem Polynomial.monic_geom_sum_X {R : Type u} [Semiring R] {n : β„•} (hn : n β‰  0) :
                  (βˆ‘ i ∈ Finset.range n, X ^ i).Monic
                  def Polynomial.restriction {R : Type u} [Ring R] (p : Polynomial R) :

                  Given a polynomial, return the polynomial whose coefficients are in the ring closure of the original coefficients.

                  Equations
                    Instances For
                      @[simp]
                      theorem Polynomial.coeff_restriction {R : Type u} [Ring R] {p : Polynomial R} {n : β„•} :
                      ↑(p.restriction.coeff n) = p.coeff n

                      Transport an ideal of R[X] to an R-submodule of R[X].

                      Equations
                        Instances For

                          Given an ideal I of R[X], make the R-submodule of I consisting of polynomials of degree ≀ n.

                          Equations
                            Instances For
                              def Ideal.leadingCoeffNth {R : Type u} [Semiring R] (I : Ideal (Polynomial R)) (n : β„•) :

                              Given an ideal I of R[X], make the ideal in R of leading coefficients of polynomials in I with degree ≀ n.

                              Equations
                                Instances For
                                  def Ideal.leadingCoeff {R : Type u} [Semiring R] (I : Ideal (Polynomial R)) :

                                  Given an ideal I in R[X], make the ideal in R of the leading coefficients in I.

                                  Equations
                                    Instances For

                                      If every coefficient of a polynomial is in an ideal I, then so is the polynomial itself

                                      theorem Ideal.mem_map_C_iff {R : Type u} [CommSemiring R] {I : Ideal R} {f : Polynomial R} :
                                      f ∈ map Polynomial.C I ↔ βˆ€ (n : β„•), f.coeff n ∈ I

                                      The push-forward of an ideal I of R to R[X] via inclusion is exactly the set of polynomials whose coefficients are in I

                                      theorem Ideal.mem_leadingCoeffNth {R : Type u} [CommSemiring R] (I : Ideal (Polynomial R)) (n : β„•) (x : R) :
                                      x ∈ I.leadingCoeffNth n ↔ βˆƒ p ∈ I, p.degree ≀ ↑n ∧ p.leadingCoeff = x
                                      theorem Ideal.mem_leadingCoeff {R : Type u} [CommSemiring R] (I : Ideal (Polynomial R)) (x : R) :
                                      x ∈ I.leadingCoeff ↔ βˆƒ p ∈ I, p.leadingCoeff = x
                                      theorem Polynomial.coeff_prod_mem_ideal_pow_tsub {R : Type u} [CommSemiring R] {ΞΉ : Type u_2} (s : Finset ΞΉ) (f : ΞΉ β†’ Polynomial R) (I : Ideal R) (n : ΞΉ β†’ β„•) (h : βˆ€ i ∈ s, βˆ€ (k : β„•), (f i).coeff k ∈ I ^ (n i - k)) (k : β„•) :
                                      (s.prod f).coeff k ∈ I ^ (s.sum n - k)

                                      If I is an ideal, and pα΅’ is a finite family of polynomials each satisfying βˆ€ k, (pα΅’)β‚– ∈ Iⁿⁱ⁻ᡏ for some nα΅’, then p = ∏ pα΅’ also satisfies βˆ€ k, pβ‚– ∈ Iⁿ⁻ᡏ with n = βˆ‘ nα΅’.

                                      R[X] is never a field for any ring R.

                                      theorem Ideal.eq_zero_of_constant_mem_of_maximal {R : Type u} [Ring R] (hR : IsField R) (I : Ideal (Polynomial R)) [hI : I.IsMaximal] (x : R) (hx : Polynomial.C x ∈ I) :
                                      x = 0

                                      The only constant in a maximal ideal over a field is 0.

                                      If P is a prime ideal of R, then P.R[x] is a prime ideal of R[x].

                                      If P is a prime ideal of R, then P.R[x] is a prime ideal of R[x].

                                      theorem span_le_of_C_coeff_mem {R : Type u} [Semiring R] {f : Polynomial R} {I : Ideal (Polynomial R)} (cf : βˆ€ (i : β„•), Polynomial.C (f.coeff i) ∈ I) :

                                      If the coefficients of a polynomial belong to an ideal, then that ideal contains the ideal spanned by the coefficients of the polynomial.

                                      theorem exists_C_coeff_notMem {R : Type u} [Semiring R] {f : Polynomial R} {I : Ideal (Polynomial R)} :
                                      f βˆ‰ I β†’ βˆƒ (i : β„•), Polynomial.C (f.coeff i) βˆ‰ I
                                      theorem MvPolynomial.prime_C_iff {R : Type u} (Οƒ : Type v) [CommRing R] {r : R} :
                                      theorem MvPolynomial.prime_rename_iff {R : Type u} {Οƒ : Type v} [CommRing R] (s : Set Οƒ) {p : MvPolynomial (↑s) R} :

                                      Hilbert basis theorem: a polynomial ring over a Noetherian ring is a Noetherian ring.

                                      theorem Polynomial.linearIndependent_powers_iff_aeval {R : Type u} {M : Type w} [CommRing R] [AddCommGroup M] [Module R M] (f : M β†’β‚—[R] M) (v : M) :
                                      (LinearIndependent R fun (n : β„•) => (f ^ n) v) ↔ βˆ€ (p : Polynomial R), ((aeval f) p) v = 0 β†’ p = 0
                                      theorem Polynomial.sup_aeval_range_eq_top_of_isCoprime {R : Type u} {M : Type w} [CommRing R] [AddCommGroup M] [Module R M] (f : M β†’β‚—[R] M) {p q : Polynomial R} (hpq : IsCoprime p q) :
                                      ((aeval f) p).range βŠ” ((aeval f) q).range = ⊀
                                      theorem Polynomial.sup_ker_aeval_le_ker_aeval_mul {R : Type u} {M : Type w} [CommRing R] [AddCommGroup M] [Module R M] {f : M β†’β‚—[R] M} {p q : Polynomial R} :
                                      ((aeval f) p).ker βŠ” ((aeval f) q).ker ≀ ((aeval f) (p * q)).ker
                                      theorem Polynomial.sup_ker_aeval_eq_ker_aeval_mul_of_coprime {R : Type u} {M : Type w} [CommRing R] [AddCommGroup M] [Module R M] (f : M β†’β‚—[R] M) {p q : Polynomial R} (hpq : IsCoprime p q) :
                                      ((aeval f) p).ker βŠ” ((aeval f) q).ker = ((aeval f) (p * q)).ker
                                      theorem MvPolynomial.aeval_natDegree_le {Οƒ : Type v} {R : Type u_2} [CommSemiring R] {m n : β„•} (F : MvPolynomial Οƒ R) (hF : F.totalDegree ≀ m) (f : Οƒ β†’ Polynomial R) (hf : βˆ€ (i : Οƒ), (f i).natDegree ≀ n) :
                                      ((aeval f) F).natDegree ≀ m * n

                                      The multivariate polynomial ring in finitely many variables over a Noetherian ring is itself a Noetherian ring.

                                      theorem MvPolynomial.map_mvPolynomial_eq_evalβ‚‚ {R : Type u} {Οƒ : Type v} [CommRing R] {S : Type u_2} [CommSemiring S] [Finite Οƒ] (Ο• : MvPolynomial Οƒ R β†’+* S) (p : MvPolynomial Οƒ R) :
                                      Ο• p = evalβ‚‚ (Ο•.comp C) (fun (s : Οƒ) => Ο• (X s)) p
                                      theorem MvPolynomial.mem_ideal_of_coeff_mem_ideal {R : Type u} {Οƒ : Type v} [CommRing R] (I : Ideal (MvPolynomial Οƒ R)) (p : MvPolynomial Οƒ R) (hcoe : βˆ€ (m : Οƒ β†’β‚€ β„•), coeff m p ∈ Ideal.comap C I) :
                                      p ∈ I

                                      If every coefficient of a polynomial is in an ideal I, then so is the polynomial itself, multivariate version.

                                      theorem MvPolynomial.mem_map_C_iff {R : Type u} {Οƒ : Type v} [CommRing R] {I : Ideal R} {f : MvPolynomial Οƒ R} :
                                      f ∈ Ideal.map C I ↔ βˆ€ (m : Οƒ β†’β‚€ β„•), coeff m f ∈ I

                                      The push-forward of an ideal I of R to MvPolynomial Οƒ R via inclusion is exactly the set of polynomials whose coefficients are in I

                                      theorem MvPolynomial.ker_map {R : Type u} {S : Type u_1} {Οƒ : Type v} [CommRing R] [CommRing S] (f : R β†’+* S) :
                                      theorem MvPolynomial.ker_mapAlgHom {R : Type u} [CommRing R] {S₁ : Type u_2} {Sβ‚‚ : Type u_3} {Οƒ : Type u_4} [CommRing S₁] [CommRing Sβ‚‚] [Algebra R S₁] [Algebra R Sβ‚‚] (f : S₁ →ₐ[R] Sβ‚‚) :