Definitions/Def_WeierstrassCurve_HasseInvariant.lean
Hasse invariant, Legendre curves, Hasse-supersingular -invariants
Three definitions are made. For a natural number q and a Weierstrass curve W over a commutative ring R, WeierstrassCurve.hasseInvariant q W is the coefficient of x^{q-1} in the \lfloor (q-1)/2\rfloor-th power of the two-torsion cubic of W, i.e. of
\bigl(4x^{3}+b_2x^{2}+2b_4x+b_6\bigr)^{\lfloor (q-1)/2\rfloor}\in R[x],
where b_2,b_4,b_6 are the usual quantities attached to the coefficients a_1,\dots ,a_6 and both q-1 and the halving are truncated natural-number operations. Thus the invariant is attached to a chosen Weierstrass model, not to an isomorphism class, and it is taken of the cubic (2y+a_1x+a_3)^2 rather than of a monic cubic obtained by completing the square; for y^2=f(x) with f monic this differs from the classical coefficient of x^{q-1} in f^{(q-1)/2} by the unit factor 4^{\lfloor (q-1)/2\rfloor} when 4 is invertible.
For t\in R, WeierstrassCurve.legendreCurve t is the Weierstrass curve with coefficients a_1=0, a_2=-(1+t), a_3=0, a_4=t, a_6=0, that is y^2=x^3-(1+t)x^2+tx=x(x-1)(x-t).
Finally, for a field K, ModularCurve.ssJSetHasse q K is the subset of K consisting of those j such that every Weierstrass curve W over K which is elliptic (its discriminant is a unit) and satisfies W.j=j has vanishing Hasse invariant at q. The quantification is over all models with the given j-invariant, so membership is by definition a condition on every such model; the set is empty of content at elements of K that are not j-invariants of any elliptic curve over K only in the vacuous sense.
Relation to Mathlib
Built on Mathlib's WeierstrassCurve, its twoTorsionPolynomial, j and IsElliptic; the Hasse invariant, the Legendre family and the Hasse-supersingular set of j-invariants are the project's own definitions.
Where it is used
These definitions give the characteristic-q supersingularity condition in the form of the vanishing of a weight q-1 invariant of a Weierstrass model, and the Legendre family provides explicit models with prescribed 2-torsion in which that condition can be computed.
References
- J. H. Silverman, The Arithmetic of Elliptic Curves, Graduate Texts in Mathematics 106, Springer, 2nd ed., 2009, V.4.1
- R. Hartshorne, Algebraic Geometry, Graduate Texts in Mathematics 52, Springer, 1977, IV.4.21
- D. Husemöller, Elliptic Curves, Graduate Texts in Mathematics 111, Springer, 2nd ed., 2004, Chapter 13
References are suggested automatically and have not been individually verified.
English text generated automatically from the Lean source; the Lean statement is authoritative.
- 25 lines
- 3 declarations
- used in the statements of 41 theorems and imported by 64 proofs
- imports 0 definition modules
Source file: Definitions/Def_WeierstrassCurve_HasseInvariant.lean
Imports
- only Mathlib
Imported by
Declarations
Source
import Mathlib set_option autoImplicit false open Polynomial namespace WeierstrassCurve variable {R : Type*} [CommRing R] noncomputable def hasseInvariant (q : ℕ) (W : WeierstrassCurve R) : R := (W.twoTorsionPolynomial.toPoly ^ ((q - 1) / 2)).coeff (q - 1) def legendreCurve (t : R) : WeierstrassCurve R := ⟨0, -(1 + t), 0, t, 0⟩ end WeierstrassCurve namespace ModularCurve def ssJSetHasse (q : ℕ) (K : Type*) [Field K] : Set K := {j | ∀ (W : WeierstrassCurve K) [W.IsElliptic], W.j = j → W.hasseInvariant q = 0} end ModularCurve
Statements phrased using this module (41)
- Counting Hasse-supersingular j-invariants in characteristic q
ModularCurve.card_eq_of_ssJSetHasse22 below · depth 14 - Deuring's criterion: the two supersingular j-sets coincide
ModularCurve.ssJSet_eq_ssJSetHasse12 below · depth 14 - j=1728 is Hasse-supersingular iff q≡ 3 (mod 4)
ModularCurve.ofNat1728_mem_ssJSetHasse_iff1 below · depth 15 - Eichler–Deuring mass formula in Hasse-invariant form
ModularCurve.sum_inv_jWidth_of_ssJSetHasse19 below · depth 15 - Vanishing Hasse invariant at j=0 iff q≡ 2(mod 3)
ModularCurve.zero_mem_ssJSetHasse_iff1 below · depth 15 - Deuring's criterion via the Hasse invariant
WeierstrassCurve.forall_nsmul_eq_zero_iff_hasseInvariant_eq_zero11 below · depth 15 - Hasse-supersingular j-set as image of Deuring roots
ModularCurve.ssJSetHasse_eq_image_legendreJ_toFinset6 below · depth 16 - Coefficient of x^{p(p-1)/2} in ψₚ is the Hasse invariant
WeierstrassCurve.coeff_prePsi_eq_hasseInvariant9 below · depth 16 - Hasse invariant of the family y²+xy=x³-36tx-t
WeierstrassCurve.hasseInvariant_jFamily43 below · depth 16 - Hasse¹²Δ^{-(q-1)} is an invariant of j
WeierstrassCurve.hasseInvariant_pow_mul_delta_pow_eq_of_j_eq1 below · depth 16 - Hasse invariant of the Tate curve is 1
WeierstrassCurve.hasseInvariant_tatePowerSeries_map44 below · depth 16 - The Hasse invariant has weight q-1
WeierstrassCurve.hasseInvariant_variableChange0 below · depth 16 - Hasse-supersingular j-invariants are the j(λ) with H_q(λ)=0
ModularCurve.ssJSetHasse_eq_image_legendreJ5 below · depth 17 - Hasse invariant as a coefficient of the invariant differential
WeierstrassCurve.coeff_invariantDifferential_eq_hasseInvariant5 below · depth 17 - Supersingular j-invariants are zeros of the j-family Hasse invariant
WeierstrassCurve.eval_hasseInvariant_jFamily_eq_zero_of_mem_ssJSet13 below · depth 17 - Legendre model over a valuation ring with 2 invertible
WeierstrassCurve.exists_variableChange_eq_legendreCurve_of_isUnit_two0 below · depth 17 - Zeros of the Hasse polynomial of the j-family are supersingular
WeierstrassCurve.mem_ssJSet_of_eval_hasseInvariant_jFamily_eq_zero16 below · depth 17 - Hasse polynomial of the j-family: degree and constant term
WeierstrassCurve.natDegree_hasseInvariant_jFamily0 below · depth 17 - Supersingular parameters are simple roots of the Hasse polynomial
WeierstrassCurve.rootMultiplicity_hasseInvariant_jFamily_eq_one21 below · depth 17 - Hasse invariant of the Legendre curve via the Deuring polynomial
WeierstrassCurve.hasseInvariant_legendreCurve0 below · depth 18 - The Legendre curve is elliptic iff t≠ 0,1
WeierstrassCurve.isElliptic_legendreCurve_iff0 below · depth 18 - The j-invariant of the Legendre curve
WeierstrassCurve.j_legendreCurve0 below · depth 18 - Finiteness of the Hasse-supersingular j-invariants
ModularCurve.ssJSetHasse_finite6 below · depth 19 - Legendre modulus determines a curve with ordered 2-torsion pair
WeierstrassCurve.exists_variableChange_of_legendreLambda_eq0 below · depth 23 - The X^q-coefficient of [q] equals the Hasse invariant
WeierstrassCurve.exists_coeff_nthSeries_eq_mul_hasseInvariant21 below · depth 34 - Supersingular curves admit a deformation moving the q-th [q]-coefficient
WeierstrassCurve.exists_map_fstHom_eq_and_snd_coeff_nthSeries_ne_zero_of_ne_two28 below · depth 34 - Coefficient of Tᵖ in [p] versus invariant differential
FormalGroup.coeff_nthSeries_eq_coeff_invDiff_of_isBaseChange4 below · depth 35 - Laurent frame for the Weierstrass formal group and its invariant differential
WeierstrassCurve.exists_laurent_frame_invDiff_mul_eq_derivative9 below · depth 35 - First-order deformation with non-zero Hasse-invariant derivative
WeierstrassCurve.exists_map_fstHom_eq_and_snd_hasseInvariant_ne_zero4 below · depth 35 - Invariant differential commutes with base change of formal groups
FormalGroup.IsBaseChange.invDiff_eq_map0 below · depth 36 - Transport of the universal-family package along a variable change
WeierstrassCurve.exists_powerSeries_lift_coeff_nthSeries_sub_mul_X_mem_span_and_jOfUnit_sub_eq_mul_X_pow_of_coeff_hasseInvariant_map_variableChange24 below · depth 36 - Laurent frame at the origin of a Weierstrass curve
WeierstrassCurve.laurentFrame_wUnitFactor0 below · depth 36 - Formal invariant differential equals dx/(2y+a₁x+a₃) in the Laurent frame
WeierstrassCurve.ofPowerSeries_invDiff_mul_eq_derivative_laurentFrame7 below · depth 36 - From an explicit q-adic family to the formal-group package
WeierstrassCurve.exists_powerSeries_lift_coeff_nthSeries_sub_mul_X_mem_span_and_jOfUnit_sub_eq_mul_X_pow_of_coeff_hasseInvariant_map22 below · depth 37 - Deformation package from a distinguished j-expansion
WeierstrassCurve.exists_powerSeries_lift_coeff_nthSeries_sub_mul_X_mem_span_and_jOfUnit_sub_eq_mul_eval_of_coeff_hasseInvariant_map22 below · depth 37 - Invariant differential of the Weierstrass formal group
WeierstrassCurve.formalW_mul_eq_sub_mul_subst_pderiv_formalGroupLawFixed5 below · depth 37 - Leibniz rule for `pderivLin` on multivariate power series
MvPowerSeries.pderiv_mul0 below · depth 38 - Chain rule for formal partial derivatives under substitution
MvPowerSeries.pderiv_subst1 below · depth 38 - Formal branch at the inverse point: w(i(T))(1-a₁T-a₃w)= -w
WeierstrassCurve.subst_fgInv_formalW_mul_fgInvDenom0 below · depth 38 - The slope series at X₀ = 0 is w(T)/T
WeierstrassCurve.subst_zero_X_fgSlope0 below · depth 38 - The X₀-derivative of the slope series at X₀=0
WeierstrassCurve.subst_zero_X_pderiv_fgSlope0 below · depth 38