/- Copyright 2025 The Formal Conjectures Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at https://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -/ import FormalConjecturesUtil

Some conjectures about ranks of elliptic curves over ℚ

References:

    [PPVW2016] Jennifer Park, Bjorn Poonen, John Voight, and Melanie Matchett Wood. A heuristic for boundedness of ranks of elliptic curves, https://ems.press/journals/jems/articles/16228

    [BS2013] Manjul Bhargava and Arul Shankar. The average size of the 5-Selmer group of elliptic curves is 6, and the average rank is less than 1, https://arxiv.org/pdf/1312.7859

    Wikipedia

namespace EllipticCurveRank open EllipticCurveRank

A data structure representing isomoprhism classes of elliptic curves over ℚ. Every elliptic curve over ℚ is isomorphic to one with Weierstrass equation y² = x³ + Ax + B, and the pair (A,B) is unique if it satisfy the reduced condition below. See Section 5.1 in [PPVW2016].

structure RatEllipticCurve : Type where A : B : reduced (p : ) : p.Prime ¬ ((p ^ 4 : ) A (p ^ 6 : ) B) Δ_ne_zero : 4 * A ^ 3 + 27 * B ^ 2 0 open scoped WeierstrassCurve.Affineopen Module (finrank)

The rank of an elliptic curve over a number field is always finite by the Mordell–Weil theorem. Consequently, the rank is always finite, so finrank ℤ E⟮K⟯ = 0 really means that the group of rational points is torsion, not that it is of infinite rank.

@[category research solved, AMS 11 14] declaration uses 'sorry'instance {K} [Field K] [NumberField K] [DecidableEq K] (E : WeierstrassCurve K) [E.IsElliptic] : Module.Finite EK := K:Type u_1inst✝³:Field Kinst✝²:NumberField Kinst✝¹:DecidableEq KE:WeierstrassCurve Kinst✝:E.IsEllipticModule.Finite EK All goals completed! 🐙 namespace RatEllipticCurve

Convert the structure RatEllipticCurve to a Weierstrass curve.

def toWeierstrass (E : RatEllipticCurve) : WeierstrassCurve := { a₁ := 0, a₂ := 0, a₃ := 0, a₄ := E.A, a₆ := E.B }

The rank of an elliptic curve over ℚ.

noncomputable abbrev rank (E : RatEllipticCurve) : := finrank E.toWeierstrass open WeierstrassCurve in instance (E : RatEllipticCurve) : E.toWeierstrass.IsElliptic where isUnit := isUnit_iff_ne_zero.mpr <| E:RatEllipticCurveE.toWeierstrass.Δ 0 convert mul_ne_zero (show (-16 : ) 0 E:RatEllipticCurveE.toWeierstrass.Δ 0 All goals completed! 🐙) (Int.cast_ne_zero.mpr E.Δ_ne_zero) simp_rw E:RatEllipticCurveE.toWeierstrass.Δ = -16 * (4 * E.A ^ 3 + 27 * E.B ^ 2)toWeierstrass, Δ, b₂, b₄, b₆, Int.cast_add, Int.cast_mul, Int.cast_pow] All goals completed! 🐙

The naïve height of an elliptic curve over ℚ.

def naiveHeight (E : RatEllipticCurve) : := max (4 * E.A.natAbs ^ 3) (27 * E.B.natAbs ^ 2)

The set of elliptic curves over ℚ with naïve height less than or equal to a given height.

def heightLE (H : ) : Set RatEllipticCurve := {E : RatEllipticCurve | E.naiveHeight H} open scoped Topologyopen Filter (atTop)

Formula (5.1.1) of [PPVW2016]: The number of elliptic curves over ℚ with naïve height at most H is asymptotically 2^(4/3)*3^(-3/2)/ζ(10) * H^(5/6).

@[category textbook, AMS 11 14] theorem declaration uses 'sorry'card_heightLE_div_pow_five_div_six_tensto : atTop.Tendsto (fun H (heightLE H).ncard / (H : ) ^ (5 / 6 : )) (𝓝 (2 ^ (4 / 3 : ) * 3 ^ (-3 / 2 : ) / (riemannZeta 10).re)) := Filter.Tendsto (fun H => (heightLE H).ncard / H ^ (5 / 6)) atTop (𝓝 (2 ^ (4 / 3) * 3 ^ (-3 / 2) / (riemannZeta 10).re)) All goals completed! 🐙

Conjecture by Goldfeld and Katz–Sarnak: if elliptic curves over ℚ are ordered by their heights, then 50% of the curves have rank 0 and 50% have rank 1. See p. 28 of https://people.maths.bris.ac.uk/~matyd/BSD2011/bsd2011-Bhargava.pdf.

@[category research open, AMS 11 14] theorem declaration uses 'sorry'half_rank_zero_and_half_rank_one (r : ) (hr : r = 0 r = 1) : atTop.Tendsto (fun H ({E heightLE H | E.rank = r}.ncard / (heightLE H).ncard : )) (𝓝 (1 / 2)) := r:hr:r = 0 r = 1Filter.Tendsto (fun H => {E | E heightLE H E.rank = r}.ncard / (heightLE H).ncard) atTop (𝓝 (1 / 2)) All goals completed! 🐙

Theorem 3 of [BS2013]: when elliptic curves over ℚ are ordered by height, their average rank is < .885.

@[category research solved, AMS 11 14] theorem declaration uses 'sorry'avg_rank_lt_0885 : atTop.limsup (fun H ((∑ᶠ E : heightLE H, E.1.rank) / (heightLE H).ncard : )) < 0.885 := Filter.limsup (fun H => (∑ᶠ (E : (heightLE H)), (↑E).rank) / (heightLE H).ncard) atTop < 0.885 All goals completed! 🐙

Theorem 4 of [BS2013]: when elliptic curves over ℚ are ordered by height, a density of at least 83.75% have rank 0 or 1.

@[category research solved, AMS 11 14] theorem declaration uses 'sorry'_08375_le_density_rank_zero_one : 0.8375 atTop.liminf fun H ({E heightLE H | E.rank = 0 E.rank = 1}.ncard / (heightLE H).ncard : ) := 0.8375 Filter.liminf (fun H => {E | E heightLE H (E.rank = 0 E.rank = 1)}.ncard / (heightLE H).ncard) atTop All goals completed! 🐙

Theorem 5 of [BS2013]: when elliptic curves over ℚ are ordered by height, a density of at least 20.62% have rank 0.

@[category research solved, AMS 11 14] theorem declaration uses 'sorry'_02062_le_density_rank_zero : 0.2062 atTop.liminf fun H ({E heightLE H | E.rank = 0}.ncard / (heightLE H).ncard : ) := 0.2062 Filter.liminf (fun H => {E | E heightLE H E.rank = 0}.ncard / (heightLE H).ncard) atTop All goals completed! 🐙

From [PPVW2016], Section 3.1: "from the mid-1960s to the present, it seems that most experts conjectured unboundedness."

@[category research open, AMS 11 14] theorem declaration uses 'sorry'unbounded_rank_conjecture (n : ) : E : RatEllipticCurve, n E.rank := n: E, n E.rank All goals completed! 🐙

From [PPVW2016], Section 8.2: "Our heuristic predicts (a) All but finitely many E ∈ ℰ satisfy rk E(ℚ) ≤ 21". In other words, there are only finitely many elliptic curves over ℚ (up to isomorphism) with rank greater than 21. Notice that this contradicts the previous conjecture.

@[category research open, AMS 11 14] theorem declaration uses 'sorry'finite_twentyone_lt_finrank : {E : RatEllipticCurve | 21 < E.rank}.Finite := {E | 21 < E.rank}.Finite All goals completed! 🐙

[PPVW2016] 8.2(b): for 1 ≤ r ≤ 20, the number of elliptic curves over ℚ with rank r and naïve height at most H is asymptotically H ^ ((21 - r) / 24 + o(1)). Note: ℰ_H in 8.2(b) should be ℰ_{≤H}, see the statement of Theorem 7.3.3. When r = 1, the exponent is 20 / 24 = 5 / 6, which agrees with the exponent in card_heightLE_div_pow_five_div_six_tensto and is consistent with half_rank_zero_and_half_rank_one.

@[category research open, AMS 11 14] theorem declaration uses 'sorry'rank_height_count_asymptotic (r : ) (h₁ : 1 r) (h₂ : r 20) : f : , atTop.Tendsto f (𝓝 0) H : , 1 < H {E heightLE H | r E.rank}.ncard = (H : ) ^ ((21 - r) / 24 + f H) := r:h₁:1 rh₂:r 20 f, Filter.Tendsto f atTop (𝓝 0) (H : ), 1 < H {E | E heightLE H r E.rank}.ncard = H ^ ((21 - r) / 24 + f H) All goals completed! 🐙

[PPVW2016] 8.2(c): the number of elliptic curves over ℚ with rank ≥ 21 and naïve height at most H is asymptotically at most H ^ o(1).

@[category research open, AMS 11 14] theorem declaration uses 'sorry'twentyone_le_rank_height_count_asymptotic : f : , atTop.Tendsto f (𝓝 0) H : , 1 < H {E heightLE H | 21 E.rank}.ncard (H : ) ^ f H := f, Filter.Tendsto f atTop (𝓝 0) (H : ), 1 < H {E | E heightLE H 21 E.rank}.ncard H ^ f H All goals completed! 🐙 end RatEllipticCurve namespace WeierstrassCurve open _root_.WeierstrassCurve

The elliptic curve over ℚ of rank at least 29 found by Elkies and Klagsbrun in 2024. It has rank exactly 29 assuming the generalized Riemann hypothesis.

def elkiesKlagsbrun29 : WeierstrassCurve where a₁ := 1 a₂ := 0 a₃ := 0 a₄ := -27006183241630922218434652145297453784768054621836357954737385 a₆ := 55258058551342376475736699591118191821521067032535079608372404779149413277716173425636721497

See https://mathoverflow.net/a/478050.

@[category test, AMS 11 14] theorem Δ_elkiesKlagsbrun29 : elkiesKlagsbrun29.Δ = -2 ^ 19 * 3 ^ 7 * 5 ^ 7 * 7 ^ 4 * 11 ^ 5 * 13 ^ 3 * 17 ^ 4 * 31 ^ 3 * 41 ^ 2 * 43 ^ 2 * 61 ^ 2 * 233 * 241 ^ 2 * 4139 * 678146849364709860535420504397393 * 159788990966780131363155786084695062643236502969 * 4402149008473369392540402625019227412319473055901 := elkiesKlagsbrun29.Δ = -2 ^ 19 * 3 ^ 7 * 5 ^ 7 * 7 ^ 4 * 11 ^ 5 * 13 ^ 3 * 17 ^ 4 * 31 ^ 3 * 41 ^ 2 * 43 ^ 2 * 61 ^ 2 * 233 * 241 ^ 2 * 4139 * 678146849364709860535420504397393 * 159788990966780131363155786084695062643236502969 * 4402149008473369392540402625019227412319473055901 -({ a₁ := 1, a₂ := 0, a₃ := 0, a₄ := -27006183241630922218434652145297453784768054621836357954737385, a₆ := 55258058551342376475736699591118191821521067032535079608372404779149413277716173425636721497 }.a₁ ^ 2 + 4 * { a₁ := 1, a₂ := 0, a₃ := 0, a₄ := -27006183241630922218434652145297453784768054621836357954737385, a₆ := 55258058551342376475736699591118191821521067032535079608372404779149413277716173425636721497 }.a₂) ^ 2 * ({ a₁ := 1, a₂ := 0, a₃ := 0, a₄ := -27006183241630922218434652145297453784768054621836357954737385, a₆ := 55258058551342376475736699591118191821521067032535079608372404779149413277716173425636721497 }.a₁ ^ 2 * { a₁ := 1, a₂ := 0, a₃ := 0, a₄ := -27006183241630922218434652145297453784768054621836357954737385, a₆ := 55258058551342376475736699591118191821521067032535079608372404779149413277716173425636721497 }.a₆ + 4 * { a₁ := 1, a₂ := 0, a₃ := 0, a₄ := -27006183241630922218434652145297453784768054621836357954737385, a₆ := 55258058551342376475736699591118191821521067032535079608372404779149413277716173425636721497 }.a₂ * { a₁ := 1, a₂ := 0, a₃ := 0, a₄ := -27006183241630922218434652145297453784768054621836357954737385, a₆ := 55258058551342376475736699591118191821521067032535079608372404779149413277716173425636721497 }.a₆ - { a₁ := 1, a₂ := 0, a₃ := 0, a₄ := -27006183241630922218434652145297453784768054621836357954737385, a₆ := 55258058551342376475736699591118191821521067032535079608372404779149413277716173425636721497 }.a₁ * { a₁ := 1, a₂ := 0, a₃ := 0, a₄ := -27006183241630922218434652145297453784768054621836357954737385, a₆ := 55258058551342376475736699591118191821521067032535079608372404779149413277716173425636721497 }.a₃ * { a₁ := 1, a₂ := 0, a₃ := 0, a₄ := -27006183241630922218434652145297453784768054621836357954737385, a₆ := 55258058551342376475736699591118191821521067032535079608372404779149413277716173425636721497 }.a₄ + { a₁ := 1, a₂ := 0, a₃ := 0, a₄ := -27006183241630922218434652145297453784768054621836357954737385, a₆ := 55258058551342376475736699591118191821521067032535079608372404779149413277716173425636721497 }.a₂ * { a₁ := 1, a₂ := 0, a₃ := 0, a₄ := -27006183241630922218434652145297453784768054621836357954737385, a₆ := 55258058551342376475736699591118191821521067032535079608372404779149413277716173425636721497 }.a₃ ^ 2 - { a₁ := 1, a₂ := 0, a₃ := 0, a₄ := -27006183241630922218434652145297453784768054621836357954737385, a₆ := 55258058551342376475736699591118191821521067032535079608372404779149413277716173425636721497 }.a₄ ^ 2) - 8 * (2 * { a₁ := 1, a₂ := 0, a₃ := 0, a₄ := -27006183241630922218434652145297453784768054621836357954737385, a₆ := 55258058551342376475736699591118191821521067032535079608372404779149413277716173425636721497 }.a₄ + { a₁ := 1, a₂ := 0, a₃ := 0, a₄ := -27006183241630922218434652145297453784768054621836357954737385, a₆ := 55258058551342376475736699591118191821521067032535079608372404779149413277716173425636721497 }.a₁ * { a₁ := 1, a₂ := 0, a₃ := 0, a₄ := -27006183241630922218434652145297453784768054621836357954737385, a₆ := 55258058551342376475736699591118191821521067032535079608372404779149413277716173425636721497 }.a₃) ^ 3 - 27 * ({ a₁ := 1, a₂ := 0, a₃ := 0, a₄ := -27006183241630922218434652145297453784768054621836357954737385, a₆ := 55258058551342376475736699591118191821521067032535079608372404779149413277716173425636721497 }.a₃ ^ 2 + 4 * { a₁ := 1, a₂ := 0, a₃ := 0, a₄ := -27006183241630922218434652145297453784768054621836357954737385, a₆ := 55258058551342376475736699591118191821521067032535079608372404779149413277716173425636721497 }.a₆) ^ 2 + 9 * ({ a₁ := 1, a₂ := 0, a₃ := 0, a₄ := -27006183241630922218434652145297453784768054621836357954737385, a₆ := 55258058551342376475736699591118191821521067032535079608372404779149413277716173425636721497 }.a₁ ^ 2 + 4 * { a₁ := 1, a₂ := 0, a₃ := 0, a₄ := -27006183241630922218434652145297453784768054621836357954737385, a₆ := 55258058551342376475736699591118191821521067032535079608372404779149413277716173425636721497 }.a₂) * (2 * { a₁ := 1, a₂ := 0, a₃ := 0, a₄ := -27006183241630922218434652145297453784768054621836357954737385, a₆ := 55258058551342376475736699591118191821521067032535079608372404779149413277716173425636721497 }.a₄ + { a₁ := 1, a₂ := 0, a₃ := 0, a₄ := -27006183241630922218434652145297453784768054621836357954737385, a₆ := 55258058551342376475736699591118191821521067032535079608372404779149413277716173425636721497 }.a₁ * { a₁ := 1, a₂ := 0, a₃ := 0, a₄ := -27006183241630922218434652145297453784768054621836357954737385, a₆ := 55258058551342376475736699591118191821521067032535079608372404779149413277716173425636721497 }.a₃) * ({ a₁ := 1, a₂ := 0, a₃ := 0, a₄ := -27006183241630922218434652145297453784768054621836357954737385, a₆ := 55258058551342376475736699591118191821521067032535079608372404779149413277716173425636721497 }.a₃ ^ 2 + 4 * { a₁ := 1, a₂ := 0, a₃ := 0, a₄ := -27006183241630922218434652145297453784768054621836357954737385, a₆ := 55258058551342376475736699591118191821521067032535079608372404779149413277716173425636721497 }.a₆) = -2 ^ 19 * 3 ^ 7 * 5 ^ 7 * 7 ^ 4 * 11 ^ 5 * 13 ^ 3 * 17 ^ 4 * 31 ^ 3 * 41 ^ 2 * 43 ^ 2 * 61 ^ 2 * 233 * 241 ^ 2 * 4139 * 678146849364709860535420504397393 * 159788990966780131363155786084695062643236502969 * 4402149008473369392540402625019227412319473055901; All goals completed! 🐙 @[category test, AMS 11 14] instance : elkiesKlagsbrun29.IsElliptic where isUnit := IsUnit elkiesKlagsbrun29.Δ IsUnit (-2 ^ 19 * 3 ^ 7 * 5 ^ 7 * 7 ^ 4 * 11 ^ 5 * 13 ^ 3 * 17 ^ 4 * 31 ^ 3 * 41 ^ 2 * 43 ^ 2 * 61 ^ 2 * 233 * 241 ^ 2 * 4139 * 678146849364709860535420504397393 * 159788990966780131363155786084695062643236502969 * 4402149008473369392540402625019227412319473055901); All goals completed! 🐙

The rank of the Elkies-Klagsbrun curve is at least 29.

@[category research solved, AMS 11 14] theorem declaration uses 'sorry'twentynine_le_rank_elkiesKlagsbrun29 : 29 finrank elkiesKlagsbrun29 := 29 finrank elkiesKlagsbrun29 All goals completed! 🐙

The rank of the Elkies-Klagsbrun curve is exactly 29.

@[category research open, AMS 11 14] theorem declaration uses 'sorry'rank_elkiesKlagsbrun29 : finrank elkiesKlagsbrun29 = 29 := finrank elkiesKlagsbrun29 = 29 All goals completed! 🐙

The elliptic curve over ℚ of rank at least 28 found by Elkies in 2006. It has rank exactly 28 assuming the generalized Riemann hypothesis.

def elkies28 : WeierstrassCurve where a₁ := 1 a₂ := -1 a₃ := 1 a₄ := -20067762415575526585033208209338542750930230312178956502 a₆ := 34481611795030556467032985690390720374855944359319180361266008296291939448732243429

See https://mathoverflow.net/a/478050.

@[category test, AMS 11 14] theorem Δ_elkies28 : elkies28.Δ = 2 ^ 15 * 3 ^ 6 * 5 ^ 6 * 7 ^ 4 * 11 ^ 2 * 13 ^ 4 * 17 ^ 5 * 19 ^ 3 * 48463 * 20650099 * 315574902691581877528345013999136728634663121 * 376018840263193489397987439236873583997122096511452343225772113000611087671413 := elkies28.Δ = 2 ^ 15 * 3 ^ 6 * 5 ^ 6 * 7 ^ 4 * 11 ^ 2 * 13 ^ 4 * 17 ^ 5 * 19 ^ 3 * 48463 * 20650099 * 315574902691581877528345013999136728634663121 * 376018840263193489397987439236873583997122096511452343225772113000611087671413 -({ a₁ := 1, a₂ := -1, a₃ := 1, a₄ := -20067762415575526585033208209338542750930230312178956502, a₆ := 34481611795030556467032985690390720374855944359319180361266008296291939448732243429 }.a₁ ^ 2 + 4 * { a₁ := 1, a₂ := -1, a₃ := 1, a₄ := -20067762415575526585033208209338542750930230312178956502, a₆ := 34481611795030556467032985690390720374855944359319180361266008296291939448732243429 }.a₂) ^ 2 * ({ a₁ := 1, a₂ := -1, a₃ := 1, a₄ := -20067762415575526585033208209338542750930230312178956502, a₆ := 34481611795030556467032985690390720374855944359319180361266008296291939448732243429 }.a₁ ^ 2 * { a₁ := 1, a₂ := -1, a₃ := 1, a₄ := -20067762415575526585033208209338542750930230312178956502, a₆ := 34481611795030556467032985690390720374855944359319180361266008296291939448732243429 }.a₆ + 4 * { a₁ := 1, a₂ := -1, a₃ := 1, a₄ := -20067762415575526585033208209338542750930230312178956502, a₆ := 34481611795030556467032985690390720374855944359319180361266008296291939448732243429 }.a₂ * { a₁ := 1, a₂ := -1, a₃ := 1, a₄ := -20067762415575526585033208209338542750930230312178956502, a₆ := 34481611795030556467032985690390720374855944359319180361266008296291939448732243429 }.a₆ - { a₁ := 1, a₂ := -1, a₃ := 1, a₄ := -20067762415575526585033208209338542750930230312178956502, a₆ := 34481611795030556467032985690390720374855944359319180361266008296291939448732243429 }.a₁ * { a₁ := 1, a₂ := -1, a₃ := 1, a₄ := -20067762415575526585033208209338542750930230312178956502, a₆ := 34481611795030556467032985690390720374855944359319180361266008296291939448732243429 }.a₃ * { a₁ := 1, a₂ := -1, a₃ := 1, a₄ := -20067762415575526585033208209338542750930230312178956502, a₆ := 34481611795030556467032985690390720374855944359319180361266008296291939448732243429 }.a₄ + { a₁ := 1, a₂ := -1, a₃ := 1, a₄ := -20067762415575526585033208209338542750930230312178956502, a₆ := 34481611795030556467032985690390720374855944359319180361266008296291939448732243429 }.a₂ * { a₁ := 1, a₂ := -1, a₃ := 1, a₄ := -20067762415575526585033208209338542750930230312178956502, a₆ := 34481611795030556467032985690390720374855944359319180361266008296291939448732243429 }.a₃ ^ 2 - { a₁ := 1, a₂ := -1, a₃ := 1, a₄ := -20067762415575526585033208209338542750930230312178956502, a₆ := 34481611795030556467032985690390720374855944359319180361266008296291939448732243429 }.a₄ ^ 2) - 8 * (2 * { a₁ := 1, a₂ := -1, a₃ := 1, a₄ := -20067762415575526585033208209338542750930230312178956502, a₆ := 34481611795030556467032985690390720374855944359319180361266008296291939448732243429 }.a₄ + { a₁ := 1, a₂ := -1, a₃ := 1, a₄ := -20067762415575526585033208209338542750930230312178956502, a₆ := 34481611795030556467032985690390720374855944359319180361266008296291939448732243429 }.a₁ * { a₁ := 1, a₂ := -1, a₃ := 1, a₄ := -20067762415575526585033208209338542750930230312178956502, a₆ := 34481611795030556467032985690390720374855944359319180361266008296291939448732243429 }.a₃) ^ 3 - 27 * ({ a₁ := 1, a₂ := -1, a₃ := 1, a₄ := -20067762415575526585033208209338542750930230312178956502, a₆ := 34481611795030556467032985690390720374855944359319180361266008296291939448732243429 }.a₃ ^ 2 + 4 * { a₁ := 1, a₂ := -1, a₃ := 1, a₄ := -20067762415575526585033208209338542750930230312178956502, a₆ := 34481611795030556467032985690390720374855944359319180361266008296291939448732243429 }.a₆) ^ 2 + 9 * ({ a₁ := 1, a₂ := -1, a₃ := 1, a₄ := -20067762415575526585033208209338542750930230312178956502, a₆ := 34481611795030556467032985690390720374855944359319180361266008296291939448732243429 }.a₁ ^ 2 + 4 * { a₁ := 1, a₂ := -1, a₃ := 1, a₄ := -20067762415575526585033208209338542750930230312178956502, a₆ := 34481611795030556467032985690390720374855944359319180361266008296291939448732243429 }.a₂) * (2 * { a₁ := 1, a₂ := -1, a₃ := 1, a₄ := -20067762415575526585033208209338542750930230312178956502, a₆ := 34481611795030556467032985690390720374855944359319180361266008296291939448732243429 }.a₄ + { a₁ := 1, a₂ := -1, a₃ := 1, a₄ := -20067762415575526585033208209338542750930230312178956502, a₆ := 34481611795030556467032985690390720374855944359319180361266008296291939448732243429 }.a₁ * { a₁ := 1, a₂ := -1, a₃ := 1, a₄ := -20067762415575526585033208209338542750930230312178956502, a₆ := 34481611795030556467032985690390720374855944359319180361266008296291939448732243429 }.a₃) * ({ a₁ := 1, a₂ := -1, a₃ := 1, a₄ := -20067762415575526585033208209338542750930230312178956502, a₆ := 34481611795030556467032985690390720374855944359319180361266008296291939448732243429 }.a₃ ^ 2 + 4 * { a₁ := 1, a₂ := -1, a₃ := 1, a₄ := -20067762415575526585033208209338542750930230312178956502, a₆ := 34481611795030556467032985690390720374855944359319180361266008296291939448732243429 }.a₆) = 2 ^ 15 * 3 ^ 6 * 5 ^ 6 * 7 ^ 4 * 11 ^ 2 * 13 ^ 4 * 17 ^ 5 * 19 ^ 3 * 48463 * 20650099 * 315574902691581877528345013999136728634663121 * 376018840263193489397987439236873583997122096511452343225772113000611087671413; All goals completed! 🐙 @[category test, AMS 11 14] instance : elkies28.IsElliptic where isUnit := IsUnit elkies28.Δ IsUnit (2 ^ 15 * 3 ^ 6 * 5 ^ 6 * 7 ^ 4 * 11 ^ 2 * 13 ^ 4 * 17 ^ 5 * 19 ^ 3 * 48463 * 20650099 * 315574902691581877528345013999136728634663121 * 376018840263193489397987439236873583997122096511452343225772113000611087671413); All goals completed! 🐙

The rank of the Elkies curve is at least 28.

@[category research solved, AMS 11 14] theorem declaration uses 'sorry'twentyeight_le_rank_elkies28 : 28 finrank elkies28 := 28 finrank elkies28 All goals completed! 🐙

The rank of the Elkies curve is exactly 28.

@[category research open, AMS 11 14] theorem declaration uses 'sorry'rank_elkies28 : finrank elkies28 = 28 := finrank elkies28 = 28 All goals completed! 🐙 -- TODO: compute the rank of some rank 0 / 1 curve. end WeierstrassCurve end EllipticCurveRank