Polynomials and adjoining roots #
Main results #
Algebra.instCommSemiringAdjoinSingleton, Algebra.instCommRingAdjoinSingleton: adjoining an element to a commutative (semi)ring gives a commutative (semi)ringAlgebra.adjoin_singleton_induction: proving a fact abouta : adjoin R {x}is the same as proving it foraeval x pwherepis an arbitrary polynomial
theorem
Algebra.adjoin_singleton_eq_range_aeval
(R : Type u)
{A : Type z}
[CommSemiring R]
[Semiring A]
[Algebra R A]
(x : A)
:
@[simp]
theorem
Polynomial.aeval_mem_adjoin_singleton
(R : Type u)
{A : Type z}
[CommSemiring R]
[Semiring A]
[Algebra R A]
{p : Polynomial R}
(x : A)
:
theorem
Algebra.adjoin_mem_exists_aeval
(R : Type u)
{A : Type z}
[CommSemiring R]
[Semiring A]
[Algebra R A]
(x : A)
{a : A}
(h : a ∈ adjoin R {x})
:
∃ (p : Polynomial R), (Polynomial.aeval x) p = a
theorem
Algebra.adjoin_eq_exists_aeval
(R : Type u)
{A : Type z}
[CommSemiring R]
[Semiring A]
[Algebra R A]
(x : A)
(a : ↥(adjoin R {x}))
:
∃ (p : Polynomial R), (Polynomial.aeval x) p = ↑a
theorem
Algebra.adjoin_singleton_induction
(R : Type u)
{A : Type z}
[CommSemiring R]
[Semiring A]
[Algebra R A]
(x : A)
{M : ↥(adjoin R {x}) → Prop}
(a : ↥(adjoin R {x}))
(f : ∀ (p : Polynomial R), M ⟨(Polynomial.aeval x) p, ⋯⟩)
:
M a
Proving a fact about a : adjoin R {x} is the same as proving it for
aeval x p where pis an arbitrary polynomial.
@[implicit_reducible]
instance
Algebra.instCommSemiringAdjoinSingleton
(R : Type u)
{A : Type z}
[CommSemiring R]
[Semiring A]
[Algebra R A]
(x : A)
:
CommSemiring ↥(adjoin R {x})
Equations
- Algebra.instCommSemiringAdjoinSingleton R x = { toSemiring := (Algebra.adjoin R {x}).toSemiring, mul_comm := ⋯ }