Theory of monic polynomials #
We define integralNormalization
, which relate arbitrary polynomials to monic ones.
If p : R[X]
is a nonzero polynomial with root z
, integralNormalization p
is
a monic polynomial with root leadingCoeff f * z
.
Moreover, integralNormalization 0 = 0
.
Equations
Instances For
@[simp]
theorem
Polynomial.support_integralNormalization_subset
{R : Type u}
[Semiring R]
{p : Polynomial R}
:
p.integralNormalization.support ⊆ p.support
@[deprecated Polynomial.support_integralNormalization_subset]
theorem
Polynomial.integralNormalization_support
{R : Type u}
[Semiring R]
{p : Polynomial R}
:
p.integralNormalization.support ⊆ p.support
theorem
Polynomial.integralNormalization_coeff_degree
{R : Type u}
[Semiring R]
{p : Polynomial R}
{i : ℕ}
(hi : p.degree = ↑i)
:
p.integralNormalization.coeff i = 1
theorem
Polynomial.integralNormalization_coeff_natDegree
{R : Type u}
[Semiring R]
{p : Polynomial R}
(hp : p ≠ 0)
:
p.integralNormalization.coeff p.natDegree = 1
theorem
Polynomial.monic_integralNormalization
{R : Type u}
[Semiring R]
{p : Polynomial R}
(hp : p ≠ 0)
:
p.integralNormalization.Monic
theorem
Polynomial.integralNormalization_mul_C_leadingCoeff
{R : Type u}
[Semiring R]
(p : Polynomial R)
:
theorem
Polynomial.integralNormalization_degree
{R : Type u}
[Semiring R]
{p : Polynomial R}
:
p.integralNormalization.degree = p.degree
theorem
Polynomial.leadingCoeff_smul_integralNormalization
{S : Type v}
[CommSemiring S]
(p : Polynomial S)
:
theorem
Polynomial.integralNormalization_eval₂_leadingCoeff_mul_of_commute
{R : Type u}
[Semiring R]
{p : Polynomial R}
{A : Type u_1}
[Semiring A]
(h : 1 ≤ p.natDegree)
(f : R →+* A)
(x : A)
(h₁ : Commute (f p.leadingCoeff) x)
(h₂ : ∀ {r r' : R}, Commute (f r) (f r'))
:
Polynomial.eval₂ f (f p.leadingCoeff * x) p.integralNormalization = f p.leadingCoeff ^ (p.natDegree - 1) * Polynomial.eval₂ f x p
theorem
Polynomial.integralNormalization_eval₂_leadingCoeff_mul
{R : Type u}
{S : Type v}
[Semiring R]
{p : Polynomial R}
[CommSemiring S]
(h : 1 ≤ p.natDegree)
(f : R →+* S)
(x : S)
:
Polynomial.eval₂ f (f p.leadingCoeff * x) p.integralNormalization = f p.leadingCoeff ^ (p.natDegree - 1) * Polynomial.eval₂ f x p
theorem
Polynomial.integralNormalization_eval₂_eq_zero_of_commute
{R : Type u}
[Semiring R]
{A : Type u_1}
[Semiring A]
{p : Polynomial R}
(f : R →+* A)
{z : A}
(hz : Polynomial.eval₂ f z p = 0)
(h₁ : Commute (f p.leadingCoeff) z)
(h₂ : ∀ {r r' : R}, Commute (f r) (f r'))
(inj : ∀ (x : R), f x = 0 → x = 0)
:
Polynomial.eval₂ f (f p.leadingCoeff * z) p.integralNormalization = 0
theorem
Polynomial.integralNormalization_eval₂_eq_zero
{R : Type u}
{S : Type v}
[Semiring R]
[CommSemiring S]
{p : Polynomial R}
(f : R →+* S)
{z : S}
(hz : Polynomial.eval₂ f z p = 0)
(inj : ∀ (x : R), f x = 0 → x = 0)
:
Polynomial.eval₂ f (f p.leadingCoeff * z) p.integralNormalization = 0
theorem
Polynomial.integralNormalization_aeval_eq_zero
{S : Type v}
{A : Type u_1}
[CommSemiring S]
[Semiring A]
[Algebra S A]
{f : Polynomial S}
{z : A}
(hz : (Polynomial.aeval z) f = 0)
(inj : ∀ (x : S), (algebraMap S A) x = 0 → x = 0)
:
(Polynomial.aeval ((algebraMap S A) f.leadingCoeff * z)) f.integralNormalization = 0
@[simp]
theorem
Polynomial.support_integralNormalization
{R : Type u}
[Semiring R]
[IsCancelMulZero R]
{f : Polynomial R}
:
f.integralNormalization.support = f.support