Multiplicative properties of Hahn series #
If Γ is ordered and R has zero, then R⟦Γ⟧ consists of formal series over Γ with
coefficients in R, whose supports are partially well-ordered. This module introduces
multiplication and scalar multiplication on Hahn series. If Γ is an ordered cancellative
commutative additive monoid and R is a semiring, then we get a semiring structure on
R⟦Γ⟧. If Γ has an ordered vector-addition on Γ' and R has a scalar multiplication
on V, we define HahnModule Γ' R V as a type alias for V⟦Γ'⟧ that admits a scalar
multiplication from R⟦Γ⟧. The scalar action of R on R⟦Γ⟧ is compatible
with the action of R⟦Γ⟧ on HahnModule Γ' R V.
Main Definitions #
HahnModuleis a type alias forHahnSeries, which we use for defining scalar multiplication ofR⟦Γ⟧onHahnModule Γ' R Vfor anR-moduleV, whereΓ'admits an ordered cancellative vector addition operation fromΓ. The type alias allows us to avoid a potential instance diamond.HahnModule.ofis the isomorphism fromV⟦Γ⟧toHahnModule Γ R V.HahnSeries.Cis theconstant termring homomorphismR →+* R⟦Γ⟧.HahnSeries.embDomainRingHomis the ring homomorphismR⟦Γ⟧ →+* R⟦Γ'⟧induced by an order embeddingΓ ↪o Γ'.HahnSeries.orderTopSubOnePosis the group of invertible Hahn series close to 1, i.e., those series such that subtracting one yields a series with strictly positiveorderTop.
Main results #
- If
Ris a (commutative) (semi-)ring, then so isR⟦Γ⟧. - If
Vis anR-module, thenHahnModule Γ' R Vis aR⟦Γ⟧-module.
TODO #
The following may be useful for composing vertex operators, but they seem to take time.
- rightTensorMap:
HahnModule Γ' R U ⊗[R] V →ₗ[R] HahnModule Γ' R (U ⊗[R] V) - leftTensorMap:
U ⊗[R] HahnModule Γ' R V →ₗ[R] HahnModule Γ' R (U ⊗[R] V)
References #
Equations
- HahnSeries.instOne = { one := (HahnSeries.single 0) 1 }
Equations
- HahnSeries.instNatCast = { natCast := fun (n : ℕ) => (HahnSeries.single 0) ↑n }
Equations
- HahnSeries.instIntCast = { intCast := fun (z : ℤ) => (HahnSeries.single 0) ↑z }
Equations
- HahnSeries.instNNRatCast = { nnratCast := fun (q : ℚ≥0) => (HahnSeries.single 0) ↑q }
Equations
- HahnSeries.instRatCast = { ratCast := fun (q : ℚ) => (HahnSeries.single 0) ↑q }
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
We introduce a type alias for HahnSeries in order to work with scalar multiplication by
series. If we wrote a SMul R⟦Γ⟧ V⟦Γ⟧ instance, then when
V = R⟦Γ⟧, we would have two different actions of R⟦Γ⟧ on V⟦Γ⟧.
See Mathlib/Algebra/Polynomial/Module.lean for more discussion on this problem.
Equations
- HahnModule Γ R V = HahnSeries Γ V
Instances For
The casting function to the type synonym.
Equations
- HahnModule.of R = Equiv.refl (HahnSeries Γ V)
Instances For
Recursion principle to reduce a result about the synonym to the original type.
Equations
- HahnModule.rec h x = h ((HahnModule.of R).symm x)
Instances For
Equations
Equations
Equations
Equations
- HahnModule.instBaseSMul = inferInstanceAs (SMul R (HahnSeries Γ V))
Equations
- One or more equations did not get rendered due to their size.
Equations
Equations
- HahnModule.instSMulZeroClass = { toSMul := HahnModule.instSMul, smul_zero := ⋯ }
Equations
- HahnModule.instDistribSMul = { toSMulZeroClass := HahnModule.instSMulZeroClass, smul_add := ⋯ }
Equations
- HahnSeries.instMul = { mul := fun (x y : HahnSeries Γ R) => (HahnModule.of R).symm (x • (HahnModule.of R) y) }
Equations
- HahnSeries.instDistrib = { toMul := HahnSeries.instMul, toAdd := HahnSeries.instAdd, left_distrib := ⋯, right_distrib := ⋯ }
Alias of HahnSeries.support_mul_subset.
Equations
- One or more equations did not get rendered due to their size.
Equations
- HahnSeries.instNonUnitalSemiring = { toNonUnitalNonAssocSemiring := HahnSeries.instNonUnitalNonAssocSemiring, mul_assoc := ⋯ }
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- HahnSeries.instNonUnitalCommSemiring = { toNonUnitalSemiring := inferInstance, mul_comm := ⋯ }
Equations
- HahnSeries.instCommSemiring = { toSemiring := HahnSeries.instSemiring, mul_comm := ⋯ }
Equations
- One or more equations did not get rendered due to their size.
Equations
- HahnSeries.instNonUnitalRing = { toNonUnitalNonAssocRing := HahnSeries.instNonUnitalNonAssocRing, mul_assoc := ⋯ }
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- HahnSeries.instNonUnitalCommRing = { toNonUnitalRing := HahnSeries.instNonUnitalRing, mul_comm := ⋯ }
Equations
- HahnSeries.instCommRing = { toRing := HahnSeries.instRing, mul_comm := ⋯ }
The group of invertible Hahn series close to 1, i.e., those series such that subtracting 1
yields a series with strictly positive orderTop.
Equations
Instances For
Equations
- HahnModule.instBaseModule = inferInstanceAs (Module R (HahnSeries Γ' V))
Equations
- One or more equations did not get rendered due to their size.
Alias of HahnSeries.orderTop_add_le_mul.
C a is the constant Hahn Series a. C is provided as a ring homomorphism.
Equations
- HahnSeries.C = { toFun := ⇑(HahnSeries.single 0), map_one' := ⋯, map_mul' := ⋯, map_zero' := ⋯, map_add' := ⋯ }
Instances For
Extending the domain of Hahn series is a ring homomorphism.
Equations
- HahnSeries.embDomainRingHom f hfi hf = { toFun := HahnSeries.embDomain { toFun := ⇑f, inj' := hfi, map_rel_iff' := ⋯ }, map_one' := ⋯, map_mul' := ⋯, map_zero' := ⋯, map_add' := ⋯ }
Instances For
Equations
- HahnSeries.instAlgebra = { toSMul := HahnSeries.instSMul, algebraMap := HahnSeries.C.comp (algebraMap R A), commutes' := ⋯, smul_def' := ⋯ }
Extending the domain of Hahn series is an algebra homomorphism.
Equations
- HahnSeries.embDomainAlgHom f hfi hf = { toRingHom := HahnSeries.embDomainRingHom f hfi hf, commutes' := ⋯ }