Interactions between R[X] and Rᵐᵒᵖ[X] #
This file contains the basic API for "pushing through" the isomorphism
opRingEquiv : R[X]ᵐᵒᵖ ≃+* Rᵐᵒᵖ[X]. It allows going back and forth between a polynomial ring
over a semiring and the polynomial ring over the opposite semiring.
Ring isomorphism between R[X]ᵐᵒᵖ and Rᵐᵒᵖ[X] sending each coefficient of a polynomial
to the corresponding element of the opposite ring.
Equations
- Polynomial.opRingEquiv R = RingEquiv.trans (RingEquiv.trans (RingEquiv.op (Polynomial.toFinsuppIso R)) AddMonoidAlgebra.opRingEquiv) (RingEquiv.symm (Polynomial.toFinsuppIso Rᵐᵒᵖ))
Instances For
Lemmas to get started, using opRingEquiv R on the various expressions of
Finsupp.single: monomial, C a, X, C a * X ^ n.
@[simp]
theorem
Polynomial.opRingEquiv_op_monomial
{R : Type u_1}
[Semiring R]
(n : ℕ)
(r : R)
:
(Polynomial.opRingEquiv R) (MulOpposite.op ((Polynomial.monomial n) r)) = (Polynomial.monomial n) (MulOpposite.op r)
@[simp]
theorem
Polynomial.opRingEquiv_op_C
{R : Type u_1}
[Semiring R]
(a : R)
:
(Polynomial.opRingEquiv R) (MulOpposite.op (Polynomial.C a)) = Polynomial.C (MulOpposite.op a)
@[simp]
theorem
Polynomial.opRingEquiv_op_X
{R : Type u_1}
[Semiring R]
:
(Polynomial.opRingEquiv R) (MulOpposite.op Polynomial.X) = Polynomial.X
theorem
Polynomial.opRingEquiv_op_C_mul_X_pow
{R : Type u_1}
[Semiring R]
(r : R)
(n : ℕ)
:
(Polynomial.opRingEquiv R) (MulOpposite.op (Polynomial.C r * Polynomial.X ^ n)) = Polynomial.C (MulOpposite.op r) * Polynomial.X ^ n
Lemmas to get started, using (opRingEquiv R).symm on the various expressions of
Finsupp.single: monomial, C a, X, C a * X ^ n.
@[simp]
theorem
Polynomial.opRingEquiv_symm_monomial
{R : Type u_1}
[Semiring R]
(n : ℕ)
(r : Rᵐᵒᵖ)
:
(RingEquiv.symm (Polynomial.opRingEquiv R)) ((Polynomial.monomial n) r) = MulOpposite.op ((Polynomial.monomial n) (MulOpposite.unop r))
@[simp]
theorem
Polynomial.opRingEquiv_symm_C
{R : Type u_1}
[Semiring R]
(a : Rᵐᵒᵖ)
:
(RingEquiv.symm (Polynomial.opRingEquiv R)) (Polynomial.C a) = MulOpposite.op (Polynomial.C (MulOpposite.unop a))
@[simp]
theorem
Polynomial.opRingEquiv_symm_X
{R : Type u_1}
[Semiring R]
:
(RingEquiv.symm (Polynomial.opRingEquiv R)) Polynomial.X = MulOpposite.op Polynomial.X
theorem
Polynomial.opRingEquiv_symm_C_mul_X_pow
{R : Type u_1}
[Semiring R]
(r : Rᵐᵒᵖ)
(n : ℕ)
:
(RingEquiv.symm (Polynomial.opRingEquiv R)) (Polynomial.C r * Polynomial.X ^ n) = MulOpposite.op (Polynomial.C (MulOpposite.unop r) * Polynomial.X ^ n)
Lemmas about more global properties of polynomials and opposites.
@[simp]
theorem
Polynomial.coeff_opRingEquiv
{R : Type u_1}
[Semiring R]
(p : (Polynomial R)ᵐᵒᵖ)
(n : ℕ)
:
Polynomial.coeff ((Polynomial.opRingEquiv R) p) n = MulOpposite.op (Polynomial.coeff (MulOpposite.unop p) n)
@[simp]
@[simp]
@[simp]