# mathlibdocumentation

data.mv_polynomial.equiv

# Equivalences between polynomial rings

This file establishes a number of equivalences between polynomial rings, based on equivalences between the underlying types.

## Notation

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

• σ : Type* (indexing the variables)

• R : Type* [comm_semiring R] (the coefficients)

• s : σ →₀ ℕ, a function from σ to ℕ which is zero away from a finite set. This will give rise to a monomial in mv_polynomial σ R which mathematicians might call X^s

• a : R

• i : σ, with corresponding monomial X i, often denoted X_i by mathematicians

• p : mv_polynomial σ R

## Tags

equivalence, isomorphism, morphism, ring hom, hom

@[simp]
theorem mv_polynomial.pempty_ring_equiv_inv_fun (R : Type u) (a : R) :

def mv_polynomial.pempty_ring_equiv (R : Type u)  :

The ring isomorphism between multivariable polynomials in no variables and the ground ring.

Equations
@[simp]
theorem mv_polynomial.pempty_ring_equiv_to_fun (R : Type u) (p : R) :

def mv_polynomial.punit_ring_equiv (R : Type u)  :

The ring isomorphism between multivariable polynomials in a single variable and polynomials over the ground ring.

Equations
@[simp]
theorem mv_polynomial.punit_ring_equiv_to_fun (R : Type u) (p : R) :
= (λ (u : punit), polynomial.X) p

@[simp]
theorem mv_polynomial.punit_ring_equiv_inv_fun (R : Type u) (p : polynomial R) :

@[simp]
theorem mv_polynomial.ring_equiv_of_equiv_inv_fun (R : Type u) {S₁ : Type v} {S₂ : Type w} (e : S₁ S₂) (a : R) :
= a

@[simp]
theorem mv_polynomial.ring_equiv_of_equiv_to_fun (R : Type u) {S₁ : Type v} {S₂ : Type w} (e : S₁ S₂) (a : R) :

def mv_polynomial.ring_equiv_of_equiv (R : Type u) {S₁ : Type v} {S₂ : Type w}  :
S₁ S₂ R ≃+* R

The ring isomorphism between multivariable polynomials induced by an equivalence of the variables.

Equations
@[simp]
theorem mv_polynomial.ring_equiv_congr_to_fun (R : Type u) {S₁ : Type v} {S₂ : Type w} [comm_semiring S₂] (e : R ≃+* S₂) (a : R) :
= a

@[simp]
theorem mv_polynomial.ring_equiv_congr_inv_fun (R : Type u) {S₁ : Type v} {S₂ : Type w} [comm_semiring S₂] (e : R ≃+* S₂) (a : S₂) :

def mv_polynomial.ring_equiv_congr (R : Type u) {S₁ : Type v} {S₂ : Type w} [comm_semiring S₂] :
R ≃+* S₂ R ≃+* S₂

The ring isomorphism between multivariable polynomials induced by a ring isomorphism of the ground ring.

Equations
def mv_polynomial.sum_to_iter (R : Type u) (S₁ : Type v) (S₂ : Type w)  :
mv_polynomial (S₁ S₂) R →+* R)

The function from multivariable polynomials in a sum of two types, to multivariable polynomials in one of the types, with coefficents in multivariable polynomials in the other type.

See sum_ring_equiv for the ring isomorphism.

Equations
@[instance]
def mv_polynomial.is_semiring_hom_sum_to_iter (R : Type u) (S₁ : Type v) (S₂ : Type w)  :

@[simp]
theorem mv_polynomial.sum_to_iter_C (R : Type u) (S₁ : Type v) (S₂ : Type w) (a : R) :
S₂) =

@[simp]
theorem mv_polynomial.sum_to_iter_Xl (R : Type u) (S₁ : Type v) (S₂ : Type w) (b : S₁) :

@[simp]
theorem mv_polynomial.sum_to_iter_Xr (R : Type u) (S₁ : Type v) (S₂ : Type w) (c : S₂) :

def mv_polynomial.iter_to_sum (R : Type u) (S₁ : Type v) (S₂ : Type w)  :
R) →+* mv_polynomial (S₁ S₂) R

The function from multivariable polynomials in one type, with coefficents in multivariable polynomials in another type, to multivariable polynomials in the sum of the two types.

See sum_ring_equiv for the ring isomorphism.

Equations
theorem mv_polynomial.iter_to_sum_C_C (R : Type u) (S₁ : Type v) (S₂ : Type w) (a : R) :
S₂) =

theorem mv_polynomial.iter_to_sum_X (R : Type u) (S₁ : Type v) (S₂ : Type w) (b : S₁) :
S₂) =

theorem mv_polynomial.iter_to_sum_C_X (R : Type u) (S₁ : Type v) (S₂ : Type w) (c : S₂) :
S₂) =

@[simp]
theorem mv_polynomial.mv_polynomial_equiv_mv_polynomial_to_fun (R : Type u) (S₁ : Type v) (S₂ : Type w) (S₃ : Type x) [comm_semiring S₃] (f : R →+* S₃) (g : S₃ →+* R) (hfgC : ∀ (a : S₃), f (g (mv_polynomial.C a)) = ) (hfgX : ∀ (n : S₂), f (g (mv_polynomial.X n)) = ) (hgfC : ∀ (a : R), g (f (mv_polynomial.C a)) = ) (hgfX : ∀ (n : S₁), g (f (mv_polynomial.X n)) = ) (a : R) :
f g hfgC hfgX hgfC hgfX) a = f a

@[simp]
theorem mv_polynomial.mv_polynomial_equiv_mv_polynomial_inv_fun (R : Type u) (S₁ : Type v) (S₂ : Type w) (S₃ : Type x) [comm_semiring S₃] (f : R →+* S₃) (g : S₃ →+* R) (hfgC : ∀ (a : S₃), f (g (mv_polynomial.C a)) = ) (hfgX : ∀ (n : S₂), f (g (mv_polynomial.X n)) = ) (hgfC : ∀ (a : R), g (f (mv_polynomial.C a)) = ) (hgfX : ∀ (n : S₁), g (f (mv_polynomial.X n)) = ) (a : S₃) :
f g hfgC hfgX hgfC hgfX).inv_fun a = g a

def mv_polynomial.mv_polynomial_equiv_mv_polynomial (R : Type u) (S₁ : Type v) (S₂ : Type w) (S₃ : Type x) [comm_semiring S₃] (f : R →+* S₃) (g : S₃ →+* R) :
(∀ (a : S₃), f (g (mv_polynomial.C a)) = (∀ (n : S₂), f (g (mv_polynomial.X n)) = (∀ (a : R), g (f (mv_polynomial.C a)) = (∀ (n : S₁), g (f (mv_polynomial.X n)) = R ≃+* S₃

A helper function for sum_ring_equiv.

Equations
def mv_polynomial.sum_ring_equiv (R : Type u) (S₁ : Type v) (S₂ : Type w)  :
mv_polynomial (S₁ S₂) R ≃+* R)

The ring isomorphism between multivariable polynomials in a sum of two types, and multivariable polynomials in one of the types, with coefficents in multivariable polynomials in the other type.

Equations
• S₂ = S₁ R) S₂) S₂) _ _ _ _
def mv_polynomial.option_equiv_left (R : Type u) (S₁ : Type v)  :

The ring isomorphism between multivariable polynomials in option S₁ and polynomials with coefficients in mv_polynomial S₁ R.

Equations
def mv_polynomial.option_equiv_right (R : Type u) (S₁ : Type v)  :

The ring isomorphism between multivariable polynomials in option S₁ and multivariable polynomials with coefficients in polynomials.

Equations
def mv_polynomial.fin_succ_equiv (R : Type u) (n : ) :

The ring isomorphism between multivariable polynomials in fin (n + 1) and polynomials over multivariable polynomials in fin n.

Equations
theorem mv_polynomial.fin_succ_equiv_eq (R : Type u) (n : ) :
= (λ (i : fin (n + 1)), (λ (k : fin n), i)

@[simp]
theorem mv_polynomial.fin_succ_equiv_apply (R : Type u) (n : ) (p : mv_polynomial (fin (n + 1)) R) :
= (λ (i : fin (n + 1)), (λ (k : fin n), i)) p