Documentation

Mathlib.RingTheory.LaurentSeries

Laurent Series #

Main Definitions #

Main Results #

@[reducible, inline]
abbrev LaurentSeries (R : Type u) [Zero R] :

A LaurentSeries is implemented as a HahnSeries with value group ℤ.

Equations
Instances For
    @[simp]
    theorem LaurentSeries.hasseDeriv_apply (R : Type u_2) {V : Type u_3} [AddCommGroup V] [Semiring R] [Module R V] (k : ℕ) (f : LaurentSeries V) :
    (LaurentSeries.hasseDeriv R k) f = HahnSeries.ofSuppBddBelow (fun (n : ℤ) => Ring.choose (n + ↑k) k • f.coeff (n + ↑k)) ⋯

    The Hasse derivative of Laurent series, as a linear map.

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      theorem LaurentSeries.hasseDeriv_coeff {R : Type u_1} [Semiring R] {V : Type u_2} [AddCommGroup V] [Module R V] (k : ℕ) (f : LaurentSeries V) (n : ℤ) :
      ((LaurentSeries.hasseDeriv R k) f).coeff n = Ring.choose (n + ↑k) k • f.coeff (n + ↑k)
      Equations
      @[simp]
      theorem LaurentSeries.coeff_coe_powerSeries {R : Type u_1} [Semiring R] (x : PowerSeries R) (n : ℕ) :
      ((HahnSeries.ofPowerSeries ℤ R) x).coeff ↑n = (PowerSeries.coeff R n) x

      This is a power series that can be multiplied by an integer power of X to give our Laurent series. If the Laurent series is nonzero, powerSeriesPart has a nonzero constant term.

      Equations
      Instances For
        @[simp]
        theorem LaurentSeries.powerSeriesPart_coeff {R : Type u_1} [Semiring R] (x : LaurentSeries R) (n : ℕ) :
        (PowerSeries.coeff R n) x.powerSeriesPart = x.coeff (HahnSeries.order x + ↑n)
        @[simp]
        theorem LaurentSeries.powerSeriesPart_eq_zero {R : Type u_1} [Semiring R] (x : LaurentSeries R) :
        x.powerSeriesPart = 0 ↔ x = 0
        Equations

        The localization map from power series to Laurent series.

        Equations
        • ⋯ = ⋯
        theorem PowerSeries.coeff_coe {R : Type u_1} [Semiring R] (f : PowerSeries R) (i : ℤ) :
        ((HahnSeries.ofPowerSeries ℤ R) f).coeff i = if i < 0 then 0 else (PowerSeries.coeff R i.natAbs) f
        theorem PowerSeries.coe_C {R : Type u_1} [Semiring R] (r : R) :
        (HahnSeries.ofPowerSeries ℤ R) ((PowerSeries.C R) r) = HahnSeries.C r
        @[simp]
        theorem PowerSeries.coe_smul {R : Type u_1} [Semiring R] {S : Type u_3} [Semiring S] [Module R S] (r : R) (x : PowerSeries S) :

        The coercion RatFunc F → LaurentSeries F as bundled alg hom.

        Equations
        Instances For

          The coercion RatFunc F → LaurentSeries F as a function.

          This is the implementation of coeToLaurentSeries.

          Equations
          Instances For
            Equations
            • RatFunc.coeToLaurentSeries = { coe := RatFunc.coeToLaurentSeries_fun }
            theorem RatFunc.coe_def {F : Type u} [Field F] (f : RatFunc F) :
            ↑f = (RatFunc.coeAlgHom F) f
            theorem RatFunc.coe_num_denom {F : Type u} [Field F] (f : RatFunc F) :
            ↑f = (HahnSeries.ofPowerSeries ℤ F) ↑f.num / (HahnSeries.ofPowerSeries ℤ F) ↑f.denom
            theorem RatFunc.coe_injective {F : Type u} [Field F] :
            Function.Injective RatFunc.coeToLaurentSeries_fun
            @[simp]
            theorem RatFunc.coe_apply {F : Type u} [Field F] (f : RatFunc F) :
            (RatFunc.coeAlgHom F) f = ↑f
            theorem RatFunc.coe_coe {F : Type u} [Field F] (P : Polynomial F) :
            (HahnSeries.ofPowerSeries ℤ F) ↑P = ↑↑P
            @[simp]
            theorem RatFunc.coe_zero {F : Type u} [Field F] :
            ↑0 = 0
            theorem RatFunc.coe_ne_zero {F : Type u} [Field F] {f : Polynomial F} (hf : f ≠ 0) :
            ↑f ≠ 0
            @[simp]
            theorem RatFunc.coe_one {F : Type u} [Field F] :
            ↑1 = 1
            @[simp]
            theorem RatFunc.coe_add {F : Type u} [Field F] (f : RatFunc F) (g : RatFunc F) :
            ↑(f + g) = ↑f + ↑g
            @[simp]
            theorem RatFunc.coe_sub {F : Type u} [Field F] (f : RatFunc F) (g : RatFunc F) :
            ↑(f - g) = ↑f - ↑g
            @[simp]
            theorem RatFunc.coe_neg {F : Type u} [Field F] (f : RatFunc F) :
            ↑(-f) = -↑f
            @[simp]
            theorem RatFunc.coe_mul {F : Type u} [Field F] (f : RatFunc F) (g : RatFunc F) :
            ↑(f * g) = ↑f * ↑g
            @[simp]
            theorem RatFunc.coe_pow {F : Type u} [Field F] (f : RatFunc F) (n : ℕ) :
            ↑(f ^ n) = ↑f ^ n
            @[simp]
            theorem RatFunc.coe_div {F : Type u} [Field F] (f : RatFunc F) (g : RatFunc F) :
            ↑(f / g) = ↑f / ↑g
            @[simp]
            theorem RatFunc.coe_C {F : Type u} [Field F] (r : F) :
            ↑(RatFunc.C r) = HahnSeries.C r
            @[simp]
            theorem RatFunc.coe_smul {F : Type u} [Field F] (f : RatFunc F) (r : F) :
            ↑(r • f) = r • ↑f
            @[simp]
            theorem RatFunc.coe_X {F : Type u} [Field F] :
            ↑RatFunc.X = (HahnSeries.single 1) 1
            theorem RatFunc.single_one_eq_pow {R : Type u_2} [Ring R] (n : ℕ) :
            theorem RatFunc.single_inv {F : Type u} [Field F] (d : ℤ) {α : F} (hα : α ≠ 0) :
            Equations