Additive properties of 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
. When R
has an addition operation,
HahnSeries Γ R
also has addition by adding coefficients.
Main Definitions #
- If
R
is a (commutative) additive monoid or group, then so isHahnSeries Γ R
.
References #
- [J. van der Hoeven, Operators on Generalized Power Series][van_der_hoeven]
instance
HahnSeries.instAdd
{Γ : Type u_1}
{R : Type u_2}
[PartialOrder Γ]
[AddMonoid R]
:
Add (HahnSeries Γ R)
Equations
- HahnSeries.instAdd = { add := fun (x y : HahnSeries Γ R) => { coeff := x.coeff + y.coeff, isPWO_support' := ⋯ } }
instance
HahnSeries.instAddMonoid
{Γ : Type u_1}
{R : Type u_2}
[PartialOrder Γ]
[AddMonoid R]
:
AddMonoid (HahnSeries Γ R)
Equations
- HahnSeries.instAddMonoid = AddMonoid.mk ⋯ ⋯ nsmulRec ⋯ ⋯
@[simp]
theorem
HahnSeries.add_coeff'
{Γ : Type u_1}
{R : Type u_2}
[PartialOrder Γ]
[AddMonoid R]
{x : HahnSeries Γ R}
{y : HahnSeries Γ R}
:
theorem
HahnSeries.add_coeff
{Γ : Type u_1}
{R : Type u_2}
[PartialOrder Γ]
[AddMonoid R]
{x : HahnSeries Γ R}
{y : HahnSeries Γ R}
{a : Γ}
:
theorem
HahnSeries.addOppositeEquiv_apply
{Γ : Type u_1}
{R : Type u_2}
[PartialOrder Γ]
[AddMonoid R]
(x : HahnSeries Γ Rᵃᵒᵖ)
:
HahnSeries.addOppositeEquiv x = AddOpposite.op { coeff := fun (a : Γ) => AddOpposite.unop (x.coeff a), isPWO_support' := ⋯ }
theorem
HahnSeries.addOppositeEquiv_symm_apply_coeff
{Γ : Type u_1}
{R : Type u_2}
[PartialOrder Γ]
[AddMonoid R]
(x : (HahnSeries Γ R)ᵃᵒᵖ)
(a : Γ)
:
(HahnSeries.addOppositeEquiv.symm x).coeff a = AddOpposite.op ((AddOpposite.unop x).coeff a)
def
HahnSeries.addOppositeEquiv
{Γ : Type u_1}
{R : Type u_2}
[PartialOrder Γ]
[AddMonoid R]
:
HahnSeries Γ Rᵃᵒᵖ ≃+ (HahnSeries Γ R)ᵃᵒᵖ
addOppositeEquiv
is an additive monoid isomorphism between
Hahn series over Γ
with coefficients in the opposite additive monoid Rᵃᵒᵖ
and the additive opposite of Hahn series over Γ
with coefficients R
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[simp]
theorem
HahnSeries.addOppositeEquiv_support
{Γ : Type u_1}
{R : Type u_2}
[PartialOrder Γ]
[AddMonoid R]
(x : HahnSeries Γ Rᵃᵒᵖ)
:
(AddOpposite.unop (HahnSeries.addOppositeEquiv x)).support = x.support
@[simp]
theorem
HahnSeries.addOppositeEquiv_symm_support
{Γ : Type u_1}
{R : Type u_2}
[PartialOrder Γ]
[AddMonoid R]
(x : (HahnSeries Γ R)ᵃᵒᵖ)
:
(HahnSeries.addOppositeEquiv.symm x).support = (AddOpposite.unop x).support
@[simp]
theorem
HahnSeries.addOppositeEquiv_orderTop
{Γ : Type u_1}
{R : Type u_2}
[PartialOrder Γ]
[AddMonoid R]
(x : HahnSeries Γ Rᵃᵒᵖ)
:
(AddOpposite.unop (HahnSeries.addOppositeEquiv x)).orderTop = x.orderTop
@[simp]
theorem
HahnSeries.addOppositeEquiv_symm_orderTop
{Γ : Type u_1}
{R : Type u_2}
[PartialOrder Γ]
[AddMonoid R]
(x : (HahnSeries Γ R)ᵃᵒᵖ)
:
(HahnSeries.addOppositeEquiv.symm x).orderTop = (AddOpposite.unop x).orderTop
@[simp]
theorem
HahnSeries.addOppositeEquiv_leadingCoeff
{Γ : Type u_1}
{R : Type u_2}
[PartialOrder Γ]
[AddMonoid R]
(x : HahnSeries Γ Rᵃᵒᵖ)
:
(AddOpposite.unop (HahnSeries.addOppositeEquiv x)).leadingCoeff = AddOpposite.unop x.leadingCoeff
@[simp]
theorem
HahnSeries.addOppositeEquiv_symm_leadingCoeff
{Γ : Type u_1}
{R : Type u_2}
[PartialOrder Γ]
[AddMonoid R]
(x : (HahnSeries Γ R)ᵃᵒᵖ)
:
(HahnSeries.addOppositeEquiv.symm x).leadingCoeff = AddOpposite.op (AddOpposite.unop x).leadingCoeff
theorem
HahnSeries.support_add_subset
{Γ : Type u_1}
{R : Type u_2}
[PartialOrder Γ]
[AddMonoid R]
{x : HahnSeries Γ R}
{y : HahnSeries Γ R}
:
theorem
HahnSeries.min_le_min_add
{R : Type u_2}
[AddMonoid R]
{Γ : Type u_3}
[LinearOrder Γ]
{x : HahnSeries Γ R}
{y : HahnSeries Γ R}
(hx : x ≠ 0)
(hy : y ≠ 0)
(hxy : x + y ≠ 0)
:
theorem
HahnSeries.min_orderTop_le_orderTop_add
{R : Type u_2}
[AddMonoid R]
{Γ : Type u_3}
[LinearOrder Γ]
{x : HahnSeries Γ R}
{y : HahnSeries Γ R}
:
theorem
HahnSeries.min_order_le_order_add
{R : Type u_2}
[AddMonoid R]
{Γ : Type u_3}
[Zero Γ]
[LinearOrder Γ]
{x : HahnSeries Γ R}
{y : HahnSeries Γ R}
(hxy : x + y ≠ 0)
:
theorem
HahnSeries.orderTop_add_eq_left
{R : Type u_2}
[AddMonoid R]
{Γ : Type u_3}
[LinearOrder Γ]
{x : HahnSeries Γ R}
{y : HahnSeries Γ R}
(hxy : x.orderTop < y.orderTop)
:
theorem
HahnSeries.orderTop_add_eq_right
{R : Type u_2}
[AddMonoid R]
{Γ : Type u_3}
[LinearOrder Γ]
{x : HahnSeries Γ R}
{y : HahnSeries Γ R}
(hxy : y.orderTop < x.orderTop)
:
theorem
HahnSeries.leadingCoeff_add_eq_left
{R : Type u_2}
[AddMonoid R]
{Γ : Type u_3}
[LinearOrder Γ]
{x : HahnSeries Γ R}
{y : HahnSeries Γ R}
(hxy : x.orderTop < y.orderTop)
:
theorem
HahnSeries.leadingCoeff_add_eq_right
{R : Type u_2}
[AddMonoid R]
{Γ : Type u_3}
[LinearOrder Γ]
{x : HahnSeries Γ R}
{y : HahnSeries Γ R}
(hxy : y.orderTop < x.orderTop)
:
@[simp]
theorem
HahnSeries.single.addMonoidHom_apply_coeff
{Γ : Type u_1}
{R : Type u_2}
[PartialOrder Γ]
[AddMonoid R]
(a : Γ)
(r : R)
(j : Γ)
:
((HahnSeries.single.addMonoidHom a) r).coeff j = Pi.single a r j
def
HahnSeries.single.addMonoidHom
{Γ : Type u_1}
{R : Type u_2}
[PartialOrder Γ]
[AddMonoid R]
(a : Γ)
:
R →+ HahnSeries Γ R
single
as an additive monoid/group homomorphism
Equations
- HahnSeries.single.addMonoidHom a = let __src := HahnSeries.single a; { toZeroHom := __src, map_add' := ⋯ }
Instances For
@[simp]
theorem
HahnSeries.coeff.addMonoidHom_apply
{Γ : Type u_1}
{R : Type u_2}
[PartialOrder Γ]
[AddMonoid R]
(g : Γ)
(f : HahnSeries Γ R)
:
(HahnSeries.coeff.addMonoidHom g) f = f.coeff g
def
HahnSeries.coeff.addMonoidHom
{Γ : Type u_1}
{R : Type u_2}
[PartialOrder Γ]
[AddMonoid R]
(g : Γ)
:
HahnSeries Γ R →+ R
coeff g
as an additive monoid/group homomorphism
Equations
- HahnSeries.coeff.addMonoidHom g = { toFun := fun (f : HahnSeries Γ R) => f.coeff g, map_zero' := ⋯, map_add' := ⋯ }
Instances For
theorem
HahnSeries.embDomain_add
{Γ : Type u_1}
{R : Type u_2}
[PartialOrder Γ]
[AddMonoid R]
{Γ' : Type u_3}
[PartialOrder Γ']
(f : Γ ↪o Γ')
(x : HahnSeries Γ R)
(y : HahnSeries Γ R)
:
HahnSeries.embDomain f (x + y) = HahnSeries.embDomain f x + HahnSeries.embDomain f y
instance
HahnSeries.instAddCommMonoid
{Γ : Type u_1}
{R : Type u_2}
[PartialOrder Γ]
[AddCommMonoid R]
:
AddCommMonoid (HahnSeries Γ R)
Equations
- HahnSeries.instAddCommMonoid = let __src := inferInstanceAs (AddMonoid (HahnSeries Γ R)); AddCommMonoid.mk ⋯
instance
HahnSeries.instNeg
{Γ : Type u_1}
{R : Type u_2}
[PartialOrder Γ]
[AddGroup R]
:
Neg (HahnSeries Γ R)
Equations
- HahnSeries.instNeg = { neg := fun (x : HahnSeries Γ R) => { coeff := fun (a : Γ) => -x.coeff a, isPWO_support' := ⋯ } }
instance
HahnSeries.instAddGroup
{Γ : Type u_1}
{R : Type u_2}
[PartialOrder Γ]
[AddGroup R]
:
AddGroup (HahnSeries Γ R)
Equations
- HahnSeries.instAddGroup = let __src := inferInstanceAs (AddMonoid (HahnSeries Γ R)); AddGroup.mk ⋯
@[simp]
theorem
HahnSeries.neg_coeff'
{Γ : Type u_1}
{R : Type u_2}
[PartialOrder Γ]
[AddGroup R]
{x : HahnSeries Γ R}
:
theorem
HahnSeries.neg_coeff
{Γ : Type u_1}
{R : Type u_2}
[PartialOrder Γ]
[AddGroup R]
{x : HahnSeries Γ R}
{a : Γ}
:
@[simp]
theorem
HahnSeries.support_neg
{Γ : Type u_1}
{R : Type u_2}
[PartialOrder Γ]
[AddGroup R]
{x : HahnSeries Γ R}
:
@[simp]
theorem
HahnSeries.sub_coeff'
{Γ : Type u_1}
{R : Type u_2}
[PartialOrder Γ]
[AddGroup R]
{x : HahnSeries Γ R}
{y : HahnSeries Γ R}
:
theorem
HahnSeries.sub_coeff
{Γ : Type u_1}
{R : Type u_2}
[PartialOrder Γ]
[AddGroup R]
{x : HahnSeries Γ R}
{y : HahnSeries Γ R}
{a : Γ}
:
theorem
HahnSeries.orderTop_neg
{Γ : Type u_1}
{R : Type u_2}
[PartialOrder Γ]
[AddGroup R]
{x : HahnSeries Γ R}
:
@[simp]
theorem
HahnSeries.order_neg
{Γ : Type u_1}
{R : Type u_2}
[PartialOrder Γ]
[AddGroup R]
[Zero Γ]
{f : HahnSeries Γ R}
:
theorem
HahnSeries.min_orderTop_le_orderTop_sub
{R : Type u_2}
[AddGroup R]
{Γ : Type u_3}
[LinearOrder Γ]
{x : HahnSeries Γ R}
{y : HahnSeries Γ R}
:
theorem
HahnSeries.orderTop_sub
{R : Type u_2}
[AddGroup R]
{Γ : Type u_3}
[LinearOrder Γ]
{x : HahnSeries Γ R}
{y : HahnSeries Γ R}
(hxy : x.orderTop < y.orderTop)
:
theorem
HahnSeries.leadingCoeff_sub
{R : Type u_2}
[AddGroup R]
{Γ : Type u_3}
[LinearOrder Γ]
{x : HahnSeries Γ R}
{y : HahnSeries Γ R}
(hxy : x.orderTop < y.orderTop)
:
instance
HahnSeries.instAddCommGroup
{Γ : Type u_1}
{R : Type u_2}
[PartialOrder Γ]
[AddCommGroup R]
:
AddCommGroup (HahnSeries Γ R)
Equations
- HahnSeries.instAddCommGroup = let __src := inferInstanceAs (AddCommMonoid (HahnSeries Γ R)); let __src_1 := inferInstanceAs (AddGroup (HahnSeries Γ R)); AddCommGroup.mk ⋯
instance
HahnSeries.instSMul
{Γ : Type u_1}
{R : Type u_2}
[PartialOrder Γ]
{V : Type u_3}
[Zero V]
[SMulZeroClass R V]
:
SMul R (HahnSeries Γ V)
Equations
- HahnSeries.instSMul = { smul := fun (r : R) (x : HahnSeries Γ V) => { coeff := r • x.coeff, isPWO_support' := ⋯ } }
@[simp]
theorem
HahnSeries.smul_coeff
{Γ : Type u_1}
{R : Type u_2}
[PartialOrder Γ]
{V : Type u_3}
[Zero V]
[SMulZeroClass R V]
{r : R}
{x : HahnSeries Γ V}
{a : Γ}
:
instance
HahnSeries.instSMulZeroClass
{Γ : Type u_1}
{R : Type u_2}
[PartialOrder Γ]
{V : Type u_3}
[Zero V]
[SMulZeroClass R V]
:
SMulZeroClass R (HahnSeries Γ V)
Equations
- HahnSeries.instSMulZeroClass = let __src := inferInstanceAs (SMul R (HahnSeries Γ V)); SMulZeroClass.mk ⋯
theorem
HahnSeries.orderTop_smul_not_lt
{Γ : Type u_1}
{R : Type u_2}
[PartialOrder Γ]
{V : Type u_3}
[Zero V]
[SMulZeroClass R V]
(r : R)
(x : HahnSeries Γ V)
:
theorem
HahnSeries.order_smul_not_lt
{Γ : Type u_1}
{R : Type u_2}
[PartialOrder Γ]
{V : Type u_3}
[Zero V]
[SMulZeroClass R V]
[Zero Γ]
(r : R)
(x : HahnSeries Γ V)
(h : r • x ≠ 0)
:
theorem
HahnSeries.le_order_smul
{R : Type u_2}
{V : Type u_3}
[Zero V]
[SMulZeroClass R V]
{Γ : Type u_4}
[Zero Γ]
[LinearOrder Γ]
(r : R)
(x : HahnSeries Γ V)
(h : r • x ≠ 0)
:
instance
HahnSeries.instDistribMulAction
{Γ : Type u_1}
{R : Type u_2}
[PartialOrder Γ]
{V : Type u_3}
[Monoid R]
[AddMonoid V]
[DistribMulAction R V]
:
DistribMulAction R (HahnSeries Γ V)
Equations
- HahnSeries.instDistribMulAction = DistribMulAction.mk ⋯ ⋯
instance
HahnSeries.instIsScalarTower
{Γ : Type u_1}
{R : Type u_2}
[PartialOrder Γ]
{V : Type u_3}
[Monoid R]
[AddMonoid V]
[DistribMulAction R V]
{S : Type u_4}
[Monoid S]
[DistribMulAction S V]
[SMul R S]
[IsScalarTower R S V]
:
IsScalarTower R S (HahnSeries Γ V)
Equations
- ⋯ = ⋯
instance
HahnSeries.instSMulCommClass
{Γ : Type u_1}
{R : Type u_2}
[PartialOrder Γ]
{V : Type u_3}
[Monoid R]
[AddMonoid V]
[DistribMulAction R V]
{S : Type u_4}
[Monoid S]
[DistribMulAction S V]
[SMulCommClass R S V]
:
SMulCommClass R S (HahnSeries Γ V)
Equations
- ⋯ = ⋯
instance
HahnSeries.instModule
{Γ : Type u_1}
{R : Type u_2}
[PartialOrder Γ]
[Semiring R]
{V : Type u_3}
[AddCommMonoid V]
[Module R V]
:
Module R (HahnSeries Γ V)
Equations
- HahnSeries.instModule = let __src := inferInstanceAs (DistribMulAction R (HahnSeries Γ V)); Module.mk ⋯ ⋯
@[simp]
theorem
HahnSeries.single.linearMap_apply
{Γ : Type u_1}
{R : Type u_2}
[PartialOrder Γ]
[Semiring R]
{V : Type u_3}
[AddCommMonoid V]
[Module R V]
(a : Γ)
:
∀ (a_1 : V), (HahnSeries.single.linearMap a) a_1 = (↑(HahnSeries.single.addMonoidHom a)).toFun a_1
def
HahnSeries.single.linearMap
{Γ : Type u_1}
{R : Type u_2}
[PartialOrder Γ]
[Semiring R]
{V : Type u_3}
[AddCommMonoid V]
[Module R V]
(a : Γ)
:
V →ₗ[R] HahnSeries Γ V
single
as a linear map
Equations
- HahnSeries.single.linearMap a = let __src := HahnSeries.single.addMonoidHom a; { toFun := (↑__src).toFun, map_add' := ⋯, map_smul' := ⋯ }
Instances For
@[simp]
theorem
HahnSeries.coeff.linearMap_apply
{Γ : Type u_1}
{R : Type u_2}
[PartialOrder Γ]
[Semiring R]
{V : Type u_3}
[AddCommMonoid V]
[Module R V]
(g : Γ)
:
∀ (a : HahnSeries Γ V), (HahnSeries.coeff.linearMap g) a = (↑(HahnSeries.coeff.addMonoidHom g)).toFun a
def
HahnSeries.coeff.linearMap
{Γ : Type u_1}
{R : Type u_2}
[PartialOrder Γ]
[Semiring R]
{V : Type u_3}
[AddCommMonoid V]
[Module R V]
(g : Γ)
:
HahnSeries Γ V →ₗ[R] V
coeff g
as a linear map
Equations
- HahnSeries.coeff.linearMap g = let __src := HahnSeries.coeff.addMonoidHom g; { toFun := (↑__src).toFun, map_add' := ⋯, map_smul' := ⋯ }
Instances For
theorem
HahnSeries.embDomain_smul
{Γ : Type u_1}
{R : Type u_2}
[PartialOrder Γ]
[Semiring R]
{Γ' : Type u_4}
[PartialOrder Γ']
(f : Γ ↪o Γ')
(r : R)
(x : HahnSeries Γ R)
:
HahnSeries.embDomain f (r • x) = r • HahnSeries.embDomain f x
@[simp]
theorem
HahnSeries.embDomainLinearMap_apply
{Γ : Type u_1}
{R : Type u_2}
[PartialOrder Γ]
[Semiring R]
{Γ' : Type u_4}
[PartialOrder Γ']
(f : Γ ↪o Γ')
:
∀ (a : HahnSeries Γ R), (HahnSeries.embDomainLinearMap f) a = HahnSeries.embDomain f a
def
HahnSeries.embDomainLinearMap
{Γ : Type u_1}
{R : Type u_2}
[PartialOrder Γ]
[Semiring R]
{Γ' : Type u_4}
[PartialOrder Γ']
(f : Γ ↪o Γ')
:
HahnSeries Γ R →ₗ[R] HahnSeries Γ' R
Extending the domain of Hahn series is a linear map.
Equations
- HahnSeries.embDomainLinearMap f = { toFun := HahnSeries.embDomain f, map_add' := ⋯, map_smul' := ⋯ }