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

noncomputable def mv_polynomial.punit_alg_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_alg_equiv_apply (R : Type u) (p : R) :
= (λ (u : punit), polynomial.X) p
@[simp]
theorem mv_polynomial.punit_alg_equiv_symm_apply (R : Type u) (p : polynomial R) :
@[simp]
theorem mv_polynomial.map_equiv_apply {S₁ : Type v} {S₂ : Type w} (σ : Type u_1) [comm_semiring S₁] [comm_semiring S₂] (e : S₁ ≃+* S₂) (ᾰ : S₁) :
=
noncomputable def mv_polynomial.map_equiv {S₁ : Type v} {S₂ : Type w} (σ : Type u_1) [comm_semiring S₁] [comm_semiring S₂] (e : S₁ ≃+* S₂) :
S₁ ≃+* S₂

If e : A ≃+* B is an isomorphism of rings, then so is map e.

Equations
@[simp]
theorem mv_polynomial.map_equiv_refl {R : Type u} (σ : Type u_1)  :
@[simp]
theorem mv_polynomial.map_equiv_symm {S₁ : Type v} {S₂ : Type w} (σ : Type u_1) [comm_semiring S₁] [comm_semiring S₂] (e : S₁ ≃+* S₂) :
@[simp]
theorem mv_polynomial.map_equiv_trans {S₁ : Type v} {S₂ : Type w} {S₃ : Type x} (σ : Type u_1) [comm_semiring S₁] [comm_semiring S₂] [comm_semiring S₃] (e : S₁ ≃+* S₂) (f : S₂ ≃+* S₃) :
.trans = (e.trans f)
@[simp]
theorem mv_polynomial.map_alg_equiv_apply {R : Type u} (σ : Type u_1) {A₁ : Type u_2} {A₂ : Type u_3} [comm_semiring A₁] [comm_semiring A₂] [ A₁] [ A₂] (e : A₁ ≃ₐ[R] A₂) (ᾰ : A₁) :
=
noncomputable def mv_polynomial.map_alg_equiv {R : Type u} (σ : Type u_1) {A₁ : Type u_2} {A₂ : Type u_3} [comm_semiring A₁] [comm_semiring A₂] [ A₁] [ A₂] (e : A₁ ≃ₐ[R] A₂) :
A₁ ≃ₐ[R] A₂

If e : A ≃ₐ[R] B is an isomorphism of R-algebras, then so is map e.

Equations
@[simp]
theorem mv_polynomial.map_alg_equiv_refl {R : Type u} (σ : Type u_1) {A₁ : Type u_2} [comm_semiring A₁] [ A₁] :
@[simp]
theorem mv_polynomial.map_alg_equiv_symm {R : Type u} (σ : Type u_1) {A₁ : Type u_2} {A₂ : Type u_3} [comm_semiring A₁] [comm_semiring A₂] [ A₁] [ A₂] (e : A₁ ≃ₐ[R] A₂) :
@[simp]
theorem mv_polynomial.map_alg_equiv_trans {R : Type u} (σ : Type u_1) {A₁ : Type u_2} {A₂ : Type u_3} {A₃ : Type u_4} [comm_semiring A₁] [comm_semiring A₂] [comm_semiring A₃] [ A₁] [ A₂] [ A₃] (e : A₁ ≃ₐ[R] A₂) (f : A₂ ≃ₐ[R] A₃) :
= (e.trans f)
noncomputable 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
@[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₂) :
noncomputable 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.is_empty_alg_equiv_symm_apply_to_fun (R : Type u) (σ : Type u_1) [he : is_empty σ] (ᾰ : R) (a' : σ →₀ ) :
(.symm) ᾰ) a' = ite (0 = a') 0
@[simp]
theorem mv_polynomial.is_empty_alg_equiv_apply (R : Type u) (σ : Type u_1) [he : is_empty σ] (ᾰ : R) :
=
@[simp]
theorem mv_polynomial.is_empty_alg_equiv_symm_apply_support (R : Type u) (σ : Type u_1) [he : is_empty σ] (ᾰ : R) :
(.symm) ᾰ).support = ite (ᾰ = 0) {0}
noncomputable def mv_polynomial.is_empty_alg_equiv (R : Type u) (σ : Type u_1) [he : is_empty σ] :

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

Equations
• = R)) _ _
@[simp]
theorem mv_polynomial.is_empty_ring_equiv_symm_apply_support (R : Type u) (σ : Type u_1) [he : is_empty σ] (ᾰ : R) :
( ᾰ).support = ite (ᾰ = 0) {0}
@[simp]
theorem mv_polynomial.is_empty_ring_equiv_symm_apply_to_fun (R : Type u) (σ : Type u_1) [he : is_empty σ] (ᾰ : R) (a' : σ →₀ ) :
( ᾰ) a' = ite (0 = a') 0
noncomputable def mv_polynomial.is_empty_ring_equiv (R : Type u) (σ : Type u_1) [he : is_empty σ] :

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

Equations
@[simp]
theorem mv_polynomial.is_empty_ring_equiv_apply (R : Type u) (σ : Type u_1) [he : is_empty σ] (ᾰ : R) :
=
@[simp]
theorem mv_polynomial.mv_polynomial_equiv_mv_polynomial_apply (R : Type u) (S₁ : Type v) (S₂ : Type w) (S₃ : Type x) [comm_semiring S₃] (f : R →+* S₃) (g : S₃ →+* R) (hfgC : (f.comp g).comp mv_polynomial.C = mv_polynomial.C) (hfgX : ∀ (n : S₂), f (g (mv_polynomial.X n)) = ) (hgfC : (g.comp f).comp mv_polynomial.C = mv_polynomial.C) (hgfX : ∀ (n : S₁), g (f (mv_polynomial.X n)) = ) (ᾰ : R) :
f g hfgC hfgX hgfC hgfX) = f ᾰ
@[simp]
theorem mv_polynomial.mv_polynomial_equiv_mv_polynomial_symm_apply (R : Type u) (S₁ : Type v) (S₂ : Type w) (S₃ : Type x) [comm_semiring S₃] (f : R →+* S₃) (g : S₃ →+* R) (hfgC : (f.comp g).comp mv_polynomial.C = mv_polynomial.C) (hfgX : ∀ (n : S₂), f (g (mv_polynomial.X n)) = ) (hgfC : (g.comp f).comp mv_polynomial.C = mv_polynomial.C) (hgfX : ∀ (n : S₁), g (f (mv_polynomial.X n)) = ) (ᾰ : S₃) :
S₃ f g hfgC hfgX hgfC hgfX).symm) = g ᾰ
noncomputable 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) (hfgC : (f.comp g).comp mv_polynomial.C = mv_polynomial.C) (hfgX : ∀ (n : S₂), f (g (mv_polynomial.X n)) = ) (hgfC : (g.comp f).comp mv_polynomial.C = mv_polynomial.C) (hgfX : ∀ (n : S₁), g (f (mv_polynomial.X n)) = ) :
R ≃+* S₃

A helper function for sum_ring_equiv.

Equations
noncomputable 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₂) _ _ _ _
noncomputable def mv_polynomial.sum_alg_equiv (R : Type u) (S₁ : Type v) (S₂ : Type w)  :
mv_polynomial (S₁ S₂) R ≃ₐ[R] R)

The algebra 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
@[simp]
theorem mv_polynomial.option_equiv_left_apply (R : Type u) (S₁ : Type v) (ᾰ : mv_polynomial (option S₁) R) :
= (mv_polynomial.aeval (λ (o : option S₁), (λ (s : S₁), polynomial.C (mv_polynomial.X s))))
noncomputable def mv_polynomial.option_equiv_left (R : Type u) (S₁ : Type v)  :

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

Equations
@[simp]
theorem mv_polynomial.option_equiv_left_symm_apply (R : Type u) (S₁ : Type v) (ᾰ : polynomial R)) :
noncomputable def mv_polynomial.option_equiv_right (R : Type u) (S₁ : Type v)  :

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

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

The algebra 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
theorem mv_polynomial.fin_succ_equiv_comp_C_eq_C {R : Type u} (n : ) :