Algebra towers for polynomial #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
This file proves some basic results about the algebra tower structure for the type R[X]
.
This structure itself is provided elsewhere as polynomial.is_scalar_tower
When you update this file, you can also try to make a corresponding update in
ring_theory.mv_polynomial.tower
.
@[simp]
theorem
polynomial.aeval_map_algebra_map
{R : Type u_1}
(A : Type u_2)
{B : Type u_3}
[comm_semiring R]
[comm_semiring A]
[semiring B]
[algebra R A]
[algebra A B]
[algebra R B]
[is_scalar_tower R A B]
(x : B)
(p : polynomial R) :
⇑(polynomial.aeval x) (polynomial.map (algebra_map R A) p) = ⇑(polynomial.aeval x) p
theorem
polynomial.aeval_algebra_map_apply
{R : Type u_1}
{A : Type u_2}
(B : Type u_3)
[comm_semiring R]
[comm_semiring A]
[semiring B]
[algebra R A]
[algebra A B]
[algebra R B]
[is_scalar_tower R A B]
(x : A)
(p : polynomial R) :
⇑(polynomial.aeval (⇑(algebra_map A B) x)) p = ⇑(algebra_map A B) (⇑(polynomial.aeval x) p)
@[simp]
theorem
polynomial.aeval_algebra_map_eq_zero_iff
{R : Type u_1}
{A : Type u_2}
(B : Type u_3)
[comm_semiring R]
[comm_semiring A]
[semiring B]
[algebra R A]
[algebra A B]
[algebra R B]
[is_scalar_tower R A B]
[no_zero_smul_divisors A B]
[nontrivial B]
(x : A)
(p : polynomial R) :
⇑(polynomial.aeval (⇑(algebra_map A B) x)) p = 0 ↔ ⇑(polynomial.aeval x) p = 0
theorem
polynomial.aeval_algebra_map_eq_zero_iff_of_injective
{R : Type u_1}
{A : Type u_2}
{B : Type u_3}
[comm_semiring R]
[comm_semiring A]
[semiring B]
[algebra R A]
[algebra A B]
[algebra R B]
[is_scalar_tower R A B]
{x : A}
{p : polynomial R}
(h : function.injective ⇑(algebra_map A B)) :
⇑(polynomial.aeval (⇑(algebra_map A B) x)) p = 0 ↔ ⇑(polynomial.aeval x) p = 0
@[simp]
theorem
subalgebra.aeval_coe
{R : Type u_1}
{A : Type u_2}
[comm_semiring R]
[comm_semiring A]
[algebra R A]
(S : subalgebra R A)
(x : ↥S)
(p : polynomial R) :
⇑(polynomial.aeval ↑x) p = ↑(⇑(polynomial.aeval x) p)