Documentation

Atlas.EllipticCurves.code.Uniformization

theorem ComplexLattice.discr_ne_zero_of_three_distinct_roots {g₂ g₃ e₁ e₂ e₃ : } (h1 : 4 * e₁ ^ 3 - g₂ * e₁ - g₃ = 0) (h2 : 4 * e₂ ^ 3 - g₂ * e₂ - g₃ = 0) (h3 : 4 * e₃ ^ 3 - g₂ * e₃ - g₃ = 0) (h12 : e₁ e₂) (h13 : e₁ e₃) (h23 : e₂ e₃) :
g₂ ^ 3 - 27 * g₃ ^ 2 0

Algebraic discriminant criterion: if the cubic 4x^3 - g₂ x - g₃ has three distinct roots e₁, e₂, e₃, then the discriminant g₂^3 - 27 g₃^2 of the corresponding elliptic curve is nonzero.

The half-sum (ω₁ + ω₂)/2 of the two fundamental periods does not lie in the lattice L.

The derivative of the Weierstrass ℘-function vanishes at the half period ω₁ / 2.

The derivative of the Weierstrass ℘-function vanishes at the half period ω₂ / 2.

The derivative of the Weierstrass ℘-function vanishes at the half period (ω₁ + ω₂) / 2.

The value e₁ = ℘(ω₁/2) is a root of the cubic 4x³ - g₂ x - g₃ = 0 associated to the lattice L.

The value e₂ = ℘(ω₂/2) is a root of the cubic 4x³ - g₂ x - g₃ = 0 associated to the lattice L.

The value e₃ = ℘((ω₁+ω₂)/2) is a root of the cubic 4x³ - g₂ x - g₃ = 0 associated to the lattice L.

The point (ω₁ - ω₂)/2 does not lie in the lattice.

The difference ω₁/2 - (ω₁ + ω₂)/2 = -ω₂/2 of two half periods does not lie in the lattice.

The difference ω₂/2 - (ω₁ + ω₂)/2 = -ω₁/2 of two half periods does not lie in the lattice.

theorem ComplexLattice.ellipticOrder2_no_three_zeros (L : ComplexLattice) {f : } (hf : L.IsEllipticFunction f) (hord : L.ellipticOrder f hf = 2) (a b c : ) (ha : a(PeriodPair.lattice L)) (hb : b(PeriodPair.lattice L)) (hc : c(PeriodPair.lattice L)) (hab : a - b(PeriodPair.lattice L)) (hac : a - c(PeriodPair.lattice L)) (hbc : b - c(PeriodPair.lattice L)) (hfa : f a = 0) (hfb : f b = 0) (hfc : f c = 0) :

An elliptic function of order 2 cannot have three pairwise inequivalent zeros a, b, c (with all differences nonlattice). This is an axiomatic ingredient used to prove the half-period injectivity statements below.

theorem ComplexLattice.half_period_weierstrassP_injective (L : ComplexLattice) (z w : ) (hz : z(PeriodPair.lattice L)) (hw : w(PeriodPair.lattice L)) (h2z : 2 * z (PeriodPair.lattice L)) (h2w : 2 * w (PeriodPair.lattice L)) (heq : PeriodPair.weierstrassP L z = PeriodPair.weierstrassP L w) (h_diff : z - w(PeriodPair.lattice L)) :

Injectivity at half periods: if z and w are nonlattice with 2z, 2w ∈ L and ℘(z) = ℘(w), then z - w ∈ L. This is a key step in the cubic-root characterization of the half periods.

If ℘(z) = ℘(w) for nonlattice points z, w, then either z - w ∈ L or z + w ∈ L.

The values ℘(ω₁/2), ℘(ω₂/2) and ℘((ω₁+ω₂)/2) of the Weierstrass function at the three nontrivial half periods are pairwise distinct.

theorem ComplexLattice.cubic_root_of_three_distinct_roots {g₂ g₃ x e₁ e₂ e₃ : } (hx : 4 * x ^ 3 - g₂ * x - g₃ = 0) (h1 : 4 * e₁ ^ 3 - g₂ * e₁ - g₃ = 0) (h2 : 4 * e₂ ^ 3 - g₂ * e₂ - g₃ = 0) (h3 : 4 * e₃ ^ 3 - g₂ * e₃ - g₃ = 0) (h12 : e₁ e₂) (h13 : e₁ e₃) (h23 : e₂ e₃) :
x = e₁ x = e₂ x = e₃

A cubic 4x³ - g₂ x - g₃ whose three roots e₁, e₂, e₃ are distinct has no other roots: any root x must equal one of e₁, e₂, e₃.

If ℘(z) = ℘(w) for nonlattice z, w with 2w ∈ L, then z - w ∈ L. This combines weierstrassP_eq_implies_pm with the assumption that w is a half period.

If the derivative ℘'(z) vanishes at a nonlattice point z, then z is congruent modulo L to one of the three nontrivial half periods ω₁/2, ω₂/2, or (ω₁+ω₂)/2.

Characterization of the zeros of ℘': for z ∉ L, ℘'(z) = 0 if and only if 2z ∈ L, i.e. z is a (nontrivial) half period.

Same characterization as derivWeierstrassPFun_eq_zero_iff, but with membership phrased via L.toAddSubgroup.

The discriminant g₂(L)^3 - 27 g₃(L)^2 of any complex lattice is nonzero, since the three half-period values of are distinct roots of the associated cubic.

The short Weierstrass curve y² = x³ - (g₂/4) x - (g₃/4) associated to a lattice L, obtained from y² = 4x³ - g₂ x - g₃ by the standard substitution.

Instances For

    The j-invariant of a lattice equals the j-invariant (in the sense of short Weierstrass curves) of its associated curve y² = x³ - (g₂/4)x - (g₃/4).

    Two lattices L, L' are said to give isomorphic elliptic curves over ℂ if there is a Weierstrass variable change taking E_L to E_{L'}.

    Instances For

      If the elliptic curves associated to lattices L and L' are isomorphic over ℂ, then they have the same j-invariant.

      Converse to jInvariant_eq_of_ellipticCurveIsomorphic: lattices whose short Weierstrass curves share the same j-invariant give rise to isomorphic elliptic curves over ℂ. Splits into the j=0, j=1728, and generic cases.

      If the Eisenstein invariants of two lattices L, L' are related by g₂(L') = μ⁴ g₂(L) and g₃(L') = μ⁶ g₃(L) for some μ ≠ 0, then L and L' are homothetic.

      Two lattices with the same j-invariant (in the lattice sense) are homothetic. This is the harder direction of the homothety/j correspondence (Theorem 15.5 of the textbook).

      Corollary 15.6 of the textbook: two lattices L, L' are homothetic if and only if their associated elliptic curves E_L, E_{L'} are isomorphic over ℂ.

      The action of the modular generator T = [[1,1],[0,1]] on τ ∈ ℍ is addition by 1.

      The action of the modular generator S = [[0,-1],[1,0]] on τ ∈ ℍ is the negative inverse τ ↦ -1/τ.

      Invariance of the j-function under the generator S: j(-1/τ) = j(τ).

      Invariance of the j-function under the generator T: j(τ + 1) = j(τ).

      Invariance of j under the full modular group SL(2, ℤ): for any γ ∈ SL(2, ℤ) and τ ∈ ℍ, j(γτ) = j(τ).

      Symmetric form of jFunction_SL2_invariant: any γ-translate of τ has the same j as τ.

      theorem jFunction_eq_imp_SL2_equiv (τ τ' : UpperHalfPlane) (h : jFunction τ = jFunction τ') :
      ∃ (γ : Matrix.SpecialLinearGroup (Fin 2) ), τ' = γ τ

      One direction of Lemma 15.9: if j(τ) = j(τ'), then there exists γ ∈ SL(2, ℤ) with τ' = γ τ.

      Lemma 15.9 of the textbook: j(τ) = j(τ') if and only if τ' = γ τ for some γ ∈ SL(2, ℤ).

      The standard (closed) fundamental domain for the action of SL(2, ℤ) on the upper half plane, as defined in mathlib via ModularGroup.fd.

      Instances For

        Membership in the standard fundamental domain: τ ∈ fd iff |τ|² ≥ 1 and |Re τ| ≤ 1/2.

        The open standard fundamental domain fdo for the action of SL(2, ℤ) on .

        Instances For

          Membership in the open standard fundamental domain: τ ∈ fdo iff |τ|² > 1 and |Re τ| < 1/2.

          The open standard fundamental domain is contained in the closed one.

          Every τ ∈ ℍ is SL(2, ℤ)-equivalent to a point of the standard closed fundamental domain.

          If both τ and γ τ lie in the open standard fundamental domain, then τ = γ τ. (Uniqueness of the representative on the interior.)

          The textbook (half-open) fundamental domain of Lemma 15.10: {τ ∈ ℍ : -1/2 ≤ Re τ < 1/2, |τ| ≥ 1, and |τ| > 1 if Re τ > 0}.

          Instances For
            theorem mem_bookFundamentalDomain_iff (τ : UpperHalfPlane) :
            τ bookFundamentalDomain -1 / 2 τ.re τ.re < 1 / 2 1 Complex.normSq τ (0 < τ.re1 < Complex.normSq τ)

            Membership in the textbook fundamental domain unfolded as the conjunction of its four defining inequalities.

            The textbook fundamental domain is contained in the (closed) standard fundamental domain.

            The open standard fundamental domain is contained in the textbook fundamental domain.

            Effect of the S-action on the norm-square of τ: |S τ|² = 1 / |τ|².

            Effect of S on the real part: Re(S τ) = -Re τ / |τ|².

            If Re τ = 1/2, the translation by T⁻¹ preserves the norm-square: |T⁻¹ τ|² = |τ|².

            Existence statement for Lemma 15.10: every τ ∈ ℍ is SL(2, ℤ)-equivalent to a point of the textbook fundamental domain.

            If z and g z both lie in the standard fundamental domain, then the lower-left entry g 1 0 of g has absolute value at most one.

            theorem eq_of_mem_bookFD_c_one (τ : UpperHalfPlane) {γ : Matrix.SpecialLinearGroup (Fin 2) } ( : τ bookFundamentalDomain) (hγτ : γ τ bookFundamentalDomain) (hc : γ 1 0 = 1) :
            τ = γ τ

            Uniqueness step for Lemma 15.10 in the case c = γ 1 0 = 1: if τ and γ τ both lie in the textbook fundamental domain, then τ = γ τ.

            Uniqueness statement for Lemma 15.10: if τ and γ τ both lie in the textbook fundamental domain, then τ = γ τ.

            Lemma 15.10 of the textbook: every τ ∈ ℍ has a unique SL(2, ℤ)-translate lying in the textbook fundamental domain F.

            Axiomatic input for Theorem 15.11: the image of the j-function is open in ℂ. (Used together with closedness to show surjectivity onto ℂ.)

            Axiomatic input for Theorem 15.11: the image of the j-function is closed in ℂ. (Used together with openness to show surjectivity onto ℂ.)

            The image of the j-function is an open subset of ℂ.

            The image of the j-function is a closed subset of ℂ.

            The j-function ℍ → ℂ is surjective: every complex number is a value of j.

            Every value of j is attained at some point of the standard fundamental domain.

            j is injective on the open standard fundamental domain.

            Surjectivity of j restricted to the standard fundamental domain.

            Injectivity of j restricted to the open standard fundamental domain.

            Theorem 15.11 of the textbook: the restriction of the j-function to the textbook fundamental domain F is a bijection from F to ℂ.

            The short Weierstrass j-invariant of (A, B) = (-g₂/4, -g₃/4) agrees with the lattice j-invariant jInvariantLattice L.

            The discriminant 4 A³ + 27 B² of the elliptic curve associated to a lattice with A = -g₂/4 and B = -g₃/4 is nonzero.

            theorem short_weierstrass_iso_of_jInvariant_eq (A B A' B' : ) ( : 4 * A ^ 3 + 27 * B ^ 2 0) (hΔ' : 4 * A' ^ 3 + 27 * B' ^ 2 0) (hj : jInvariant A B = jInvariant A' B') :
            ∃ (C : WeierstrassCurve.VariableChange ), C { a₁ := 0, a₂ := 0, a₃ := 0, a₄ := A, a₆ := B } = { a₁ := 0, a₂ := 0, a₃ := 0, a₄ := A', a₆ := B' }

            Two short Weierstrass curves y² = x³ + A x + B and y² = x³ + A' x + B' with the same j-invariant are isomorphic via a Weierstrass variable change. Handles the j = 0, j = 1728, and generic cases separately.

            theorem uniformization_corollary (A B : ) ( : 4 * A ^ 3 + 27 * B ^ 2 0) :
            ∃ (L : ComplexLattice) (C : WeierstrassCurve.VariableChange ), C { a₁ := 0, a₂ := 0, a₃ := 0, a₄ := A, a₆ := B } = { a₁ := 0, a₂ := 0, a₃ := 0, a₄ := -(PeriodPair.g₂ L / 4), a₆ := -(PeriodPair.g₃ L / 4) }

            Uniformization up to isomorphism: every elliptic curve y² = x³ + A x + B over ℂ is isomorphic, via a Weierstrass variable change, to the curve y² = x³ - (g₂/4) x - (g₃/4) of some lattice L.

            def scaleLattice (c : ) (hc : c 0) (L : ComplexLattice) :

            The lattice obtained from L by scaling by a nonzero complex number c: its generators are c · ω₁ and c · ω₂.

            Instances For
              noncomputable def scaleLatticeEquiv (c : ) (hc : c 0) (L : ComplexLattice) :

              Equivalence between the scaled lattice scaleLattice c hc L and L, implemented as multiplication by c⁻¹/c.

              Instances For
                theorem scaleLatticeEquiv_coe (c : ) (hc : c 0) (L : ComplexLattice) (l : (PeriodPair.lattice (scaleLattice c hc L))) :
                ((scaleLatticeEquiv c hc L) l) = c⁻¹ * l

                The underlying value of scaleLatticeEquiv c hc L applied to a point l of the scaled lattice equals c⁻¹ · l.

                theorem scaleLatticeEquiv_symm_coe (c : ) (hc : c 0) (L : ComplexLattice) (l : (PeriodPair.lattice L)) :
                ((scaleLatticeEquiv c hc L).symm l) = c * l

                The underlying value of the inverse of scaleLatticeEquiv c hc L applied to l of L equals c · l.

                Scaling effect on g₂: g₂(cL) = c⁻⁴ · g₂(L).

                Scaling effect on g₃: g₃(cL) = c⁻⁶ · g₃(L).

                theorem uniformization_theorem (A B : ) ( : 4 * A ^ 3 + 27 * B ^ 2 0) :
                ∃ (L : ComplexLattice), { a₁ := 0, a₂ := 0, a₃ := 0, a₄ := A, a₆ := B } = L.ellipticCurveOfLattice

                Corollary 15.12 (Uniformization Theorem): for every elliptic curve y² = x³ + A x + B over ℂ there exists a lattice L such that the curve equals E_L on the nose.