Documentation

TauCeti.AlgebraicGeometry.EllipticCurve.FormalGroup.Inverse

The formal inverse of a Weierstrass curve #

In the (z, w)-chart of WeierstrassCurve.formalW, where x = z / w and y = -1 / w, the negative of the point with parameter z has parameter ι(z) = -z / (1 - a₁ z - a₃ w(z)). This file constructs that series and proves it is an involution.

The denominator is formalInverseDenom; its constant coefficient is 1, so it is a unit, which is what makes formalInverse a power series at all.

Main definitions #

Main results #

Implementation notes #

The substitution identities are proved through the uniqueness of the solution of the w-equation (WeierstrassCurve.eq_subst_formalW_of_wEquation) rather than by comparing coefficients: w ∘ ι and the candidate -w · u⁻¹ both solve that equation at the parameter ι, and a solution with vanishing constant coefficient is unique.

References #

Provenance #

Adapted from Michael Stoll's EllipticCurves project (github.com/MichaelStollBayreuth/EllipticCurves, Apache-2.0, pinned by TauCetiRoadmap/EllipticCurves/README.md at 66889eada51a), EllipticCurves/WeierstrassFormalGroup/Chord.lean — declarations uSeries, constantCoeff_uSeries, mul_invOfUnit_uSeries, isUnit_uSeries, inverseSeries, constantCoeff_inverseSeries, hasSubst_inverseSeries, subst_inverseSeries_invOfUnit, subst_inverseSeries_wSeries, subst_inverseSeries_uSeries and subst_inverseSeries_self.

The source's uSeries is renamed formalInverseDenom here. It must not be called formalU: that name is already taken, in FormalGroup/WExpansion.lean, by the unit part w(z) / z ^ 3, which is a different series (it is the source's vSeries). The source proves the substitution identities through its own private wStep recursion; this file uses the w-equation API of FormalGroup/WExpansion.lean instead, so the source's wStepAt lemmas are not ported.

The denominator of the formal inverse #

The denominator 1 - a₁ z - a₃ w(z) of the formal inverse.

Up to sign and a factor of w, this is the y-coordinate of the negative of the point with parameter z, in the coordinates x = z / w, y = -1 / w.

Equations
Instances For
    @[simp]

    The denominator of the formal inverse is 1 at the origin, which is what makes it a unit.

    The denominator times its invOfUnit is 1.

    The denominator of the formal inverse is a unit.

    The formal inverse #

    noncomputable def WeierstrassCurve.formalInverse {R : Type u_1} [CommRing R] (W : WeierstrassCurve R) :

    The parameter ι(z) = -z / (1 - a₁ z - a₃ w(z)) of the negative of the point with parameter z on the curve (z, w(z)).

    Equations
    Instances For
      @[simp]

      The formal inverse vanishes at the origin: the negative of O is O.

      The formal inverse may be substituted into a power series.

      Substituting the formal inverse #

      Composing the w-expansion with the formal inverse gives -w / (1 - a₁ z - a₃ w), the w-coordinate of the negative point.

      Both sides solve the w-equation at the parameter ι and have vanishing constant coefficient, so they agree by eq_subst_formalW_of_wEquation. Clearing the denominator u ^ 3, the identity to check is -w u ^ 2 = -z ^ 3 + a₁ z w u - a₂ z ^ 2 w + a₃ w ^ 2 u - a₄ z w ^ 2 - a₆ w ^ 3, which is the w-equation itself after a₁ z w + a₃ w ^ 2 = w (1 - u).

      The formal inverse is an involution: ι(ι(z)) = z.

      This is the formal-series form of -(-P) = P for the group law near the origin.

      Base change #

      @[simp]

      The denominator of the formal inverse commutes with base change.

      @[simp]

      The formal inverse commutes with base change.