Hahn Series #
If Γ
is ordered and R
has zero, then HahnSeries Γ R
consists of formal series over Γ
with
coefficients in R
, whose supports are partially well-ordered. With further structure on R
and
Γ
, we can add further structure on HahnSeries Γ R
, with the most studied case being when Γ
is
a linearly ordered abelian group and R
is a field, in which case HahnSeries Γ R
is a
valued field, with value group Γ
.
These generalize Laurent series (with value group ℤ
), and Laurent series are implemented that way
in the file RingTheory/LaurentSeries
.
Main Definitions #
- If
Γ
is ordered andR
has zero, thenHahnSeries Γ R
consists of formal series overΓ
with coefficients inR
, whose supports are partially well-ordered. - Laurent series over
R
are implemented asHahnSeries ℤ R
in the fileRingTheory/LaurentSeries
.
References #
- [J. van der Hoeven, Operators on Generalized Power Series][van_der_hoeven]
If Γ
is linearly ordered and R
has zero, then HahnSeries Γ R
consists of
formal series over Γ
with coefficients in R
, whose supports are well-founded.
- coeff : Γ → R
- isPWO_support' : Set.IsPWO (Function.support self.coeff)
Instances For
The support of a Hahn series is just the set of indices whose coefficients are nonzero. Notably, it is well-founded.
Equations
- HahnSeries.support x = Function.support x.coeff
Instances For
Equations
- HahnSeries.instZeroHahnSeries = { zero := { coeff := 0, isPWO_support' := ⋯ } }
Equations
- HahnSeries.instInhabitedHahnSeries = { default := 0 }
Equations
- ⋯ = ⋯
/-- Change a HahnSeries with coefficients in HahnSeries to a HahnSeries on the Lex product. -/ def of_iterate {Γ' : Type*} [PartialOrder Γ'] (x : HahnSeries Γ (HahnSeries Γ' R)) : HahnSeries (Γ ×ₗ Γ') R where coeff := fun g => coeff (coeff x g.1) g.2 isPWO_support' := by intro f hf simp_all only have hf' : ∀ n, (f n).1 ∈ Function.support fun g ↦ x.coeff g := by intro n hn simp_all only [Function.mem_support, ne_eq] specialize hf n rw [hn] at hf exact hf rfl sorry -- See Mathlib.Data.MvPolynomial.Monad for join and bind operations need a monotone pair. have: nonrec theorem IsPWO.exists_monotone_subseq (h : s.IsPWO) (f : ℕ → α) (hf : ∀ n, f n ∈ s) : ∃ g : ℕ ↪o ℕ, Monotone (f ∘ g) := h.exists_monotone_subseq f hf #align set.is_pwo.exists_monotone_subseq Set.IsPWO.exists_monotone_subseq map sequence to Γ, get monotone subsequence (use ext property) if stationary at a ∈ Γ, look inside {a} × Γ', get monotone subsequence. if not stationary, use lex order. /-- Change a Hahn series on a lex product to a Hahn series with coefficients in a Hahn series. -/ def to_iterate {Γ' : Type*} [PartialOrder Γ'] (x : HahnSeries (Γ ×ₗ Γ') R) : HahnSeries Γ (HahnSeries Γ' R) where coeff := fun g => { coeff := fun g' => coeff x (g, g') isPWO_support' := sorry } isPWO_support' := sorry
- Equivalence between
HahnSeries Γ (HahnSeries Γ' R)
andHahnSeries (Γ × Γ') R
- Use Set.WellFoundedOn.prod_lex_of_wellFoundedOn_fiber to iterate. (need PWO version)
single a r
is the Hahn series which has coefficient r
at a
and zero otherwise.
Equations
- HahnSeries.single a = { toFun := fun (r : R) => { coeff := Pi.single a r, isPWO_support' := ⋯ }, map_zero' := ⋯ }
Instances For
Equations
- ⋯ = ⋯
The order of a nonzero Hahn series x
is a minimal element of Γ
where x
has a
nonzero coefficient, the order of 0 is 0.
Equations
- HahnSeries.order x = if h : x = 0 then 0 else Set.IsWF.min ⋯ ⋯
Instances For
Extends the domain of a HahnSeries
by an OrderEmbedding
.
Equations
- HahnSeries.embDomain f x = { coeff := fun (b : Γ') => if h : b ∈ ⇑f '' HahnSeries.support x then x.coeff (Classical.choose h) else 0, isPWO_support' := ⋯ }
Instances For
Construct a Hahn series from any function whose support is bounded below.
Equations
- HahnSeries.ofSuppBddBelow f hf = { coeff := f, isPWO_support' := ⋯ }