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:

@[instance]
def mv_polynomial.comm_ring {R : Type u} {σ : Type u_1} [comm_ring R] :
Equations
@[instance]
def mv_polynomial.C.is_ring_hom {R : Type u} {σ : Type u_1} [comm_ring R] :
@[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.monomial_neg {R : Type u} (σ : Type u_1) [comm_ring R] (m : σ →₀ ) (a : R) :
@[simp]
theorem mv_polynomial.monomial_sub {R : Type u} (σ : Type u_1) [comm_ring R] (m : σ →₀ ) (a b : R) :
@[simp]
theorem mv_polynomial.support_neg {R : Type u} (σ : Type u_1) [comm_ring R] {p : mv_polynomial σ R} :
@[instance]
def mv_polynomial.coeff.is_add_group_hom {R : Type u} (σ : Type u_1) [comm_ring R] (m : σ →₀ ) :
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) [is_ring_hom f] (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), ...

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
@[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) :