Hahn Series #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4. If
Γ
is ordered andR
has zero, thenhahn_series Γ R
consists of formal series overΓ
with coefficients inR
, whose supports are partially well-ordered. With further structure onR
andΓ
, we can add further structure onhahn_series Γ R
, with the most studied case being whenΓ
is a linearly ordered abelian group andR
is a field, in which casehahn_series Γ 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 ring_theory/laurent_series
.
Main Definitions #
- If
Γ
is ordered andR
has zero, thenhahn_series Γ R
consists of formal series overΓ
with coefficients inR
, whose supports are partially well-ordered. - If
R
is a (commutative) additive monoid or group, then so ishahn_series Γ R
. - If
R
is a (comm_)(semi)ring, then so ishahn_series Γ R
. hahn_series.add_val Γ R
defines anadd_valuation
onhahn_series Γ R
whenΓ
is linearly ordered.- A
hahn_series.summable_family
is a family of Hahn series such that the union of their supports is well-founded and only finitely many are nonzero at any given coefficient. They have a formal sum,hahn_series.summable_family.hsum
, which can be bundled as alinear_map
ashahn_series.summable_family.lsum
. Note that this is different fromsummable
in the valuation topology, because there are topologically summable families that do not satisfy the axioms ofhahn_series.summable_family
, and formally summable families whose sums do not converge topologically. - Laurent series over
R
are implemented ashahn_series ℤ R
in the filering_theory/laurent_series
.
TODO #
- Build an API for the variable
X
(defined to besingle 1 1 : hahn_series Γ R
) in analogy toX : R[X]
andX : power_series R
References #
- coeff : Γ → R
- is_pwo_support' : (function.support self.coeff).is_pwo
If Γ
is linearly ordered and R
has zero, then hahn_series Γ R
consists of
formal series over Γ
with coefficients in R
, whose supports are well-founded.
Instances for hahn_series
- hahn_series.has_sizeof_inst
- hahn_series.has_zero
- hahn_series.inhabited
- hahn_series.subsingleton
- hahn_series.nontrivial
- hahn_series.has_add
- hahn_series.add_monoid
- hahn_series.add_comm_monoid
- hahn_series.add_group
- hahn_series.add_comm_group
- hahn_series.has_smul
- hahn_series.distrib_mul_action
- hahn_series.is_scalar_tower
- hahn_series.smul_comm_class
- hahn_series.module
- hahn_series.has_one
- hahn_series.has_mul
- hahn_series.distrib
- hahn_series.non_unital_non_assoc_semiring
- hahn_series.non_unital_semiring
- hahn_series.non_assoc_semiring
- hahn_series.semiring
- hahn_series.non_unital_comm_semiring
- hahn_series.comm_semiring
- hahn_series.non_unital_non_assoc_ring
- hahn_series.non_unital_ring
- hahn_series.non_assoc_ring
- hahn_series.ring
- hahn_series.non_unital_comm_ring
- hahn_series.comm_ring
- hahn_series.no_zero_divisors
- hahn_series.is_domain
- hahn_series.algebra
- hahn_series.power_series_algebra
- hahn_series.summable_family.has_smul
- hahn_series.summable_family.module
- hahn_series.field
- laurent_series.has_coe
- laurent_series.algebra
- laurent_series.of_power_series_localization
- laurent_series.is_fraction_ring
- ratfunc.coe_to_laurent_series
- ratfunc.laurent_series.algebra
- ratfunc.laurent_series.is_scalar_tower
The support of a Hahn series is just the set of indices whose coefficients are nonzero. Notably, it is well-founded.
Equations
Equations
- hahn_series.has_zero = {zero := {coeff := 0, is_pwo_support' := _}}
Equations
- hahn_series.inhabited = {default := 0}
single a r
is the Hahn series which has coefficient r
at a
and zero otherwise.
Equations
- hahn_series.single a = {to_fun := λ (r : R), {coeff := pi.single a r, is_pwo_support' := _}, map_zero' := _}
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.
Extends the domain of a hahn_series
by an order_embedding
.
Equations
- hahn_series.has_add = {add := λ (x y : hahn_series Γ R), {coeff := x.coeff + y.coeff, is_pwo_support' := _}}
Equations
- hahn_series.add_monoid = {add := has_add.add hahn_series.has_add, add_assoc := _, zero := 0, zero_add := _, add_zero := _, nsmul := nsmul_rec (add_zero_class.to_has_add (hahn_series Γ R)), nsmul_zero' := _, nsmul_succ' := _}
single
as an additive monoid/group homomorphism
Equations
- hahn_series.single.add_monoid_hom a = {to_fun := (hahn_series.single a).to_fun, map_zero' := _, map_add' := _}
coeff g
as an additive monoid/group homomorphism
Equations
- hahn_series.coeff.add_monoid_hom g = {to_fun := λ (f : hahn_series Γ R), f.coeff g, map_zero' := _, map_add' := _}
Equations
- hahn_series.add_comm_monoid = {add := add_monoid.add hahn_series.add_monoid, add_assoc := _, zero := add_monoid.zero hahn_series.add_monoid, zero_add := _, add_zero := _, nsmul := add_monoid.nsmul hahn_series.add_monoid, nsmul_zero' := _, nsmul_succ' := _, add_comm := _}
Equations
- hahn_series.add_group = {add := add_monoid.add hahn_series.add_monoid, add_assoc := _, zero := add_monoid.zero hahn_series.add_monoid, zero_add := _, add_zero := _, nsmul := add_monoid.nsmul hahn_series.add_monoid, nsmul_zero' := _, nsmul_succ' := _, neg := λ (x : hahn_series Γ R), {coeff := λ (a : Γ), -x.coeff a, is_pwo_support' := _}, sub := sub_neg_monoid.sub._default add_monoid.add hahn_series.add_group._proof_7 add_monoid.zero hahn_series.add_group._proof_8 hahn_series.add_group._proof_9 add_monoid.nsmul hahn_series.add_group._proof_10 hahn_series.add_group._proof_11 (λ (x : hahn_series Γ R), {coeff := λ (a : Γ), -x.coeff a, is_pwo_support' := _}), sub_eq_add_neg := _, zsmul := sub_neg_monoid.zsmul._default add_monoid.add hahn_series.add_group._proof_13 add_monoid.zero hahn_series.add_group._proof_14 hahn_series.add_group._proof_15 add_monoid.nsmul hahn_series.add_group._proof_16 hahn_series.add_group._proof_17 (λ (x : hahn_series Γ R), {coeff := λ (a : Γ), -x.coeff a, is_pwo_support' := _}), zsmul_zero' := _, zsmul_succ' := _, zsmul_neg' := _, add_left_neg := _}
Equations
- hahn_series.add_comm_group = {add := add_comm_monoid.add hahn_series.add_comm_monoid, add_assoc := _, zero := add_comm_monoid.zero hahn_series.add_comm_monoid, zero_add := _, add_zero := _, nsmul := add_comm_monoid.nsmul hahn_series.add_comm_monoid, nsmul_zero' := _, nsmul_succ' := _, neg := add_group.neg hahn_series.add_group, sub := add_group.sub hahn_series.add_group, sub_eq_add_neg := _, zsmul := add_group.zsmul hahn_series.add_group, zsmul_zero' := _, zsmul_succ' := _, zsmul_neg' := _, add_left_neg := _, add_comm := _}
Equations
- hahn_series.has_smul = {smul := λ (r : R) (x : hahn_series Γ V), {coeff := r • x.coeff, is_pwo_support' := _}}
Equations
- hahn_series.distrib_mul_action = {to_mul_action := {to_has_smul := {smul := has_smul.smul hahn_series.has_smul}, one_smul := _, mul_smul := _}, smul_zero := _, smul_add := _}
Equations
- hahn_series.module = {to_distrib_mul_action := {to_mul_action := distrib_mul_action.to_mul_action hahn_series.distrib_mul_action, smul_zero := _, smul_add := _}, add_smul := _, zero_smul := _}
single
as a linear map
Equations
- hahn_series.single.linear_map a = {to_fun := (hahn_series.single.add_monoid_hom a).to_fun, map_add' := _, map_smul' := _}
coeff g
as a linear map
Equations
- hahn_series.coeff.linear_map g = {to_fun := (hahn_series.coeff.add_monoid_hom g).to_fun, map_add' := _, map_smul' := _}
Extending the domain of Hahn series is a linear map.
Equations
- hahn_series.emb_domain_linear_map f = {to_fun := hahn_series.emb_domain f, map_add' := _, map_smul' := _}
Equations
- hahn_series.has_one = {one := ⇑(hahn_series.single 0) 1}
Equations
- hahn_series.has_mul = {mul := λ (x y : hahn_series Γ R), {coeff := λ (a : Γ), (finset.add_antidiagonal _ _ a).sum (λ (ij : Γ × Γ), x.coeff ij.fst * y.coeff ij.snd), is_pwo_support' := _}}
Equations
- hahn_series.distrib = {mul := has_mul.mul hahn_series.has_mul, add := has_add.add hahn_series.has_add, left_distrib := _, right_distrib := _}
Equations
- hahn_series.non_unital_non_assoc_semiring = {add := has_add.add hahn_series.has_add, add_assoc := _, zero := 0, zero_add := _, add_zero := _, nsmul := add_comm_monoid.nsmul hahn_series.add_comm_monoid, nsmul_zero' := _, nsmul_succ' := _, add_comm := _, mul := has_mul.mul hahn_series.has_mul, left_distrib := _, right_distrib := _, zero_mul := _, mul_zero := _}
Equations
- hahn_series.non_unital_semiring = {add := has_add.add hahn_series.has_add, add_assoc := _, zero := 0, zero_add := _, add_zero := _, nsmul := non_unital_non_assoc_semiring.nsmul hahn_series.non_unital_non_assoc_semiring, nsmul_zero' := _, nsmul_succ' := _, add_comm := _, mul := has_mul.mul hahn_series.has_mul, left_distrib := _, right_distrib := _, zero_mul := _, mul_zero := _, mul_assoc := _}
Equations
- hahn_series.non_assoc_semiring = {add := has_add.add hahn_series.has_add, add_assoc := _, zero := 0, zero_add := _, add_zero := _, nsmul := add_monoid_with_one.nsmul add_monoid_with_one.unary, nsmul_zero' := _, nsmul_succ' := _, add_comm := _, mul := has_mul.mul hahn_series.has_mul, left_distrib := _, right_distrib := _, zero_mul := _, mul_zero := _, one := 1, one_mul := _, mul_one := _, nat_cast := add_monoid_with_one.nat_cast add_monoid_with_one.unary, nat_cast_zero := _, nat_cast_succ := _}
Equations
- hahn_series.semiring = {add := has_add.add hahn_series.has_add, add_assoc := _, zero := 0, zero_add := _, add_zero := _, nsmul := non_assoc_semiring.nsmul hahn_series.non_assoc_semiring, nsmul_zero' := _, nsmul_succ' := _, add_comm := _, mul := has_mul.mul hahn_series.has_mul, left_distrib := _, right_distrib := _, zero_mul := _, mul_zero := _, mul_assoc := _, one := 1, one_mul := _, mul_one := _, nat_cast := non_assoc_semiring.nat_cast hahn_series.non_assoc_semiring, nat_cast_zero := _, nat_cast_succ := _, npow := monoid_with_zero.npow._default 1 has_mul.mul hahn_series.semiring._proof_16 hahn_series.semiring._proof_17, npow_zero' := _, npow_succ' := _}
Equations
- hahn_series.non_unital_comm_semiring = {add := non_unital_semiring.add hahn_series.non_unital_semiring, add_assoc := _, zero := non_unital_semiring.zero hahn_series.non_unital_semiring, zero_add := _, add_zero := _, nsmul := non_unital_semiring.nsmul hahn_series.non_unital_semiring, nsmul_zero' := _, nsmul_succ' := _, add_comm := _, mul := non_unital_semiring.mul hahn_series.non_unital_semiring, left_distrib := _, right_distrib := _, zero_mul := _, mul_zero := _, mul_assoc := _, mul_comm := _}
Equations
- hahn_series.comm_semiring = {add := non_unital_comm_semiring.add hahn_series.non_unital_comm_semiring, add_assoc := _, zero := non_unital_comm_semiring.zero hahn_series.non_unital_comm_semiring, zero_add := _, add_zero := _, nsmul := non_unital_comm_semiring.nsmul hahn_series.non_unital_comm_semiring, nsmul_zero' := _, nsmul_succ' := _, add_comm := _, mul := non_unital_comm_semiring.mul hahn_series.non_unital_comm_semiring, left_distrib := _, right_distrib := _, zero_mul := _, mul_zero := _, mul_assoc := _, one := semiring.one hahn_series.semiring, one_mul := _, mul_one := _, nat_cast := semiring.nat_cast hahn_series.semiring, nat_cast_zero := _, nat_cast_succ := _, npow := semiring.npow hahn_series.semiring, npow_zero' := _, npow_succ' := _, mul_comm := _}
Equations
- hahn_series.non_unital_non_assoc_ring = {add := non_unital_non_assoc_semiring.add hahn_series.non_unital_non_assoc_semiring, add_assoc := _, zero := non_unital_non_assoc_semiring.zero hahn_series.non_unital_non_assoc_semiring, zero_add := _, add_zero := _, nsmul := non_unital_non_assoc_semiring.nsmul hahn_series.non_unital_non_assoc_semiring, nsmul_zero' := _, nsmul_succ' := _, neg := add_group.neg hahn_series.add_group, sub := add_group.sub hahn_series.add_group, sub_eq_add_neg := _, zsmul := add_group.zsmul hahn_series.add_group, zsmul_zero' := _, zsmul_succ' := _, zsmul_neg' := _, add_left_neg := _, add_comm := _, mul := non_unital_non_assoc_semiring.mul hahn_series.non_unital_non_assoc_semiring, left_distrib := _, right_distrib := _, zero_mul := _, mul_zero := _}
Equations
- hahn_series.non_unital_ring = {add := non_unital_non_assoc_ring.add hahn_series.non_unital_non_assoc_ring, add_assoc := _, zero := non_unital_non_assoc_ring.zero hahn_series.non_unital_non_assoc_ring, zero_add := _, add_zero := _, nsmul := non_unital_non_assoc_ring.nsmul hahn_series.non_unital_non_assoc_ring, nsmul_zero' := _, nsmul_succ' := _, neg := non_unital_non_assoc_ring.neg hahn_series.non_unital_non_assoc_ring, sub := non_unital_non_assoc_ring.sub hahn_series.non_unital_non_assoc_ring, sub_eq_add_neg := _, zsmul := non_unital_non_assoc_ring.zsmul hahn_series.non_unital_non_assoc_ring, zsmul_zero' := _, zsmul_succ' := _, zsmul_neg' := _, add_left_neg := _, add_comm := _, mul := non_unital_non_assoc_ring.mul hahn_series.non_unital_non_assoc_ring, left_distrib := _, right_distrib := _, zero_mul := _, mul_zero := _, mul_assoc := _}
Equations
- hahn_series.non_assoc_ring = {add := non_unital_non_assoc_ring.add hahn_series.non_unital_non_assoc_ring, add_assoc := _, zero := non_unital_non_assoc_ring.zero hahn_series.non_unital_non_assoc_ring, zero_add := _, add_zero := _, nsmul := non_unital_non_assoc_ring.nsmul hahn_series.non_unital_non_assoc_ring, nsmul_zero' := _, nsmul_succ' := _, neg := non_unital_non_assoc_ring.neg hahn_series.non_unital_non_assoc_ring, sub := non_unital_non_assoc_ring.sub hahn_series.non_unital_non_assoc_ring, sub_eq_add_neg := _, zsmul := non_unital_non_assoc_ring.zsmul hahn_series.non_unital_non_assoc_ring, zsmul_zero' := _, zsmul_succ' := _, zsmul_neg' := _, add_left_neg := _, add_comm := _, mul := non_unital_non_assoc_ring.mul hahn_series.non_unital_non_assoc_ring, left_distrib := _, right_distrib := _, zero_mul := _, mul_zero := _, one := non_assoc_semiring.one hahn_series.non_assoc_semiring, one_mul := _, mul_one := _, nat_cast := non_assoc_semiring.nat_cast hahn_series.non_assoc_semiring, nat_cast_zero := _, nat_cast_succ := _, int_cast := add_comm_group_with_one.int_cast._default non_assoc_semiring.nat_cast non_unital_non_assoc_ring.add hahn_series.non_assoc_ring._proof_20 non_unital_non_assoc_ring.zero hahn_series.non_assoc_ring._proof_21 hahn_series.non_assoc_ring._proof_22 non_unital_non_assoc_ring.nsmul hahn_series.non_assoc_ring._proof_23 hahn_series.non_assoc_ring._proof_24 non_assoc_semiring.one hahn_series.non_assoc_ring._proof_25 hahn_series.non_assoc_ring._proof_26 non_unital_non_assoc_ring.neg non_unital_non_assoc_ring.sub hahn_series.non_assoc_ring._proof_27 non_unital_non_assoc_ring.zsmul hahn_series.non_assoc_ring._proof_28 hahn_series.non_assoc_ring._proof_29 hahn_series.non_assoc_ring._proof_30 hahn_series.non_assoc_ring._proof_31, int_cast_of_nat := _, int_cast_neg_succ_of_nat := _}
Equations
- hahn_series.ring = {add := semiring.add hahn_series.semiring, add_assoc := _, zero := semiring.zero hahn_series.semiring, zero_add := _, add_zero := _, nsmul := semiring.nsmul hahn_series.semiring, nsmul_zero' := _, nsmul_succ' := _, neg := add_comm_group.neg hahn_series.add_comm_group, sub := add_comm_group.sub hahn_series.add_comm_group, sub_eq_add_neg := _, zsmul := add_comm_group.zsmul hahn_series.add_comm_group, zsmul_zero' := _, zsmul_succ' := _, zsmul_neg' := _, add_left_neg := _, add_comm := _, int_cast := add_comm_group_with_one.int_cast._default semiring.nat_cast semiring.add hahn_series.ring._proof_12 semiring.zero hahn_series.ring._proof_13 hahn_series.ring._proof_14 semiring.nsmul hahn_series.ring._proof_15 hahn_series.ring._proof_16 semiring.one hahn_series.ring._proof_17 hahn_series.ring._proof_18 add_comm_group.neg add_comm_group.sub hahn_series.ring._proof_19 add_comm_group.zsmul hahn_series.ring._proof_20 hahn_series.ring._proof_21 hahn_series.ring._proof_22 hahn_series.ring._proof_23, nat_cast := semiring.nat_cast hahn_series.semiring, one := semiring.one hahn_series.semiring, nat_cast_zero := _, nat_cast_succ := _, int_cast_of_nat := _, int_cast_neg_succ_of_nat := _, mul := semiring.mul hahn_series.semiring, mul_assoc := _, one_mul := _, mul_one := _, npow := semiring.npow hahn_series.semiring, npow_zero' := _, npow_succ' := _, left_distrib := _, right_distrib := _}
Equations
- hahn_series.non_unital_comm_ring = {add := non_unital_comm_semiring.add hahn_series.non_unital_comm_semiring, add_assoc := _, zero := non_unital_comm_semiring.zero hahn_series.non_unital_comm_semiring, zero_add := _, add_zero := _, nsmul := non_unital_comm_semiring.nsmul hahn_series.non_unital_comm_semiring, nsmul_zero' := _, nsmul_succ' := _, neg := non_unital_ring.neg hahn_series.non_unital_ring, sub := non_unital_ring.sub hahn_series.non_unital_ring, sub_eq_add_neg := _, zsmul := non_unital_ring.zsmul hahn_series.non_unital_ring, zsmul_zero' := _, zsmul_succ' := _, zsmul_neg' := _, add_left_neg := _, add_comm := _, mul := non_unital_comm_semiring.mul hahn_series.non_unital_comm_semiring, left_distrib := _, right_distrib := _, zero_mul := _, mul_zero := _, mul_assoc := _, mul_comm := _}
Equations
- hahn_series.comm_ring = {add := comm_semiring.add hahn_series.comm_semiring, add_assoc := _, zero := comm_semiring.zero hahn_series.comm_semiring, zero_add := _, add_zero := _, nsmul := comm_semiring.nsmul hahn_series.comm_semiring, nsmul_zero' := _, nsmul_succ' := _, neg := ring.neg hahn_series.ring, sub := ring.sub hahn_series.ring, sub_eq_add_neg := _, zsmul := ring.zsmul hahn_series.ring, zsmul_zero' := _, zsmul_succ' := _, zsmul_neg' := _, add_left_neg := _, add_comm := _, int_cast := ring.int_cast hahn_series.ring, nat_cast := comm_semiring.nat_cast hahn_series.comm_semiring, one := comm_semiring.one hahn_series.comm_semiring, nat_cast_zero := _, nat_cast_succ := _, int_cast_of_nat := _, int_cast_neg_succ_of_nat := _, mul := comm_semiring.mul hahn_series.comm_semiring, mul_assoc := _, one_mul := _, mul_one := _, npow := comm_semiring.npow hahn_series.comm_semiring, npow_zero' := _, npow_succ' := _, left_distrib := _, right_distrib := _, mul_comm := _}
C a
is the constant Hahn Series a
. C
is provided as a ring homomorphism.
Equations
- hahn_series.C = {to_fun := ⇑(hahn_series.single 0), map_one' := _, map_mul' := _, map_zero' := _, map_add' := _}
Extending the domain of Hahn series is a ring homomorphism.
Equations
- hahn_series.emb_domain_ring_hom f hfi hf = {to_fun := hahn_series.emb_domain {to_embedding := {to_fun := ⇑f, inj' := hfi}, map_rel_iff' := hf}, map_one' := _, map_mul' := _, map_zero' := _, map_add' := _}
Equations
- hahn_series.algebra = {to_has_smul := hahn_series.has_smul module.to_distrib_mul_action, to_ring_hom := hahn_series.C.comp (algebra_map R A), commutes' := _, smul_def' := _}
Extending the domain of Hahn series is an algebra homomorphism.
The ring hahn_series ℕ R
is isomorphic to power_series R
.
Equations
- hahn_series.to_power_series = {to_fun := λ (f : hahn_series ℕ R), power_series.mk f.coeff, inv_fun := λ (f : power_series R), {coeff := λ (n : ℕ), ⇑(power_series.coeff R n) f, is_pwo_support' := _}, left_inv := _, right_inv := _, map_mul' := _, map_add' := _}
Casts a power series as a Hahn series with coefficients from an strict_ordered_semiring
.
The ring hahn_series (σ →₀ ℕ) R
is isomorphic to mv_power_series σ R
for a fintype
σ
.
We take the index set of the hahn series to be finsupp
rather than pi
,
even though we assume fintype σ
as this is more natural for alignment with mv_power_series
.
After importing algebra.order.pi
the ring hahn_series (σ → ℕ) R
could be constructed instead.
Equations
- hahn_series.to_mv_power_series = {to_fun := λ (f : hahn_series (σ →₀ ℕ) R), f.coeff, inv_fun := λ (f : mv_power_series σ R), {coeff := f, is_pwo_support' := _}, left_inv := _, right_inv := _, map_mul' := _, map_add' := _}
The R
-algebra hahn_series ℕ A
is isomorphic to power_series A
.
Equations
- hahn_series.to_power_series_alg R = {to_fun := hahn_series.to_power_series.to_fun, inv_fun := hahn_series.to_power_series.inv_fun, left_inv := _, right_inv := _, map_mul' := _, map_add' := _, commutes' := _}
Casting a power series as a Hahn series with coefficients from an strict_ordered_semiring
is an algebra homomorphism.
Equations
Equations
- hahn_series.power_series_algebra Γ R = ((hahn_series.of_power_series Γ R).comp (algebra_map S (power_series R))).to_algebra
The additive valuation on hahn_series Γ R
, returning the smallest index at which
a Hahn Series has a nonzero coefficient, or ⊤
for the 0 series.
Equations
- hahn_series.add_val Γ R = add_valuation.of (λ (x : hahn_series Γ R), ite (x = 0) ⊤ ↑(x.order)) _ _ _ _
- to_fun : α → hahn_series Γ R
- is_pwo_Union_support' : (⋃ (a : α), (self.to_fun a).support).is_pwo
- finite_co_support' : ∀ (g : Γ), {a : α | (self.to_fun a).coeff g ≠ 0}.finite
An infinite family of Hahn series which has a formal coefficient-wise sum. The requirements for this are that the union of the supports of the series is well-founded, and that only finitely many series are nonzero at any given coefficient.
Instances for hahn_series.summable_family
- hahn_series.summable_family.has_sizeof_inst
- hahn_series.summable_family.has_coe_to_fun
- hahn_series.summable_family.has_add
- hahn_series.summable_family.has_zero
- hahn_series.summable_family.inhabited
- hahn_series.summable_family.add_comm_monoid
- hahn_series.summable_family.add_comm_group
- hahn_series.summable_family.has_smul
- hahn_series.summable_family.module
Equations
- hahn_series.summable_family.has_add = {add := λ (x y : hahn_series.summable_family Γ R α), {to_fun := ⇑x + ⇑y, is_pwo_Union_support' := _, finite_co_support' := _}}
Equations
- hahn_series.summable_family.has_zero = {zero := {to_fun := 0, is_pwo_Union_support' := _, finite_co_support' := _}}
Equations
Equations
- hahn_series.summable_family.add_comm_monoid = {add := has_add.add hahn_series.summable_family.has_add, add_assoc := _, zero := 0, zero_add := _, add_zero := _, nsmul := add_monoid.nsmul._default 0 has_add.add hahn_series.summable_family.add_comm_monoid._proof_4 hahn_series.summable_family.add_comm_monoid._proof_5, nsmul_zero' := _, nsmul_succ' := _, add_comm := _}
The infinite sum of a summable_family
of Hahn series.
Equations
- hahn_series.summable_family.add_comm_group = {add := add_comm_monoid.add hahn_series.summable_family.add_comm_monoid, add_assoc := _, zero := add_comm_monoid.zero hahn_series.summable_family.add_comm_monoid, zero_add := _, add_zero := _, nsmul := add_comm_monoid.nsmul hahn_series.summable_family.add_comm_monoid, nsmul_zero' := _, nsmul_succ' := _, neg := λ (s : hahn_series.summable_family Γ R α), {to_fun := λ (a : α), -⇑s a, is_pwo_Union_support' := _, finite_co_support' := _}, sub := add_group.sub._default add_comm_monoid.add hahn_series.summable_family.add_comm_group._proof_8 add_comm_monoid.zero hahn_series.summable_family.add_comm_group._proof_9 hahn_series.summable_family.add_comm_group._proof_10 add_comm_monoid.nsmul hahn_series.summable_family.add_comm_group._proof_11 hahn_series.summable_family.add_comm_group._proof_12 (λ (s : hahn_series.summable_family Γ R α), {to_fun := λ (a : α), -⇑s a, is_pwo_Union_support' := _, finite_co_support' := _}), sub_eq_add_neg := _, zsmul := add_group.zsmul._default add_comm_monoid.add hahn_series.summable_family.add_comm_group._proof_14 add_comm_monoid.zero hahn_series.summable_family.add_comm_group._proof_15 hahn_series.summable_family.add_comm_group._proof_16 add_comm_monoid.nsmul hahn_series.summable_family.add_comm_group._proof_17 hahn_series.summable_family.add_comm_group._proof_18 (λ (s : hahn_series.summable_family Γ R α), {to_fun := λ (a : α), -⇑s a, is_pwo_Union_support' := _, finite_co_support' := _}), zsmul_zero' := _, zsmul_succ' := _, zsmul_neg' := _, add_left_neg := _, add_comm := _}
Equations
- hahn_series.summable_family.has_smul = {smul := λ (x : hahn_series Γ R) (s : hahn_series.summable_family Γ R α), {to_fun := λ (a : α), x * ⇑s a, is_pwo_Union_support' := _, finite_co_support' := _}}
Equations
- hahn_series.summable_family.module = {to_distrib_mul_action := {to_mul_action := {to_has_smul := {smul := has_smul.smul hahn_series.summable_family.has_smul}, one_smul := _, mul_smul := _}, smul_zero := _, smul_add := _}, add_smul := _, zero_smul := _}
The summation of a summable_family
as a linear_map
.
Equations
- hahn_series.summable_family.lsum = {to_fun := hahn_series.summable_family.hsum α, map_add' := _, map_smul' := _}
A family with only finitely many nonzero elements is summable.
Equations
- hahn_series.summable_family.of_finsupp f = {to_fun := ⇑f, is_pwo_Union_support' := _, finite_co_support' := _}
A summable family can be reindexed by an embedding without changing its sum.
Equations
- s.emb_domain f = {to_fun := λ (b : β), dite (b ∈ set.range ⇑f) (λ (h : b ∈ set.range ⇑f), ⇑s (classical.some h)) (λ (h : b ∉ set.range ⇑f), 0), is_pwo_Union_support' := _, finite_co_support' := _}
The powers of an element of positive valuation form a summable family.
Equations
- hahn_series.summable_family.powers x hx = {to_fun := λ (n : ℕ), x ^ n, is_pwo_Union_support' := _, finite_co_support' := _}
Equations
- hahn_series.field = {add := comm_ring.add hahn_series.comm_ring, add_assoc := _, zero := comm_ring.zero hahn_series.comm_ring, zero_add := _, add_zero := _, nsmul := comm_ring.nsmul hahn_series.comm_ring, nsmul_zero' := _, nsmul_succ' := _, neg := comm_ring.neg hahn_series.comm_ring, sub := comm_ring.sub hahn_series.comm_ring, sub_eq_add_neg := _, zsmul := comm_ring.zsmul hahn_series.comm_ring, zsmul_zero' := _, zsmul_succ' := _, zsmul_neg' := _, add_left_neg := _, add_comm := _, int_cast := comm_ring.int_cast hahn_series.comm_ring, nat_cast := comm_ring.nat_cast hahn_series.comm_ring, one := comm_ring.one hahn_series.comm_ring, nat_cast_zero := _, nat_cast_succ := _, int_cast_of_nat := _, int_cast_neg_succ_of_nat := _, mul := comm_ring.mul hahn_series.comm_ring, mul_assoc := _, one_mul := _, mul_one := _, npow := comm_ring.npow hahn_series.comm_ring, npow_zero' := _, npow_succ' := _, left_distrib := _, right_distrib := _, mul_comm := _, inv := λ (x : hahn_series Γ R), dite (x = 0) (λ (x0 : x = 0), 0) (λ (x0 : ¬x = 0), ⇑hahn_series.C (x.coeff x.order)⁻¹ * ⇑(hahn_series.single (-x.order)) 1 * (hahn_series.summable_family.powers (1 - ⇑hahn_series.C (x.coeff x.order)⁻¹ * ⇑(hahn_series.single (-x.order)) 1 * x) _).hsum), div := division_ring.div._default comm_ring.mul hahn_series.field._proof_25 comm_ring.one hahn_series.field._proof_26 hahn_series.field._proof_27 comm_ring.npow hahn_series.field._proof_28 hahn_series.field._proof_29 (λ (x : hahn_series Γ R), dite (x = 0) (λ (x0 : x = 0), 0) (λ (x0 : ¬x = 0), ⇑hahn_series.C (x.coeff x.order)⁻¹ * ⇑(hahn_series.single (-x.order)) 1 * (hahn_series.summable_family.powers (1 - ⇑hahn_series.C (x.coeff x.order)⁻¹ * ⇑(hahn_series.single (-x.order)) 1 * x) _).hsum)), div_eq_mul_inv := _, zpow := division_ring.zpow._default comm_ring.mul hahn_series.field._proof_31 comm_ring.one hahn_series.field._proof_32 hahn_series.field._proof_33 comm_ring.npow hahn_series.field._proof_34 hahn_series.field._proof_35 (λ (x : hahn_series Γ R), dite (x = 0) (λ (x0 : x = 0), 0) (λ (x0 : ¬x = 0), ⇑hahn_series.C (x.coeff x.order)⁻¹ * ⇑(hahn_series.single (-x.order)) 1 * (hahn_series.summable_family.powers (1 - ⇑hahn_series.C (x.coeff x.order)⁻¹ * ⇑(hahn_series.single (-x.order)) 1 * x) _).hsum)), zpow_zero' := _, zpow_succ' := _, zpow_neg' := _, exists_pair_ne := _, rat_cast := division_ring.rat_cast._default comm_ring.add hahn_series.field._proof_40 comm_ring.zero hahn_series.field._proof_41 hahn_series.field._proof_42 comm_ring.nsmul hahn_series.field._proof_43 hahn_series.field._proof_44 comm_ring.neg comm_ring.sub hahn_series.field._proof_45 comm_ring.zsmul hahn_series.field._proof_46 hahn_series.field._proof_47 hahn_series.field._proof_48 hahn_series.field._proof_49 hahn_series.field._proof_50 comm_ring.int_cast comm_ring.nat_cast comm_ring.one hahn_series.field._proof_51 hahn_series.field._proof_52 hahn_series.field._proof_53 hahn_series.field._proof_54 comm_ring.mul hahn_series.field._proof_55 hahn_series.field._proof_56 hahn_series.field._proof_57 comm_ring.npow hahn_series.field._proof_58 hahn_series.field._proof_59 hahn_series.field._proof_60 hahn_series.field._proof_61 (λ (x : hahn_series Γ R), dite (x = 0) (λ (x0 : x = 0), 0) (λ (x0 : ¬x = 0), ⇑hahn_series.C (x.coeff x.order)⁻¹ * ⇑(hahn_series.single (-x.order)) 1 * (hahn_series.summable_family.powers (1 - ⇑hahn_series.C (x.coeff x.order)⁻¹ * ⇑(hahn_series.single (-x.order)) 1 * x) _).hsum)) (division_ring.div._default comm_ring.mul hahn_series.field._proof_25 comm_ring.one hahn_series.field._proof_26 hahn_series.field._proof_27 comm_ring.npow hahn_series.field._proof_28 hahn_series.field._proof_29 (λ (x : hahn_series Γ R), dite (x = 0) (λ (x0 : x = 0), 0) (λ (x0 : ¬x = 0), ⇑hahn_series.C (x.coeff x.order)⁻¹ * ⇑(hahn_series.single (-x.order)) 1 * (hahn_series.summable_family.powers (1 - ⇑hahn_series.C (x.coeff x.order)⁻¹ * ⇑(hahn_series.single (-x.order)) 1 * x) _).hsum))) hahn_series.field._proof_62 (division_ring.zpow._default comm_ring.mul hahn_series.field._proof_31 comm_ring.one hahn_series.field._proof_32 hahn_series.field._proof_33 comm_ring.npow hahn_series.field._proof_34 hahn_series.field._proof_35 (λ (x : hahn_series Γ R), dite (x = 0) (λ (x0 : x = 0), 0) (λ (x0 : ¬x = 0), ⇑hahn_series.C (x.coeff x.order)⁻¹ * ⇑(hahn_series.single (-x.order)) 1 * (hahn_series.summable_family.powers (1 - ⇑hahn_series.C (x.coeff x.order)⁻¹ * ⇑(hahn_series.single (-x.order)) 1 * x) _).hsum))) hahn_series.field._proof_63 hahn_series.field._proof_64 hahn_series.field._proof_65, mul_inv_cancel := _, inv_zero := _, rat_cast_mk := _, qsmul := division_ring.qsmul._default (… hahn_series.field._proof_46 hahn_series.field._proof_47 hahn_series.field._proof_48 hahn_series.field._proof_49 hahn_series.field._proof_50 comm_ring.int_cast comm_ring.nat_cast comm_ring.one hahn_series.field._proof_51 hahn_series.field._proof_52 hahn_series.field._proof_53 hahn_series.field._proof_54 comm_ring.mul hahn_series.field._proof_55 hahn_series.field._proof_56 hahn_series.field._proof_57 comm_ring.npow hahn_series.field._proof_58 hahn_series.field._proof_59 hahn_series.field._proof_60 hahn_series.field._proof_61 (λ (x : hahn_series Γ R), dite (x = 0) (λ (x0 : x = 0), 0) (λ (x0 : ¬x = 0), ⇑hahn_series.C (x.coeff x.order)⁻¹ * ⇑(hahn_series.single (-x.order)) 1 * (hahn_series.summable_family.powers (1 - ⇑hahn_series.C (x.coeff x.order)⁻¹ * ⇑(hahn_series.single (-x.order)) 1 * x) _).hsum)) (division_ring.div._default comm_ring.mul hahn_series.field._proof_25 comm_ring.one hahn_series.field._proof_26 hahn_series.field._proof_27 comm_ring.npow hahn_series.field._proof_28 hahn_series.field._proof_29 (λ (x : hahn_series Γ R), dite (x = 0) (λ (x0 : x = 0), 0) (λ (x0 : ¬x = 0), ⇑hahn_series.C (x.coeff x.order)⁻¹ * ⇑(hahn_series.single (-x.order)) 1 * (hahn_series.summable_family.powers (1 - ⇑hahn_series.C (x.coeff x.order)⁻¹ * ⇑(hahn_series.single (-x.order)) 1 * x) _).hsum))) hahn_series.field._proof_62 (division_ring.zpow._default comm_ring.mul hahn_series.field._proof_31 comm_ring.one hahn_series.field._proof_32 hahn_series.field._proof_33 comm_ring.npow hahn_series.field._proof_34 hahn_series.field._proof_35 (λ (x : hahn_series Γ R), dite (x = 0) (λ (x0 : x = 0), 0) (λ (x0 : ¬x = 0), ⇑hahn_series.C (x.coeff x.order)⁻¹ * ⇑(hahn_series.single (-x.order)) 1 * (hahn_series.summable_family.powers (1 - ⇑hahn_series.C (x.coeff x.order)⁻¹ * ⇑(hahn_series.single (-x.order)) 1 * x) _).hsum))) hahn_series.field._proof_63 hahn_series.field._proof_64 hahn_series.field._proof_65) comm_ring.add hahn_series.field._proof_69 comm_ring.zero hahn_series.field._proof_70 hahn_series.field._proof_71 comm_ring.nsmul hahn_series.field._proof_72 hahn_series.field._proof_73 comm_ring.neg comm_ring.sub hahn_series.field._proof_74 comm_ring.zsmul hahn_series.field._proof_75 hahn_series.field._proof_76 hahn_series.field._proof_77 hahn_series.field._proof_78 hahn_series.field._proof_79 comm_ring.int_cast comm_ring.nat_cast comm_ring.one hahn_series.field._proof_80 hahn_series.field._proof_81 hahn_series.field._proof_82 hahn_series.field._proof_83 comm_ring.mul hahn_series.field._proof_84 hahn_series.field._proof_85 hahn_series.field._proof_86 comm_ring.npow hahn_series.field._proof_87 hahn_series.field._proof_88 hahn_series.field._proof_89 hahn_series.field._proof_90, qsmul_eq_mul' := _}