Module docstring
{"# Polynomials and adjoining roots
Main results
Polynomial.instCommSemiringAdjoinSingleton, instCommRingAdjoinSingleton: adjoining an element to a commutative (semi)ring gives a commutative (semi)ring "}
{"# Polynomials and adjoining roots
Polynomial.instCommSemiringAdjoinSingleton, instCommRingAdjoinSingleton:
adjoining an element to a commutative (semi)ring gives a commutative (semi)ring
"}Polynomial.adjoin_X
theorem
: Algebra.adjoin R ({ X } : Set R[X]) = ⊤
@[simp]
theorem adjoin_X : Algebra.adjoin R ({X} : Set R[X]) = ⊤ := by
refine top_unique fun p _hp => ?_
set S := Algebra.adjoin R ({X} : Set R[X])
rw [← sum_monomial_eq p]; simp only [← smul_X_eq_monomial, Sum]
exact S.sum_mem fun n _hn => S.smul_mem (S.pow_mem (Algebra.subset_adjoin rfl) _) _
Algebra.adjoin_singleton_eq_range_aeval
theorem
(x : A) : Algebra.adjoin R { x } = (Polynomial.aeval x).range
theorem _root_.Algebra.adjoin_singleton_eq_range_aeval (x : A) :
Algebra.adjoin R {x} = (Polynomial.aeval x).range := by
rw [← Algebra.map_top, ← adjoin_X, AlgHom.map_adjoin, Set.image_singleton, aeval_X]
Polynomial.aeval_mem_adjoin_singleton
theorem
: aeval x p ∈ Algebra.adjoin R { x }
@[simp]
theorem aeval_mem_adjoin_singleton :
aevalaeval x p ∈ Algebra.adjoin R {x} := by
simpa only [Algebra.adjoin_singleton_eq_range_aeval] using Set.mem_range_self p
Polynomial.instCommSemiringAdjoinSingleton
instance
: CommSemiring <| Algebra.adjoin R { x }
instance instCommSemiringAdjoinSingleton :
CommSemiring <| Algebra.adjoin R {x} :=
{ mul_comm := fun ⟨p, hp⟩ ⟨q, hq⟩ ↦ by
obtain ⟨p', rfl⟩ := Algebra.adjoin_singleton_eq_range_aeval R x ▸ hp
obtain ⟨q', rfl⟩ := Algebra.adjoin_singleton_eq_range_aeval R x ▸ hq
simp only [AlgHom.toRingHom_eq_coe, RingHom.coe_coe, MulMemClass.mk_mul_mk, ← map_mul,
mul_comm p' q'] }
Polynomial.instCommRingAdjoinSingleton
instance
{R A : Type*} [CommRing R] [Ring A] [Algebra R A] (x : A) : CommRing <| Algebra.adjoin R { x }
instance instCommRingAdjoinSingleton {R A : Type*} [CommRing R] [Ring A] [Algebra R A] (x : A) :
CommRing <| Algebra.adjoin R {x} :=
{ mul_comm := mul_comm }