Nonsingular points and the group law in Jacobian coordinates #
Let W be a Weierstrass curve over a field F. The nonsingular Jacobian points of W can be
endowed with an group law, which is uniquely determined by the formulae in
Mathlib/AlgebraicGeometry/EllipticCurve/Jacobian/Formula.lean and follows from an equivalence with
the nonsingular points W⟮F⟯ in affine coordinates.
This file defines the group law on nonsingular Jacobian points.
Main definitions #
WeierstrassCurve.Jacobian.neg: the negation of a point representative.WeierstrassCurve.Jacobian.negMap: the negation of a point class.WeierstrassCurve.Jacobian.add: the addition of two point representatives.WeierstrassCurve.Jacobian.addMap: the addition of two point classes.WeierstrassCurve.Jacobian.Point: a nonsingular Jacobian point.WeierstrassCurve.Jacobian.Point.neg: the negation of a nonsingular Jacobian point.WeierstrassCurve.Jacobian.Point.add: the addition of two nonsingular Jacobian points.WeierstrassCurve.Jacobian.Point.toAffineAddEquiv: the equivalence between the type of nonsingular Jacobian points with the type of nonsingular pointsW⟮F⟯in affine coordinates.
Main statements #
WeierstrassCurve.Jacobian.nonsingular_neg: negation preserves the nonsingular condition.WeierstrassCurve.Jacobian.nonsingular_add: addition preserves the nonsingular condition.WeierstrassCurve.Jacobian.Point.instAddCommGroup: the type of nonsingular Jacobian points forms an abelian group under addition.
Implementation notes #
Note that W(X, Y, Z) and its partial derivatives are independent of the point representative, and
the nonsingularity condition already implies (x, y, z) ≠ (0, 0, 0), so a nonsingular Jacobian
point on W can be given by [x : y : z] and the nonsingular condition on any representative.
A nonsingular Jacobian point representative can be converted to a nonsingular point in affine
coordinates using WeiestrassCurve.Jacobian.Point.toAffine, which lifts to a map on nonsingular
Jacobian points using WeiestrassCurve.Jacobian.Point.toAffineLift. Conversely, a nonsingular point
in affine coordinates can be converted to a nonsingular Jacobian point using
WeierstrassCurve.Jacobian.Point.fromAffine or WeierstrassCurve.Affine.Point.toJacobian.
Whenever possible, all changes to documentation and naming of definitions and theorems should be
mirrored in Mathlib/AlgebraicGeometry/EllipticCurve/Projective/Point.lean.
References #
[J Silverman, The Arithmetic of Elliptic Curves][silverman2009]
Tags #
elliptic curve, Jacobian, point, group law
Negation on Jacobian point representatives #
The negation of a Jacobian point class on a Weierstrass curve W.
If P is a Jacobian point representative on W, then W.negMap ⟦P⟧ is definitionally equivalent
to W.neg P.
Equations
- W'.negMap P = Quotient.map W'.neg ⋯ P
Instances For
Addition on Jacobian point representatives #
The addition of two Jacobian point classes on a Weierstrass curve W.
If P and Q are two Jacobian point representatives on W, then W.addMap ⟦P⟧ ⟦Q⟧ is
definitionally equivalent to W.add P Q.
Equations
- W'.addMap P Q = Quotient.map₂ W'.add ⋯ P Q
Instances For
Nonsingular Jacobian points #
A nonsingular Jacobian point on a Weierstrass curve W.
- point : PointClass R
The Jacobian point class underlying a nonsingular Jacobian point on
W. - nonsingular : W'.NonsingularLift self.point
The nonsingular condition underlying a nonsingular Jacobian point on
W.
Instances For
The natural map from a nonsingular point on a Weierstrass curve in affine coordinates to its corresponding nonsingular Jacobian point.
Equations
- WeierstrassCurve.Jacobian.Point.fromAffine WeierstrassCurve.Affine.Point.zero = 0
- WeierstrassCurve.Jacobian.Point.fromAffine (WeierstrassCurve.Affine.Point.some h) = { point := ⟦![x_1, y, 1]⟧, nonsingular := ⋯ }
Instances For
Alias of WeierstrassCurve.Jacobian.Point.fromAffine_some_ne_zero.
Equations
Equations
Equivalence between Jacobian and affine coordinates #
The natural map from a nonsingular Jacobian point representative on a Weierstrass curve to its corresponding nonsingular point in affine coordinates.
Equations
- WeierstrassCurve.Jacobian.Point.toAffine W P = if hP : W.Nonsingular P ∧ P 2 ≠ 0 then WeierstrassCurve.Affine.Point.some ⋯ else 0
Instances For
The natural map from a nonsingular Jacobian point on a Weierstrass curve W to its
corresponding nonsingular point in affine coordinates.
If hP is the nonsingular condition underlying a nonsingular Jacobian point P on W, then
toAffineLift ⟨hP⟩ is definitionally equivalent to toAffine W P.
Equations
- P.toAffineLift = Quotient.lift (fun (x : Fin 3 → F) => WeierstrassCurve.Jacobian.Point.toAffine W x) ⋯ P.point
Instances For
The addition-preserving equivalence between the type of nonsingular Jacobian points on a
Weierstrass curve W and the type of nonsingular points W⟮F⟯ in affine coordinates.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Maps and base changes #
An abbreviation for WeierstrassCurve.Jacobian.Point.fromAffine for dot notation.