Documentation

Mathlib.RingTheory.HahnSeries.Multiplication

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 #

Main results #

TODO #

The following may be useful for composing vertex operators, but they seem to take time.

References #

instance HahnSeries.instOne {Γ : Type u_1} {R : Type u_3} [Zero Γ] [PartialOrder Γ] [Zero R] [One R] :
Equations
    instance HahnSeries.instNatCast {Γ : Type u_1} {R : Type u_3} [Zero Γ] [PartialOrder Γ] [Zero R] [NatCast R] :
    Equations
      instance HahnSeries.instIntCast {Γ : Type u_1} {R : Type u_3} [Zero Γ] [PartialOrder Γ] [Zero R] [IntCast R] :
      Equations
        instance HahnSeries.instNNRatCast {Γ : Type u_1} {R : Type u_3} [Zero Γ] [PartialOrder Γ] [Zero R] [NNRatCast R] :
        Equations
          instance HahnSeries.instRatCast {Γ : Type u_1} {R : Type u_3} [Zero Γ] [PartialOrder Γ] [Zero R] [RatCast R] :
          Equations
            @[simp]
            theorem HahnSeries.coeff_one {Γ : Type u_1} {R : Type u_3} [Zero Γ] [PartialOrder Γ] [Zero R] [One R] {a : Γ} :
            coeff 1 a = if a = 0 then 1 else 0
            @[simp]
            theorem HahnSeries.single_zero_one {Γ : Type u_1} {R : Type u_3} [Zero Γ] [PartialOrder Γ] [Zero R] [One R] :
            (single 0) 1 = 1
            theorem HahnSeries.single_zero_natCast {Γ : Type u_1} {R : Type u_3} [Zero Γ] [PartialOrder Γ] [Zero R] [NatCast R] (n : ) :
            (single 0) n = n
            theorem HahnSeries.single_zero_intCast {Γ : Type u_1} {R : Type u_3} [Zero Γ] [PartialOrder Γ] [Zero R] [IntCast R] (z : ) :
            (single 0) z = z
            theorem HahnSeries.single_zero_nnratCast {Γ : Type u_1} {R : Type u_3} [Zero Γ] [PartialOrder Γ] [Zero R] [NNRatCast R] (q : ℚ≥0) :
            (single 0) q = q
            theorem HahnSeries.single_zero_ratCast {Γ : Type u_1} {R : Type u_3} [Zero Γ] [PartialOrder Γ] [Zero R] [RatCast R] (q : ) :
            (single 0) q = q
            @[simp]
            theorem HahnSeries.support_one {Γ : Type u_1} {R : Type u_3} [Zero Γ] [PartialOrder Γ] [MulZeroOneClass R] [Nontrivial R] :
            @[simp]
            theorem HahnSeries.orderTop_one {Γ : Type u_1} {R : Type u_3} [Zero Γ] [PartialOrder Γ] [Zero R] [One R] [NeZero 1] :
            @[simp]
            theorem HahnSeries.order_one {Γ : Type u_1} {R : Type u_3} [Zero Γ] [PartialOrder Γ] [MulZeroOneClass R] :
            order 1 = 0
            @[simp]
            theorem HahnSeries.map_one {Γ : Type u_1} {R : Type u_3} {S : Type u_4} [Zero Γ] [PartialOrder Γ] [MonoidWithZero R] [MonoidWithZero S] (f : R →*₀ S) :
            map 1 f = 1
            def HahnModule (Γ : Type u_6) (R : Type u_7) (V : Type u_8) [PartialOrder Γ] [Zero V] [SMul R V] :
            Type (max u_6 u_8)

            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/Basic.lean for more discussion on this problem.

            Equations
              Instances For
                def HahnModule.of {Γ : Type u_1} {V : Type u_5} [PartialOrder Γ] [Zero V] (R : Type u_6) [SMul R V] :

                The casting function to the type synonym.

                Equations
                  Instances For
                    def HahnModule.rec {Γ : Type u_1} {R : Type u_3} {V : Type u_5} [PartialOrder Γ] [Zero V] [SMul R V] {motive : HahnModule Γ R VSort u_6} (h : (x : HahnSeries Γ V) → motive ((of R) x)) (x : HahnModule Γ R V) :
                    motive x

                    Recursion principle to reduce a result about the synonym to the original type.

                    Equations
                      Instances For
                        theorem HahnModule.ext {Γ : Type u_1} {R : Type u_3} {V : Type u_5} [PartialOrder Γ] [Zero V] [SMul R V] (x y : HahnModule Γ R V) (h : ((of R).symm x).coeff = ((of R).symm y).coeff) :
                        x = y
                        theorem HahnModule.ext_iff {Γ : Type u_1} {R : Type u_3} {V : Type u_5} [PartialOrder Γ] [Zero V] [SMul R V] {x y : HahnModule Γ R V} :
                        x = y ((of R).symm x).coeff = ((of R).symm y).coeff
                        instance HahnModule.instZero {Γ : Type u_1} {R : Type u_3} {V : Type u_5} [PartialOrder Γ] [SMul R V] [Zero V] :
                        Zero (HahnModule Γ R V)
                        Equations
                          instance HahnModule.instAddCommMonoid {Γ : Type u_1} {R : Type u_3} {V : Type u_5} [PartialOrder Γ] [SMul R V] [AddCommMonoid V] :
                          Equations
                            instance HahnModule.instAddCommGroup {Γ : Type u_1} {R : Type u_3} {V : Type u_5} [PartialOrder Γ] [SMul R V] [AddCommGroup V] :
                            Equations
                              instance HahnModule.instBaseSMul {Γ : Type u_1} {R : Type u_3} [PartialOrder Γ] {V : Type u_6} [Monoid R] [AddMonoid V] [DistribMulAction R V] :
                              SMul R (HahnModule Γ R V)
                              Equations
                                @[simp]
                                theorem HahnModule.of_zero {Γ : Type u_1} {R : Type u_3} {V : Type u_5} [PartialOrder Γ] [SMul R V] [Zero V] :
                                (of R) 0 = 0
                                @[simp]
                                theorem HahnModule.of_add {Γ : Type u_1} {R : Type u_3} {V : Type u_5} [PartialOrder Γ] [SMul R V] [AddCommMonoid V] (x y : HahnSeries Γ V) :
                                (of R) (x + y) = (of R) x + (of R) y
                                @[simp]
                                theorem HahnModule.of_sub {Γ : Type u_1} {R : Type u_3} {V : Type u_5} [PartialOrder Γ] [SMul R V] [AddCommGroup V] (x y : HahnSeries Γ V) :
                                (of R) (x - y) = (of R) x - (of R) y
                                @[simp]
                                theorem HahnModule.of_symm_zero {Γ : Type u_1} {R : Type u_3} {V : Type u_5} [PartialOrder Γ] [SMul R V] [Zero V] :
                                (of R).symm 0 = 0
                                @[simp]
                                theorem HahnModule.of_symm_add {Γ : Type u_1} {R : Type u_3} {V : Type u_5} [PartialOrder Γ] [SMul R V] [AddCommMonoid V] (x y : HahnModule Γ R V) :
                                (of R).symm (x + y) = (of R).symm x + (of R).symm y
                                @[simp]
                                theorem HahnModule.of_symm_sub {Γ : Type u_1} {R : Type u_3} {V : Type u_5} [PartialOrder Γ] [SMul R V] [AddCommGroup V] (x y : HahnModule Γ R V) :
                                (of R).symm (x - y) = (of R).symm x - (of R).symm y
                                instance HahnModule.instSMul {Γ : Type u_1} {Γ' : Type u_2} {R : Type u_3} {V : Type u_5} [PartialOrder Γ] [SMul R V] [PartialOrder Γ'] [VAdd Γ Γ'] [IsOrderedCancelVAdd Γ Γ'] [Zero R] [AddCommMonoid V] :
                                SMul (HahnSeries Γ R) (HahnModule Γ' R V)
                                Equations
                                  theorem HahnModule.coeff_smul {Γ : Type u_1} {Γ' : Type u_2} {R : Type u_3} {V : Type u_5} [PartialOrder Γ] [SMul R V] [PartialOrder Γ'] [VAdd Γ Γ'] [IsOrderedCancelVAdd Γ Γ'] [Zero R] [AddCommMonoid V] (x : HahnSeries Γ R) (y : HahnModule Γ' R V) (a : Γ') :
                                  ((of R).symm (x y)).coeff a = ijFinset.VAddAntidiagonal a, x.coeff ij.1 ((of R).symm y).coeff ij.2
                                  instance HahnModule.instBaseSMulZeroClass {Γ : Type u_1} {R : Type u_3} {V : Type u_5} [PartialOrder Γ] [AddCommMonoid V] [SMulZeroClass R V] :
                                  Equations
                                    @[simp]
                                    theorem HahnModule.of_smul {Γ : Type u_1} {R : Type u_3} {V : Type u_5} [PartialOrder Γ] [AddCommMonoid V] [SMulZeroClass R V] (r : R) (x : HahnSeries Γ V) :
                                    (of R) (r x) = r (of R) x
                                    @[simp]
                                    theorem HahnModule.of_symm_smul {Γ : Type u_1} {R : Type u_3} {V : Type u_5} [PartialOrder Γ] [AddCommMonoid V] [SMulZeroClass R V] (r : R) (x : HahnModule Γ R V) :
                                    (of R).symm (r x) = r (of R).symm x
                                    instance HahnModule.instSMulZeroClass {Γ : Type u_1} {Γ' : Type u_2} {R : Type u_3} {V : Type u_5} [PartialOrder Γ] [PartialOrder Γ'] [VAdd Γ Γ'] [IsOrderedCancelVAdd Γ Γ'] [AddCommMonoid V] [Zero R] [SMulZeroClass R V] :
                                    Equations
                                      theorem HahnModule.coeff_smul_right {Γ : Type u_1} {Γ' : Type u_2} {R : Type u_3} {V : Type u_5} [PartialOrder Γ] [PartialOrder Γ'] [VAdd Γ Γ'] [IsOrderedCancelVAdd Γ Γ'] [AddCommMonoid V] [Zero R] [SMulZeroClass R V] {x : HahnSeries Γ R} {y : HahnModule Γ' R V} {a : Γ'} {s : Set Γ'} (hs : s.IsPWO) (hys : ((of R).symm y).support s) :
                                      ((of R).symm (x y)).coeff a = ijFinset.VAddAntidiagonal hs a, x.coeff ij.1 ((of R).symm y).coeff ij.2
                                      theorem HahnModule.coeff_smul_left {Γ : Type u_1} {Γ' : Type u_2} {R : Type u_3} {V : Type u_5} [PartialOrder Γ] [PartialOrder Γ'] [VAdd Γ Γ'] [IsOrderedCancelVAdd Γ Γ'] [AddCommMonoid V] [Zero R] [SMulWithZero R V] {x : HahnSeries Γ R} {y : HahnModule Γ' R V} {a : Γ'} {s : Set Γ} (hs : s.IsPWO) (hxs : x.support s) :
                                      ((of R).symm (x y)).coeff a = ijFinset.VAddAntidiagonal hs a, x.coeff ij.1 ((of R).symm y).coeff ij.2
                                      theorem HahnModule.smul_add {Γ : Type u_1} {Γ' : Type u_2} {R : Type u_3} {V : Type u_5} [PartialOrder Γ] [PartialOrder Γ'] [VAdd Γ Γ'] [IsOrderedCancelVAdd Γ Γ'] [AddCommMonoid V] [Zero R] [DistribSMul R V] (x : HahnSeries Γ R) (y z : HahnModule Γ' R V) :
                                      x (y + z) = x y + x z
                                      instance HahnModule.instDistribSMul {Γ : Type u_1} {Γ' : Type u_2} {R : Type u_3} {V : Type u_5} [PartialOrder Γ] [PartialOrder Γ'] [VAdd Γ Γ'] [IsOrderedCancelVAdd Γ Γ'] [AddCommMonoid V] [MonoidWithZero R] [DistribSMul R V] :
                                      Equations
                                        theorem HahnModule.add_smul {Γ : Type u_1} {Γ' : Type u_2} {R : Type u_3} {V : Type u_5} [PartialOrder Γ] [PartialOrder Γ'] [VAdd Γ Γ'] [IsOrderedCancelVAdd Γ Γ'] [AddCommMonoid V] [AddCommMonoid R] [SMulWithZero R V] {x y : HahnSeries Γ R} {z : HahnModule Γ' R V} (h : ∀ (r s : R) (u : V), (r + s) u = r u + s u) :
                                        (x + y) z = x z + y z
                                        theorem HahnModule.coeff_single_smul_vadd {Γ : Type u_1} {Γ' : Type u_2} {R : Type u_3} {V : Type u_5} [PartialOrder Γ] [PartialOrder Γ'] [VAdd Γ Γ'] [IsOrderedCancelVAdd Γ Γ'] [AddCommMonoid V] [MulZeroClass R] [SMulWithZero R V] {r : R} {x : HahnModule Γ' R V} {a : Γ'} {b : Γ} :
                                        ((of R).symm ((HahnSeries.single b) r x)).coeff (b +ᵥ a) = r ((of R).symm x).coeff a
                                        theorem HahnModule.coeff_single_zero_smul {Γ' : Type u_2} {R : Type u_3} {V : Type u_5} [PartialOrder Γ'] [AddCommMonoid V] {Γ : Type u_6} [AddCommMonoid Γ] [PartialOrder Γ] [AddAction Γ Γ'] [IsOrderedCancelVAdd Γ Γ'] [MulZeroClass R] [SMulWithZero R V] {r : R} {x : HahnModule Γ' R V} {a : Γ'} :
                                        ((of R).symm ((HahnSeries.single 0) r x)).coeff a = r ((of R).symm x).coeff a
                                        @[simp]
                                        theorem HahnModule.single_zero_smul_eq_smul {Γ' : Type u_2} {R : Type u_3} {V : Type u_5} [PartialOrder Γ'] [AddCommMonoid V] (Γ : Type u_6) [AddCommMonoid Γ] [PartialOrder Γ] [AddAction Γ Γ'] [IsOrderedCancelVAdd Γ Γ'] [MulZeroClass R] [SMulWithZero R V] {r : R} {x : HahnModule Γ' R V} :
                                        @[simp]
                                        theorem HahnModule.zero_smul' {Γ : Type u_1} {Γ' : Type u_2} {R : Type u_3} {V : Type u_5} [PartialOrder Γ] [PartialOrder Γ'] [VAdd Γ Γ'] [IsOrderedCancelVAdd Γ Γ'] [AddCommMonoid V] [Zero R] [SMulWithZero R V] {x : HahnModule Γ' R V} :
                                        0 x = 0
                                        @[simp]
                                        theorem HahnModule.one_smul' {Γ' : Type u_2} {R : Type u_3} {V : Type u_5} [PartialOrder Γ'] [AddCommMonoid V] {Γ : Type u_6} [AddCommMonoid Γ] [PartialOrder Γ] [AddAction Γ Γ'] [IsOrderedCancelVAdd Γ Γ'] [MonoidWithZero R] [MulActionWithZero R V] {x : HahnModule Γ' R V} :
                                        1 x = x
                                        theorem HahnModule.support_smul_subset_vadd_support' {Γ : Type u_1} {Γ' : Type u_2} {R : Type u_3} {V : Type u_5} [PartialOrder Γ] [PartialOrder Γ'] [VAdd Γ Γ'] [IsOrderedCancelVAdd Γ Γ'] [AddCommMonoid V] [MulZeroClass R] [SMulWithZero R V] {x : HahnSeries Γ R} {y : HahnModule Γ' R V} :
                                        ((of R).symm (x y)).support x.support +ᵥ ((of R).symm y).support
                                        theorem HahnModule.support_smul_subset_vadd_support {Γ : Type u_1} {Γ' : Type u_2} {R : Type u_3} {V : Type u_5} [PartialOrder Γ] [PartialOrder Γ'] [VAdd Γ Γ'] [IsOrderedCancelVAdd Γ Γ'] [AddCommMonoid V] [MulZeroClass R] [SMulWithZero R V] {x : HahnSeries Γ R} {y : HahnModule Γ' R V} :
                                        ((of R).symm (x y)).support x.support +ᵥ ((of R).symm y).support
                                        theorem HahnModule.orderTop_vAdd_le_orderTop_smul {R : Type u_3} {V : Type u_5} [AddCommMonoid V] {Γ : Type u_6} {Γ' : Type u_7} [LinearOrder Γ] [LinearOrder Γ'] [VAdd Γ Γ'] [IsOrderedCancelVAdd Γ Γ'] [MulZeroClass R] [SMulWithZero R V] {x : HahnSeries Γ R} [VAdd (WithTop Γ) (WithTop Γ')] {y : HahnModule Γ' R V} (h : ∀ (γ : Γ) (γ' : Γ'), ↑(γ +ᵥ γ') = γ +ᵥ γ') :
                                        x.orderTop +ᵥ ((of R).symm y).orderTop ((of R).symm (x y)).orderTop
                                        theorem HahnModule.coeff_smul_order_add_order {R : Type u_3} {V : Type u_5} [AddCommMonoid V] {Γ : Type u_6} [AddCommMonoid Γ] [LinearOrder Γ] [IsOrderedCancelAddMonoid Γ] [Zero R] [SMulWithZero R V] (x : HahnSeries Γ R) (y : HahnModule Γ R V) :
                                        ((of R).symm (x y)).coeff (x.order + ((of R).symm y).order) = x.leadingCoeff ((of R).symm y).leadingCoeff
                                        theorem HahnSeries.coeff_mul {Γ : Type u_1} {R : Type u_3} [AddCommMonoid Γ] [PartialOrder Γ] [IsOrderedCancelAddMonoid Γ] [NonUnitalNonAssocSemiring R] {x y : HahnSeries Γ R} {a : Γ} :
                                        (x * y).coeff a = ijFinset.addAntidiagonal a, x.coeff ij.1 * y.coeff ij.2
                                        theorem HahnSeries.map_mul {Γ : Type u_1} {R : Type u_3} {S : Type u_4} [AddCommMonoid Γ] [PartialOrder Γ] [IsOrderedCancelAddMonoid Γ] [NonUnitalNonAssocSemiring R] [NonUnitalNonAssocSemiring S] (f : R →ₙ+* S) {x y : HahnSeries Γ R} :
                                        (x * y).map f = x.map f * y.map f
                                        theorem HahnSeries.coeff_mul_left' {Γ : Type u_1} {R : Type u_3} [AddCommMonoid Γ] [PartialOrder Γ] [IsOrderedCancelAddMonoid Γ] [NonUnitalNonAssocSemiring R] {x y : HahnSeries Γ R} {a : Γ} {s : Set Γ} (hs : s.IsPWO) (hxs : x.support s) :
                                        (x * y).coeff a = ijFinset.addAntidiagonal hs a, x.coeff ij.1 * y.coeff ij.2
                                        theorem HahnSeries.coeff_mul_right' {Γ : Type u_1} {R : Type u_3} [AddCommMonoid Γ] [PartialOrder Γ] [IsOrderedCancelAddMonoid Γ] [NonUnitalNonAssocSemiring R] {x y : HahnSeries Γ R} {a : Γ} {s : Set Γ} (hs : s.IsPWO) (hys : y.support s) :
                                        (x * y).coeff a = ijFinset.addAntidiagonal hs a, x.coeff ij.1 * y.coeff ij.2
                                        theorem HahnSeries.coeff_single_mul_add {Γ : Type u_1} {R : Type u_3} [AddCommMonoid Γ] [PartialOrder Γ] [IsOrderedCancelAddMonoid Γ] [NonUnitalNonAssocSemiring R] {r : R} {x : HahnSeries Γ R} {a b : Γ} :
                                        ((single b) r * x).coeff (a + b) = r * x.coeff a
                                        theorem HahnSeries.coeff_mul_single_add {Γ : Type u_1} {R : Type u_3} [AddCommMonoid Γ] [PartialOrder Γ] [IsOrderedCancelAddMonoid Γ] [NonUnitalNonAssocSemiring R] {r : R} {x : HahnSeries Γ R} {a b : Γ} :
                                        (x * (single b) r).coeff (a + b) = x.coeff a * r
                                        theorem HahnSeries.coeff_single_mul {Γ' : Type u_2} {R : Type u_3} [NonUnitalNonAssocSemiring R] [PartialOrder Γ'] [AddCommGroup Γ'] [IsOrderedAddMonoid Γ'] {r : R} {x : HahnSeries Γ' R} {a b : Γ'} :
                                        ((single b) r * x).coeff a = r * x.coeff (a - b)
                                        theorem HahnSeries.coeff_mul_single {Γ' : Type u_2} {R : Type u_3} [NonUnitalNonAssocSemiring R] [PartialOrder Γ'] [AddCommGroup Γ'] [IsOrderedAddMonoid Γ'] {r : R} {x : HahnSeries Γ' R} {a b : Γ'} :
                                        (x * (single b) r).coeff a = x.coeff (a - b) * r
                                        @[simp]
                                        theorem HahnSeries.coeff_mul_single_zero {Γ : Type u_1} {R : Type u_3} [AddCommMonoid Γ] [PartialOrder Γ] [IsOrderedCancelAddMonoid Γ] [NonUnitalNonAssocSemiring R] {r : R} {x : HahnSeries Γ R} {a : Γ} :
                                        (x * (single 0) r).coeff a = x.coeff a * r
                                        theorem HahnSeries.coeff_single_zero_mul {Γ : Type u_1} {R : Type u_3} [AddCommMonoid Γ] [PartialOrder Γ] [IsOrderedCancelAddMonoid Γ] [NonUnitalNonAssocSemiring R] {r : R} {x : HahnSeries Γ R} {a : Γ} :
                                        ((single 0) r * x).coeff a = r * x.coeff a
                                        @[simp]
                                        theorem HahnSeries.single_zero_mul_eq_smul {Γ : Type u_1} {R : Type u_3} [AddCommMonoid Γ] [PartialOrder Γ] [IsOrderedCancelAddMonoid Γ] [Semiring R] {r : R} {x : HahnSeries Γ R} :
                                        (single 0) r * x = r x
                                        @[deprecated HahnSeries.support_mul_subset (since := "2025-12-09")]

                                        Alias of HahnSeries.support_mul_subset.

                                        @[deprecated HahnSeries.orderTop_mul_of_ne_zero (since := "2026-01-02")]

                                        Alias of HahnSeries.orderTop_mul_of_ne_zero.

                                        @[deprecated HahnSeries.order_mul_of_ne_zero (since := "2026-01-02")]

                                        Alias of HahnSeries.order_mul_of_ne_zero.

                                        @[deprecated HahnSeries.leadingCoeff_mul_of_ne_zero (since := "2026-01-02")]

                                        Alias of HahnSeries.leadingCoeff_mul_of_ne_zero.

                                        theorem HahnSeries.order_single_mul_of_isRegular {Γ : Type u_1} {R : Type u_3} [AddCommMonoid Γ] [LinearOrder Γ] [IsOrderedCancelAddMonoid Γ] [NonUnitalNonAssocSemiring R] {g : Γ} {r : R} (hr : IsRegular r) {x : HahnSeries Γ R} (hx : x 0) :
                                        ((single g) r * x).order = g + x.order
                                        instance HahnSeries.instRing {Γ : Type u_1} {R : Type u_3} [AddCommMonoid Γ] [PartialOrder Γ] [IsOrderedCancelAddMonoid Γ] [Ring R] :
                                        Equations
                                          theorem HahnSeries.orderTop_sub_pos {Γ : Type u_1} {R : Type u_3} [PartialOrder Γ] [Zero Γ] [AddCommGroup R] [One R] {g : Γ} (hg : 0 < g) (r : R) :
                                          0 < (1 + (single g) r - 1).orderTop

                                          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
                                              instance HahnModule.instBaseModule {Γ' : Type u_2} {R : Type u_3} {V : Type u_5} [PartialOrder Γ'] [AddCommMonoid V] [Semiring R] [Module R V] :
                                              Module R (HahnModule Γ' R V)
                                              Equations
                                                instance HahnModule.instModule {Γ : Type u_1} {Γ' : Type u_2} {R : Type u_3} {V : Type u_5} [AddCommMonoid Γ] [PartialOrder Γ] [IsOrderedCancelAddMonoid Γ] [PartialOrder Γ'] [AddAction Γ Γ'] [IsOrderedCancelVAdd Γ Γ'] [AddCommMonoid V] [Semiring R] [Module R V] :
                                                Module (HahnSeries Γ R) (HahnModule Γ' R V)
                                                Equations
                                                  instance HahnModule.instIsScalarTowerHahnSeries {Γ : Type u_1} {R : Type u_3} {V : Type u_5} [PartialOrder Γ] [AddCommMonoid V] [Zero R] {S : Type u_6} [Zero S] [SMul R S] [SMulWithZero R V] [SMulWithZero S V] [IsScalarTower R S V] :
                                                  @[simp]
                                                  theorem HahnSeries.single_mul_single {Γ : Type u_1} {R : Type u_3} [AddCommMonoid Γ] [PartialOrder Γ] [IsOrderedCancelAddMonoid Γ] [NonUnitalNonAssocSemiring R] {a b : Γ} {r s : R} :
                                                  (single a) r * (single b) s = (single (a + b)) (r * s)
                                                  @[simp]
                                                  theorem HahnSeries.single_pow {Γ : Type u_1} {R : Type u_3} [AddCommMonoid Γ] [PartialOrder Γ] [IsOrderedCancelAddMonoid Γ] [Semiring R] (a : Γ) (n : ) (r : R) :
                                                  (single a) r ^ n = (single (n a)) (r ^ n)

                                                  C a is the constant Hahn Series a. C is provided as a ring homomorphism.

                                                  Equations
                                                    Instances For
                                                      @[simp]
                                                      theorem HahnSeries.C_apply {Γ : Type u_1} {R : Type u_3} [AddCommMonoid Γ] [PartialOrder Γ] [IsOrderedCancelAddMonoid Γ] [NonAssocSemiring R] (a : R) :
                                                      C a = (single 0) a
                                                      theorem HahnSeries.map_C {Γ : Type u_1} {R : Type u_3} {S : Type u_4} [AddCommMonoid Γ] [PartialOrder Γ] [IsOrderedCancelAddMonoid Γ] [NonAssocSemiring R] [NonAssocSemiring S] (a : R) (f : R →+* S) :
                                                      (C a).map f = C (f a)
                                                      theorem HahnSeries.C_ne_zero {Γ : Type u_1} {R : Type u_3} [AddCommMonoid Γ] [PartialOrder Γ] [IsOrderedCancelAddMonoid Γ] [NonAssocSemiring R] {r : R} (h : r 0) :
                                                      C r 0
                                                      theorem HahnSeries.C_mul_eq_smul {Γ : Type u_1} {R : Type u_3} [AddCommMonoid Γ] [PartialOrder Γ] [IsOrderedCancelAddMonoid Γ] [Semiring R] {r : R} {x : HahnSeries Γ R} :
                                                      C r * x = r x
                                                      theorem HahnSeries.embDomain_mul {Γ : Type u_1} {R : Type u_3} [AddCommMonoid Γ] [PartialOrder Γ] [IsOrderedCancelAddMonoid Γ] {Γ' : Type u_6} [AddCommMonoid Γ'] [PartialOrder Γ'] [IsOrderedCancelAddMonoid Γ'] [NonUnitalNonAssocSemiring R] (f : Γ ↪o Γ') (hf : ∀ (x y : Γ), f (x + y) = f x + f y) (x y : HahnSeries Γ R) :
                                                      embDomain f (x * y) = embDomain f x * embDomain f y
                                                      theorem HahnSeries.embDomain_one {Γ : Type u_1} {R : Type u_3} [AddCommMonoid Γ] [PartialOrder Γ] {Γ' : Type u_6} [AddCommMonoid Γ'] [PartialOrder Γ'] [NonAssocSemiring R] (f : Γ ↪o Γ') (hf : f 0 = 0) :
                                                      embDomain f 1 = 1
                                                      def HahnSeries.embDomainRingHom {Γ : Type u_1} {R : Type u_3} [AddCommMonoid Γ] [PartialOrder Γ] [IsOrderedCancelAddMonoid Γ] {Γ' : Type u_6} [AddCommMonoid Γ'] [PartialOrder Γ'] [IsOrderedCancelAddMonoid Γ'] [NonAssocSemiring R] (f : Γ →+ Γ') (hfi : Function.Injective f) (hf : ∀ (g g' : Γ), f g f g' g g') :

                                                      Extending the domain of Hahn series is a ring homomorphism.

                                                      Equations
                                                        Instances For
                                                          @[simp]
                                                          theorem HahnSeries.embDomainRingHom_apply {Γ : Type u_1} {R : Type u_3} [AddCommMonoid Γ] [PartialOrder Γ] [IsOrderedCancelAddMonoid Γ] {Γ' : Type u_6} [AddCommMonoid Γ'] [PartialOrder Γ'] [IsOrderedCancelAddMonoid Γ'] [NonAssocSemiring R] (f : Γ →+ Γ') (hfi : Function.Injective f) (hf : ∀ (g g' : Γ), f g f g' g g') (a✝ : HahnSeries Γ R) :
                                                          (embDomainRingHom f hfi hf) a✝ = embDomain { toFun := f, inj' := hfi, map_rel_iff' := } a✝
                                                          theorem HahnSeries.embDomainRingHom_C {Γ : Type u_1} {R : Type u_3} [AddCommMonoid Γ] [PartialOrder Γ] [IsOrderedCancelAddMonoid Γ] {Γ' : Type u_6} [AddCommMonoid Γ'] [PartialOrder Γ'] [IsOrderedCancelAddMonoid Γ'] [NonAssocSemiring R] {f : Γ →+ Γ'} {hfi : Function.Injective f} {hf : ∀ (g g' : Γ), f g f g' g g'} {r : R} :
                                                          (embDomainRingHom f hfi hf) (C r) = C r
                                                          instance HahnSeries.instAlgebra {Γ : Type u_1} {R : Type u_3} [AddCommMonoid Γ] [PartialOrder Γ] [IsOrderedCancelAddMonoid Γ] [CommSemiring R] {A : Type u_6} [Semiring A] [Algebra R A] :
                                                          Equations
                                                            theorem HahnSeries.algebraMap_apply {Γ : Type u_1} {R : Type u_3} [AddCommMonoid Γ] [PartialOrder Γ] [IsOrderedCancelAddMonoid Γ] [CommSemiring R] {A : Type u_6} [Semiring A] [Algebra R A] {r : R} :
                                                            (algebraMap R (HahnSeries Γ A)) r = C ((algebraMap R A) r)
                                                            def HahnSeries.embDomainAlgHom {Γ : Type u_1} {R : Type u_3} [AddCommMonoid Γ] [PartialOrder Γ] [IsOrderedCancelAddMonoid Γ] [CommSemiring R] {A : Type u_6} [Semiring A] [Algebra R A] {Γ' : Type u_7} [AddCommMonoid Γ'] [PartialOrder Γ'] [IsOrderedCancelAddMonoid Γ'] (f : Γ →+ Γ') (hfi : Function.Injective f) (hf : ∀ (g g' : Γ), f g f g' g g') :

                                                            Extending the domain of Hahn series is an algebra homomorphism.

                                                            Equations
                                                              Instances For
                                                                @[simp]
                                                                theorem HahnSeries.embDomainAlgHom_apply_coeff {Γ : Type u_1} {R : Type u_3} [AddCommMonoid Γ] [PartialOrder Γ] [IsOrderedCancelAddMonoid Γ] [CommSemiring R] {A : Type u_6} [Semiring A] [Algebra R A] {Γ' : Type u_7} [AddCommMonoid Γ'] [PartialOrder Γ'] [IsOrderedCancelAddMonoid Γ'] (f : Γ →+ Γ') (hfi : Function.Injective f) (hf : ∀ (g g' : Γ), f g f g' g g') (a✝ : HahnSeries Γ A) (b : Γ') :
                                                                ((embDomainAlgHom f hfi hf) a✝).coeff b = if h : b f '' a✝.support then a✝.coeff (Classical.choose ) else 0
                                                                @[simp]
                                                                theorem HahnSeries.order_mul {Γ : Type u_1} {R : Type u_3} [AddCommMonoid Γ] [LinearOrder Γ] [IsOrderedCancelAddMonoid Γ] [NonUnitalNonAssocSemiring R] [NoZeroDivisors R] {x y : HahnSeries Γ R} (hx : x 0) (hy : y 0) :
                                                                (x * y).order = x.order + y.order
                                                                @[simp]
                                                                theorem HahnSeries.order_pow {Γ : Type u_1} {R : Type u_3} [AddCommMonoid Γ] [LinearOrder Γ] [IsOrderedCancelAddMonoid Γ] [Semiring R] [NoZeroDivisors R] (x : HahnSeries Γ R) (n : ) :
                                                                (x ^ n).order = n x.order