The polar-part Rota–Baxter operator on Laurent series [UPSTREAM] #
The prototype Rota–Baxter operator of weight -1 ([MCB25] Prop. 3.5.2,
eq. (3.5.4)) — the minimal-subtraction operator of Connes–Kreimer renormalization in physics. On the
Laurent series LaurentSeries A = HahnSeries ℤ A, the projection onto the polar part (the
strictly-negative-degree coefficients),
R(Σ aᵢ tⁱ) = Σ_{i < 0} aᵢ tⁱ,
is a Rota–Baxter operator of weight -1. This realizes the example named in RotaBaxter.lean's
docstring (the Laurent-series polar projection) and is the operator
[MCB25] §3.5.2 use to recast Minimal Yield as a Birkhoff factorization
(Sideward Merge appears as the polar/divergent part, removed by the renormalized character).
The Rota–Baxter identity is proved from the splitting LaurentSeries A = R ⊕ (1 − R) into the two
subalgebras of polar (support < 0) and non-polar (support ≥ 0) series: R fixes products of
polar parts and kills products of non-polar parts, because support (x * y) ⊆ support x + support y
(HahnSeries.support_mul_subset).
Implementation notes #
The lemmas are stated at the coefficient function level (polarHahn, not a packaged LinearMap)
and the op field of rotaBaxterPolar is constructed inline, so its module is the expected
Algebra.toModule rather than HahnSeries.instModule. This avoids the Module-instance diamond on
LaurentSeries A (the two modules are defeq but distinct terms, and reconciling them runs isDefEq
through the noncomputable Laurent multiplication) — the same way mathlib proves the HahnSeries ring
axioms directly at the coefficient level rather than by transporting packaged maps.
Main definitions #
LaurentSeries.polarHahn: the polar projection on coefficients.LaurentSeries.rotaBaxterPolar: the weight--1Rota–Baxter operator structure.
References #
[MCB25] (Prop. 3.5.2, eq. (3.5.4))
The polar part of a Laurent series: the strictly-negative-degree part ([MCB25] eq. (3.5.4)).
Equations
- s.polarHahn = { coeff := LaurentSeries.polarCoeff✝ s, isPWO_support' := ⋯ }
Instances For
The complement (1 − R) s = s − R s is nonpolar: R annihilates it. So 1 − R projects
onto the nonpolar subring DM[[t]].
The two subalgebras of the splitting #
R fixes a series supported on strictly-negative degrees.
R kills a series supported on non-negative degrees.
1 = t⁰ is nonpolar.
A nonpolar series (R s = 0) is supported on non-negative degrees.
The polar part is supported on strictly-negative degrees.
The complementary part 1 − R is supported on non-negative degrees.
A product of non-polar parts has no strictly-negative-degree coefficients (the non-polar series form a subalgebra).
The Rota–Baxter operator #
The polar-projection Rota–Baxter identity (weight -1, sub-form)
([MCB25] Prop. 3.5.2): R(a)R(b) = R(R(a)b + aR(b) − ab), from the ring
identity R(a)b + aR(b) − ab = R(a)R(b) − (a−R(a))(b−R(b)) and the splitting into the two
subalgebras (R fixes R(a)R(b), kills (a−R(a))(b−R(b))).
The polar projection is a Rota–Baxter operator of weight -1 on LaurentSeries A
([MCB25] Prop. 3.5.2): the prototype minimal-subtraction operator. The
op linear map is built inline with letI := Algebra.toModule to pin the expected module (see
the implementation note); map_smul' is then over the algebra action c • x = algebraMap c * x.
Equations
- LaurentSeries.rotaBaxterPolar = { op := { toFun := LaurentSeries.polarHahn, map_add' := ⋯, map_smul' := ⋯ }, rotaBaxter := ⋯ }