Limits of Formal Power Series #
This file formalizes the notion of coefficientwise limits of formal power series, following Section 7.5 of Loehr's "Bijective Combinatorics".
Main Definitions #
Seq.StabilizesTo: A sequence(a_i)_{i ∈ ℕ}stabilizes toaif there existsNsuch that for alli ≥ N, we havea_i = a. (Definition 7.5.1)PowerSeries.CoeffStabilizesTo: A sequence of FPSs(f_i)coefficientwise stabilizes tofif for eachn ∈ ℕ, the sequence ofn-th coefficients stabilizes. (Definition 7.5.2)
Main Results #
PowerSeries.coeffStabilizesTo_of_forall_coeff_stabilizes: If each coefficient sequence stabilizes, then the FPS sequence coefficientwise stabilizes. (Theorem 7.5.3)PowerSeries.exists_xnEquiv_of_coeffStabilizesTo: Iff_i → f, then for eachn, eventuallyf_i ≡ f (mod x^{n+1}). (Lemma 7.5.4)PowerSeries.coeffStabilizesTo_add: Limits respect addition. (Proposition 7.5.5)PowerSeries.coeffStabilizesTo_mul: Limits respect multiplication. (Proposition 7.5.5)PowerSeries.coeffStabilizesTo_div: Limits respect division. (Proposition 7.5.6)PowerSeries.coeffStabilizesTo_comp: Limits respect composition. (Proposition 7.5.7)PowerSeries.coeffStabilizesTo_derivative: Limits respect derivatives. (Proposition 7.5.8)PowerSeries.coeffStabilizesTo_sum: Infinite sum is limit of partial sums. (Theorem 7.5.9)PowerSeries.coeffStabilizesTo_prod: Infinite product is limit of partial products. (Theorem 7.5.10)PowerSeries.fps_eq_limit_of_polynomials: Each FPS is a limit of polynomials. (Corollary 7.5.11)
Relationship with InfiniteProducts.lean #
This file also defines IsMultipliable and tprod' for ℕ-indexed sequences of FPS.
These are more restrictive than the general PowerSeries.Multipliable and
PowerSeries.tprod in InfiniteProducts.lean:
IsMultipliable frequires: (1) all constant terms equal 1, AND (2) eventually all terms are 1 + O(x^{n+1}) for each n.PowerSeries.Multipliable aonly requires that each coefficient is finitely determined.
The IsMultipliable/tprod' definitions are used specifically for limits of partial
products (where the index is ℕ and we consider products ∏_{i=0}^{N} f_i).
For general infinite products over arbitrary index types, use the definitions in
InfiniteProducts.lean.
References #
- [Loehr, Bijective Combinatorics, Section 7.5]
A sequence (a_i)_{i ∈ ℕ} stabilizes to a if there exists N such that
for all i ≥ N, we have a_i = a.
This is the notion of convergence in the discrete topology. (Definition 7.5.1, label: def.fps.lim.stab)
Equations
- Seq.StabilizesTo a lim = ∃ (N : ℕ), ∀ i ≥ N, a i = lim
Instances For
If a sequence stabilizes to a limit, that limit is unique.
A constant sequence stabilizes to its value.
If a sequence is eventually equal to another, they stabilize to the same limit.
Addition preserves stabilization.
Multiplication preserves stabilization.
Negation preserves stabilization.
If s is nilpotent (i.e., s^k = 0 for some k), then (s^i) stabilizes to 0.
If s is idempotent (i.e., s^2 = s), then (s^i)_{i ≥ 1} stabilizes to s.
A finite sum of stabilizing sequences stabilizes.
A sequence of FPSs (f_i)_{i ∈ ℕ} coefficientwise stabilizes to f if for each n ∈ ℕ,
the sequence ([x^n] f_i)_{i ∈ ℕ} stabilizes to [x^n] f.
This is the notion of convergence in the product topology where each factor K
has the discrete topology.
(Definition 7.5.2, label: def.fps.lim.coeff-stab)
Equations
- PowerSeries.CoeffStabilizesTo f lim = ∀ (n : ℕ), Seq.StabilizesTo (fun (i : ℕ) => (PowerSeries.coeff n) (f i)) ((PowerSeries.coeff n) lim)
Instances For
If a sequence coefficientwise stabilizes to a limit, that limit is unique.
A constant sequence coefficientwise stabilizes to its value.
The sequence (x^i)_{i ∈ ℕ} coefficientwise stabilizes to 0.
For each n, the sequence of n-th coefficients is (0, 0, ..., 0, 1, 0, 0, ...)
which stabilizes to 0.
If each coefficient sequence stabilizes, the FPS sequence coefficientwise stabilizes. (Theorem 7.5.3, label: thm.fps.lim.lim-crit)
x^n-Equivalence Properties #
The canonical definition of x^n-equivalence (XnEquiv) and its properties are in
AlgebraicCombinatorics.FPS.XnEquivalence. The notation f ≡[x^n] g is defined there.
This section provides:
xnEquivas an alias forXnEquiv(for use in this file's context)xnEquiv_*lemmas as convenience aliases with underscore naming convention- Additional lemmas not in
XnEquivalence.lean(e.g.,xnEquiv_subst,xnEquiv_invOfUnit)
Note: xnEquiv_refl has @[refl] for use with the refl tactic.
Alias for XnEquiv in the current type context.
Equations
Instances For
x^n-equivalence is reflexive.
x^n-equivalence is reflexive (simp-friendly version).
This is a simp lemma for automatic simplification in proofs involving x^n-equivalence.
The theorem xnEquiv_refl has the @[refl] attribute for use with the refl tactic.
x^n-equivalence is symmetric.
x^n-equivalence is compatible with finite sums. (Theorem 7.3.11(f), label: thm.fps.xneq.props)
x^n-equivalence is compatible with finite products.
If two families of FPSs (c_w)_{w ∈ V} and (d_w)_{w ∈ V} satisfy c_w ≡[x^n] d_w for
each w ∈ V, then ∏_{w ∈ V} c_w ≡[x^n] ∏_{w ∈ V} d_w.
This is a key lemma used in proving that the family of fiber subproducts is multipliable (Proposition prop.fps.prods-mulable-rules.SW1).
(Theorem 7.3.11(f), label: thm.fps.xneq.props) (Also: Lemma lem.fps.prods-mulable-rules.SW1.lem1)
When constantCoeff g = 0, the coefficient coeff n (g ^ d) is zero for d > n.
This is because order(g) ≥ 1 implies order(g^d) ≥ d.
The n-th coefficient of f.subst g equals a finite sum over coefficients.
When constantCoeff g = 0, only coefficients 0 through n of f contribute.
x^n-equivalence is compatible with composition (when inner series have zero constant term). This is the key lemma (Proposition 7.4.7 in Loehr).
If two pairs of FPSs agree on their first n+1 coefficients, then their products also agree on those coefficients. (Lemma 7.3.15, label: lem.fps.prod.irlv.cong-mul)
This is a direct consequence of the fact that the k-th coefficient of a product only depends on coefficients 0 through k of each factor.
This is an alternative formulation of xnEquiv_mul using explicit coefficient equality.
x^n-equivalence is compatible with taking inverses (when constant coefficients are units). The key insight is that the coefficients of the inverse are determined by a recursive formula that only depends on lower coefficients.
x^n-equivalence is compatible with taking inverses (with different units that are equal as elements). This variant is useful when the units come from different IsUnit proofs but have the same value.
x^n-equivalence is compatible with division (when denominators are invertible). (Theorem 7.3.11(e), label: thm.fps.xneq.props)
If a ≡[x^n] b and c ≡[x^n] d, and c, d are invertible, then a/c ≡[x^n] b/d.
If two pairs of FPSs agree on their first n+1 coefficients, and the denominators are invertible, then their quotients also agree on those coefficients. (Lemma 7.3.16, label: lem.fps.prod.irlv.cong-div)
This is a direct consequence of the fact that the k-th coefficient of a quotient only depends on coefficients 0 through k of each factor.
This is an alternative formulation of xnEquiv_div using explicit coefficient equality.
If f_i → f, then for each n, eventually f_i ≡[x^n] f.
(Lemma 7.5.4, label: lem.fps.lim.xn-equiv)
Limits respect addition. (Proposition 7.5.5, label: prop.fps.lim.sum-prod)
Limits respect multiplication. (Proposition 7.5.5, label: prop.fps.lim.sum-prod)
Limits respect finite sums. (Corollary 7.5.6, label: cor.fps.lim.sum-prod-k)
Limits respect finite products. (Corollary 7.5.6, label: cor.fps.lim.sum-prod-k)
Limits respect negation.
Limits respect subtraction.
If each g_i is invertible and g_i → g, then g is invertible.
Helper: the unit from isUnit_constantCoeff_of_coeffStabilizesTo equals the unit from hunit i for sufficiently large i.
Coefficients of invOfUnit stabilize when the input coefficients stabilize. This is the key lemma for proving that limits respect division.
Limits respect division (when denominators are invertible). (Proposition 7.5.6, label: prop.fps.lim.sum-quot)
Note: We state this in terms of multiplication by the inverse.
Limits respect composition (when the inner FPS has zero constant term). (Proposition 7.5.7, label: prop.fps.lim.comp)
We use subst for composition.
Limits respect derivatives. (Proposition 7.5.8, label: prop.fps.lim.deriv-lim)
A family of FPSs is summable if for each n, only finitely many have nonzero n-th coeff.
Instances For
The infinite sum of a summable family.
Equations
- PowerSeries.tsum' f hf = PowerSeries.mk fun (n : ℕ) => ∑ i ∈ ⋯.toFinset, (PowerSeries.coeff n) (f i)
Instances For
Infinite sum is the limit of partial sums. (Theorem 7.5.9, label: thm.fps.lim.sum-lim)
The proof proceeds by showing that for each coefficient index n, the sequence of
partial sums of n-th coefficients eventually equals the infinite sum.
This follows from the summability condition: only finitely many terms have
nonzero n-th coefficient, so once the partial sum includes all of these,
it stabilizes.
A family of FPSs is multipliable if each has constant term 1 and for each n,
eventually all terms are 1 + O(x^{n+1}).
Note: This is a more restrictive definition than PowerSeries.Multipliable in
InfiniteProducts.lean. This definition is specifically designed for ℕ-indexed
sequences where we consider limits of partial products ∏_{i=0}^{N} f_i.
The general PowerSeries.Multipliable a only requires that each coefficient is
finitely determined, and works for arbitrary index types. For general infinite
products, use the definitions in InfiniteProducts.lean.
Equations
- PowerSeries.IsMultipliable f = ((∀ (i : ℕ), PowerSeries.constantCoeff (f i) = 1) ∧ ∀ (n : ℕ), ∃ (N : ℕ), ∀ i ≥ N, ∀ k ≤ n, (PowerSeries.coeff k) (f i) = if k = 0 then 1 else 0)
Instances For
The infinite product of a multipliable family (ℕ-indexed version).
The n-th coefficient of the infinite product equals the n-th coefficient of
any sufficiently large partial product.
Note: This is the ℕ-indexed version for use with IsMultipliable. For the
general infinite product over arbitrary index types, use PowerSeries.tprod in
InfiniteProducts.lean.
Equations
- PowerSeries.tprod' f hf = PowerSeries.mk fun (n : ℕ) => have N := ⋯.choose; (PowerSeries.coeff n) (∏ j ∈ Finset.range (N + 1), f j)
Instances For
If f has the form 1 + O(x^{n+1}), then (g * f) agrees with g on coefficients ≤ n. This is a key lemma for showing that partial products stabilize.
For a multipliable family, once the index exceeds N (where N witnesses the multipliability condition for n), the k-th coefficient of partial products stabilizes.
For a multipliable family, the n-th coefficient of partial products stabilizes.
Infinite product is the limit of partial products. (Theorem 7.5.10, label: thm.fps.lim.prod-lim)
Each FPS is a limit of polynomials. (Corollary 7.5.11, label: cor.fps.lim.fps-as-pol)
This can be restated as "the polynomials are dense in the FPSs".
Converse of coeffStabilizesTo_partial_sum: if the partial sums converge,
the family is summable.
(Theorem 7.5.12, label: thm.fps.lim.sum-lim-conv)
If partial sums converge, the limit equals the infinite sum. (Theorem 7.5.12, label: thm.fps.lim.sum-lim-conv)
Helper lemma: constant coeff of product of power series with constant coeff 1 is 1.
Converse of coeffStabilizesTo_partial_prod: if the partial products converge,
the family is multipliable.
(Theorem 7.5.13, label: thm.fps.lim.prod-lim-conv)
If partial products converge, the limit equals the infinite product. (Theorem 7.5.13, label: thm.fps.lim.prod-lim-conv)