Coefficients of products with linear factors
TheoremCoefficients of a product with a homogeneous linear polynomial#✓fully proved
The coefficient of p * q, when p is homogeneous of degree one, is the
sum obtained by removing one occurrence of each variable in the monomial.
public theorem IsHomogeneous.coeff_mul_eq_sum_support {σ R : Type*} [CommSemiring R]
{p : MvPolynomial σ R} (hp : p.IsHomogeneous 1) (q : MvPolynomial σ R)
(m : σ →₀ ℕ) :
(p * q).coeff m =
∑ i ∈ m.support, p.coeff (Finsupp.single i 1) *
q.coeff (m - Finsupp.single i 1)
DefinitionCoefficient list after multiplication by a linear polynomial#✓fully proved
The dense little-endian coefficients after left multiplication by C r + X * C c.
def mulLinearCoeffList (r c : R) (l : List R) : List R :=
List.zipWithAll (fun a b => a.getD 0 + b.getD 0)
(l.map (r * ·)) ((0 :: l).map (c * ·))
TheoremLength of the coefficient list after a linear multiplication#✓fully proved
A linear-coefficient update always adds one dense coefficient.
@[simp] theorem length_mulLinearCoeffList (r c : R) (l : List R) :
(mulLinearCoeffList r c l).length = l.length + 1
def mulLinearCoeffList (r c : R) (l : List R) : List R :=
List.zipWithAll (fun a b => a.getD 0 + b.getD 0)
(l.map (r * ·)) ((0 :: l).map (c * ·))
MathlibExt/Algebra/Polynomial/LinearCoeffList.lean:37
Uses 1
TheoremCoefficient recurrence for multiplication by a linear polynomial#✓fully proved
The coefficient at every index, including beyond the dense output, follows the source
recurrence r * l[j] + c * l[j - 1].
@[simp] theorem getD_mulLinearCoeffList (r c : R) (l : List R) (j : ℕ) :
(mulLinearCoeffList r c l).getD j 0 =
r * l.getD j 0 + c * (0 :: l).getD j 0
def mulLinearCoeffList (r c : R) (l : List R) : List R :=
List.zipWithAll (fun a b => a.getD 0 + b.getD 0)
(l.map (r * ·)) ((0 :: l).map (c * ·))
MathlibExt/Algebra/Polynomial/LinearCoeffList.lean:37
Uses 1
TheoremCoefficient-list multiplication agrees with polynomial multiplication#✓fully proved
Interpreting the dense output as a little-endian polynomial is left multiplication by the
linear polynomial C r + X * C c.
@[simp] theorem ofCoeffList_mulLinearCoeffList (r c : R) (l : List R) :
ofCoeffList (mulLinearCoeffList r c l) =
(C r + X * C c) * ofCoeffList l
def mulLinearCoeffList (r c : R) (l : List R) : List R :=
List.zipWithAll (fun a b => a.getD 0 + b.getD 0)
(l.map (r * ·)) ((0 :: l).map (c * ·))
MathlibExt/Algebra/Polynomial/LinearCoeffList.lean:37
Uses 1
TheoremExpansion of a product of affine linear polynomials#✓fully proved
Expand a product of affine linear polynomials by the subset of factors from which the linear term is selected.
theorem prod_C_add_X_mul_C_eq_sum {ι R : Type*} [DecidableEq ι]
[CommSemiring R]
(S : Finset ι) (r c : ι → R) :
∏ s ∈ S, (C (r s) + X * C (c s)) =
∑ Q ∈ S.powerset,
C (∏ s ∈ S, if s ∈ Q then c s else r s) * X ^ #Q
Used by 1
TheoremCoefficients of a product of affine linear polynomials#✓fully proved
The coefficient of degree i in a product of affine linear polynomials is
the sum over the i factors from which the linear term is selected.
theorem prod_C_add_X_mul_C_coeff {ι R : Type*} [DecidableEq ι]
[CommSemiring R] (S : Finset ι) (r c : ι → R) (i : ℕ) :
(∏ s ∈ S, (C (r s) + X * C (c s))).coeff i =
∑ Q ∈ S.powersetCard i,
∏ s ∈ S, if s ∈ Q then c s else r s
Uses 1 · Used by 1
TheoremDegree bound for a product of affine linear polynomials#✓fully proved
A product of affine linear polynomials has degree at most the number of factors.
theorem prod_C_add_X_mul_C_natDegree_le {ι R : Type*} [CommSemiring R]
(S : Finset ι) (r c : ι → R) :
(∏ s ∈ S, (C (r s) + X * C (c s))).natDegree ≤ #S
TheoremBinomial bound on coefficients of a product of affine polynomials#✓fully proved
If every constant and linear coefficient is at most one in absolute value,
then the absolute value of coefficient i is at most S.card.choose i.
theorem abs_prod_C_add_X_mul_C_coeff_le_choose {ι : Type*} [DecidableEq ι]
(S : Finset ι) (r c : ι → ℤ) (i : ℕ)
(hr : ∀ s ∈ S, |r s| ≤ 1) (hc : ∀ s ∈ S, |c s| ≤ 1) :
|(∏ s ∈ S, (C (r s) + X * C (c s))).coeff i| ≤
((#S).choose i : ℤ)
Uses 1
Loading dependency explorer…
The dependency explorer needs JavaScript and its graph data.