Formal power series (in one variable) #
This file defines (univariate) formal power series and develops the basic properties of these objects.
A formal power series is to a polynomial like an infinite sum is to a finite sum.
Formal power series in one variable are defined from multivariate
power series as PowerSeries R := MvPowerSeries Unit R
.
The file sets up the (semi)ring structure on univariate power series.
We provide the natural inclusion from polynomials to formal power series.
Additional results can be found in:
Mathlib.RingTheory.PowerSeries.Trunc
, truncation of power series;Mathlib.RingTheory.PowerSeries.Inverse
, about inverses of power series, and the fact that power series over a local ring form a local ring;Mathlib.RingTheory.PowerSeries.Order
, the order of a power series at 0, and application to the fact that power series over an integral domain form an integral domain.
Implementation notes #
Because of its definition,
PowerSeries R := MvPowerSeries Unit R
.
a lot of proofs and properties from the multivariate case
can be ported to the single variable case.
However, it means that formal power series are indexed by Unit →₀ ℕ
,
which is of course canonically isomorphic to ℕ
.
We then build some glue to treat formal power series as if they were indexed by ℕ
.
Occasionally this leads to proofs that are uglier than expected.
Formal power series over a coefficient type R
Equations
Instances For
- LaurentSeries.instAlgebraPowerSeriesLaurentSeriesToZeroToCommMonoidWithZeroInstCommSemiringPowerSeriesInstSemiringHahnSeriesToPartialOrderToOrderedAddCommMonoidToZeroToMonoidWithZeroIntToOrderedCancelAddCommMonoidToStrictOrderedSemiringToLinearOrderedSemiringToLinearOrderedCommSemiringLinearOrderedCommRingToSemiring
- LaurentSeries.instCoePowerSeriesLaurentSeriesToZeroToMonoidWithZero
- LaurentSeries.instIsFractionRingPowerSeriesInstCommRingPowerSeriesToCommRingToEuclideanDomainLaurentSeriesToZeroToCommMonoidWithZeroToCommGroupWithZeroToSemifieldInstCommRingHahnSeriesToPartialOrderToOrderedAddCommMonoidToZeroToCommMonoidWithZeroToCommSemiringIntToOrderedCancelAddCommMonoidToStrictOrderedSemiringToLinearOrderedSemiringToLinearOrderedCommSemiringLinearOrderedCommRingInstAlgebraPowerSeriesLaurentSeriesToZeroToCommMonoidWithZeroInstCommSemiringPowerSeriesInstSemiringHahnSeriesToPartialOrderToOrderedAddCommMonoidToZeroToMonoidWithZeroIntToOrderedCancelAddCommMonoidToStrictOrderedSemiringToLinearOrderedSemiringToLinearOrderedCommSemiringLinearOrderedCommRingToSemiringToCommSemiring
- Polynomial.coeToPowerSeries
- PowerSeries.algebraPolynomial
- PowerSeries.algebraPolynomial'
- PowerSeries.algebraPowerSeries
- PowerSeries.instAddCommGroupPowerSeries
- PowerSeries.instAddCommMonoidPowerSeries
- PowerSeries.instAddGroupPowerSeries
- PowerSeries.instAddMonoidPowerSeries
- PowerSeries.instAlgebraPowerSeriesInstSemiringPowerSeries
- PowerSeries.instCommRingPowerSeries
- PowerSeries.instCommSemiringPowerSeries
- PowerSeries.instInhabitedPowerSeries
- PowerSeries.instIsDomainPowerSeriesInstSemiringPowerSeriesToSemiring
- PowerSeries.instIsScalarTowerPowerSeriesToSMulInstZeroPowerSeriesToZeroToAddMonoidToSMulZeroClassToZeroToMonoidWithZeroToSMulWithZeroToMulActionWithZeroInstAddCommMonoidPowerSeriesInstModulePowerSeriesInstAddCommMonoidPowerSeriesToSMulToSMulZeroClassToZeroToMonoidWithZeroToSMulWithZeroToMulActionWithZeroInstModulePowerSeriesInstAddCommMonoidPowerSeries
- PowerSeries.instModulePowerSeriesInstAddCommMonoidPowerSeries
- PowerSeries.instNoZeroDivisorsPowerSeriesToMulToNonUnitalNonAssocRingToNonAssocRingInstRingPowerSeriesInstZeroPowerSeriesToZeroToMonoidWithZeroToSemiring
- PowerSeries.instNontrivialPowerSeries
- PowerSeries.instRingPowerSeries
- PowerSeries.instSemiringPowerSeries
- PowerSeries.instZeroPowerSeries
R⟦X⟧
is notation for PowerSeries R
,
the semiring of formal power series in one variable over a semiring R
.
Equations
- PowerSeries.«term_⟦X⟧» = Lean.ParserDescr.trailingNode `PowerSeries.term_⟦X⟧ 9000 0 (Lean.ParserDescr.symbol "⟦X⟧")
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
The n
th coefficient of a formal power series.
Equations
- PowerSeries.coeff R n = MvPowerSeries.coeff R (Finsupp.single () n)
The n
th monomial with coefficient a
as formal power series.
Equations
Two formal power series are equal if all their coefficients are equal.
Two formal power series are equal if all their coefficients are equal.
Constructor for formal power series.
Equations
- PowerSeries.mk f s = f (s ())
The constant coefficient of a formal power series.
Equations
The constant formal power series.
Equations
The variable of the formal power series ring.
Equations
- PowerSeries.X = MvPowerSeries.X ()
If a formal power series is invertible, then so is its constant coefficient.
Split off the constant coefficient.
Split off the constant coefficient.
The ring homomorphism taking a power series f(X)
to f(aX)
.
Equations
- One or more equations did not get rendered due to their size.
Coefficients of a product of power series
The ring homomorphism taking a power series f(X)
to f(-X)
.
Equations
- PowerSeries.evalNegHom = PowerSeries.rescale (-1)
Equations
- ⋯ = ⋯
The ideal spanned by the variable in the power series ring over an integral domain is a prime ideal.
Equations
- ⋯ = ⋯
The natural inclusion from polynomials into formal power series.
Equations
- ↑φ = PowerSeries.mk fun (n : ℕ) => Polynomial.coeff φ n
The natural inclusion from polynomials into formal power series.
Equations
- Polynomial.coeToPowerSeries = { coe := Polynomial.ToPowerSeries }
The coercion from polynomials to power series as a ring homomorphism.
Equations
- Polynomial.coeToPowerSeries.ringHom = { toMonoidHom := { toOneHom := { toFun := Coe.coe, map_one' := ⋯ }, map_mul' := ⋯ }, map_zero' := ⋯, map_add' := ⋯ }
The coercion from polynomials to power series as an algebra homomorphism.
Equations
- Polynomial.coeToPowerSeries.algHom A = let __src := RingHom.comp (PowerSeries.map (algebraMap R A)) Polynomial.coeToPowerSeries.ringHom; { toRingHom := __src, commutes' := ⋯ }
Equations
- PowerSeries.algebraPolynomial = RingHom.toAlgebra (Polynomial.coeToPowerSeries.algHom A).toRingHom
Equations
- PowerSeries.algebraPowerSeries = RingHom.toAlgebra (PowerSeries.map (algebraMap R A))
Equations
- PowerSeries.algebraPolynomial' = RingHom.toAlgebra (RingHom.comp Polynomial.coeToPowerSeries.ringHom (algebraMap R (Polynomial A)))