Expand a polynomial by a factor of p, so ∑ aₙ xⁿ
becomes ∑ aₙ xⁿᵖ
. #
Main definitions #
Polynomial.expand R p f
: expand the polynomialf
with coefficients in a commutative semiringR
by a factor of p, soexpand R p (∑ aₙ xⁿ)
is∑ aₙ xⁿᵖ
.Polynomial.contract p f
: the opposite ofexpand
, so it sends∑ aₙ xⁿᵖ
to∑ aₙ xⁿ
.
noncomputable def
Polynomial.expand
(R : Type u)
[CommSemiring R]
(p : ℕ)
:
Polynomial R →ₐ[R] Polynomial R
Expand the polynomial by a factor of p, so ∑ aₙ xⁿ
becomes ∑ aₙ xⁿᵖ
.
Equations
- Polynomial.expand R p = { toRingHom := Polynomial.eval₂RingHom Polynomial.C (Polynomial.X ^ p), commutes' := ⋯ }
Instances For
@[simp]
@[simp]
@[simp]
@[simp]
@[simp]
theorem
Polynomial.coeff_expand
{R : Type u}
[CommSemiring R]
{p : ℕ}
(hp : 0 < p)
(f : Polynomial R)
(n : ℕ)
:
@[simp]
theorem
Polynomial.coeff_expand_mul
{R : Type u}
[CommSemiring R]
{p : ℕ}
(hp : 0 < p)
(f : Polynomial R)
(n : ℕ)
:
@[simp]
theorem
Polynomial.coeff_expand_mul'
{R : Type u}
[CommSemiring R]
{p : ℕ}
(hp : 0 < p)
(f : Polynomial R)
(n : ℕ)
:
theorem
Polynomial.expand_injective
{R : Type u}
[CommSemiring R]
{n : ℕ}
(hn : 0 < n)
:
Function.Injective ⇑(expand R n)
Expansion is injective.
theorem
Polynomial.expand_inj
{R : Type u}
[CommSemiring R]
{p : ℕ}
(hp : 0 < p)
{f g : Polynomial R}
:
theorem
Polynomial.expand_eq_zero
{R : Type u}
[CommSemiring R]
{p : ℕ}
(hp : 0 < p)
{f : Polynomial R}
:
theorem
Polynomial.expand_ne_zero
{R : Type u}
[CommSemiring R]
{p : ℕ}
(hp : 0 < p)
{f : Polynomial R}
:
theorem
Polynomial.expand_eq_C
{R : Type u}
[CommSemiring R]
{p : ℕ}
(hp : 0 < p)
{f : Polynomial R}
{r : R}
:
theorem
Polynomial.leadingCoeff_expand
{R : Type u}
[CommSemiring R]
{p : ℕ}
{f : Polynomial R}
(hp : 0 < p)
:
theorem
Polynomial.monic_expand_iff
{R : Type u}
[CommSemiring R]
{p : ℕ}
{f : Polynomial R}
(hp : 0 < p)
:
theorem
Polynomial.Monic.expand
{R : Type u}
[CommSemiring R]
{p : ℕ}
{f : Polynomial R}
(hp : 0 < p)
:
f.Monic → ((Polynomial.expand R p) f).Monic
Alias of the reverse direction of Polynomial.monic_expand_iff
.
theorem
Polynomial.map_expand
{R : Type u}
[CommSemiring R]
{S : Type v}
[CommSemiring S]
{p : ℕ}
{f : R →+* S}
{q : Polynomial R}
:
@[simp]
@[simp]
theorem
Polynomial.expand_aeval
{R : Type u}
[CommSemiring R]
{A : Type u_1}
[Semiring A]
[Algebra R A]
(p : ℕ)
(P : Polynomial R)
(r : A)
:
The opposite of expand
: sends ∑ aₙ xⁿᵖ
to ∑ aₙ xⁿ
.
Equations
- Polynomial.contract p f = ∑ n ∈ Finset.range (f.natDegree + 1), (Polynomial.monomial n) (f.coeff (n * p))
Instances For
theorem
Polynomial.coeff_contract
{R : Type u}
[CommSemiring R]
{p : ℕ}
(hp : p ≠ 0)
(f : Polynomial R)
(n : ℕ)
:
theorem
Polynomial.map_contract
{R : Type u}
[CommSemiring R]
{S : Type v}
[CommSemiring S]
{p : ℕ}
(hp : p ≠ 0)
{f : R →+* S}
{q : Polynomial R}
:
theorem
Polynomial.contract_expand
{R : Type u}
[CommSemiring R]
(p : ℕ)
{f : Polynomial R}
(hp : p ≠ 0)
:
@[simp]
theorem
Polynomial.contract_add
{R : Type u}
[CommSemiring R]
{p : ℕ}
(hp : p ≠ 0)
(f g : Polynomial R)
:
theorem
Polynomial.contract_mul_expand
{R : Type u}
[CommSemiring R]
{p : ℕ}
(hp : p ≠ 0)
(f g : Polynomial R)
:
@[simp]
theorem
Polynomial.isCoprime_expand
{R : Type u}
[CommSemiring R]
{f g : Polynomial R}
{p : ℕ}
(hp : p ≠ 0)
:
theorem
Polynomial.expand_contract
{R : Type u}
[CommSemiring R]
(p : ℕ)
[CharP R p]
[NoZeroDivisors R]
{f : Polynomial R}
(hf : derivative f = 0)
(hp : p ≠ 0)
:
theorem
Polynomial.expand_contract'
{R : Type u}
[CommSemiring R]
(p : ℕ)
[ExpChar R p]
[NoZeroDivisors R]
{f : Polynomial R}
(hf : derivative f = 0)
:
theorem
Polynomial.expand_char
{R : Type u}
[CommSemiring R]
(p : ℕ)
[ExpChar R p]
(f : Polynomial R)
:
theorem
Polynomial.rootMultiplicity_expand_pow
{R : Type u}
[CommRing R]
{p n : ℕ}
[ExpChar R p]
{f : Polynomial R}
{r : R}
:
rootMultiplicity r ((expand R (p ^ n)) f) = p ^ n * rootMultiplicity (r ^ p ^ n) f
theorem
Polynomial.rootMultiplicity_expand
{R : Type u}
[CommRing R]
{p : ℕ}
[ExpChar R p]
{f : Polynomial R}
{r : R}
:
rootMultiplicity r ((expand R p) f) = p * rootMultiplicity (r ^ p) f
theorem
Polynomial.isLocalHom_expand
(R : Type u)
[CommRing R]
[IsDomain R]
{p : ℕ}
(hp : 0 < p)
:
IsLocalHom (expand R p)
@[deprecated Polynomial.isLocalHom_expand (since := "2024-10-10")]
theorem
Polynomial.isLocalRingHom_expand
(R : Type u)
[CommRing R]
[IsDomain R]
{p : ℕ}
(hp : 0 < p)
:
IsLocalHom (expand R p)
Alias of Polynomial.isLocalHom_expand
.
theorem
Polynomial.of_irreducible_expand
{R : Type u}
[CommRing R]
[IsDomain R]
{p : ℕ}
(hp : p ≠ 0)
{f : Polynomial R}
(hf : Irreducible ((expand R p) f))
:
theorem
Polynomial.of_irreducible_expand_pow
{R : Type u}
[CommRing R]
[IsDomain R]
{p : ℕ}
(hp : p ≠ 0)
{f : Polynomial R}
{n : ℕ}
:
Irreducible ((expand R (p ^ n)) f) → Irreducible f