Documentation

Mathlib.AlgebraicGeometry.EllipticCurve.ModelsWithJ

Models of elliptic curves with prescribed j-invariant #

This file defines the Weierstrass equation over a field with prescribed j-invariant, proved that it is an elliptic curve, and that its j-invariant is equal to the given value. It is a modification of [silverman2009], Chapter III, Proposition 1.4 (c).

Main definitions #

Main statements #

References #

Tags #

elliptic curve, weierstrass equation, j invariant

The Weierstrass curve Y² + Y = X³. It is of j-invariant 0 if it is an elliptic curve.

Instances For

    The Weierstrass curve Y² = X³ + X. It is of j-invariant 1728 if it is an elliptic curve.

    Instances For

      The Weierstrass curve Y² + (j - 1728)XY = X³ - 36(j - 1728)³X - (j - 1728)⁵. It is a modification of the curve in [silverman2009], Chapter III, Proposition 1.4 (c) to avoid denominators. It is of j-invariant j if it is an elliptic curve.

      Instances For
        theorem WeierstrassCurve.ofJNe0Or1728_c₄ {R : Type u_1} [CommRing R] (j : R) :
        (ofJNe0Or1728 j).c₄ = j * (j - 1728) ^ 3
        theorem WeierstrassCurve.ofJNe0Or1728_Δ {R : Type u_1} [CommRing R] (j : R) :
        (ofJNe0Or1728 j).Δ = j ^ 2 * (j - 1728) ^ 9

        When 3 is a unit, Y² + Y = X³ is an elliptic curve. It is of j-invariant 0 (see WeierstrassCurve.ofJ0_j).

        When 2 is a unit, Y² = X³ + X is an elliptic curve. It is of j-invariant 1728 (see WeierstrassCurve.ofJ1728_j).

        When j and j - 1728 are both units, Y² + (j - 1728)XY = X³ - 36(j - 1728)³X - (j - 1728)⁵ is an elliptic curve. It is of j-invariant j (see WeierstrassCurve.ofJNe0Or1728_j).

        theorem WeierstrassCurve.ofJNe0Or1728_j {R : Type u_1} [CommRing R] (j : R) [Fact (IsUnit j)] [Fact (IsUnit (j - 1728))] :
        (ofJNe0Or1728 j).j = j
        def WeierstrassCurve.ofJ {F : Type u_2} [Field F] (j : F) [DecidableEq F] :

        For any element j of a field F, there exists an elliptic curve over F with j-invariant equal to j (see WeierstrassCurve.ofJ_j). Its coefficients are given explicitly (see WeierstrassCurve.ofJ0, WeierstrassCurve.ofJ1728 and WeierstrassCurve.ofJNe0Or1728).

        Instances For
          theorem WeierstrassCurve.ofJ_0_of_three_ne_zero {F : Type u_2} [Field F] [DecidableEq F] (h3 : 3 0) :
          ofJ 0 = ofJ0 F
          theorem WeierstrassCurve.ofJ_0_of_three_eq_zero {F : Type u_2} [Field F] [DecidableEq F] (h3 : 3 = 0) :
          ofJ 0 = ofJ1728 F
          theorem WeierstrassCurve.ofJ_0_of_two_eq_zero {F : Type u_2} [Field F] [DecidableEq F] (h2 : 2 = 0) :
          ofJ 0 = ofJ0 F
          theorem WeierstrassCurve.ofJ_1728_of_three_eq_zero {F : Type u_2} [Field F] [DecidableEq F] (h3 : 3 = 0) :
          ofJ 1728 = ofJ1728 F
          theorem WeierstrassCurve.ofJ_1728_of_two_ne_zero {F : Type u_2} [Field F] [DecidableEq F] (h2 : 2 0) :
          ofJ 1728 = ofJ1728 F
          theorem WeierstrassCurve.ofJ_1728_of_two_eq_zero {F : Type u_2} [Field F] [DecidableEq F] (h2 : 2 = 0) :
          ofJ 1728 = ofJ0 F
          theorem WeierstrassCurve.ofJ_ne_0_ne_1728 {F : Type u_2} [Field F] (j : F) [DecidableEq F] (h0 : j 0) (h1728 : j 1728) :
          instance WeierstrassCurve.instIsEllipticOfJ {F : Type u_2} [Field F] (j : F) [DecidableEq F] :
          theorem WeierstrassCurve.ofJ_j {F : Type u_2} [Field F] (j : F) [DecidableEq F] :
          (ofJ j).j = j
          @[implicit_reducible]
          instance WeierstrassCurve.instInhabitedSubtypeIsElliptic {F : Type u_2} [Field F] [DecidableEq F] :
          Inhabited { W : WeierstrassCurve F // W.IsElliptic }