Documentation

Mathlib.Analysis.SpecialFunctions.Elliptic.Weierstrass

Weierstrass ℘ functions #

Main definitions and results #

tags #

Weierstrass p-functions, Weierstrass p functions

structure PeriodPair :

A pair of ℝ-linearly independent complex numbers. They span the period lattice in lattice, and are the periods of the elliptic functions we shall construct.

Instances For
    noncomputable def PeriodPair.basis (L : PeriodPair) :

    The ℝ-basis of ℂ determined by a pair of periods.

    Equations
    Instances For
      @[simp]
      @[simp]
      noncomputable def PeriodPair.lattice (L : PeriodPair) :

      The lattice spanned by a pair of periods.

      Equations
      Instances For
        theorem PeriodPair.mem_lattice {L : PeriodPair} {x : ℂ} :
        x ∈ L.lattice ↔ ∃ (m : ℤ) (n : ℤ), ↑m * L.ω₁ + ↑n * L.ω₂ = x
        theorem PeriodPair.mul_ω₁_add_mul_ω₂_mem_lattice {L : PeriodPair} {α β : ℚ} :
        ↑α * L.ω₁ + ↑β * L.ω₂ ∈ L.lattice ↔ α.den = 1 ∧ β.den = 1
        noncomputable def PeriodPair.latticeBasis (L : PeriodPair) :

        The ℤ-basis of the lattice determined by a pair of periods.

        Equations
        Instances For

          The equivalence from the lattice generated by a pair of periods to ℤ × ℤ.

          Equations
          Instances For
            theorem PeriodPair.hasSumLocallyUniformly_aux (L : PeriodPair) (f : ↥L.lattice → ℂ → ℂ) (u : ℝ → ↥L.lattice → ℝ) (hu : ∀ r > 0, Summable (u r)) (hf : ∀ r > 0, ∀ᶠ (R : ℝ) in Filter.atTop, ∀ (x : ℂ), ‖x‖ < r → ∀ (l : ↥L.lattice), ‖↑l‖ = R → ‖f l x‖ ≤ u r l) :
            HasSumLocallyUniformly f fun (x : ℂ) => ∑' (j : ↥L.lattice), f j x
            theorem PeriodPair.weierstrassP_bound (r : ℝ) (hr : 0 < r) (s : ℂ) (hs : ‖s‖ < r) (l : ℂ) (h : 2 * r ≤ ‖l‖) :
            ‖1 / (s - l) ^ 2 - 1 / l ^ 2‖ ≤ 10 * r * ‖l‖ ^ (-3)
            noncomputable def PeriodPair.weierstrassPExcept (L : PeriodPair) (l₀ z : ℂ) :

            The Weierstrass ℘ function with the l₀-term missing. This is mainly a tool for calculations where one would want to omit a diverging term. This has the notation ℘[L - l₀] in the namespace PeriodPairs.

            Equations
            Instances For

              The Weierstrass ℘ function with the l₀-term missing. This is mainly a tool for calculations where one would want to omit a diverging term. This has the notation ℘[L - l₀] in the namespace PeriodPairs.

              Equations
              • One or more equations did not get rendered due to their size.
              Instances For
                theorem PeriodPair.hasSumLocallyUniformly_weierstrassPExcept (L : PeriodPair) (l₀ : ℂ) :
                HasSumLocallyUniformly (fun (l : ↥L.lattice) (z : ℂ) => if ↑l = l₀ then 0 else 1 / (z - ↑l) ^ 2 - 1 / ↑l ^ 2) (L.weierstrassPExcept l₀)
                theorem PeriodPair.hasSum_weierstrassPExcept (L : PeriodPair) (l₀ z : ℂ) :
                HasSum (fun (l : ↥L.lattice) => if ↑l = l₀ then 0 else 1 / (z - ↑l) ^ 2 - 1 / ↑l ^ 2) (L.weierstrassPExcept l₀ z)
                noncomputable def PeriodPair.weierstrassP (L : PeriodPair) (z : ℂ) :

                The Weierstrass ℘ function. This has the notation ℘[L] in the namespace PeriodPairs.

                Equations
                Instances For

                  The Weierstrass ℘ function. This has the notation ℘[L] in the namespace PeriodPairs.

                  Equations
                  • One or more equations did not get rendered due to their size.
                  Instances For
                    theorem PeriodPair.weierstrassPExcept_add (L : PeriodPair) (l₀ : ↥L.lattice) (z : ℂ) :
                    L.weierstrassPExcept (↑l₀) z + (1 / (z - ↑l₀) ^ 2 - 1 / ↑l₀ ^ 2) = L.weierstrassP z
                    theorem PeriodPair.weierstrassPExcept_def (L : PeriodPair) (l₀ : ↥L.lattice) (z : ℂ) :
                    L.weierstrassPExcept (↑l₀) z = L.weierstrassP z + (1 / ↑l₀ ^ 2 - 1 / (z - ↑l₀) ^ 2)
                    theorem PeriodPair.hasSumLocallyUniformly_weierstrassP (L : PeriodPair) :
                    HasSumLocallyUniformly (fun (l : ↥L.lattice) (z : ℂ) => 1 / (z - ↑l) ^ 2 - 1 / ↑l ^ 2) L.weierstrassP
                    theorem PeriodPair.hasSum_weierstrassP (L : PeriodPair) (z : ℂ) :
                    HasSum (fun (l : ↥L.lattice) => 1 / (z - ↑l) ^ 2 - 1 / ↑l ^ 2) (L.weierstrassP z)
                    noncomputable def PeriodPair.derivWeierstrassPExcept (L : PeriodPair) (l₀ z : ℂ) :

                    The derivative of Weierstrass ℘ function with the l₀-term missing. This is mainly a tool for calculations where one would want to omit a diverging term. This has the notation ℘'[L - l₀] in the namespace PeriodPairs.

                    Equations
                    Instances For

                      The derivative of Weierstrass ℘ function with the l₀-term missing. This is mainly a tool for calculations where one would want to omit a diverging term. This has the notation ℘'[L - l₀] in the namespace PeriodPairs.

                      Equations
                      • One or more equations did not get rendered due to their size.
                      Instances For
                        theorem PeriodPair.hasSumLocallyUniformly_derivWeierstrassPExcept (L : PeriodPair) (l₀ : ℂ) :
                        HasSumLocallyUniformly (fun (l : ↥L.lattice) (z : ℂ) => if ↑l = l₀ then 0 else -2 / (z - ↑l) ^ 3) (L.derivWeierstrassPExcept l₀)
                        theorem PeriodPair.hasSum_derivWeierstrassPExcept (L : PeriodPair) (l₀ z : ℂ) :
                        HasSum (fun (l : ↥L.lattice) => if ↑l = l₀ then 0 else -2 / (z - ↑l) ^ 3) (L.derivWeierstrassPExcept l₀ z)
                        @[simp]
                        theorem PeriodPair.weierstrassP_add_coe (L : PeriodPair) (z : ℂ) (l : ↥L.lattice) :
                        L.weierstrassP (z + ↑l) = L.weierstrassP z
                        @[simp]
                        theorem PeriodPair.weierstrassP_coe (L : PeriodPair) (l : ↥L.lattice) :
                        L.weierstrassP ↑l = 0
                        @[simp]
                        theorem PeriodPair.weierstrassP_sub_coe (L : PeriodPair) (z : ℂ) (l : ↥L.lattice) :
                        L.weierstrassP (z - ↑l) = L.weierstrassP z
                        noncomputable def PeriodPair.derivWeierstrassP (L : PeriodPair) (z : ℂ) :

                        The derivative of Weierstrass ℘ function. This has the notation ℘'[L] in the namespace PeriodPairs.

                        Equations
                        Instances For

                          The Weierstrass ℘ function. This has the notation ℘[L] in the namespace PeriodPairs.

                          Equations
                          • One or more equations did not get rendered due to their size.
                          Instances For
                            theorem PeriodPair.derivWeierstrassPExcept_sub (L : PeriodPair) (l₀ : ↥L.lattice) (z : ℂ) :
                            L.derivWeierstrassPExcept (↑l₀) z - 2 / (z - ↑l₀) ^ 3 = L.derivWeierstrassP z
                            theorem PeriodPair.derivWeierstrassPExcept_def (L : PeriodPair) (l₀ : ↥L.lattice) (z : ℂ) :
                            L.derivWeierstrassPExcept (↑l₀) z = L.derivWeierstrassP z + 2 / (z - ↑l₀) ^ 3
                            theorem PeriodPair.hasSum_derivWeierstrassP (L : PeriodPair) (z : ℂ) :
                            HasSum (fun (l : ↥L.lattice) => -2 / (z - ↑l) ^ 3) (L.derivWeierstrassP z)
                            @[simp]

                            deriv ℘ = ℘'. This is true globally because of junk values.

                            noncomputable def PeriodPair.sumInvPow (L : PeriodPair) (x : ℂ) (r : ℕ) :

                            The sum ∑ (l - x)⁻ʳ over l ∈ L. This converges when 2 < r, see hasSum_sumInvPow.

                            Equations
                            Instances For
                              theorem PeriodPair.hasSum_sumInvPow (L : PeriodPair) (x : ℂ) {r : ℕ} (hr : 2 < r) :
                              HasSum (fun (l : ↥L.lattice) => ((↑l - x) ^ r)⁻¹) (L.sumInvPow x r)
                              noncomputable def PeriodPair.weierstrassPExceptSummand (L : PeriodPair) (l₀ x : ℂ) (i : ℕ) (l : ↥L.lattice) :

                              In the power series expansion of ℘(z) = ∑ aᵢ (z - x)ⁱ at some x ∉ L, each aᵢ can be written as an infinite sum over l ∈ L. This is the summand of this infinite sum with the l₀-th term omitted. See PeriodPair.coeff_weierstrassPExceptSeries.

                              Equations
                              Instances For

                                The power series expansion of ℘[L - l₀] at x. See PeriodPair.hasFPowerSeriesOnBall_weierstrassPExcept.

                                Equations
                                • One or more equations did not get rendered due to their size.
                                Instances For
                                  theorem PeriodPair.summable_weierstrassPExceptSummand (L : PeriodPair) (l₀ z x : ℂ) (hx : ∀ (l : ↥L.lattice), ↑l ≠ l₀ → ‖z - x‖ < ‖↑l - x‖) :
                                  Summable (Function.uncurry fun (b : ℕ) (c : ↥L.lattice) => L.weierstrassPExceptSummand l₀ x b c * (z - x) ^ b)

                                  In the power series expansion of ℘(z) = ∑ᵢ aᵢ (z - x)ⁱ at some x ∉ L, each aᵢ can be writen as a sum over l ∈ L, i.e. aᵢ = ∑ₗ, (i + 1) * (l - x)⁻ⁱ⁻² for i ≠ 0 and a₀ = ∑ₗ, (l - x)⁻² - l⁻².

                                  We show that the double sum converges if z falls in a ball centered at x that doesn't touch L.

                                  theorem PeriodPair.weierstrassPExcept_eq_tsum (L : PeriodPair) (l₀ z x : ℂ) (hx : ∀ (l : ↥L.lattice), ↑l ≠ l₀ → ‖z - x‖ < ‖↑l - x‖) :
                                  L.weierstrassPExcept l₀ z = ∑' (i : ℕ), (L.weierstrassPExceptSeries l₀ x).coeff i * (z - x) ^ i
                                  theorem PeriodPair.weierstrassPExceptSeries_hasSum (L : PeriodPair) (l₀ z x : ℂ) (hx : ∀ (l : ↥L.lattice), ↑l ≠ l₀ → ‖z - x‖ < ‖↑l - x‖) :
                                  HasSum (fun (i : ℕ) => (L.weierstrassPExceptSeries l₀ x).coeff i * (z - x) ^ i) (L.weierstrassPExcept l₀ z)

                                  The power series expansion of ℘'[L - l₀] at x. See PeriodPair.hasFPowerSeriesOnBall_derivWeierstrassPExcept.

                                  Equations
                                  Instances For
                                    noncomputable def PeriodPair.weierstrassPSummand (L : PeriodPair) (x : ℂ) (i : ℕ) (l : ↥L.lattice) :

                                    In the power series expansion of ℘(z) = ∑ aᵢzⁱ at some x ∉ L, each aᵢ can be written as an infinite sum over l ∈ L. This is the summand of this infinite sum. See PeriodPair.coeff_weierstrassPSeries.

                                    Equations
                                    Instances For

                                      The power series expansion of ℘ at x. See PeriodPair.hasFPowerSeriesOnBall_weierstrassP.

                                      Equations
                                      Instances For
                                        theorem PeriodPair.summable_weierstrassPSummand (L : PeriodPair) (z x : ℂ) (hx : ∀ (l : ↥L.lattice), ‖z - x‖ < ‖↑l - x‖) :
                                        Summable (Function.uncurry fun (b : ℕ) (c : ↥L.lattice) => L.weierstrassPSummand x b c * (z - x) ^ b)
                                        theorem PeriodPair.weierstrassPSeries_hasSum (L : PeriodPair) (z x : ℂ) (hx : ∀ (l : ↥L.lattice), ‖z - x‖ < ‖↑l - x‖) :
                                        HasSum (fun (i : ℕ) => (L.weierstrassPSeries x).coeff i * (z - x) ^ i) (L.weierstrassP z)
                                        theorem PeriodPair.ite_eq_one_sub_sq_mul_weierstrassP (L : PeriodPair) (l₀ : ℂ) (hl₀ : l₀ ∈ L.lattice) (z : ℂ) :
                                        (if z = l₀ then 1 else (z - l₀) ^ 2 * L.weierstrassP z) = (z - l₀) ^ 2 * L.weierstrassPExcept l₀ z + 1 - (z - l₀) ^ 2 / l₀ ^ 2
                                        noncomputable def PeriodPair.G (L : PeriodPair) (n : ℕ) :

                                        The Eisenstein series as a function on lattices. It takes L to the sum ∑ l⁻ʳ over l ∈ L. TODO: Establish connections with the ModularForm library.

                                        Equations
                                        Instances For
                                          theorem PeriodPair.G_eq_zero_of_odd (L : PeriodPair) (n : ℕ) (hn : Odd n) :
                                          L.G n = 0
                                          noncomputable def PeriodPair.g₂ (L : PeriodPair) :

                                          The lattice invariant g₂ := 60 G₄.

                                          Equations
                                          Instances For
                                            noncomputable def PeriodPair.g₃ (L : PeriodPair) :

                                            The lattice invariant g₃ := 140 G₆.

                                            Equations
                                            Instances For
                                              theorem PeriodPair.derivWeierstrassP_sq (L : PeriodPair) (z : ℂ) (hz : z ∉ L.lattice) :

                                              ℘'(z)² = 4 ℘(z)³ - g₂ ℘(z) - g₃