Laurent Series #
In this file we define LaurentSeries R
, the formal Laurent series over R
, here an arbitrary
type with a zero. They are denoted R⸨X⸩
.
Main Definitions #
- Defines
LaurentSeries
as an abbreviation forHahnSeries ℤ
. - Defines
hasseDeriv
of a Laurent series with coefficients in a module over a ring. - Provides a coercion
from power series
R⟦X⟧into
R⸨X⸩given by
HahnSeries.ofPowerSeries`. - Defines
LaurentSeries.powerSeriesPart
- Defines the localization map
LaurentSeries.of_powerSeries_localization
which evaluates toHahnSeries.ofPowerSeries
. - Embedding of rational functions into Laurent series, provided as a coercion, utilizing
the underlying
RatFunc.coeAlgHom
. - Study of the
X
-Adic valuation on the ring of Laurent series over a field - In
LaurentSeries.uniformContinuous_coeff
we show that sending a Laurent series to itsd
th coefficient is uniformly continuous, ensuring that it sends a Cauchy filterℱ
inK⸨X⸩
to a Cauchy filter inK
: since this latter is given the discrete topology, this provides an elementLaurentSeries.Cauchy.coeff ℱ d
inK
that serves asd
th coefficient of the Laurent series to which the filterℱ
converges.
Main Results #
- Basic properties of Hasse derivatives
About the X
-Adic valuation: #
- The (integral) valuation of a power series is the order of the first non-zero coefficient, see
LaurentSeries.intValuation_le_iff_coeff_lt_eq_zero
. - The valuation of a Laurent series is the order of the first non-zero coefficient, see
LaurentSeries.valuation_le_iff_coeff_lt_eq_zero
. - Every Laurent series of valuation less than
(1 : ℤₘ₀)
comes from a power series, seeLaurentSeries.val_le_one_iff_eq_coe
. - The uniform space of
LaurentSeries
over a field is complete, formalized in the instanceinstLaurentSeriesComplete
. - The field of rational functions is dense in
LaurentSeries
: this is the declarationLaurentSeries.coe_range_dense
and relies principally uponLaurentSeries.exists_ratFunc_val_lt
, stating that for every Laurent seriesf
and everyγ : ℤₘ₀
one can find a rational functionQ
such that theX
-adic valuationv
satifiesv (f - Q) < γ
. - In
LaurentSeries.valuation_compare
we prove that the extension of theX
-adic valuation fromRatFunc K
up to its abstract completion coincides, modulo the isomorphism withK⸨X⸩
, with theX
-adic valuation onK⸨X⸩
. - The two declaration
LaurentSeries.mem_integers_of_powerSeries
andLaurentSeries.exists_powerSeries_of_memIntegers
show that an element in the completion ofRatFunc K
is in the unit ball if and only if it comes from a power series through the isomorphismLaurentSeriesRingEquiv
. LaurentSeries.powerSeriesRingEquiv
is the ring isomorphism betweenK⟦X⟧
and the unit ball inside theX
-adic completion ofRatFunc K
.
Implementation details #
- Since
LaurentSeries
is just an abbreviation ofHahnSeries ℤ _
, the definition of the coefficients is given in terms ofHahnSeries.coeff
and this forces sometimes to go back-and-forth fromX : _⸨X⸩
tosingle 1 1 : HahnSeries ℤ _
. - To prove the isomorphism between the
X
-adic completion ofRatFunc K
andK⸨X⸩
we construct two completions ofRatFunc K
: the first (LaurentSeries.ratfuncAdicComplPkg
) is its abstract uniform completion; the second (LaurentSeries.LaurentSeriesPkg
) is simplyK⸨X⸩
, once we prove that it is complete and containsRatFunc K
as a dense subspace. The isomorphism is the comparison equivalence, expressing the mathematical idea that the completion "is unique". It isLaurentSeries.comparePkg
. - For applications to
K⟦X⟧
it is actually more handy to use the inverse of the above equivalence:LaurentSeries.LaurentSeriesRingEquiv
is the topological, ring equivalenceK⸨X⸩ ≃+* RatFuncAdicCompl K
. - In order to compare
K⟦X⟧
with the valuation subring in theX
-adic completion ofRatFunc K
we consider its aliasLaurentSeries.powerSeries_as_subring
as a subring ofK⸨X⸩
, that is itself clearly isomorphic (viaLaurentSeries.powerSeriesEquivSubring.symm
) toK⟦X⟧
.
To Do #
- The
AdicCompletion
construction is currently done for ideals in rings and does not take into account the relation with algebra structures on the ring, hence it does not yield aK
-algebra structure on theX
-adic completion ofK⸨X⸩
. Once this will be available, we should updateLaurentSeries.LaurentSeriesRingEquiv
to an algebra equivalence.
LaurentSeries R
is the type of formal Laurent series with coefficients in R
, denoted R⸨X⸩
.
It is implemented as a HahnSeries
with value group ℤ
.
Equations
- LaurentSeries R = HahnSeries ℤ R
Instances For
R⸨X⸩
is notation for LaurentSeries R
,
Equations
- LaurentSeries.«term_⸨X⸩» = Lean.ParserDescr.trailingNode `LaurentSeries.«term_⸨X⸩» 9000 0 (Lean.ParserDescr.symbol "⸨X⸩")
Instances For
The Hasse derivative of Laurent series, as a linear map.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The derivative of a Laurent series.
Equations
Instances For
Equations
- LaurentSeries.instCoePowerSeries = { coe := ⇑(HahnSeries.ofPowerSeries ℤ R) }
This is a power series that can be multiplied by an integer power of X
to give our
Laurent series. If the Laurent series is nonzero, powerSeriesPart
has a nonzero
constant term.
Equations
- x.powerSeriesPart = PowerSeries.mk fun (n : ℕ) => x.coeff (HahnSeries.order x + ↑n)
Instances For
Equations
- LaurentSeries.instAlgebraPowerSeries = (HahnSeries.ofPowerSeries ℤ R).toAlgebra
The localization map from power series to Laurent series.
The coercion RatFunc F → F⸨X⸩
as bundled alg hom.
Equations
- RatFunc.coeAlgHom F = RatFunc.liftAlgHom (Algebra.ofId (Polynomial F) (LaurentSeries F)) ⋯
Instances For
The coercion RatFunc F → F⸨X⸩
as a function.
This is the implementation of coeToLaurentSeries
.
Equations
- RatFunc.coeToLaurentSeries_fun = ⇑(RatFunc.coeAlgHom F)
Instances For
Equations
- RatFunc.coeToLaurentSeries = { coe := RatFunc.coeToLaurentSeries_fun }
Equations
- RatFunc.instAlgebraLaurentSeries = (RatFunc.coeAlgHom F).toAlgebra
The prime ideal (X)
of K⟦X⟧
, when K
is a field, as a term of the HeightOneSpectrum
.
Equations
- PowerSeries.idealX K = { asIdeal := Ideal.span {PowerSeries.X}, isPrime := ⋯, ne_bot := ⋯ }
Instances For
The integral valuation of the power series X : K⟦X⟧
equals (ofAdd -1) : ℤₘ₀
Equations
Since extracting coefficients is uniformly continuous, every Cauchy filter in
K⸨X⸩
gives rise to a Cauchy filter in K
for every d : ℤ
, and such Cauchy filter
in K
converges to a principal filter
Equations
- LaurentSeries.Cauchy.coeff hℱ = fun (d : ℤ) => UniformSpace.DiscreteUnif.cauchyConst ⋯ ⋯
Instances For
To any Cauchy filter ℱ of K⸨X⸩
, we can attach a laurent series that is the limit
of the filter. Its d
-th coefficient is defined as the limit of Cauchy.coeff hℱ d
, which is
again Cauchy but valued in the discrete space K
. That sufficiently negative coefficients vanish
follows from Cauchy.coeff_support_bddBelow
Equations
- LaurentSeries.Cauchy.limit hℱ = { coeff := LaurentSeries.Cauchy.coeff hℱ, isPWO_support' := ⋯ }
Instances For
For every Laurent series f
and every γ : ℤₘ₀
one can find a rational function Q
such
that the X
-adic valuation v
satifies v (f - Q) < γ
.
Having established that the K⸨X⸩
is complete and contains RatFunc K
as a dense
subspace, it gives rise to an abstract completion of RatFunc K
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- LaurentSeries.instTopologicalSpaceSpaceRatFuncLaurentSeriesPkg K = UniformSpace.toTopologicalSpace
Reintrerpret the extension of coe : RatFunc K → K⸨X⸩
as ring homomorphism
Equations
Instances For
Equations
- LaurentSeries.instUniformSpaceRatFuncAdicCompl K = inferInstance
Equations
- LaurentSeries.instUniformSpace K = inferInstance
The uniform space isomorphism between two abstract completions of ratfunc K
Equations
- LaurentSeries.comparePkg K = LaurentSeries.ratfuncAdicComplPkg.compareEquiv (LaurentSeries.LaurentSeriesPkg K)
Instances For
The uniform space equivalence between two abstract completions of ratfunc K
as a ring
equivalence: this will be the inverse of the fundamental one.
Equations
- LaurentSeries.ratfuncAdicComplRingEquiv K = { toEquiv := (LaurentSeries.comparePkg K).toEquiv, map_mul' := ⋯, map_add' := ⋯ }
Instances For
The uniform space equivalence between two abstract completions of ratfunc K
as a ring
equivalence: it goes from K⸨X⸩
to RatFuncAdicCompl K
Equations
Instances For
In order to compare K⟦X⟧
with the valuation subring in the X
-adic completion of
RatFunc K
we consider its alias as a subring of K⸨X⸩
.
Equations
Instances For
The ring K⟦X⟧
is isomorphic to the subring powerSeries_as_subring K
Equations
- LaurentSeries.powerSeriesEquivSubring K = ⋯.mpr (⋯.mpr (Subring.topEquiv.symm.trans (⊤.equivMapOfInjective (HahnSeries.ofPowerSeries ℤ K) ⋯)))
Instances For
The ring isomorphism between K⟦X⟧
and the unit ball inside the X
-adic completion of
RatFunc K
.
Equations
- LaurentSeries.powerSeriesRingEquiv K = ((LaurentSeries.powerSeriesEquivSubring K).trans (LaurentSeries.LaurentSeriesRingEquiv K).subringMap).trans (RingEquiv.subringCongr ⋯)