mathlib documentation

data.mv_polynomial.comm_ring

Multivariate polynomials over a ring #

Many results about polynomials hold when the coefficient ring is a commutative semiring. Some stronger results can be derived when we assume this semiring is a ring.

This file does not define any new operations, but proves some of these stronger results.

Notation #

As in other polynomial files, we typically use the notation:

@[protected, instance]
noncomputable def mv_polynomial.comm_ring {R : Type u} {σ : Type u_1} [comm_ring R] :
Equations
@[simp]
theorem mv_polynomial.C_sub {R : Type u} (σ : Type u_1) (a a' : R) [comm_ring R] :
@[simp]
theorem mv_polynomial.C_neg {R : Type u} (σ : Type u_1) (a : R) [comm_ring R] :
@[simp]
theorem mv_polynomial.coeff_neg {R : Type u} (σ : Type u_1) [comm_ring R] (m : σ →₀ ) (p : mv_polynomial σ R) :
@[simp]
theorem mv_polynomial.coeff_sub {R : Type u} (σ : Type u_1) [comm_ring R] (m : σ →₀ ) (p q : mv_polynomial σ R) :
@[simp]
theorem mv_polynomial.support_neg {R : Type u} (σ : Type u_1) [comm_ring R] {p : mv_polynomial σ R} :
theorem mv_polynomial.support_sub {R : Type u} (σ : Type u_1) [comm_ring R] (p q : mv_polynomial σ R) :
theorem mv_polynomial.degrees_neg {R : Type u} {σ : Type u_1} [comm_ring R] (p : mv_polynomial σ R) :
theorem mv_polynomial.degrees_sub {R : Type u} {σ : Type u_1} [comm_ring R] (p q : mv_polynomial σ R) :
@[simp]
theorem mv_polynomial.vars_neg {R : Type u} {σ : Type u_1} [comm_ring R] (p : mv_polynomial σ R) :
(-p).vars = p.vars
theorem mv_polynomial.vars_sub_subset {R : Type u} {σ : Type u_1} [comm_ring R] (p q : mv_polynomial σ R) :
(p - q).vars p.vars q.vars
@[simp]
theorem mv_polynomial.vars_sub_of_disjoint {R : Type u} {σ : Type u_1} [comm_ring R] {p q : mv_polynomial σ R} (hpq : disjoint p.vars q.vars) :
(p - q).vars = p.vars q.vars
@[simp]
theorem mv_polynomial.eval₂_sub {R : Type u} {S : Type v} {σ : Type u_1} [comm_ring R] (p : mv_polynomial σ R) {q : mv_polynomial σ R} [comm_ring S] (f : R →+* S) (g : σ → S) :
@[simp]
theorem mv_polynomial.eval₂_neg {R : Type u} {S : Type v} {σ : Type u_1} [comm_ring R] (p : mv_polynomial σ R) [comm_ring S] (f : R →+* S) (g : σ → S) :
theorem mv_polynomial.hom_C {S : Type v} {σ : Type u_1} [comm_ring S] (f : mv_polynomial σ →+* S) (n : ) :
@[simp]
theorem mv_polynomial.eval₂_hom_X {S : Type v} [comm_ring S] {R : Type u} (c : →+* S) (f : mv_polynomial R →+* S) (x : mv_polynomial R ) :

A ring homomorphism f : Z[X_1, X_2, ...] → R is determined by the evaluations f(X_1), f(X_2), ...

noncomputable def mv_polynomial.hom_equiv {S : Type v} {σ : Type u_1} [comm_ring S] :
(mv_polynomial σ →+* S) (σ → S)

Ring homomorphisms out of integer polynomials on a type σ are the same as functions out of the type σ,

Equations
theorem mv_polynomial.degree_of_sub_lt {R : Type u} {σ : Type u_1} [comm_ring R] {x : σ} {f g : mv_polynomial σ R} {k : } (h : 0 < k) (hf : ∀ (m : σ →₀ ), m f.supportk m xmv_polynomial.coeff m f = mv_polynomial.coeff m g) (hg : ∀ (m : σ →₀ ), m g.supportk m xmv_polynomial.coeff m f = mv_polynomial.coeff m g) :
@[simp]
theorem mv_polynomial.total_degree_neg {R : Type u} {σ : Type u_1} [comm_ring R] (a : mv_polynomial σ R) :
theorem mv_polynomial.total_degree_sub {R : Type u} {σ : Type u_1} [comm_ring R] (a b : mv_polynomial σ R) :