Nonsingular points and the group law in projective coordinates #
Let W
be a Weierstrass curve over a field F
. The nonsingular projective points of W
can be
endowed with an group law, which is uniquely determined by the formulae in
Mathlib/AlgebraicGeometry/EllipticCurve/Projective/Formula.lean
and follows from an equivalence
with the nonsingular points W⟮F⟯
in affine coordinates.
This file defines the group law on nonsingular projective points.
Main definitions #
WeierstrassCurve.Projective.neg
: the negation of a point representative.WeierstrassCurve.Projective.negMap
: the negation of a point class.WeierstrassCurve.Projective.add
: the addition of two point representatives.WeierstrassCurve.Projective.addMap
: the addition of two point classes.WeierstrassCurve.Projective.Point
: a nonsingular projective point.WeierstrassCurve.Projective.Point.neg
: the negation of a nonsingular projective point.WeierstrassCurve.Projective.Point.add
: the addition of two nonsingular projective points.WeierstrassCurve.Projective.Point.toAffineAddEquiv
: the equivalence between the type of nonsingular projective points with the type of nonsingular pointsW⟮F⟯
in affine coordinates.
Main statements #
WeierstrassCurve.Projective.nonsingular_neg
: negation preserves the nonsingular condition.WeierstrassCurve.Projective.nonsingular_add
: addition preserves the nonsingular condition.WeierstrassCurve.Projective.Point.instAddCommGroup
: the type of nonsingular projective 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 projective
point on W
can be given by [x : y : z]
and the nonsingular condition on any representative.
A nonsingular projective point representative can be converted to a nonsingular point in affine
coordinates using WeiestrassCurve.Projective.Point.toAffine
, which lifts to a map on nonsingular
projective points using WeiestrassCurve.Projective.Point.toAffineLift
. Conversely, a nonsingular
point in affine coordinates can be converted to a nonsingular projective point using
WeierstrassCurve.Projective.Point.fromAffine
or WeierstrassCurve.Affine.Point.toProjective
.
Whenever possible, all changes to documentation and naming of definitions and theorems should be
mirrored in Mathlib/AlgebraicGeometry/EllipticCurve/Jacobian/Point.lean
.
References #
J Silverman, The Arithmetic of Elliptic Curves
Tags #
elliptic curve, projective, point, group law
Negation on projective point representatives #
The negation of a projective point class on a Weierstrass curve W
.
If P
is a projective 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 projective point representatives #
The addition of two projective point classes on a Weierstrass curve W
.
If P
and Q
are two projective 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 projective points #
A nonsingular projective point on a Weierstrass curve W
.
- point : PointClass R
The projective point class underlying a nonsingular projective point on
W
. - nonsingular : W'.NonsingularLift self.point
The nonsingular condition underlying a nonsingular projective point on
W
.
Instances For
Equations
The natural map from a nonsingular point on a Weierstrass curve in affine coordinates to its corresponding nonsingular projective point.
Equations
Instances For
Alias of WeierstrassCurve.Projective.Point.fromAffine_some_ne_zero
.
The negation of a nonsingular projective point on a Weierstrass curve W
.
Given a nonsingular projective point P
on W
, use -P
instead of neg P
.
Equations
Instances For
Equations
The addition of two nonsingular projective points on a Weierstrass curve W
.
Given two nonsingular projective points P
and Q
on W
, use P + Q
instead of add P Q
.
Equations
Instances For
Equations
Equivalence between projective and affine coordinates #
The natural map from a nonsingular projective point representative on a Weierstrass curve to its corresponding nonsingular point in affine coordinates.
Equations
- WeierstrassCurve.Projective.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 projective point on a Weierstrass curve W
to its
corresponding nonsingular point in affine coordinates.
If hP
is the nonsingular condition underlying a nonsingular projective 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.Projective.Point.toAffine W x) ⋯ P.point
Instances For
The addition-preserving equivalence between the type of nonsingular projective 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
Maps and base changes #
An abbreviation for WeierstrassCurve.Projective.Point.fromAffine
for dot notation.