Documentation

Mathlib.RingTheory.HahnSeries

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 #

TODO #

References #

theorem HahnSeries.ext_iff {Γ : Type u_1} {R : Type u_2} :
∀ {inst : PartialOrder Γ} {inst_1 : Zero R} (x y : HahnSeries Γ R), x = y x.coeff = y.coeff
theorem HahnSeries.ext {Γ : Type u_1} {R : Type u_2} :
∀ {inst : PartialOrder Γ} {inst_1 : Zero R} (x y : HahnSeries Γ R), x.coeff = y.coeffx = y
structure HahnSeries (Γ : Type u_1) (R : Type u_2) [PartialOrder Γ] [Zero R] :
Type (max u_1 u_2)

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.

Instances For
    theorem HahnSeries.coeff_injective {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [Zero R] :
    Function.Injective HahnSeries.coeff
    @[simp]
    theorem HahnSeries.coeff_inj {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [Zero R] {x : HahnSeries Γ R} {y : HahnSeries Γ R} :
    x.coeff = y.coeff x = y
    def HahnSeries.support {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [Zero R] (x : HahnSeries Γ R) :
    Set Γ

    The support of a Hahn series is just the set of indices whose coefficients are nonzero. Notably, it is well-founded.

    Equations
    Instances For
      @[simp]
      theorem HahnSeries.isPWO_support {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [Zero R] (x : HahnSeries Γ R) :
      @[simp]
      theorem HahnSeries.isWF_support {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [Zero R] (x : HahnSeries Γ R) :
      @[simp]
      theorem HahnSeries.mem_support {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [Zero R] (x : HahnSeries Γ R) (a : Γ) :
      a HahnSeries.support x x.coeff a 0
      instance HahnSeries.instZeroHahnSeries {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [Zero R] :
      Equations
      instance HahnSeries.instInhabitedHahnSeries {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [Zero R] :
      Equations
      • HahnSeries.instInhabitedHahnSeries = { default := 0 }
      @[simp]
      theorem HahnSeries.zero_coeff {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [Zero R] {a : Γ} :
      0.coeff a = 0
      @[simp]
      theorem HahnSeries.coeff_fun_eq_zero_iff {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [Zero R] {x : HahnSeries Γ R} :
      x.coeff = 0 x = 0
      theorem HahnSeries.ne_zero_of_coeff_ne_zero {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [Zero R] {x : HahnSeries Γ R} {g : Γ} (h : x.coeff g 0) :
      x 0
      @[simp]
      theorem HahnSeries.support_zero {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [Zero R] :
      @[simp]
      @[simp]
      theorem HahnSeries.support_eq_empty_iff {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [Zero R] {x : HahnSeries Γ R} :
      def HahnSeries.single {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [Zero R] (a : Γ) :

      single a r is the Hahn series which has coefficient r at a and zero otherwise.

      Equations
      • One or more equations did not get rendered due to their size.
      Instances For
        @[simp]
        theorem HahnSeries.single_coeff_same {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [Zero R] (a : Γ) (r : R) :
        ((HahnSeries.single a) r).coeff a = r
        @[simp]
        theorem HahnSeries.single_coeff_of_ne {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [Zero R] {a : Γ} {b : Γ} {r : R} (h : b a) :
        ((HahnSeries.single a) r).coeff b = 0
        theorem HahnSeries.single_coeff {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [Zero R] {a : Γ} {b : Γ} {r : R} :
        ((HahnSeries.single a) r).coeff b = if b = a then r else 0
        @[simp]
        theorem HahnSeries.support_single_of_ne {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [Zero R] {a : Γ} {r : R} (h : r 0) :
        theorem HahnSeries.support_single_subset {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [Zero R] {a : Γ} {r : R} :
        theorem HahnSeries.eq_of_mem_support_single {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [Zero R] {a : Γ} {r : R} {b : Γ} (h : b HahnSeries.support ((HahnSeries.single a) r)) :
        b = a
        theorem HahnSeries.single_eq_zero {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [Zero R] {a : Γ} :
        theorem HahnSeries.single_ne_zero {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [Zero R] {a : Γ} {r : R} (h : r 0) :
        @[simp]
        theorem HahnSeries.single_eq_zero_iff {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [Zero R] {a : Γ} {r : R} :
        (HahnSeries.single a) r = 0 r = 0
        Equations
        def HahnSeries.order {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [Zero R] [Zero Γ] (x : HahnSeries Γ R) :
        Γ

        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
        Instances For
          @[simp]
          theorem HahnSeries.order_zero {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [Zero R] [Zero Γ] :
          theorem HahnSeries.coeff_order_ne_zero {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [Zero R] [Zero Γ] {x : HahnSeries Γ R} (hx : x 0) :
          x.coeff (HahnSeries.order x) 0
          theorem HahnSeries.order_le_of_coeff_ne_zero {R : Type u_2} [Zero R] {Γ : Type u_3} [LinearOrderedCancelAddCommMonoid Γ] {x : HahnSeries Γ R} {g : Γ} (h : x.coeff g 0) :
          @[simp]
          theorem HahnSeries.order_single {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [Zero R] {a : Γ} {r : R} [Zero Γ] (h : r 0) :
          theorem HahnSeries.coeff_eq_zero_of_lt_order {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [Zero R] [Zero Γ] {x : HahnSeries Γ R} {i : Γ} (hi : i < HahnSeries.order x) :
          x.coeff i = 0
          def HahnSeries.embDomain {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [Zero R] {Γ' : Type u_3} [PartialOrder Γ'] (f : Γ ↪o Γ') :
          HahnSeries Γ RHahnSeries Γ' R

          Extends the domain of a HahnSeries by an OrderEmbedding.

          Equations
          • One or more equations did not get rendered due to their size.
          Instances For
            @[simp]
            theorem HahnSeries.embDomain_coeff {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [Zero R] {Γ' : Type u_3} [PartialOrder Γ'] {f : Γ ↪o Γ'} {x : HahnSeries Γ R} {a : Γ} :
            (HahnSeries.embDomain f x).coeff (f a) = x.coeff a
            @[simp]
            theorem HahnSeries.embDomain_mk_coeff {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [Zero R] {Γ' : Type u_3} [PartialOrder Γ'] {f : ΓΓ'} (hfi : Function.Injective f) (hf : ∀ (g g' : Γ), f g f g' g g') {x : HahnSeries Γ R} {a : Γ} :
            (HahnSeries.embDomain { toEmbedding := { toFun := f, inj' := hfi }, map_rel_iff' := (_ : ∀ {a b : Γ}, f a f b a b) } x).coeff (f a) = x.coeff a
            theorem HahnSeries.embDomain_notin_image_support {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [Zero R] {Γ' : Type u_3} [PartialOrder Γ'] {f : Γ ↪o Γ'} {x : HahnSeries Γ R} {b : Γ'} (hb : bf '' HahnSeries.support x) :
            (HahnSeries.embDomain f x).coeff b = 0
            theorem HahnSeries.support_embDomain_subset {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [Zero R] {Γ' : Type u_3} [PartialOrder Γ'] {f : Γ ↪o Γ'} {x : HahnSeries Γ R} :
            theorem HahnSeries.embDomain_notin_range {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [Zero R] {Γ' : Type u_3} [PartialOrder Γ'] {f : Γ ↪o Γ'} {x : HahnSeries Γ R} {b : Γ'} (hb : bSet.range f) :
            (HahnSeries.embDomain f x).coeff b = 0
            @[simp]
            theorem HahnSeries.embDomain_zero {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [Zero R] {Γ' : Type u_3} [PartialOrder Γ'] {f : Γ ↪o Γ'} :
            @[simp]
            theorem HahnSeries.embDomain_single {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [Zero R] {Γ' : Type u_3} [PartialOrder Γ'] {f : Γ ↪o Γ'} {g : Γ} {r : R} :
            theorem HahnSeries.embDomain_injective {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [Zero R] {Γ' : Type u_3} [PartialOrder Γ'] {f : Γ ↪o Γ'} :
            instance HahnSeries.instAddHahnSeriesToZero {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [AddMonoid R] :
            Equations
            Equations
            @[simp]
            theorem HahnSeries.add_coeff' {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [AddMonoid R] {x : HahnSeries Γ R} {y : HahnSeries Γ R} :
            (x + y).coeff = x.coeff + y.coeff
            theorem HahnSeries.add_coeff {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [AddMonoid R] {x : HahnSeries Γ R} {y : HahnSeries Γ R} {a : Γ} :
            (x + y).coeff a = x.coeff a + y.coeff a
            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) :
            @[simp]
            theorem HahnSeries.single.addMonoidHom_apply_coeff {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [AddMonoid R] (a : Γ) (r : R) (j : Γ) :
            def HahnSeries.single.addMonoidHom {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [AddMonoid R] (a : Γ) :

            single as an additive monoid/group homomorphism

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              @[simp]
              theorem HahnSeries.coeff.addMonoidHom_apply {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [AddMonoid R] (g : Γ) (f : HahnSeries Γ R) :
              def HahnSeries.coeff.addMonoidHom {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [AddMonoid R] (g : Γ) :

              coeff g as an additive monoid/group homomorphism

              Equations
              • One or more equations did not get rendered due to their size.
              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) :
                Equations
                Equations
                • One or more equations did not get rendered due to their size.
                @[simp]
                theorem HahnSeries.neg_coeff' {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [AddGroup R] {x : HahnSeries Γ R} :
                (-x).coeff = -x.coeff
                theorem HahnSeries.neg_coeff {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [AddGroup R] {x : HahnSeries Γ R} {a : Γ} :
                (-x).coeff a = -x.coeff a
                @[simp]
                @[simp]
                theorem HahnSeries.sub_coeff' {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [AddGroup R] {x : HahnSeries Γ R} {y : HahnSeries Γ R} :
                (x - y).coeff = x.coeff - y.coeff
                theorem HahnSeries.sub_coeff {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [AddGroup R] {x : HahnSeries Γ R} {y : HahnSeries Γ R} {a : Γ} :
                (x - y).coeff a = x.coeff a - y.coeff a
                @[simp]
                theorem HahnSeries.order_neg {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [AddGroup R] [Zero Γ] {f : HahnSeries Γ R} :
                Equations
                • One or more equations did not get rendered due to their size.
                instance HahnSeries.instSMulHahnSeriesToZero {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] {V : Type u_3} [Monoid R] [AddMonoid V] [DistribMulAction R V] :
                SMul R (HahnSeries Γ V)
                Equations
                @[simp]
                theorem HahnSeries.smul_coeff {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] {V : Type u_3} [Monoid R] [AddMonoid V] [DistribMulAction R V] {r : R} {x : HahnSeries Γ V} {a : Γ} :
                (r x).coeff a = r x.coeff a
                Equations
                • One or more equations did not get rendered due to their size.
                theorem HahnSeries.order_smul_not_lt {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] {V : Type u_3} [Monoid R] [AddMonoid V] [DistribMulAction 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} [Monoid R] [AddMonoid V] [DistribMulAction R V] {Γ : Type u_4} [Zero Γ] [LinearOrder Γ] (r : R) (x : HahnSeries Γ V) (h : r x 0) :
                Equations
                • One or more equations did not get rendered due to their size.
                @[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 : Γ) :

                single as a linear map

                Equations
                • One or more equations did not get rendered due to their size.
                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 : Γ) :
                  def HahnSeries.coeff.linearMap {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [Semiring R] {V : Type u_3} [AddCommMonoid V] [Module R V] (g : Γ) :

                  coeff g as a linear map

                  Equations
                  • One or more equations did not get rendered due to their size.
                  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) :
                    @[simp]
                    theorem HahnSeries.embDomainLinearMap_apply {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [Semiring R] {Γ' : Type u_4} [PartialOrder Γ'] (f : Γ ↪o Γ') :
                    def HahnSeries.embDomainLinearMap {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [Semiring R] {Γ' : Type u_4} [PartialOrder Γ'] (f : Γ ↪o Γ') :

                    Extending the domain of Hahn series is a linear map.

                    Equations
                    • One or more equations did not get rendered due to their size.
                    Instances For
                      Equations
                      • HahnSeries.instOneHahnSeriesToPartialOrderToOrderedAddCommMonoid = { one := (HahnSeries.single 0) 1 }
                      @[simp]
                      theorem HahnSeries.one_coeff {Γ : Type u_1} {R : Type u_2} [OrderedCancelAddCommMonoid Γ] [Zero R] [One R] {a : Γ} :
                      1.coeff a = if a = 0 then 1 else 0
                      @[simp]
                      theorem HahnSeries.single_zero_one {R : Type u_2} [Zero R] [One R] :
                      Equations
                      • One or more equations did not get rendered due to their size.
                      theorem HahnSeries.mul_coeff {Γ : Type u_1} {R : Type u_2} [OrderedCancelAddCommMonoid Γ] [NonUnitalNonAssocSemiring R] {x : HahnSeries Γ R} {y : HahnSeries Γ R} {a : Γ} :
                      (x * y).coeff a = Finset.sum (Finset.addAntidiagonal (_ : Set.IsPWO (HahnSeries.support x)) (_ : Set.IsPWO (HahnSeries.support y)) a) fun (ij : Γ × Γ) => x.coeff ij.1 * y.coeff ij.2
                      theorem HahnSeries.mul_coeff_right' {Γ : Type u_1} {R : Type u_2} [OrderedCancelAddCommMonoid Γ] [NonUnitalNonAssocSemiring R] {x : HahnSeries Γ R} {y : HahnSeries Γ R} {a : Γ} {s : Set Γ} (hs : Set.IsPWO s) (hys : HahnSeries.support y s) :
                      (x * y).coeff a = Finset.sum (Finset.addAntidiagonal (_ : Set.IsPWO (HahnSeries.support x)) hs a) fun (ij : Γ × Γ) => x.coeff ij.1 * y.coeff ij.2
                      theorem HahnSeries.mul_coeff_left' {Γ : Type u_1} {R : Type u_2} [OrderedCancelAddCommMonoid Γ] [NonUnitalNonAssocSemiring R] {x : HahnSeries Γ R} {y : HahnSeries Γ R} {a : Γ} {s : Set Γ} (hs : Set.IsPWO s) (hxs : HahnSeries.support x s) :
                      (x * y).coeff a = Finset.sum (Finset.addAntidiagonal hs (_ : Set.IsPWO (HahnSeries.support y)) a) fun (ij : Γ × Γ) => x.coeff ij.1 * y.coeff ij.2
                      Equations
                      • One or more equations did not get rendered due to their size.
                      theorem HahnSeries.single_mul_coeff_add {Γ : Type u_1} {R : Type u_2} [OrderedCancelAddCommMonoid Γ] [NonUnitalNonAssocSemiring R] {r : R} {x : HahnSeries Γ R} {a : Γ} {b : Γ} :
                      ((HahnSeries.single b) r * x).coeff (a + b) = r * x.coeff a
                      theorem HahnSeries.mul_single_coeff_add {Γ : Type u_1} {R : Type u_2} [OrderedCancelAddCommMonoid Γ] [NonUnitalNonAssocSemiring R] {r : R} {x : HahnSeries Γ R} {a : Γ} {b : Γ} :
                      (x * (HahnSeries.single b) r).coeff (a + b) = x.coeff a * r
                      @[simp]
                      theorem HahnSeries.mul_single_zero_coeff {Γ : Type u_1} {R : Type u_2} [OrderedCancelAddCommMonoid Γ] [NonUnitalNonAssocSemiring R] {r : R} {x : HahnSeries Γ R} {a : Γ} :
                      (x * (HahnSeries.single 0) r).coeff a = x.coeff a * r
                      theorem HahnSeries.single_zero_mul_coeff {Γ : Type u_1} {R : Type u_2} [OrderedCancelAddCommMonoid Γ] [NonUnitalNonAssocSemiring R] {r : R} {x : HahnSeries Γ R} {a : Γ} :
                      ((HahnSeries.single 0) r * x).coeff a = r * x.coeff a
                      @[simp]
                      theorem HahnSeries.single_zero_mul_eq_smul {Γ : Type u_1} {R : Type u_2} [OrderedCancelAddCommMonoid Γ] [Semiring R] {r : R} {x : HahnSeries Γ R} :
                      (HahnSeries.single 0) r * x = r x
                      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
                      • 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
                      • One or more equations did not get rendered due to their size.
                      @[simp]
                      theorem HahnSeries.single_mul_single {Γ : Type u_1} {R : Type u_2} [OrderedCancelAddCommMonoid Γ] [NonUnitalNonAssocSemiring R] {a : Γ} {b : Γ} {r : R} {s : R} :
                      @[simp]
                      theorem HahnSeries.C_apply {Γ : Type u_1} {R : Type u_2} [OrderedCancelAddCommMonoid Γ] [NonAssocSemiring R] (a : R) :
                      HahnSeries.C a = (HahnSeries.single 0) a

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

                      Equations
                      • One or more equations did not get rendered due to their size.
                      Instances For
                        theorem HahnSeries.C_zero {Γ : Type u_1} {R : Type u_2} [OrderedCancelAddCommMonoid Γ] [NonAssocSemiring R] :
                        HahnSeries.C 0 = 0
                        theorem HahnSeries.C_one {Γ : Type u_1} {R : Type u_2} [OrderedCancelAddCommMonoid Γ] [NonAssocSemiring R] :
                        HahnSeries.C 1 = 1
                        theorem HahnSeries.C_ne_zero {Γ : Type u_1} {R : Type u_2} [OrderedCancelAddCommMonoid Γ] [NonAssocSemiring R] {r : R} (h : r 0) :
                        HahnSeries.C r 0
                        theorem HahnSeries.order_C {Γ : Type u_1} {R : Type u_2} [OrderedCancelAddCommMonoid Γ] [NonAssocSemiring R] {r : R} :
                        HahnSeries.order (HahnSeries.C r) = 0
                        theorem HahnSeries.C_mul_eq_smul {Γ : Type u_1} {R : Type u_2} [OrderedCancelAddCommMonoid Γ] [Semiring R] {r : R} {x : HahnSeries Γ R} :
                        HahnSeries.C r * x = r x
                        theorem HahnSeries.embDomain_mul {Γ : Type u_1} {R : Type u_2} [OrderedCancelAddCommMonoid Γ] {Γ' : Type u_3} [OrderedCancelAddCommMonoid Γ'] [NonUnitalNonAssocSemiring R] (f : Γ ↪o Γ') (hf : ∀ (x y : Γ), f (x + y) = f x + f y) (x : HahnSeries Γ R) (y : HahnSeries Γ R) :
                        theorem HahnSeries.embDomain_one {Γ : Type u_1} {R : Type u_2} [OrderedCancelAddCommMonoid Γ] {Γ' : Type u_3} [OrderedCancelAddCommMonoid Γ'] [NonAssocSemiring R] (f : Γ ↪o Γ') (hf : f 0 = 0) :
                        @[simp]
                        theorem HahnSeries.embDomainRingHom_apply {Γ : Type u_1} {R : Type u_2} [OrderedCancelAddCommMonoid Γ] {Γ' : Type u_3} [OrderedCancelAddCommMonoid Γ'] [NonAssocSemiring R] (f : Γ →+ Γ') (hfi : Function.Injective f) (hf : ∀ (g g' : Γ), f g f g' g g') :
                        ∀ (a : HahnSeries Γ R), (HahnSeries.embDomainRingHom f hfi hf) a = HahnSeries.embDomain { toEmbedding := { toFun := f, inj' := hfi }, map_rel_iff' := (_ : ∀ {a b : Γ}, f a f b a b) } a
                        def HahnSeries.embDomainRingHom {Γ : Type u_1} {R : Type u_2} [OrderedCancelAddCommMonoid Γ] {Γ' : Type u_3} [OrderedCancelAddCommMonoid Γ'] [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
                        • One or more equations did not get rendered due to their size.
                        Instances For
                          theorem HahnSeries.embDomainRingHom_C {Γ : Type u_1} {R : Type u_2} [OrderedCancelAddCommMonoid Γ] {Γ' : Type u_3} [OrderedCancelAddCommMonoid Γ'] [NonAssocSemiring R] {f : Γ →+ Γ'} {hfi : Function.Injective f} {hf : ∀ (g g' : Γ), f g f g' g g'} {r : R} :
                          (HahnSeries.embDomainRingHom f hfi hf) (HahnSeries.C r) = HahnSeries.C r
                          theorem HahnSeries.C_eq_algebraMap {Γ : Type u_1} {R : Type u_2} [OrderedCancelAddCommMonoid Γ] [CommSemiring R] :
                          HahnSeries.C = algebraMap R (HahnSeries Γ R)
                          theorem HahnSeries.algebraMap_apply {Γ : Type u_1} {R : Type u_2} [OrderedCancelAddCommMonoid Γ] [CommSemiring R] {A : Type u_3} [Semiring A] [Algebra R A] {r : R} :
                          (algebraMap R (HahnSeries Γ A)) r = HahnSeries.C ((algebraMap R A) r)
                          @[simp]
                          theorem HahnSeries.embDomainAlgHom_apply_coeff {Γ : Type u_1} {R : Type u_2} [OrderedCancelAddCommMonoid Γ] [CommSemiring R] {A : Type u_3} [Semiring A] [Algebra R A] {Γ' : Type u_4} [OrderedCancelAddCommMonoid Γ'] (f : Γ →+ Γ') (hfi : Function.Injective f) (hf : ∀ (g g' : Γ), f g f g' g g') :
                          ∀ (a : HahnSeries Γ A) (b : Γ'), ((HahnSeries.embDomainAlgHom f hfi hf) a).coeff b = if h : ∃ (x : Γ), ¬a.coeff x = 0 f x = b then a.coeff (Classical.choose (_ : ∃ (x : Γ), (fun (x : Γ) => ¬a.coeff x = 0 f x = b) x)) else 0
                          def HahnSeries.embDomainAlgHom {Γ : Type u_1} {R : Type u_2} [OrderedCancelAddCommMonoid Γ] [CommSemiring R] {A : Type u_3} [Semiring A] [Algebra R A] {Γ' : Type u_4} [OrderedCancelAddCommMonoid Γ'] (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
                          • One or more equations did not get rendered due to their size.
                          Instances For
                            @[simp]
                            theorem HahnSeries.toPowerSeries_symm_apply_coeff {R : Type u_2} [Semiring R] (f : PowerSeries R) (n : ) :
                            ((RingEquiv.symm HahnSeries.toPowerSeries) f).coeff n = (PowerSeries.coeff R n) f
                            @[simp]
                            theorem HahnSeries.toPowerSeries_apply {R : Type u_2} [Semiring R] (f : HahnSeries R) :
                            HahnSeries.toPowerSeries f = PowerSeries.mk f.coeff

                            The ring HahnSeries ℕ R is isomorphic to PowerSeries R.

                            Equations
                            • One or more equations did not get rendered due to their size.
                            Instances For
                              theorem HahnSeries.coeff_toPowerSeries {R : Type u_2} [Semiring R] {f : HahnSeries R} {n : } :
                              (PowerSeries.coeff R n) (HahnSeries.toPowerSeries f) = f.coeff n
                              theorem HahnSeries.coeff_toPowerSeries_symm {R : Type u_2} [Semiring R] {f : PowerSeries R} {n : } :
                              ((RingEquiv.symm HahnSeries.toPowerSeries) f).coeff n = (PowerSeries.coeff R n) f

                              Casts a power series as a Hahn series with coefficients from a StrictOrderedSemiring.

                              Equations
                              • One or more equations did not get rendered due to their size.
                              Instances For
                                theorem HahnSeries.ofPowerSeries_apply {Γ : Type u_1} {R : Type u_2} [Semiring R] [StrictOrderedSemiring Γ] (x : PowerSeries R) :
                                (HahnSeries.ofPowerSeries Γ R) x = HahnSeries.embDomain { toEmbedding := { toFun := Nat.cast, inj' := (_ : Function.Injective Nat.cast) }, map_rel_iff' := (_ : ∀ {a b : }, { toFun := Nat.cast, inj' := (_ : Function.Injective Nat.cast) } a { toFun := Nat.cast, inj' := (_ : Function.Injective Nat.cast) } b a b) } ((RingEquiv.symm HahnSeries.toPowerSeries) x)
                                theorem HahnSeries.ofPowerSeries_apply_coeff {Γ : Type u_1} {R : Type u_2} [Semiring R] [StrictOrderedSemiring Γ] (x : PowerSeries R) (n : ) :
                                ((HahnSeries.ofPowerSeries Γ R) x).coeff n = (PowerSeries.coeff R n) x
                                @[simp]
                                theorem HahnSeries.ofPowerSeries_C {Γ : Type u_1} {R : Type u_2} [Semiring R] [StrictOrderedSemiring Γ] (r : R) :
                                (HahnSeries.ofPowerSeries Γ R) ((PowerSeries.C R) r) = HahnSeries.C r
                                @[simp]
                                theorem HahnSeries.ofPowerSeries_X {Γ : Type u_1} {R : Type u_2} [Semiring R] [StrictOrderedSemiring Γ] :
                                (HahnSeries.ofPowerSeries Γ R) PowerSeries.X = (HahnSeries.single 1) 1
                                @[simp]
                                theorem HahnSeries.ofPowerSeries_X_pow {Γ : Type u_1} [StrictOrderedSemiring Γ] {R : Type u_3} [CommSemiring R] (n : ) :
                                (HahnSeries.ofPowerSeries Γ R) (PowerSeries.X ^ n) = (HahnSeries.single n) 1
                                @[simp]
                                theorem HahnSeries.toMvPowerSeries_symm_apply_coeff {R : Type u_2} [Semiring R] {σ : Type u_3} [Fintype σ] (f : MvPowerSeries σ R) :
                                ((RingEquiv.symm HahnSeries.toMvPowerSeries) f).coeff = f
                                @[simp]
                                theorem HahnSeries.toMvPowerSeries_apply {R : Type u_2} [Semiring R] {σ : Type u_3} [Fintype σ] (f : HahnSeries (σ →₀ ) R) :
                                ∀ (a : σ →₀ ), HahnSeries.toMvPowerSeries f a = f.coeff a

                                The ring HahnSeries (σ →₀ ℕ) R is isomorphic to MvPowerSeries σ 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 MvPowerSeries. After importing Algebra.Order.Pi the ring HahnSeries (σ → ℕ) R could be constructed instead.

                                Equations
                                • One or more equations did not get rendered due to their size.
                                Instances For
                                  theorem HahnSeries.coeff_toMvPowerSeries {R : Type u_2} [Semiring R] {σ : Type u_3} [Fintype σ] {f : HahnSeries (σ →₀ ) R} {n : σ →₀ } :
                                  (MvPowerSeries.coeff R n) (HahnSeries.toMvPowerSeries f) = f.coeff n
                                  theorem HahnSeries.coeff_toMvPowerSeries_symm {R : Type u_2} [Semiring R] {σ : Type u_3} [Fintype σ] {f : MvPowerSeries σ R} {n : σ →₀ } :
                                  ((RingEquiv.symm HahnSeries.toMvPowerSeries) f).coeff n = (MvPowerSeries.coeff R n) f

                                  The R-algebra HahnSeries ℕ A is isomorphic to PowerSeries A.

                                  Equations
                                  • One or more equations did not get rendered due to their size.
                                  Instances For
                                    @[simp]
                                    theorem HahnSeries.ofPowerSeriesAlg_apply_coeff (Γ : Type u_1) (R : Type u_2) [CommSemiring R] {A : Type u_3} [Semiring A] [Algebra R A] [StrictOrderedSemiring Γ] :
                                    ∀ (a : PowerSeries A) (b : Γ), ((HahnSeries.ofPowerSeriesAlg Γ R) a).coeff b = if h : ∃ (x : ), ¬(PowerSeries.coeff A x) a = 0 x = b then (PowerSeries.coeff A (Classical.choose (_ : ∃ (x : ), (fun (x : ) => ¬(PowerSeries.coeff A x) a = 0 x = b) x))) a else 0

                                    Casting a power series as a Hahn series with coefficients from a StrictOrderedSemiring is an algebra homomorphism.

                                    Equations
                                    • One or more equations did not get rendered due to their size.
                                    Instances For

                                      The additive valuation on HahnSeries Γ R, returning the smallest index at which a Hahn Series has a nonzero coefficient, or for the 0 series.

                                      Equations
                                      • One or more equations did not get rendered due to their size.
                                      Instances For
                                        theorem HahnSeries.addVal_apply {Γ : Type u_1} {R : Type u_2} [LinearOrderedCancelAddCommMonoid Γ] [Ring R] [IsDomain R] {x : HahnSeries Γ R} :
                                        (HahnSeries.addVal Γ R) x = if x = 0 then else (HahnSeries.order x)
                                        @[simp]
                                        theorem HahnSeries.addVal_apply_of_ne {Γ : Type u_1} {R : Type u_2} [LinearOrderedCancelAddCommMonoid Γ] [Ring R] [IsDomain R] {x : HahnSeries Γ R} (hx : x 0) :
                                        theorem HahnSeries.addVal_le_of_coeff_ne_zero {Γ : Type u_1} {R : Type u_2} [LinearOrderedCancelAddCommMonoid Γ] [Ring R] [IsDomain R] {x : HahnSeries Γ R} {g : Γ} (h : x.coeff g 0) :
                                        (HahnSeries.addVal Γ R) x g
                                        structure HahnSeries.SummableFamily (Γ : Type u_1) (R : Type u_2) [PartialOrder Γ] [AddCommMonoid R] (α : Type u_3) :
                                        Type (max (max u_1 u_2) u_3)

                                        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
                                          Equations
                                          • One or more equations did not get rendered due to their size.
                                          theorem HahnSeries.SummableFamily.isPWO_iUnion_support {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [AddCommMonoid R] {α : Type u_3} (s : HahnSeries.SummableFamily Γ R α) :
                                          Set.IsPWO (⋃ (a : α), HahnSeries.support (s a))
                                          theorem HahnSeries.SummableFamily.finite_co_support {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [AddCommMonoid R] {α : Type u_3} (s : HahnSeries.SummableFamily Γ R α) (g : Γ) :
                                          Set.Finite (Function.support fun (a : α) => (s a).coeff g)
                                          theorem HahnSeries.SummableFamily.coe_injective {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [AddCommMonoid R] {α : Type u_3} :
                                          Function.Injective DFunLike.coe
                                          theorem HahnSeries.SummableFamily.ext {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [AddCommMonoid R] {α : Type u_3} {s : HahnSeries.SummableFamily Γ R α} {t : HahnSeries.SummableFamily Γ R α} (h : ∀ (a : α), s a = t a) :
                                          s = t
                                          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.SummableFamily.instInhabitedSummableFamily = { default := 0 }
                                          @[simp]
                                          theorem HahnSeries.SummableFamily.coe_add {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [AddCommMonoid R] {α : Type u_3} {s : HahnSeries.SummableFamily Γ R α} {t : HahnSeries.SummableFamily Γ R α} :
                                          (s + t) = s + t
                                          theorem HahnSeries.SummableFamily.add_apply {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [AddCommMonoid R] {α : Type u_3} {s : HahnSeries.SummableFamily Γ R α} {t : HahnSeries.SummableFamily Γ R α} {a : α} :
                                          (s + t) a = s a + t a
                                          @[simp]
                                          theorem HahnSeries.SummableFamily.coe_zero {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [AddCommMonoid R] {α : Type u_3} :
                                          0 = 0
                                          theorem HahnSeries.SummableFamily.zero_apply {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [AddCommMonoid R] {α : Type u_3} {a : α} :
                                          0 a = 0
                                          Equations
                                          def HahnSeries.SummableFamily.hsum {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [AddCommMonoid R] {α : Type u_3} (s : HahnSeries.SummableFamily Γ R α) :

                                          The infinite sum of a SummableFamily of Hahn series.

                                          Equations
                                          • One or more equations did not get rendered due to their size.
                                          Instances For
                                            @[simp]
                                            theorem HahnSeries.SummableFamily.hsum_coeff {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [AddCommMonoid R] {α : Type u_3} {s : HahnSeries.SummableFamily Γ R α} {g : Γ} :
                                            (HahnSeries.SummableFamily.hsum s).coeff g = finsum fun (i : α) => (s i).coeff g
                                            Equations
                                            • One or more equations did not get rendered due to their size.
                                            @[simp]
                                            theorem HahnSeries.SummableFamily.coe_neg {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [AddCommGroup R] {α : Type u_3} {s : HahnSeries.SummableFamily Γ R α} :
                                            (-s) = -s
                                            theorem HahnSeries.SummableFamily.neg_apply {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [AddCommGroup R] {α : Type u_3} {s : HahnSeries.SummableFamily Γ R α} {a : α} :
                                            (-s) a = -s a
                                            @[simp]
                                            theorem HahnSeries.SummableFamily.coe_sub {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [AddCommGroup R] {α : Type u_3} {s : HahnSeries.SummableFamily Γ R α} {t : HahnSeries.SummableFamily Γ R α} :
                                            (s - t) = s - t
                                            theorem HahnSeries.SummableFamily.sub_apply {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [AddCommGroup R] {α : Type u_3} {s : HahnSeries.SummableFamily Γ R α} {t : HahnSeries.SummableFamily Γ R α} {a : α} :
                                            (s - t) a = s a - t a
                                            @[simp]
                                            theorem HahnSeries.SummableFamily.smul_apply {Γ : Type u_1} {R : Type u_2} [OrderedCancelAddCommMonoid Γ] [Semiring R] {α : Type u_3} {x : HahnSeries Γ R} {s : HahnSeries.SummableFamily Γ R α} {a : α} :
                                            (x s) a = x * s a
                                            @[simp]
                                            theorem HahnSeries.SummableFamily.lsum_apply {Γ : Type u_1} {R : Type u_2} [OrderedCancelAddCommMonoid Γ] [Semiring R] {α : Type u_3} (s : HahnSeries.SummableFamily Γ R α) :
                                            HahnSeries.SummableFamily.lsum s = HahnSeries.SummableFamily.hsum s

                                            The summation of a summable_family as a LinearMap.

                                            Equations
                                            • One or more equations did not get rendered due to their size.
                                            Instances For
                                              def HahnSeries.SummableFamily.ofFinsupp {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [AddCommMonoid R] {α : Type u_3} (f : α →₀ HahnSeries Γ R) :

                                              A family with only finitely many nonzero elements is summable.

                                              Equations
                                              • One or more equations did not get rendered due to their size.
                                              Instances For
                                                @[simp]
                                                def HahnSeries.SummableFamily.embDomain {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [AddCommMonoid R] {α : Type u_3} {β : Type u_4} (s : HahnSeries.SummableFamily Γ R α) (f : α β) :

                                                A summable family can be reindexed by an embedding without changing its sum.

                                                Equations
                                                • One or more equations did not get rendered due to their size.
                                                Instances For
                                                  theorem HahnSeries.SummableFamily.embDomain_apply {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [AddCommMonoid R] {α : Type u_3} {β : Type u_4} (s : HahnSeries.SummableFamily Γ R α) (f : α β) {b : β} :
                                                  (HahnSeries.SummableFamily.embDomain s f) b = if h : b Set.range f then s (Classical.choose h) else 0
                                                  @[simp]
                                                  theorem HahnSeries.SummableFamily.embDomain_image {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [AddCommMonoid R] {α : Type u_3} {β : Type u_4} (s : HahnSeries.SummableFamily Γ R α) (f : α β) {a : α} :
                                                  @[simp]
                                                  theorem HahnSeries.SummableFamily.embDomain_notin_range {Γ : Type u_1} {R : Type u_2} [PartialOrder Γ] [AddCommMonoid R] {α : Type u_3} {β : Type u_4} (s : HahnSeries.SummableFamily Γ R α) (f : α β) {b : β} (h : bSet.range f) :

                                                  The powers of an element of positive valuation form a summable family.

                                                  Equations
                                                  • One or more equations did not get rendered due to their size.
                                                  Instances For
                                                    theorem HahnSeries.unit_aux {Γ : Type u_1} {R : Type u_2} [LinearOrderedAddCommGroup Γ] [CommRing R] [IsDomain R] (x : HahnSeries Γ R) {r : R} (hr : r * x.coeff (HahnSeries.order x) = 1) :
                                                    0 < (HahnSeries.addVal Γ R) (1 - HahnSeries.C r * (HahnSeries.single (-HahnSeries.order x)) 1 * x)
                                                    theorem HahnSeries.isUnit_iff {Γ : Type u_1} {R : Type u_2} [LinearOrderedAddCommGroup Γ] [CommRing R] [IsDomain R] {x : HahnSeries Γ R} :
                                                    Equations
                                                    • One or more equations did not get rendered due to their size.