Dividing Formal Power Series #
This file formalizes the content from DividingFPS.tex, covering:
- Inverses in commutative rings (uniqueness, notation)
- Characterization of invertible FPSs
- Newton's binomial formula for FPSs
- Upper negation formula for binomial coefficients
- Division by
xfor FPSs with vanishing constant term - Various lemmas about coefficients and multiples
Main Results #
fps_invertible_iff_constantCoeff: An FPS is invertible iff its constant term is invertiblefps_invertible_iff_constantCoeff_ne_zero: Over a field, an FPS is invertible iff its constant term is nonzerobinomUpperNegation: The upper negation formulaC(-n,k) = (-1)^k * C(k+n-1,k)fps_onePlusX_inv: Formula for(1+x)^{-1}as a power seriesfps_onePlusX_pow_neg: Formula for(1+x)^{-n}for naturalnfps_newtonBinomial: Newton's binomial formula(1+x)^n = Σ C(n,k) x^kPowerSeries.divByX: Division byxfor FPSs with zero constant term- Various lemmas about coefficients and multiples of FPSs
References #
- Grinberg, Darij. "Algebraic Combinatorics" (lecture notes)
Tags #
formal power series, inverses, binomial coefficients, Newton's binomial formula
Section: Conventions #
We identify each element a ∈ K with the constant FPS (a, 0, 0, 0, ...).
In Mathlib, this is handled via the ring homomorphism algebraMap K (PowerSeries K).
The constant FPS corresponding to an element of the base ring.
This is algebraMap K (PowerSeries K) in Mathlib.
Equations
- AlgebraicCombinatorics.constFPS a = (algebraMap K (PowerSeries K)) a
Instances For
Section: Inverses in commutative rings #
The uniqueness of inverses and notation for fractions are standard in Mathlib. We recall the key facts here for reference.
Theorem (thm.commring.inverse-uni): In a commutative ring, inverses are unique.
If a * b = 1 and a * c = 1, then b = c.
This follows from Mathlib's left_inv_eq_right_inv.
Section: Properties of inverses and fractions (prop.commring.fracs.1) #
Proposition (prop.commring.fracs.1): Let L be a commutative ring. Then:
- (a) Any invertible element
a ∈ Lsatisfiesa⁻¹ = 1/a. - (b) For any invertible elements
a, b ∈ L, the elementabis invertible as well, and satisfies(ab)⁻¹ = b⁻¹a⁻¹ = a⁻¹b⁻¹. - (c) If
a ∈ Lis invertible, and ifn ∈ ℤis arbitrary, thena^{-n} = (a⁻¹)^n = (a^n)⁻¹. - (d) Laws of exponents hold for negative exponents as well.
- (e) Laws of fractions hold:
b/a + d/c = (bc + ad)/(ac)and(b/a) · (d/c) = (bd)/(ac). - (f) Division undoes multiplication:
c/a = biffc = ab.
In Mathlib, these are mostly standard lemmas for Units and IsUnit.
Division notation for units: b / a means b * a⁻¹.
This formalizes the notation b/a for a invertible in the text.
Equations
- AlgebraicCombinatorics.divByUnit b a = b * ↑a⁻¹
Instances For
Local notation for division by a unit.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Section: Inverses in K[[x]] #
Proposition (prop.fps.invertible): An FPS a is invertible in K[[x]] if and only if
its constant term [x^0] a is invertible in K.
This is PowerSeries.isUnit_iff_constantCoeff in Mathlib.
An FPS is invertible iff its constant term is invertible. Label: prop.fps.invertible
Corollary (cor.fps.invertible.field): Over a field, an FPS is invertible iff its constant term is nonzero. Label: cor.fps.invertible.field
Section: Coefficient formulas for inverses #
Explicit formulas for the coefficients of the inverse of an FPS.
The constant term of the inverse of an FPS equals the inverse of its constant term.
This is a direct corollary of Mathlib's PowerSeries.constantCoeff_inv.
Label: fps_inv_coeff_zero
Recurrence for coefficients of the inverse of an FPS.
For n > 0: [x^n]f⁻¹ = -(f₀)⁻¹ · ∑_{k=1}^n f_k · [x^{n-k}]f⁻¹
This is a reformulation of Mathlib's PowerSeries.coeff_inv that expresses the
recurrence in terms of a sum over Finset.range (n + 1) with shifted indices,
which matches the standard textbook formula.
The recurrence shows that each coefficient of f⁻¹ can be computed from:
- The constant term
f₀(which must be nonzero forfto be invertible) - The coefficients
f₁, f₂, ..., f_noff - The previously computed coefficients
[x^0]f⁻¹, [x^1]f⁻¹, ..., [x^{n-1}]f⁻¹
Label: fps_inv_coeff_succ
The constant term of the inverse of an invertible FPS equals the inverse of its constant term.
This is the IsUnit version of fps_inv_coeff_zero.
Label: fps_inv_coeff_zero_isUnit
Recurrence for coefficients of the inverse of an invertible FPS.
This is the IsUnit version of fps_inv_coeff_succ.
Label: fps_inv_coeff_succ_isUnit
Section: Newton's binomial formula #
We prove Newton's binomial formula: (1+x)^n = Σ_{k ∈ ℕ} C(n,k) x^k for all n ∈ ℤ.
Proposition (prop.fps.invertible.1+x): The FPS 1+x is invertible, with inverse
1 - x + x^2 - x^3 + ....
Label: prop.fps.invertible.1+x
The inverse of 1+x is Σ_{n ∈ ℕ} (-1)^n x^n.
Note: This requires K to be a field to have Inv instance on PowerSeries K.
Label: prop.fps.invertible.1+x
Theorem (thm.binom.upneg-n): Upper negation formula for binomial coefficients.
For r in a BinomialRing R and k ∈ ℕ, we have C(-r, k) = (-1)^k * C(r+k-1, k).
Note: In Mathlib, generalized binomial coefficients are defined via Ring.choose
for BinomialRings. This generalizes the classical formula for n ∈ ℂ.
Label: thm.binom.upneg-n
Specialization of binomUpperNegation to integers.
For n ∈ ℤ and k ∈ ℕ, we have C(-n, k) = (-1)^k * C(k+n-1, k).
Label: thm.binom.upneg-n
Proposition (prop.fps.anti-newton-binom): For each n ∈ ℕ, we have
(1+x)^{-n} = Σ_{k ∈ ℕ} (-1)^k * C(n+k-1, k) * x^k.
Note: We express this using the inverse since PowerSeries over a general ring doesn't have integer power operations. Label: prop.fps.anti-newton-binom
Corollary (cor.fps.anti-newton-binom-2): For each n ∈ ℕ, we have
(1+x)^{-n} = Σ_{k ∈ ℕ} C(-n, k) * x^k.
Label: cor.fps.anti-newton-binom-2
Theorem (thm.fps.newton-binom): Newton's binomial formula.
For each n ∈ ℕ, we have (1+x)^n = Σ_{k ∈ ℕ} C(n,k) x^k.
Note: For non-negative integers, this follows from the standard binomial theorem. Label: thm.fps.newton-binom
Newton's binomial formula for negative integer exponents over a field.
The inverse of (1+x)^n equals Σ C(-n,k) x^k.
Label: thm.fps.newton-binom
Section: Dividing by x #
Definition (def.fps.div-by-x): For an FPS a = (a_0, a_1, a_2, ...) with a_0 = 0,
we define a/x to be the FPS (a_1, a_2, a_3, ...).
Division of an FPS by x, defined when the constant term is zero.
Given a = (a_0, a_1, a_2, ...) with a_0 = 0, returns (a_1, a_2, a_3, ...).
Label: def.fps.div-by-x
Equations
- AlgebraicCombinatorics.PowerSeries.divByX a x✝ = PowerSeries.mk fun (n : ℕ) => (PowerSeries.coeff (n + 1)) a
Instances For
The coefficient of x^n in a/x is the coefficient of x^{n+1} in a.
Proposition (prop.fps.div-by-x-inverts): a = x * b iff
a has zero constant term and b = a/x.
Label: prop.fps.div-by-x-inverts
X * b has zero constant term.
Label: prop.fps.div-by-x-inverts (helper)
If a.constantCoeff = 0, then a = X * (a/x).
Label: prop.fps.div-by-x-inverts (helper)
(X * b) / X = b.
Label: prop.fps.div-by-x-inverts (helper)
Lemma (lem.fps.g=xh): If an FPS a has zero constant term, then
there exists an FPS h such that a = x * h.
Label: lem.fps.g=xh
Section: A few lemmas #
Various lemmas about coefficients and multiples of FPSs.
Lemma (lem.fps.first-n-coeffs-of-xna): The first k coefficients of x^k * a are zero.
Label: lem.fps.first-n-coeffs-of-xna
Lemma (lem.fps.muls-of-xn): The first k coefficients of f are zero iff
f is a multiple of x^k.
Label: lem.fps.muls-of-xn
A multiple of g is an FPS of the form g * a.
Equations
Instances For
Lemma (lem.fps.prod.irlv.fg): If the first n+1 coefficients of f and g agree,
then the first n+1 coefficients of a*f and a*g agree.
Label: lem.fps.prod.irlv.fg
Lemma (lem.fps.prod.irlv.mul): If v is a multiple of u, and the first n+1
coefficients of u are zero, then the first n+1 coefficients of v are zero.
Label: lem.fps.prod.irlv.mul
Lemma (lem.fps.prod.irlv.cong-mul): If the first n+1 coefficients of a and b
agree, and the first n+1 coefficients of c and d agree, then the first n+1
coefficients of a*c and b*d agree.
Label: lem.fps.prod.irlv.cong-mul