Laurent Power Series #
This file formalizes the content from Section sec.gf.laure of the textbook,
covering Laurent power series and related concepts.
Main Definitions #
BinaryRepresentation- A binary representation of a nonnegative integerBalancedTernaryRepresentation- A balanced ternary representation of an integerDoublyInfinitePowerSeries- The K-module K[[x^±]] of all families indexed by ℤDoublyInfinitePowerSeries.IsLaurentSeries- Predicate for when a doubly infinite power series is a Laurent series (Definitiondef.fps.laure.lauser)- We also use Mathlib's
LaurentPolynomialfor K[x^±] andLaurentSeriesfor K((x))
Main Results #
binaryRepresentation_unique- Each n ∈ ℕ has a unique binary representationbalancedTernaryRepresentation_unique- Each integer has a unique balanced ternary representationisLaurentSeries_ofLaurentSeries- Mathlib's LaurentSeries satisfies our IsLaurentSeries predicatetoLaurentSeries_ofLaurentSeries/ofLaurentSeries_toLaurentSeries- Round-trip equivalence showing our definition matches Mathlib'sInt.isPWO_of_bddBelow- Bounded below subsets of ℤ are partially well-ordered- Properties of Laurent polynomials and Laurent series from Mathlib
References #
- [Grinberg, Algebraic Combinatorics], Section on Laurent power series
Binary Representation #
A binary representation encodes a nonnegative integer as an essentially finite sequence of bits (0 or 1).
A binary representation of a nonnegative integer n is an essentially finite
sequence (b_i)_{i ∈ ℕ} of elements in {0, 1} such that n = ∑ b_i * 2^i.
This corresponds to Definition in sec.gf.laure of the source.
The sequence of bits
Only finitely many bits are nonzero
The sum equals n
Instances For
Every natural number has a binary representation.
This is part of Theorem thm.fps.laure.binary-rep-uniq.
The binary representation of a natural number is unique.
This is Theorem thm.fps.laure.binary-rep-uniq.
Balanced Ternary Representation #
A balanced ternary representation uses digits from {-1, 0, 1} with base 3. Unlike binary representations, this can represent negative integers.
The set of balanced ternary digits: {-1, 0, 1}
- negOne : BalancedTernaryDigit
- zero : BalancedTernaryDigit
- one : BalancedTernaryDigit
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Convert a balanced ternary digit to an integer
Equations
Instances For
Different digits have different integer values
The range of toInt is {-1, 0, 1}
Different digits have different residues mod 3
A balanced ternary representation of an integer n is an essentially finite
sequence (b_i)_{i ∈ ℕ} of elements in {-1, 0, 1} such that n = ∑ b_i * 3^i.
This corresponds to the Definition of balanced ternary representation in sec.gf.laure.
- digits : ℕ → BalancedTernaryDigit
The sequence of digits
Only finitely many digits are nonzero
The sum equals n
Instances For
Helper definitions and lemmas for balanced ternary existence proof #
A digit is nonzero iff its toInt is nonzero
Every integer has a balanced ternary representation.
This is part of Theorem thm.fps.laure.balanced-tern-rep-uniq.
The balanced ternary representation of an integer is unique.
This is Theorem thm.fps.laure.balanced-tern-rep-uniq.
Doubly Infinite Power Series #
The K-module K[[x^±]] of all families (a_n)_{n ∈ ℤ} of elements of K. This is the largest space allowing negative powers of x, but it does not have a well-defined multiplication in general.
This corresponds to Definition def.fps.laure.double.
The K-module of doubly infinite power series K[[x^±]].
An element is a family (a_n)_{n ∈ ℤ} of elements of K. Addition and scalar
multiplication are defined entrywise.
Note: This is NOT a ring because multiplication is not always well-defined (the convolution sum may be infinite).
This corresponds to Definition def.fps.laure.double.
Equations
Instances For
Equations
- AlgebraicCombinatorics.DoublyInfinitePowerSeries.instModule = Pi.module ℤ (fun (a : ℤ) => K) K
The coefficient of x^n in a doubly infinite power series
Instances For
Two doubly infinite power series are equal iff all their coefficients are equal
The element x^n in K[[x^±]], represented as a family
Instances For
Any doubly infinite power series f equals (coeff f n) at position n. This is the pointwise characterization of the notation ∑_{n∈ℤ} a_n x^n: at each position m, the coefficient is a_m.
This formalizes the representation mentioned at the end of Definition def.fps.laure.double:
"we will later use the notation ∑{n∈ℤ} a_n x^n for a family (a_n){n∈ℤ}".
Note: This is a formal identity of families. The "sum" is well-defined because at each coefficient position m, only the term n = m contributes.
The representation f = ∑{n∈ℤ} (coeff f n) · x^n holds pointwise: at position m, f m = (coeff f m) · 1 + ∑{n≠m} (coeff f n) · 0 = coeff f m.
A doubly infinite power series is a Laurent series if the sequence of negative coefficients (a_{-1}, a_{-2}, a_{-3}, ...) is essentially finite, i.e., all sufficiently negative indices have zero coefficient.
This is Definition def.fps.laure.lauser from the textbook:
We let K((x)) be the subset of K[[x^±]] consisting of all families (a_i){i∈ℤ}
such that the sequence (a{-1}, a_{-2}, a_{-3}, ...) is essentially finite --
i.e., such that all sufficiently low i ∈ ℤ satisfy a_i = 0.
The elements of K((x)) are called Laurent series in one indeterminate x over K.
Equations
- f.IsLaurentSeries = ∃ (N : ℤ), ∀ n < N, f.coeff n = 0
Instances For
The support of a Laurent series is bounded below.
Convert a Mathlib LaurentSeries to a DoublyInfinitePowerSeries
Equations
Instances For
A Mathlib LaurentSeries satisfies our IsLaurentSeries predicate.
This shows that Mathlib's definition of LaurentSeries (as HahnSeries ℤ K)
matches the textbook Definition def.fps.laure.lauser.
For ℤ, a set bounded below is partially well-ordered.
This follows from the fact that any sequence in ℤ bounded below has a monotone subsequence (by Ramsey's theorem / infinite pigeonhole).
Convert a DoublyInfinitePowerSeries satisfying IsLaurentSeries to a Mathlib LaurentSeries
Instances For
The round-trip from LaurentSeries to DoublyInfinitePowerSeries and back gives the same series
The round-trip from DoublyInfinitePowerSeries to LaurentSeries and back gives the same function
Laurent Polynomials #
The K-algebra K[x^±] of Laurent polynomials consists of essentially finite families (a_n)_{n ∈ ℤ}. Unlike K[[x^±]], this IS a ring.
We use Mathlib's LaurentPolynomial which is defined as AddMonoidAlgebra R ℤ.
This corresponds to Definition def.fps.laure.laupol.
Theorem thm.fps.laure.laupol-ring #
The K-module K[x^±], equipped with the convolution multiplication, is a commutative
K-algebra. Its unity is (δ_{i,0})_{i∈ℤ}. The element x (represented as T 1) is
invertible in this K-algebra.
This is fully formalized below using Mathlib's LaurentPolynomial type.
Part 1: K[x^±] is a commutative K-algebra #
The Laurent polynomial ring K[x^±] is a commutative semiring (and a commutative ring when K is a ring). It is also a K-algebra.
In Mathlib, this is established via AddMonoidAlgebra.instCommSemiring and related instances.
Laurent polynomials form a commutative semiring.
This is part of Theorem thm.fps.laure.laupol-ring.
Laurent polynomials form a K-algebra.
This is part of Theorem thm.fps.laure.laupol-ring.
Part 2: The unity is (δ_{i,0})_{i∈ℤ} #
The multiplicative identity in K[x^±] is the family that is 1 at index 0 and 0 elsewhere.
In Mathlib, this is LaurentPolynomial.T 0 = 1.
The unity of K[x^±] is T 0 = (δ_{i,0})_{i∈ℤ}.
This is part of Theorem thm.fps.laure.laupol-ring.
The unity of K[x^±] evaluated at index n is 1 if n = 0, else 0.
This is the explicit characterization from Theorem thm.fps.laure.laupol-ring.
Part 3: The element x is invertible #
The element x (represented as T 1 in Mathlib) is a unit in K[x^±], with inverse x⁻¹ = T (-1).
The element T 1 (corresponding to x) is invertible in K[T;T⁻¹].
This is part of Theorem thm.fps.laure.laupol-ring.
More generally, T n is invertible for any n ∈ ℤ.
This generalizes the invertibility statement in Theorem thm.fps.laure.laupol-ring.
The inverse of T n is T (-n).
This is the explicit inverse formula from Theorem thm.fps.laure.laupol-ring.
The inverse of T n is T (-n) (multiplication in the other order).
This is the explicit inverse formula from Theorem thm.fps.laure.laupol-ring.
The unit associated to T n, with explicit inverse T (-n).
Equations
- AlgebraicCombinatorics.laurentPolynomial_T_unit K n = { val := LaurentPolynomial.T n, inv := LaurentPolynomial.T (-n), val_inv := ⋯, inv_val := ⋯ }
Instances For
Representation as sum #
Any Laurent polynomial f = (a_i){i ∈ ℤ} satisfies f = ∑{i ∈ support f} a_i T^i.
Any Laurent polynomial f = (a_i){i ∈ ℤ} satisfies f = ∑{i ∈ support f} a_i T^i.
This is Proposition prop.fps.laure.a=sumaixi.
Here we state this for Laurent polynomials, where the sum is finite.
Alternative characterizations #
The Laurent polynomial ring K[x^±] can equivalently be described as:
- The group algebra of ℤ over K
- The localization of K[x] at the powers of x
These are mentioned in the textbook after Theorem thm.fps.laure.laupol-ring.
K[x^±] is isomorphic to the group algebra K[ℤ].
This is one of the alternative characterizations mentioned after Theorem thm.fps.laure.laupol-ring.
When K is a CommRing, Laurent polynomials form a CommRing.
This is part of Theorem thm.fps.laure.laupol-ring.
Laurent Series #
The K-algebra K((x)) of Laurent series consists of families (a_n)_{n ∈ ℤ} such that a_n = 0 for all sufficiently negative n.
We use Mathlib's LaurentSeries which is defined as HahnSeries ℤ R.
This corresponds to Definition def.fps.laure.lauser.
The ring homomorphism from Laurent polynomials to Laurent series. This embeds K[x^±] into K((x)) by mapping each Laurent polynomial to the corresponding Laurent series with the same coefficients.
This is mentioned after Theorem thm.fps.laure.lauser-ring.
Equations
Instances For
The Laurent polynomial to series map sends single n r to single n r.
The Laurent polynomial to series map preserves coefficients.
The Laurent polynomial to series map is injective.
The Laurent polynomial ring K[x^±] can be embedded into the Laurent series ring K((x)).
This is mentioned after Theorem thm.fps.laure.lauser-ring.
For any positive integer i, the power series 1 - x^i is invertible in K[[x]]
and hence also in K((x)). This allows the computation in the proof of
Theorem thm.fps.laure.balanced-tern-rep-uniq.
Module Structure on K[[x^±]] #
While K[[x^±]] is not a ring, it has a K[x^±]-module structure. A Laurent polynomial can be multiplied with any doubly infinite power series.
This corresponds to the discussion in "A K[x^±]-module structure on K[[x^±]]".
The action of a Laurent polynomial on a doubly infinite power series.
The product (∑ b_n x^n) · (∑ a_n x^n) = (∑ c_n x^n) where c_n = ∑{i ∈ ℤ} a_i b{n-i}. This sum is finite because the Laurent polynomial has finite support.
This makes K[[x^±]] into a K[x^±]-module.
Equations
- AlgebraicCombinatorics.laurentPolynomialSmul p f n = Finsupp.sum p fun (i : ℤ) (b : K) => b * f (n - i)
Instances For
The multiplication (1-x) · (∑_{n ∈ ℤ} x^n) = 0 shows that K[[x^±]] has torsion as a K[x^±]-module. This is the calculation showing why we cannot divide by (1-x) in K[[x^±]].
This corresponds to the discussion at the end of the section.
k-bounded Balanced Ternary Representations #
A balanced ternary representation is k-bounded if all digits beyond position k are zero.
This is used in the rigorous proof of Theorem thm.fps.laure.balanced-tern-rep-uniq.
A balanced ternary representation is k-bounded if b_{k+1} = b_{k+2} = ... = 0.
Instances For
For k-bounded representations, the finsum equals a finite sum over range(k+1).
Key lemma: if sum of c_i * 3^i = 0 where c_i ∈ {-2,...,2}, then all c_i = 0.
This is the core uniqueness argument: the difference of two balanced ternary representations has coefficients in {-2,...,2}, and if the sum is 0, all coefficients must be 0.
Each integer n with |n| ≤ 3^0 + 3^1 + ... + 3^k has a unique k-bounded balanced ternary representation.
This is the key lemma used in the rigorous proof of
Theorem thm.fps.laure.balanced-tern-rep-uniq.
Field Structure #
When K is a field, K((x)) is also a field. This is mentioned at the end of the section.
Partial Product Formula #
The key computation used to prove Theorem thm.fps.laure.balanced-tern-rep-uniq
involves the partial products ∏_{i=0}^{k} (1 + x^{3^i} + x^{-3^i}).
The partial product ∏_{i=0}^{k} (1 + T^{3^i} + T^{-3^i}) in the Laurent polynomial ring.
This is used in the proof of Theorem thm.fps.laure.balanced-tern-rep-uniq.
Equations
- AlgebraicCombinatorics.balancedTernaryPartialProduct K k = ∏ i ∈ Finset.range (k + 1), (1 + LaurentPolynomial.T (3 ^ i) + LaurentPolynomial.T (-3 ^ i))
Instances For
The identity 1 + x + x^{-1} = (1 - x^3) / (x(1-x)) as Laurent polynomials. This is used in simplifying the partial products.